自由现金流率因子检验报告

由bq6ph0sy创建,最终由bq6ph0sy 被浏览 5 用户

因子:股权自由现金流(TTM)÷ 总市值 · 落库表 yinzilieshou3706 · 区间 2019-01-02 ~ 2026-10-27 · 月度调仓,信号日收盘后生成,T+1 开盘成交

总评:无效

RankIC 均值 0.0078(未达可用线(<0.03)),Newey-West t=2.23;十组组序相关 0.08(乱跳(巧合));多空月度调仓扣费后年化 -0.70%、不扣费 +0.78%。

判定规则(写在代码里,不是事后凭感觉):|IC|<0.03、组序相关<0.8、多空扣费后年化≤0 三条同时不满足 →「无效」; 三条全满足且 NW t≥2 →「有效」;其余 →「存疑」;|IC|>0.1 一律「存疑」(警惕未来函数)。

二、因子加工说明

  1. 股票池:全表 9,033,281 个股票·日,依次剔除 ST 304,466、停牌 15,144、 上市不足 250 个交易日 536,641、市值或行业缺失 261,剩 8,176,769 行(1894 个交易日,日均 4317 只)。 交易日数 trading_days 缺失(北交所老代码等)的 176,086 行按「上市自然日×245/365」折算,没有丢行。
  2. 行业中位数填充:自由现金流率缺失的 131,621 行,用当日同申万一级行业的中位数填补(填充发生在股票池内)。
  3. 缩尾:每日截面按 1%/99% 分位缩尾,共触及 165,246 个值。
  4. 标准化:每日截面 z-score。
  5. 中性化:对「申万一级行业哑变量 + 对数总市值」做回归取残差(c_neutralize_resid,不重复缩尾)。 与对数市值的日均相关系数:中性化前 +0.0725,后 -6.9e-15(日内最大绝对值 1.6e-11)。
  6. 再 z-score:每日均值绝对值最大 2.6e-17,标准差在 1.000000 ~ 1.000000; 重复的 (date, instrument) 0 条;NaN 0 个,inf 0 个。

任务模板里的「EP、ROE 各自处理后等权合成」对单一因子不适用,这里只处理了自由现金流率这一个因子,没有合成这一步。 自由现金流取「股权自由现金流 TTM(fcfe_ttm)」,企业自由现金流(fcff)口径没有测试。

为什么要中性化(大白话)

一个因子的好成绩,有时只是顺手买了「小盘股」或「某个行业」,并不是因子自己的选股本事。 中性化就是先把行业和市值这两股共同力量扣掉,只留下「同行业、同市值水平的股票之间,谁的自由现金流率更高」这一份信息,再看它能不能预测收益。

本次的对比:中性化前(只缩尾+z-score)RankIC 均值 0.0028,NW t = 0.57; 中性化后 RankIC 均值 0.0078,NW t = 2.23。 中性化之后 IC 变大、t 值变高,但两者的绝对水平都很低。 猜测:中性化后信号变清晰,可能是行业之间的现金流率差异在抵消组内的选股效果;这一点我没有拆开行业项和市值项单独验证。 另外,中性化前因子与对数市值的日均相关只有 +0.073,说明它本来就不太像「纯小盘」因子。

三、图表

图 1 · 日度 RankIC 时间序列(中性化后)

逐日因子对未来 20 个交易日收益(T+1 开盘买入、持有到 T+21 开盘)的秩相关;竖线红正绿负,蓝线为 60 日均线,横线为 0 轴。共 1873 个交易日。

图 2 · 累计 RankIC

日度 RankIC 逐日累加。蓝线为中性化后,灰虚线为中性化前;斜率向上说明方向稳定为正,走平说明那段时间没有预测力。

图 3 · 十组下期平均收益

每月末按中性化因子分 10 组(G1 最小 → G10 最大),柱高为各组月度持有期的平均收益,虚线为全市场等权基准的月均 1.40%。共 92 个月。

图 4 · 十组累计净值

G1 绿 → G10 红渐变;线尾只标注 G1、G10 和全市场等权基准;鼠标悬停时按当日净值从高到低排序。

图 5 · 多空累计净值(多 G10 空 G1)

月度调仓。橙线不扣费,蓝线扣费(单边 0.15%),灰虚线为全市场等权基准(只做多的市场平均,仅作参照,不是多空的对手盘)。

图 6 · 日度 RankIC 直方图

均值 0.0078,标准差 0.0400;柱子红色在 0 右侧、绿色在 0 左侧。

图 7 · 分年度 RankIC

每个日历年的日度 RankIC 均值;蓝色虚线为课程口径的「可用」线 0.03。悬停可看该年 Newey-West t 和胜率。

四、指标表

课程口径:|IC|≥0.03「可用」、≥0.05「强」、>0.1「可疑(警惕未来函数)」;红色为正、绿色为负。涨跌配色:红涨绿跌。

指标 数值 课程口径 说明
RankIC 均值(中性化后) +0.0078 未达可用线(<0.03) |IC|≥0.03 可用,≥0.05 强,>0.1 可疑
RankIC 均值(中性化前) +0.0028 未达可用线(<0.03) NW t = 0.57
RankIC 标准差 0.0400 — 日度
ICIR(均值/标准差) 0.195 — 日度口径,未年化
朴素 t 值 8.42 不可用 把 20 日重叠窗口当成独立样本,虚高
Newey-West t 值(滞后 20) 2.23 ≥2 算显著 校正 20 日收益窗口的重叠
IC>0 胜率 58.3% — 日度
月度不重叠 RankIC 均值 +0.0073 未达可用线(<0.03) 92 个月;NW t = 1.68,胜率 57.6%
组序相关(G1~G10 与组号) 0.079 乱跳(巧合) 台阶状 = 规律;乱跳 = 巧合
十组中相邻组上升的台阶数 6 / 9 — 完全单调应为 9 / 9
G10 − G1(月均) +0.00076 — G10 1.37%,G1 1.30%
多空年化(不扣费 / 扣费) +0.78% / -0.70% — 成本 单边 0.15%(买入和卖出各收一次),按双腿成交额计;不含融券费用与冲击成本
多空夏普(不扣费 / 扣费) +0.17 / -0.11 — 无风险利率按 0,月度收益年化
多空最大回撤(不扣费 / 扣费) -14.38% / -19.94% — 月度净值口径
多头 / 空头单边月换手 21.3% / 19.8% — 平均每月成本 0.123%(双腿合计)
扣费后月度胜率 52.2% — 最差月 -5.11%,最好月 +3.61%
G10 相对基准年化超额 +0.11% — 月度跑赢基准的比例 46.7%

分年度收益(按信号日所在年份复利)

年份 月数 G10 G1 全市场等权基准 G10 超额 多空(不扣费) 多空(扣费)
2019 12 +17.22% +6.88% +18.86% -1.64% +9.20% +7.47%
2020 12 +16.05% +15.76% +21.17% -5.12% -0.08% -1.48%
2021 12 +26.80% +35.80% +25.83% +0.96% -7.19% -8.56%
2022 12 +12.19% +8.37% +6.18% +6.01% +3.01% +1.52%
2023 12 -12.69% -15.92% -18.01% +5.32% +3.03% +1.57%
2024 12 +23.77% +23.31% +28.63% -4.86% -1.14% -2.56%
2025 12 +41.61% +48.45% +49.18% -7.57% -5.02% -6.31%
2026 8 -3.23% -8.27% -6.03% +2.80% +5.16% +3.91%

分年度 RankIC

年份 交易日数 RankIC(中性化后) RankIC(中性化前) NW t 胜率 课程口径
2019 244 +0.0213 +0.0273 3.59 78.3% 未达可用线(<0.03)
2020 243 -0.0010 +0.0164 -0.14 54.7% 未达可用线(<0.03)
2021 243 +0.0048 -0.0128 0.46 56.8% 未达可用线(<0.03)
2022 242 +0.0031 -0.0013 0.47 55.8% 未达可用线(<0.03)
2023 242 +0.0085 -0.0205 0.92 68.2% 未达可用线(<0.03)
2024 242 +0.0175 +0.0106 1.16 50.4% 未达可用线(<0.03)
2025 243 -0.0015 -0.0050 -0.15 39.1% 未达可用线(<0.03)
2026 174 +0.0103 +0.0092 1.54 64.9% 未达可用线(<0.03)

五、结论

  • **IC 是否显著为正?**方向是正的,统计上刚过线但很弱。中性化后均值 0.0078,校正重叠后 t = 2.23(超过 2 的常用门槛),均值远低于 0.03 的「可用」线。换成月度不重叠的 92 个样本,t 只有 1.68,不显著。朴素 t 高达 8.4,就是重叠窗口造成的虚高。分年度看,6/8 个年份均值为正,但除个别年份外都很小。
  • **分组是否单调?**不单调。十组月均收益在 1.21% ~ 1.72% 之间起伏,组序相关仅 0.08,最高的是 G7 而不是 G10,属于「乱跳」。G10 年化超额只有 +0.11%。
  • **多空是否稳定?**不稳定、也不赚钱。不扣费年化 +0.78%,扣掉单边 0.15% 的成本后年化 -0.70%,最大回撤 -19.9%。8 个年份里只有 4 年扣费后为正。每月单边换手约 21%,成本把本来就薄的毛收益吃掉了。
  • **要不要继续研究?**不建议单独作为选股因子继续投入。如果还想继续,更合理的方向是把它当作多因子组合里的一个小权重成分,或换成企业自由现金流(fcff)等其他口径再测一次;现有结果不支持把它做成独立策略。

以上是对本次样本内结果的描述。关于「为什么这个因子在 A 股不灵」,我没有做过验证,不下结论。

六、风险与备注

  • 样本区间 2019-01-02 ~ 2026-10-27,只有约 92 个月度调仓期,1894 个交易日,统计功效有限。
  • 只测了一个因子、一个口径(fcfe_ttm / 总市值)和一组参数(10 分组、20 日持有),结论没有经过样本外检验;换口径或换分组数可能得到不同结果,存在过拟合风险。
  • 空头不可实现:A 股股票账户不能直接融券做空 G1,多空净值只是衡量因子区分度的理论值;实际可做的是「多 G10 对冲」。
  • 交易细节未建模:涨跌停无法成交、停牌、冲击成本、融券费用、容量、分红再投资都没有处理。入场日开盘价缺失的 237 笔直接跳过。
  • 末期处理:数据截至 2026-10-27,最后一个月末信号日 2026-08-31 的持有期到 2026-10-08 结束,之后未完结的月份不计入。
  • 表名说明:任务第二步正文写的是 value_roe_neutral,而「输入参数」里写的是 yinzilieshou3706;我按输入参数落库为 yinzilieshou3706。
  • 股票池里 ROE 与 EP 合成这一步对单因子不适用,没有执行。

自检结果

自检项 状态 结果
财报更新日 vs 公告日 有尾部 因子值首次变化日与最近公告日:130,868 次变化,中位滞后 0 天,P90 2 天;当天或次日更新占 74.8%,2~5 天占 19.0%。有未解释的尾部:滞后超过 5 天 7,766 笔(其中超过 30 天 5,451 笔,几乎都在 40 天及以上);另有 374 笔因子在公告日之前就变了(其中提前超过 3 天 81 笔)。提前变化意味着可能存在未来信息,这部分我没有逐笔核查。猜测:长滞后可能是公司重述、补报或变更表里没有收录对应公告日,没有验证。
因子额外滞后后的 IC 通过 滞后 0/1/5/20/60 个交易日的 RankIC 均值:0.0078 / 0.0078 / 0.0076 / 0.0064 / 0.0069(NW t:2.23 / 2.23 / 2.20 / 1.87 / 2.13)。晚用几天几乎不变,说明信号不靠「抢跑」;财务因子本来就慢变,这个结果符合预期。
随机因子对照 通过 20 个随机种子的 IC 均值绝对值最大 0.0015,|NW t|>2 的有 2 个(最大 2.57)。随机数理论上也会偶尔超过 2,所以本因子的 t=2.23 与随机数的上限处在同一量级,不能当作强证据。
与过去收益的关系 参考 因子与信号日之前收益的日度秩相关均值(NW t):过去1d +0.0008(0.93),过去5d -0.0028(-1.45),过去20d -0.0081(-2.27),过去60d -0.0134(-2.67),过去250d +0.0137(2.36)。相关都很小,没有看到与动量/反转强绑定的迹象。
退市标的是否在样本内 通过 2019 年以来退市 243 只,其中 236 只进入了因子样本(164,219 行,占 2.0%)。离场遇到停牌/退市时按最后可得开盘价平仓,共 780 次;这不等于能以该价成交。
SQL 与 numpy 核对 通过 逐日 RankIC 抽查 40 个交易日,SQL 与 numpy 最大绝对差 0.0e+00;月末十分组标签 34,401 行一致率 100.0%。正式结果采用 SQL 口径。

总结:自检没有发现明显的未来函数迹象,但财报更新日有一小部分异常尾部(上表第一行)没有被解释,请不要忽略。

数据来源:BigQuant 平台;全部数字由检验脚本的结果文件(step1_diag.json / step2_save.json / step3_results.json)读取生成。 生成日期 2026-10-28;本报告只描述历史样本内结果,不构成投资建议。

{link}