# hf_bar1m_c_fz_moth_to_flame ## 文献来源 - **标题**: 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》 - **作者**: 曹春晓 - **机构**: 方正证券 - **时间**: 2022-09-22 研报从博彩偏好出发:股价突然跳跃上涨的个股更容易吸引博彩偏好型投资者买入,这些个股因被过分关注而超买,未来大概率下跌,追逐它们的投资者如扑火的飞蛾;真正基本面向好的股票上涨过程往往均匀平缓、不含跳跃。研报借用 Jiang (2008) 的思路并加以简化,用「单利收益率」与「连续复利收益率」之差度量分钟级跳跃,构造日跳跃度与月跳跃度;再指出传统振幅因子之所以不稳定,是因为它只刻画了波动幅度而未区分波动的过程,于是按当日是否发生明显跳跃把振幅分为「火把」型与「太阳」型,通过截面翻转修正传统振幅因子(分钟跳跃与日频高低价两条线路各出一个版本),合成「修正振幅」因子,最终与月跳跃度等权合成「飞蛾扑火」因子。本表输出研报推进链条上的全部 14 个因子,其中仅日振幅与日高低价泰勒残项来自日频表,其余均需扫描 `cn_stock_bar1m_c`,故合并为一张表。 ## 表结构 - **表名**: `hf_bar1m_c_fz_moth_to_flame` - **主键**: `date` + `instrument` - **记录粒度**: 每个交易日每只股票一条记录 | 字段 | 类型 | 可空 | 含义 | | ---- | ---- | ---- | ---- | | `date` | `PlDatetime` | 否 | 交易日期 | | `instrument` | `PlString` | 否 | 股票代码 | | `daily_jump` | `PlFloat64` | 是 | 日跳跃度,日内每分钟「泰勒残项」的均值;带符号且量级极小(约 1e-12 ~ 1e-9),值越大说明当日股价向上跳跃越剧烈 | | `monthly_jump_mean` | `PlFloat64` | 是 | 月均跳跃度,过去 20 个交易日 `daily_jump` 的均值;值越大越差(未来收益越低) | | `monthly_jump_std` | `PlFloat64` | 是 | 月稳跳跃度,过去 20 个交易日 `daily_jump` 的样本标准差;值越大说明跳跃程度越不稳定 | | `monthly_jump` | `PlFloat64` | 是 | 月跳跃度,`monthly_jump_mean` 与 `monthly_jump_std` 各自截面去极值标准化后等权平均;值越大越差 | | `amplitude_daily` | `PlFloat64` | 是 | 日振幅,当日最高价减最低价再除以前一交易日收盘价;恒非负 | | `amplitude_traditional` | `PlFloat64` | 是 | 传统振幅因子,过去 20 个交易日 `amplitude_daily` 的均值;研报用作对照基准 | | `flipped_amplitude_daily` | `PlFloat64` | 是 | 日翻转振幅,按分钟跳跃识别后的日振幅:`daily_jump` 不低于当日截面均值者保持原值(「火把」型),低于均值者乘以 -1(「太阳」型) | | `revised_amplitude_1` | `PlFloat64` | 是 | 修正振幅因子 1,过去 20 个交易日 `flipped_amplitude_daily` 的均值;值越大越差 | | `hl_taylor_resid_daily` | `PlFloat64` | 是 | 日高低价泰勒残项,把日跳跃度的算法搬到日频数据上,以前一交易日最低价到当日最高价计算;用于识别从低价到高价的跳跃式上涨 | | `flipped_amplitude2_daily` | `PlFloat64` | 是 | 日翻转振幅 2,口径与 `flipped_amplitude_daily` 一致,只把识别跳跃的依据换成 `hl_taylor_resid_daily` | | `revised_amplitude_2` | `PlFloat64` | 是 | 修正振幅因子 2,过去 20 个交易日 `flipped_amplitude2_daily` 的均值;值越大越差 | | `revised_amplitude` | `PlFloat64` | 是 | 修正振幅因子,修正振幅因子 1 与 2 各自截面去极值标准化后等权平均;值越大越差 | | `moth_to_flame` | `PlFloat64` | 是 | 飞蛾扑火,`monthly_jump` 与 `revised_amplitude` 各自截面去极值标准化后等权平均,研报的最终合成因子;值越小未来收益越高 | | `moth_to_flame_pure` | `PlFloat64` | 是 | 纯净飞蛾扑火,`moth_to_flame` 在当日截面上对申万一级行业哑变量与十个常见风格因子回归后的残差;方向与 `moth_to_flame` 一致 | ## 依赖数据 | 依赖表 | 频率 | 用到的字段 | 用途 | | ---- | ---- | ---- | ---- | | `cn_stock_bar1m_c` | 1 分钟 | `date`、`instrument`、`close` | 计算分钟单利 / 连续复利收益率与泰勒残项,日内取均值得 `daily_jump` | | `cn_stock_prefactors` | 日频 | `date`、`instrument`、`high`、`low`、`close` | 构造 `amplitude_daily` 与 `hl_taylor_resid_daily` | | `cn_stock_prefactors` | 日频 | `date`、`instrument`、`sw2021_level1`、`total_market_cap`、`pb`、`roe_avg_ttm`、`total_operating_revenue_ttm`、`debt_to_asset_lf`、`turn`、`daily_return`、`beta_000300SH_22` | 构造 `moth_to_flame_pure` 回归用的申万一级行业哑变量与十个风格因子 | `cn_stock_prefactors` 是聚合日频 view,上表按用途分两行列出,实际只查这一张表、不展开成底层原始表。 因子含 20 个交易日滚动窗口,故 `cn_stock_bar1m_c` 与 `cn_stock_prefactors` 的日频中间量实际读取区间比输出区间向前多 30 个交易日;`moth_to_flame_pure` 的风格因子含 250 个交易日同比项,其读取区间向前多 255 个交易日。 ## 因子列表 ### daily_jump - **中文名**: 日跳跃度 - **描述**: 用「单利收益率」与「连续复利收益率」的差值度量分钟级股价跳跃,日内取均值作为当日股价跳跃程度的代理变量。差值越大,表示该时间内股价的跳跃程度越大。 **构建逻辑**: 1. 取个股分钟数据,剔除开盘与收盘,仅保留日内交易数据。 2. 用分钟收盘价计算每分钟的「单利收益率」:$r_t = P_t / P_{t-1} - 1$。 3. 用分钟收盘价计算每分钟的「连续复利收益率」:$x_t = \ln(P_t / P_{t-1})$。 4. 两者做差得到「单复利差」。研报指出连续复利收益率是单利收益率泰勒展开式的第一项,故单复利差即 $\exp(x_t) - 1 - x_t$。 5. 把单复利差乘以 2,再减去连续复利收益率的平方,得到「泰勒残项」: ```math \text{taylor}_t = 2\left(\exp(x_t) - 1 - x_t\right) - x_t^2 ``` 1. 把日内所有泰勒残项求均值,作为当日的日跳跃度。 **项目实现说明**: - 「剔除开盘与收盘」按本仓库既有口径处理为剔除集合竞价 bar(沪深记在 09:25、北交所记在 09:30),日内恰好保留 240 根 bar(09:31–15:00),与同系列《多因子选股系列研究之五》一致。首分钟无前收故收益率为空,每日实得 239 个有效泰勒残项。 - 泰勒残项在数学上等于 $x_t^3/3 + x_t^4/12 + \cdots$,即连续复利收益率的三次方项,因此**带符号**(下跌分钟贡献负值)且量级极小。实测分钟收益率约 $10^{-3}$ 时泰勒残项约 $10^{-10}$,日跳跃度中位数在 $-10^{-10}$ 量级、约 56% 的个股为负值。这是公式的固有性质,不是计算错误。 - 实现上先算 $P_t / P_{t-1}$ 再代入 $(\text{ratio} - 1) - \ln(\text{ratio})$,避免重复计算 `m_lag`;比值非正时置空。 ### monthly_jump_mean - **中文名**: 月均跳跃度 - **描述**: 日跳跃度的 20 日均值,刻画个股近一个月跳跃程度的中枢。值越大越差。 **构建逻辑**: 1. 逐日计算日跳跃度。 2. 取过去 20 个交易日(含当日)日跳跃度的均值。 **项目实现说明**: 研报在每月月底计算,本项目按仓库规范改为逐个交易日计算。窗口统计用忽略空值的变体,避免个别停牌日把整个窗口拖成空值。 ### monthly_jump_std - **中文名**: 月稳跳跃度 - **描述**: 日跳跃度的 20 日样本标准差,刻画跳跃程度的稳定性。值越大说明跳跃越不稳定、因子表现越差。 **构建逻辑**: 1. 逐日计算日跳跃度。 2. 取过去 20 个交易日(含当日)日跳跃度的样本标准差。 ### monthly_jump - **中文名**: 月跳跃度 - **描述**: 月均跳跃度与月稳跳跃度等权合成,研报 2.1 节的汇总因子。值越大越差。 **构建逻辑**: 1. 分别计算月均跳跃度与月稳跳跃度。 2. 两者等权合成。 **项目实现说明**: 研报只写「等权合成」,未披露合成前的标准化口径。两个分量量纲相近但分布形态差异大,且本表后续两次合成要把量级相差 8 个数量级的跳跃度与振幅放在一起,故三处合成统一先做截面 1%/99% 分位截尾再 z-score,然后算术平均,与同系列之五的实现一致。 ### amplitude_daily - **中文名**: 日振幅 - **描述**: 当日股价变化的最大幅度,传统振幅因子的日频原始值。恒非负。 **构建逻辑**: 取个股 $t$ 日的最高价与最低价做差,除以 $t-1$ 日的收盘价: ```math \text{amplitude}_t = \frac{H_t - L_t}{C_{t-1}} ``` **项目实现说明**: 高低收价取自 `cn_stock_prefactors`,后复权。跨日相除要求价格序列连续可比,后复权口径正好满足;停牌日价格为空,当日振幅与次日振幅(需要前收)随之为空。 ### amplitude_traditional - **中文名**: 传统振幅因子 - **描述**: 日振幅的 20 日均值,研报用作改进前的对照基准。研报实测其 Rank IC 高达 -7.41% 但 Rank ICIR 仅 -2.05、信息比 1.17,即方向有效但很不稳定——这正是后续两个修正因子要解决的问题。 **构建逻辑**: 1. 逐日计算日振幅。 2. 取过去 20 个交易日(含当日)日振幅的均值。 ### flipped_amplitude_daily - **中文名**: 日翻转振幅 - **描述**: 按分钟跳跃把日振幅分为「火把」型与「太阳」型后做截面翻转的结果。研报的判断是:吸引博彩偏好型投资者的不是「波动」而是「跳跃」,发生跳跃当日的振幅(火把)预示未来下跌,未发生跳跃当日的振幅(太阳)则不具备这一含义,故把后者反号。 **构建逻辑**: 1. 逐日计算日跳跃度与日振幅。 2. 每天计算日跳跃度的截面均值。 3. 日跳跃度小于截面均值者属未发生跳跃或跳跃程度较小,当日振幅为「太阳」型,把振幅值乘以 -1;日跳跃度大于截面均值者属发生跳跃或跳跃程度较大,当日振幅为「火把」型,振幅乘以 1。 **项目实现说明**: 研报对恰好等于截面均值的情形未作规定,本项目并入「火把」型(判据写作「不低于截面均值」);该情形在浮点比较下几乎不出现。实测「火把」型占比约 11% ~ 14%,远低于一半,因为泰勒残项右偏、截面均值被少数大跳跃个股拉高,这与研报「少数个股发生明显跳跃」的设定一致。 ### revised_amplitude_1 - **中文名**: 修正振幅因子 1 - **描述**: 日翻转振幅的 20 日均值。研报实测其 Rank IC 相比传统振幅因子没有明显提升,但 Rank ICIR 提升至 -4.41、年化收益与信息比分别提升至 30.28% 和 3.16,即改进主要体现在稳定性上。 **构建逻辑**: 1. 逐日计算日翻转振幅。 2. 取过去 20 个交易日(含当日)日翻转振幅的均值。 ### hl_taylor_resid_daily - **中文名**: 日高低价泰勒残项 - **描述**: 把日跳跃度的算法搬到日频数据上,用前一交易日最低价到当日最高价这一段来识别跳跃。研报的理由是:从低价到高价的跳跃式上涨更能吸引博彩偏好型投资者,而从高价到低价的下降则不会。 **构建逻辑**: 1. 分别用「单利」和「连续复利」方式计算从 $t-1$ 日最低价到 $t$ 日最高价的收益率:$r_t = H_t / L_{t-1} - 1$,$x_t = \ln(H_t / L_{t-1})$。 2. 两者做差得到当日的「单复利差」。 3. 把单复利差乘以 2,再减去连续复利收益率的平方,得到当日的「泰勒残项」。 **项目实现说明**: 与 `daily_jump` 共用同一个泰勒残项表达式,只把分钟相邻收盘价换成「前日最低价 → 当日最高价」。由于 $H_t \ge L_{t-1}$ 不总成立但比值恒为正,表达式对涨跌两种情形都有定义;比值非正时置空。该列当日截面重复值占比约 7%,高于本表其他列,来自大量个股的高低价落在相同的最小报价变动格点上,属数据固有性质。 ### flipped_amplitude2_daily - **中文名**: 日翻转振幅 2 - **描述**: 口径与日翻转振幅完全一致,只把识别跳跃的依据从分钟级日跳跃度换成日频的日高低价泰勒残项。 **构建逻辑**: 1. 逐日计算日高低价泰勒残项与日振幅。 2. 每天计算日高低价泰勒残项的截面均值。 3. 小于截面均值者为「太阳」型振幅,振幅乘以 -1;大于截面均值者为「火把」型振幅,振幅乘以 1。 ### revised_amplitude_2 - **中文名**: 修正振幅因子 2 - **描述**: 日翻转振幅 2 的 20 日均值。研报实测 Rank IC 提升至 -8.47%、Rank ICIR 提升至 -3.89,年化收益与信息比分别为 33.83% 和 2.82。 **构建逻辑**: 1. 逐日计算日翻转振幅 2。 2. 取过去 20 个交易日(含当日)日翻转振幅 2 的均值。 ### revised_amplitude - **中文名**: 修正振幅因子 - **描述**: 修正振幅因子 1 与修正振幅因子 2 等权合成。研报实测 Rank IC -8.70%、Rank ICIR -4.38,年化收益 36.68%、信息比 3.28,已全面优于传统振幅因子。 **构建逻辑**: 1. 分别计算修正振幅因子 1 与修正振幅因子 2。 2. 两者等权合成。 ### moth_to_flame - **中文名**: 飞蛾扑火 - **描述**: 月跳跃度与修正振幅因子等权合成,研报的最终因子。值越小未来收益越高。 **构建逻辑**: 1. 分别计算月跳跃度与修正振幅因子。 2. 两者等权合成。 **项目实现说明**: 两个分量量级相差约 8 个数量级(跳跃度约 1e-10、振幅约 1e-2),若不先标准化,合成结果将完全由修正振幅决定、月跳跃度的信息被彻底淹没。本项目两个分量各自截面截尾 + z-score 后再算术平均。 ### moth_to_flame_pure - **中文名**: 纯净飞蛾扑火 - **描述**: 飞蛾扑火对常用风格因子与行业因子正交化后的残差,用于验证因子的增量信息。研报实测剥离风格后 Rank IC 仍有 -5.03%、Rank ICIR -2.68,年化收益 23.35%、信息比 2.46。 **构建逻辑**: 1. 计算飞蛾扑火因子。 2. 每个交易日在截面上,把飞蛾扑火对行业哑变量与常用风格因子做多元线性回归。 3. 取回归残差作为纯净飞蛾扑火。 **项目实现说明**: 研报未披露所用风格因子的具体清单与计算口径,本项目选用十个常见风格因子,均取自 `cn_stock_prefactors`:市值(总市值取对数)、非线性市值(标准化市值的三次方)、估值(市净率倒数)、盈利(`roe_avg_ttm`)、成长(营业总收入 TTM 相对 250 个交易日前的同比)、杠杆(`debt_to_asset_lf`)、流动性(20 日换手率均值取对数)、反转(20 日日收益均值)、波动(20 日日收益标准差)、贝塔(`beta_000300SH_22`)。行业用申万一级,以哑变量形式进入回归并去掉一列以免与截距共线。缺失暴露按当日同行业均值填补;回归前对因子与各风格暴露做 MAD 5 倍去极值与 z-score。反转项用 20 日均值而非累计收益,二者只差常数倍、在回归中被标准化后残差相同。某日有效样本数不足设计矩阵列数 2 倍时该日整体置空。 ## 复现核对 **核对口径**: 2015-01-01 ~ 2022-08-31;全市场不做任何股票过滤;前向收益取次日开盘到 21 个交易日后开盘(`cn_stock_prefactors.open`,后复权);Rank IC(因子与前向收益各自取截面百分位排名后求相关,口径同 `hfwarehouse.utils.ic.validate_factor_ic`);因子按研报口径先做市值 + 行业正交化(申万一级行业 + 流通市值,与 DAI `c_neutralize` 逐值等价),`moth_to_flame_pure` 已在构建时正交化故不再重复处理。研报为月末截面、本项目逐日,故给出两列:「月末口径」= 每个自然月最后一个交易日截面,共 92 个截面;「逐日全样本」= 区间内全部交易日,共 1866 个截面。多空组合为月末调仓、十分组、组内等权、不扣费,做多因子值最低一组、做空最高一组(因子 IC 为负),年化按几何口径。 **区间差异(对照前必读)**: 研报测试区间为 2013 年 1 月至 2022 年 8 月,本项目按需求自 2015-01-01 回填,**少了 2013、2014 两年**。上游 `cn_stock_bar1m_c` 自 2005 年起可用,这不是数据限制而是回填起点的选择;需要与研报完全同区间时把 notebook 第一段的 `HISTORY_START` 改回 `2013-01-01` 重跑即可。下文「区间敏感性」一节量化了这一差异的影响。 **ICIR 口径差异**: 研报的 Rank ICIR 是**年化**值,本项目的截面 ICIR(IC 均值 / IC 标准差)未年化,两者直接比会差 $\sqrt{12}$ 倍(同系列研报一致的口径)。下表「月末口径」列同时给出未年化值与年化值(× $\sqrt{12}$),**与研报可比的是括号里的年化值**。 | 因子 | 本项目(月末口径,ICIR 括号内为年化) | 本项目(逐日全样本) | 研报原文 | 出处 | | ---- | ---- | ---- | ---- | ---- | | `monthly_jump_mean` | IC -0.0787,ICIR -1.38(-4.78),多空年化 21.63%,信息比 1.94,月度胜率 78.26% | IC -0.0839,ICIR -1.52 | Rank IC -6.90%,Rank ICIR -3.86,多空年化 28.71% | 研报 2.1 节 | | `monthly_jump_std` | IC -0.0839,ICIR -1.23(-4.26),多空年化 34.53%,信息比 2.68,月度胜率 85.87% | IC -0.0885,ICIR -1.30 | Rank IC -6.60%,Rank ICIR -3.15,多空年化 28.45% | 研报 2.1 节 | | `monthly_jump` | IC -0.0920,ICIR -1.38(-4.79),多空年化 34.76%,信息比 3.05,月度胜率 85.87% | IC -0.0969,ICIR -1.50 | Rank IC -7.63%,Rank ICIR -3.68,多空年化 34.71% | 研报 2.1 节 | | `amplitude_traditional` | IC -0.0901,ICIR -0.75(-2.60),多空年化 45.48%,信息比 1.77,月度胜率 72.83% | IC -0.0946,ICIR -0.76 | Rank IC -7.41%,Rank ICIR -2.05,信息比 1.17(多空年化研报未披露) | 研报 2.2 节 | | `revised_amplitude_1` | IC -0.0751,ICIR -1.31(-4.54),多空年化 20.67%,信息比 1.72,月度胜率 71.74% | IC -0.0812,ICIR -1.41 | Rank ICIR -4.41,多空年化 30.28%,信息比 3.16(Rank IC 研报未披露,仅称「没有明显提升」) | 研报 2.3 节 | | `revised_amplitude_2` | IC -0.0882,ICIR -1.08(-3.73),多空年化 28.66%,信息比 1.88,月度胜率 77.17% | IC -0.0925,ICIR -1.25 | Rank IC -8.47%,Rank ICIR -3.89,多空年化 33.83%,信息比 2.82 | 研报 2.4 节 | | `revised_amplitude` | IC -0.0917,ICIR -1.26(-4.38),多空年化 26.22%,信息比 1.85,月度胜率 72.83% | IC -0.0973,ICIR -1.44 | Rank IC -8.70%,Rank ICIR -4.38,多空年化 36.68%,信息比 3.28 | 研报 2.5 节 | | `moth_to_flame` | IC -0.0952,ICIR -1.35(-4.68),多空年化 21.40%,信息比 1.32,月度胜率 75.00% | IC -0.1009,ICIR -1.52 | Rank IC -8.90%,Rank ICIR -4.52,多空年化 37.30%,信息比 3.51,月度胜率 87.83% | 研报 2.6 节 | | `moth_to_flame_pure` | IC -0.0438,ICIR -1.01(-3.50),多空年化 1.26%,信息比 0.17,月度胜率 68.48% | IC -0.0438,ICIR -1.00 | Rank IC -5.03%,Rank ICIR -2.68,多空年化 23.35%,信息比 2.46 | 研报 2.7 节 | 研报 2.8 节还给出因子在沪深 300 / 中证 500 / 中证 1000 成分股内的多头年化超额(6.05% / 8.48% / 13.87%)。本表不做指数成分股切分,该项不列入核对。 **整体结论**: Rank IC 与 Rank ICIR 复现良好,多空年化收益系统性偏低。 - **Rank IC**: 9 个因子的月末口径 IC 与研报偏差在 -0.0160 ~ +0.0065 之间,方向全部一致、无符号矛盾。本项目普遍比研报略强(绝对值更大),与区间少了 2013、2014 两年有关。核心因子 `moth_to_flame` 为 -0.0952(研报 -8.90%),合成链条上游的 `revised_amplitude` -0.0917(研报 -8.70%)、`revised_amplitude_2` -0.0882(研报 -8.47%),三者偏差均在 0.005 以内。 - **Rank ICIR(年化)**: 偏差在 -1.11 ~ +0.16 之间。`revised_amplitude` 为 -4.38,与研报 -4.38 完全一致;`moth_to_flame` -4.68(研报 -4.52)、`revised_amplitude_1` -4.54(研报 -4.41)、`revised_amplitude_2` -3.73(研报 -3.89)。 - **研报的核心论断已复现**: 传统振幅因子 IC 不低(本项目 -0.0901)但年化 ICIR 仅 -2.60,是全表最低;经两条跳跃线路修正后 ICIR 升到 -4.38 / -4.68,提升幅度与研报(-2.05 → -4.38 / -4.52)一致。十分组收益的单调性同样支持这一结论:按组序与分组收益的秩相关衡量,`amplitude_traditional` 只有 -0.915,而 `revised_amplitude` -0.964、`moth_to_flame` -0.988,即修正把一条毛糙的曲线拉成了近乎完全单调。 - **多空年化全线偏低 2 ~ 16 个百分点**,信息比也普遍低于研报。研报未披露分组数、组内权重、是否扣费与是否剔除涨跌停,本项目取月末调仓、十分组、等权、不扣费;另有区间差异(见下)。该差异不改变任何因子的方向与排序结论。 **区间敏感性(解释多空偏低的主要来源)**: `moth_to_flame` 的多空表现高度集中于 2017 年以后,2015—2016 年几乎不贡献收益。 | 区间 | 月末 Rank IC | 多空年化 | 信息比 | | ---- | ---- | ---- | ---- | | 2015-01 ~ 2016-12 | -0.1100 | 5.43% | 0.35 | | 2017-01 ~ 2018-12 | -0.0907 | 25.73% | 2.03 | | 2019-01 ~ 2020-12 | -0.0937 | 28.25% | 2.25 | | 2021-01 ~ 2022-08 | -0.0845 | 29.05% | 2.78 | | 2015-01 ~ 2022-08(全样本) | -0.0952 | 21.40% | 1.32 | 2015—2016 的 Rank IC 是全区间最强的 -0.1100,多空年化却只有 5.43%、信息比 0.35——因子排序能力在那两年并未变差,是极端行情(股灾与熔断)下十分组两端的收益被巨幅波动淹没。全样本 21.40% / 1.32 正是被这两年拖低的。若只看 2017 年起的 68 个月末截面,各因子表现与研报接近得多,且研报「传统振幅信息比最低、修正后显著提升」的排序完整复现: | 因子 | 月末 IC | 年化 ICIR | 多空年化 | 信息比 | 月度胜率 | | ---- | ---- | ---- | ---- | ---- | ---- | | `monthly_jump_mean` | -0.0779 | -4.51 | 22.27% | 2.59 | 79.41% | | `monthly_jump_std` | -0.0811 | -4.04 | 24.29% | 2.33 | 82.35% | | `monthly_jump` | -0.0886 | -4.39 | 27.00% | 2.60 | 83.82% | | `amplitude_traditional` | -0.0806 | -2.39 | 25.13% | 1.43 | 69.12% | | `revised_amplitude_1` | -0.0779 | -4.48 | 26.74% | 2.18 | 79.41% | | `revised_amplitude_2` | -0.0774 | -3.69 | 22.17% | 1.71 | 75.00% | | `revised_amplitude` | -0.0861 | -4.25 | 25.17% | 1.90 | 76.47% | | `moth_to_flame` | -0.0899 | -4.47 | 27.59% | 2.32 | 77.94% | | `moth_to_flame_pure` | -0.0427 | -3.57 | 10.69% | 1.58 | 77.94% | 研报区间多出的 2013、2014 两年无法在本次回填中检验,但从上表可见两年的加入会把 2015—2016 的拖累摊薄,与研报更高的多空年化方向一致。 **待确认事项:`moth_to_flame_pure` 的多空组合在本项目近乎失效。** 该因子 Rank IC -0.0438、年化 ICIR -3.50 都与研报(-5.03%、-2.68)同量级,但多空年化只有 1.26%、信息比 0.17,而研报是 23.35% 与 2.46。分组收益显示原因不在排序能力而在最高一组: | 分组(1 = 因子值最低) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | | `moth_to_flame` 月均收益 | 1.94% | 1.65% | 1.43% | 1.29% | 1.09% | 1.02% | 0.91% | 0.99% | 0.38% | 0.05% | | `moth_to_flame_pure` 月均收益 | 1.65% | 1.41% | 1.28% | 1.19% | 1.12% | 1.00% | 0.82% | 0.64% | 0.47% | 1.21% | `moth_to_flame_pure` 的第 1 ~ 9 组严格单调递减(1.65% → 0.47%),但第 10 组反弹到 1.21%,把多空收益几乎抹平;`moth_to_flame` 则一路单调到底。即正交化后残差最高的那一档个股并不下跌。本项目的风格因子清单与计算口径为自选(研报未披露),这一档多半是回归过度修正的结果,**在把 `moth_to_flame_pure` 用于多空或纯空头策略前须先复核第 10 组**;只用其排序信息(IC / 分层多头)不受影响。2017 年起的子区间同一问题仍在,多空年化 10.69%。 **已知的口径差异**: - **样本区间**:本项目自 2015-01-01 回填,研报自 2013 年 1 月,少 2013、2014 两年,影响见上文「区间敏感性」。 - **多空组合口径未披露**:研报未说明分组数、组内权重、是否扣费、是否剔除涨跌停,本项目取月末调仓、十分组、等权、不扣费。 - **三处「等权合成」的标准化口径未披露**:研报只写「等权合成」。本项目三处合成(月跳跃度、修正振幅、飞蛾扑火)一律先截面 1%/99% 截尾 + z-score 再算术平均。这一步在本表是必须的:日跳跃度量级约 1e-10、振幅约 1e-2,相差 8 个数量级,直接相加会让月跳跃度的信息完全消失。 - **「剔除开盘与收盘」的具体含义**:本项目处理为剔除集合竞价 bar、保留 240 根日内 bar(09:31–15:00),与同系列之五一致。若研报还额外剔除了 15:00 收盘 bar,`daily_jump` 会有轻微系统性差异。 - **恰好等于截面均值的处理**:研报对「日跳跃度 / 泰勒残项恰等于截面均值」未作规定,本项目并入「火把」型。浮点比较下该情形几乎不出现。 - **`revised_amplitude_1` 的 Rank IC 研报未披露**,只说「没有明显提升」。本项目实测 -0.0751,确实略低于传统振幅的 -0.0901,与研报描述一致。 - **`moth_to_flame_pure` 的风格因子口径由本项目选定**,见该因子「项目实现说明」,与研报差异不可避免。 **其他交叉核对**(不依赖区间,可直接验证实现正确性的三处): | 核对项 | 本项目 | 研报原文 | 出处 | | ---- | ---- | ---- | ---- | | 日内有效 bar 数 / 收益率起始分钟 | 240 根(09:31–15:00),首分钟收益率为空,每日 239 个有效泰勒残项 | 剔除开盘与收盘、仅考虑日内数据;$t$ 分钟收益率需要 $t-1$ 分钟收盘价 | 研报 2.1 节步骤 1–2 | | 泰勒残项的解析形式 | 直接式 $2(\exp(x)-1-x)-x^2$ 与 $x^3/3$ 之比在 $x \in [10^{-4}, 2\times10^{-2}]$ 上为 1.0003 ~ 1.0050 | 「连续复利收益率即单利收益率泰勒展开式的第一项,第二项为连续复利收益率的平方除以 2」 | 研报 2.1 节步骤 2–4 | | 「火把」型振幅占比 | 约 11% ~ 14%(2024-03 实测 5 个交易日) | 「如果 $t$ 日股价发生了明显跳跃」属少数情形,截面均值被少数大跳跃个股拉高 | 研报 2.3 节步骤 2 | 分钟级递推(单利 / 连续复利收益率 → 泰勒残项 → 日内均值)另与 polars 独立实现逐值比对,5 只样本股的 `daily_jump` 相对偏差不超过 $1.2 \times 10^{-15}$,可确认 `m_lag` 的日内分区口径与空值传播正确。翻转逻辑另由入库前测试点 `amplitude_flip_consistency` 逐日守护:`|revised_amplitude_1|` 与 `|revised_amplitude_2|` 不得超过 `amplitude_traditional`,回填全程零违反。 覆盖度:2015-01-05 ~ 2026-09-30 共 2855 个交易日、1167 万行,`moth_to_flame` 逐年有效值占比 99.93% ~ 99.99%,`moth_to_flame_pure` 99.83% ~ 99.99%。窗口统计使用忽略空值的变体,故停牌不会像普通 `m_avg` 那样把此后整个窗口拖成空值。 **样本外表现(2022-09-01 ~ 2026-09-30,逐日,968 个截面)**:9 个因子全部仍然有效,无符号反转。 | 因子 | 样本内逐日 IC | 样本外逐日 IC | 样本内 ICIR | 样本外 ICIR | | ---- | ---- | ---- | ---- | ---- | | `monthly_jump_mean` | -0.0839 | -0.0806 | -1.52 | -0.99 | | `monthly_jump_std` | -0.0885 | -0.0896 | -1.30 | -1.03 | | `monthly_jump` | -0.0969 | -0.0914 | -1.50 | -1.03 | | `amplitude_traditional` | -0.0946 | -0.0909 | -0.76 | -0.66 | | `revised_amplitude_1` | -0.0812 | -0.0716 | -1.41 | -0.89 | | `revised_amplitude_2` | -0.0925 | -0.0722 | -1.25 | -0.83 | | `revised_amplitude` | -0.0973 | -0.0781 | -1.44 | -0.87 | | `moth_to_flame` | -0.1009 | -0.0843 | -1.52 | -0.97 | | `moth_to_flame_pure` | -0.0438 | -0.0250 | -1.00 | -0.44 | IC 衰减普遍在 20% 以内,`monthly_jump_std` 与 `amplitude_traditional` 几乎不衰减。ICIR 的下降幅度大于 IC,说明近四年 IC 的波动变大而非中枢移动。衰减最明显的仍是正交化版本 `moth_to_flame_pure`:IC 从 -0.0438 降到 -0.0250、ICIR 从 -1.00 降到 -0.44,剥离风格后的增量信息减弱,而未正交化的 `moth_to_flame` 衰减有限(-0.1009 → -0.0843)。这与同系列之四「球队硬币」、之五「云开雾散」的 `_pure` 版本是同一模式,使用前应复核当期表现。样本外区间末端约 21 个交易日因前向收益窗口不完整而无 IC,已从序列中剔除。 ## 示例数据 按 `date`、`instrument` 排序后的前 5 行与后 5 行,由 `update_docs()` 推送文档时自动填充。 | date | instrument | daily_jump | monthly_jump_mean | monthly_jump_std | monthly_jump | amplitude_daily | amplitude_traditional | flipped_amplitude_daily | revised_amplitude_1 | hl_taylor_resid_daily | flipped_amplitude2_daily | revised_amplitude_2 | revised_amplitude | moth_to_flame | moth_to_flame_pure | |---------------------|------------|------------|-------------------|------------------|--------------|-----------------|-----------------------|-------------------------|---------------------|-----------------------|--------------------------|---------------------|-------------------|---------------|--------------------| | 2026-09-30 00:00:00 | 000001.SZ | 0.000000 | -0.000000 | 0.000000 | -0.443768 | 0.028194 | 0.015240 | -0.028194 | -0.015240 | 0.000011 | -0.028194 | -0.015240 | 0.285778 | -0.077993 | 0.490554 | | 2026-09-30 00:00:00 | 000002.SZ | 0.000000 | 0.000000 | 0.000000 | 0.658631 | 0.178922 | 0.056711 | 0.178922 | 0.031263 | 0.001727 | 0.178922 | 0.014365 | 3.177062 | 2.119088 | 1.122926 | | 2026-09-30 00:00:00 | 000006.SZ | 0.000000 | 0.000000 | 0.000000 | -0.206635 | 0.095801 | 0.039402 | -0.095801 | -0.018555 | 0.000018 | -0.095801 | -0.024045 | -0.176267 | -0.204701 | -0.062243 | | 2026-09-30 00:00:00 | 000007.SZ | 0.000000 | 0.000000 | 0.000000 | -0.397859 | 0.042419 | 0.041551 | -0.042419 | -0.041551 | 0.000021 | -0.042419 | -0.041551 | -1.629222 | -0.958941 | -1.335613 | | 2026-09-30 00:00:00 | 000008.SZ | 0.000000 | -0.000000 | 0.000000 | -0.435496 | 0.016736 | 0.021249 | -0.016736 | -0.021249 | 0.000009 | -0.016736 | -0.021249 | -0.179025 | -0.330484 | 0.284473 | | 2026-09-30 00:00:00 | 920978.BJ | 0.000000 | 0.000000 | 0.000000 | -0.374168 | 0.026627 | 0.029107 | -0.026627 | -0.029107 | 0.000022 | -0.026627 | -0.022613 | -0.543708 | -0.498814 | -0.350114 | | 2026-09-30 00:00:00 | 920981.BJ | -0.000000 | 0.000000 | 0.000000 | -0.230779 | 0.058864 | 0.050584 | -0.058864 | -0.035080 | 0.000024 | -0.058864 | -0.037566 | -1.342047 | -0.862350 | -1.038248 | | 2026-09-30 00:00:00 | 920982.BJ | 0.000000 | 0.000000 | 0.000000 | -0.161111 | 0.174025 | 0.045559 | 0.174025 | -0.011865 | 0.001611 | 0.174025 | 0.005933 | 1.213464 | 0.588375 | 0.264522 | | 2026-09-30 00:00:00 | 920985.BJ | 0.000000 | 0.000000 | 0.000000 | -0.380504 | 0.024775 | 0.028229 | -0.024775 | -0.022005 | 0.000008 | -0.024775 | -0.022005 | -0.237503 | -0.332958 | 0.078858 | | 2026-09-30 00:00:00 | 920992.BJ | -0.000000 | 0.000000 | 0.000000 | 0.073513 | 0.055556 | 0.048906 | -0.055556 | -0.002938 | 0.000027 | -0.055556 | 0.004644 | 1.521435 | 0.886035 | 0.993817 |
方正因子飞蛾扑火 (hf_bar1m_c_fz_moth_to_flame)
数据描述:
文档
用例
表结构
| 字段 | 字段类型 | 字段描述 |
| moth_to_flame | double | 飞蛾扑火,月跳跃度与修正振幅因子各自截面去极值标准化后等权平均,研报的最终合成因子,值越小未来收益越高。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| __PARTITION__ | string | - |
| monthly_jump_std | double | 月稳跳跃度,过去 20 个交易日日跳跃度的样本标准差,值越大说明跳跃程度越不稳定。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| monthly_jump_mean | double | 月均跳跃度,过去 20 个交易日日跳跃度的均值,值越大越差(未来收益越低)。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| revised_amplitude | double | 修正振幅因子,修正振幅因子 1 与修正振幅因子 2 各自截面去极值标准化后等权平均,值越大越差。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| moth_to_flame_pure | double | 纯净飞蛾扑火,飞蛾扑火在当日截面上对申万一级行业哑变量与十个常见风格因子做多元回归后的残差,剥离风格与行业暴露后的增量信息,方向与飞蛾扑火一致。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| revised_amplitude_1 | double | 修正振幅因子 1,过去 20 个交易日日翻转振幅的均值,值越大越差。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| revised_amplitude_2 | double | 修正振幅因子 2,过去 20 个交易日日翻转振幅 2 的均值,值越大越差。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| amplitude_traditional | double | 传统振幅因子,过去 20 个交易日日振幅的均值;研报用作对照基准,Rank IC 高但 ICIR 低、不够稳定。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| hl_taylor_resid_daily | double | 日高低价泰勒残项,把日跳跃度的算法搬到日频数据上:以前一交易日最低价到当日最高价计算单利与连续复利收益率,再取 2 倍单复利差减连续复利收益率的平方,用于识别从低价到高价的跳跃式上涨。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| flipped_amplitude_daily | double | 日翻转振幅,按分钟跳跃识别后的日振幅:日跳跃度不低于当日截面均值者为「火把」型振幅、保持原值,低于截面均值者为「太阳」型振幅、乘以 -1。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| flipped_amplitude2_daily | double | 日翻转振幅 2,口径与日翻转振幅一致,只把识别跳跃的依据从日跳跃度换成日高低价泰勒残项。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| instrument | string | 股票代码 |
| date | timestamp[ns] | 交易日期 |
| amplitude_daily | double | 日振幅,当日最高价减最低价再除以前一交易日收盘价,恒非负。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| daily_jump | double | 日跳跃度,日内每分钟「泰勒残项」的均值;泰勒残项 = 2 倍单复利差 - 连续复利收益率的平方,数学上等于连续复利收益率三次方的三分之一加高阶项,故带符号且量级极小(约 1e-12 ~ 1e-9),值越大说明当日股价向上跳跃越剧烈。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
| monthly_jump | double | 月跳跃度,月均跳跃度与月稳跳跃度各自截面去极值标准化后等权平均,值越大越差。来源:曹春晓. 2022-09-22. 《个股股价跳跃及其对振幅因子的改进——多因子选股系列研究之六》. 方正证券 |
表名:hf_bar1m_c_fz_moth_to_flame
起始时间:
最近更新时间: