因子猎手3706:自由现金流率 + 股息率 合成因子检验报告

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

因子:股权自由现金流率(TTM÷总市值)与股息率(过去一年分红÷市值)等权合成 · 落库表 fcf_dividend · 区间 2019-01-02 ~ 2026-10-28 · 月度调仓,信号日收盘后生成,T+1 开盘成交

总评:存疑

RankIC 均值 0.0312(可用),Newey-West t=5.69;十组组序相关 0.83(台阶状(规律));多空月度调仓扣费后年化 +2.21%、不扣费 +3.69%。

判定规则(写在代码里,不是事后凭感觉):|IC|<0.03、组序相关<0.8、多空扣费后年化≤0 三条同时不满足 →「无效」; 「有效」需同时满足:|IC|≥0.03、NW t≥2、组序相关≥0.8、多空扣费后年化>0 且夏普≥0.5;其余 →「存疑」;|IC|>0.1 一律「存疑」(警惕未来函数)。 注意:夏普≥0.5 这一条是看到本次结果后补加的(上次任务只要求年化>0),原因是 IC 与组序都过线时,仅凭年化为正会把一个扣费后夏普只有 0.3 的多空称作「有效」。

二、因子加工说明

  1. 因子构成:自由现金流率 = 股权自由现金流 TTM(fcfe_ttm)÷ 总市值;股息率 = 平台字段 dividend_yield_ratio(过去一年分红 ÷ 市值)。 「红利参考红利ETF」我按红利类产品最核心的股息率口径来理解;没有读取任何红利 ETF 的成分股或指数编制规则(例如分红稳定性筛选),这是对原要求的简化。 股息率为 0(当年没有分红)的行占 28.6%,是真实的 0 而不是缺失,没有填充。 字段抽查:贵州茅台 2026-10-28 股息率 × 未复权收盘价 = 52.0 元/股,即过去一年的每股分红,量级合理,但没有与分红公告逐笔核对。
  2. 股票池:全表 9,038,857 个股票·日,依次剔除 ST 304,663、停牌 15,148、 上市不足 250 个交易日 536,807、市值或行业缺失 261,剩 8,181,978 行(1895 个交易日,日均 4318 只)。 交易日数 trading_days 缺失(北交所老代码等)的 176,086 行按「上市自然日×245/365」折算,没有丢行。
  3. 行业中位数填充:自由现金流率缺失 131,621 行,用当日同申万一级行业的中位数填补;股息率缺失 0 行,无需填充。
  4. 缩尾:两个因子各自每日按 1%/99% 分位缩尾,自由现金流率触及 165,352 个值,股息率 86,569 个。 股息率有近三成的 0 值,1% 分位点本身就是 0,所以缩尾实际只作用在上端。
  5. 标准化与合成:各自每日 z-score,等权平均后再 z-score。两个子因子的日均相关系数 +0.160。
  6. 中性化:对「申万一级行业哑变量 + 对数总市值」回归取残差(c_neutralize_resid,不重复缩尾)。 合成因子与对数市值的日均相关:中性化前 +0.1775,后 +1.4e-14(日内最大绝对值 6.4e-11)。
  7. 再 z-score:每日均值绝对值最大 3.7e-17,标准差在 1.000000 ~ 1.000000; 重复的 (date, instrument) 0 条;NaN 0 个,inf 0 个。

自由现金流取「股权自由现金流 TTM」口径,企业自由现金流(fcff)口径没有测试;等权合成之外的权重没有尝试。

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

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

本次的对比:中性化前(只缩尾、合成、z-score)RankIC 均值 0.0268,标准差 0.1025,ICIR 0.262,NW t = 3.15; 中性化后均值 0.0312,标准差 0.0646,ICIR 0.483,NW t = 5.69。 均值只抬高了 16%,日度波动降低了 37%,所以 t 值的提升主要来自噪声变小。 中性化前因子与对数市值的日均相关为 +0.178,即原始因子偏向大市值。 猜测:被扣掉的是一段随市值风格轮动的共同波动;我没有把行业项和市值项拆开单独验证。

三、图表

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

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

图 2 · 累计 RankIC

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

图 3 · 十组下期平均收益

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

图 4 · 十组累计净值

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

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

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

图 6 · 日度 RankIC 直方图

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

图 7 · 分年度 RankIC

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

四、指标表

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

指标 数值 课程口径 说明
RankIC 均值(中性化后) +0.0312 可用 |IC|≥0.03 可用,≥0.05 强,>0.1 可疑
RankIC 均值(中性化前) +0.0268 未达可用线(<0.03) NW t = 3.15
RankIC 标准差 0.0646 — 日度
ICIR(均值/标准差) 0.483 — 日度口径,未年化
朴素 t 值 20.90 不可用 把 20 日重叠窗口当成独立样本,虚高
Newey-West t 值(滞后 20) 5.69 ≥2 算显著 校正 20 日收益窗口的重叠
IC>0 胜率 68.9% — 日度
月度不重叠 RankIC 均值 +0.0306 可用 92 个月;NW t = 4.88,胜率 67.4%
组序相关(G1~G10 与组号) 0.830 台阶状(规律) 台阶状 = 规律;乱跳 = 巧合
十组中相邻组上升的台阶数 5 / 9 — 完全单调应为 9 / 9
G10 − G1(月均) +0.00328 — G10 1.51%,G1 1.18%
多空年化(不扣费 / 扣费) +3.69% / +2.21% — 成本 单边 0.15%(买入和卖出各收一次),按双腿成交额计;不含融券费用与冲击成本
多空夏普(不扣费 / 扣费) +0.50 / +0.32 — 无风险利率按 0,月度收益年化
多空最大回撤(不扣费 / 扣费) -14.61% / -16.40% — 月度净值口径
多头 / 空头单边月换手 20.2% / 19.8% — 平均每月成本 0.120%(双腿合计)
扣费后月度胜率 53.3% — 最差月 -7.46%,最好月 +4.84%
G10 相对基准年化超额 +2.19% — 月度跑赢基准的比例 48.9%

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

年份 月数 G10 G1 全市场等权基准 G10 超额 多空(不扣费) 多空(扣费)
2019 12 +16.58% +4.93% +18.86% -2.28% +9.61% +7.87%
2020 12 +21.14% +14.76% +21.17% -0.03% +5.25% +3.81%
2021 12 +27.41% +33.21% +25.83% +1.58% -4.78% -6.12%
2022 12 +10.52% +8.24% +6.18% +4.34% +0.90% -0.53%
2023 12 -2.55% -17.75% -18.01% +15.46% +17.03% +15.47%
2024 12 +29.61% +20.71% +28.63% +0.98% +5.54% +3.99%
2025 12 +36.82% +46.01% +49.18% -12.36% -6.99% -8.22%
2026 8 -4.26% -8.07% -6.03% +1.77% +3.70% +2.62%

分年度 RankIC

年份 交易日数 RankIC(中性化后) RankIC(中性化前) NW t 胜率 课程口径
2019 244 +0.0494 +0.0471 5.50 87.3% 可用
2020 243 +0.0249 +0.0482 2.45 75.7% 未达可用线(<0.03)
2021 243 +0.0244 +0.0125 1.71 61.7% 未达可用线(<0.03)
2022 242 +0.0188 +0.0178 1.71 64.0% 未达可用线(<0.03)
2023 242 +0.0470 +0.0220 3.00 78.5% 可用
2024 242 +0.0321 +0.0335 1.27 56.2% 可用
2025 243 +0.0153 -0.0029 1.16 55.6% 未达可用线(<0.03)
2026 175 +0.0402 +0.0401 2.41 73.1% 可用

五、结论

  • **IC 是否显著为正?**是,这是三项里最站得住的一项。中性化后日度 RankIC 均值 0.0312(可用),Newey-West t = 5.69,胜率 68.9%。换成月度不重叠的 92 个样本,均值 0.0306,t = 4.88,结论一致。朴素 t 为 20.9,是 20 日重叠窗口造成的虚高。分年度 8/8 个年份均值为正,最弱的是 2025 年(0.0153)。
  • **分组是否单调?**大体上升但不是严格单调。组序相关 0.83,相邻组上升 5/9 个台阶。G1~G5 的月均收益只在 1.18% ~ 1.30% 之间,差别主要出现在 G6 之后;最高的是 G8(1.61%),G10 反而回落到 1.51%。G10 对等权基准的年化超额 +2.19%,月度跑赢基准的比例 48.9%。
  • **多空是否稳定?**方向对,但赚得很少。不扣费年化 +3.69%、夏普 0.50;扣掉单边 0.15% 的成本后年化 +2.21%、夏普 0.32,最大回撤 -16.4%。8 个年份里扣费后为正的有 5 年。每月单边换手约 20%(多头),成本吃掉了约 1.5% 的年化。
  • **要不要继续研究?**值得继续研究,但不建议直接做成多空策略。排序信息(IC)是有的,多空腿却几乎没把它变成净收益,原因之一是 G1~G5 的收益彼此接近,空头端贡献很小。更合理的用法是作为多因子组合里的一个成分,或只用多头端并控制换手,同时补做样本外验证、企业自由现金流口径和红利稳定性筛选后再下结论。

以上描述的是本次样本内结果。关于「为什么空头端不赚钱」,我没有做过验证,不下结论。

六、风险与备注

  • 样本区间 2019-01-02 ~ 2026-10-28,只有 92 个月度调仓期、1895 个交易日,统计功效有限;日度 IC 的 20 日窗口互相重叠,已用 Newey-West 校正。
  • 只测了一组口径(fcfe_ttm 与 dividend_yield_ratio 等权)、10 分组、约 20 日持有,没有做样本外检验;换权重、口径或分组数结果可能不同,存在过拟合风险。
  • 「红利参考红利ETF」被简化为股息率字段,没有读取红利 ETF 的成分股或编制规则(如分红连续性、股息率排名筛选)。
  • 空头不可实现:A 股股票账户不能直接融券做空 G1,多空净值只是衡量因子区分度的理论值;实际可做的是「多 G10」或「多 G10 对冲指数」。
  • 交易细节未建模:涨跌停无法成交、停牌、冲击成本、融券费用、容量、分红再投资都没有处理。入场日开盘价缺失的 237 笔直接跳过。
  • 末期处理:数据截至 2026-10-28,最后一个月末信号日是 2026-08-31,其持有期到 2026-10-08 结束;之后未完结的月份不计入。
  • 总评里「夏普≥0.5」一条是看到结果后补加的判定条件,已在总评处注明;若沿用只看年化为正的旧规则,总评会变成「有效」。

自检结果

自检项 状态 结果
财报更新日 vs 公告日(仅覆盖自由现金流,不含股息率) 有未解释尾部 自由现金流 TTM 的因子值共变化 131,736 次,首次变化日与最近公告日的滞后中位数 0 天,P90 2 天;当天或次日更新占 74.9%,2~5 天占 18.9%。有未解释的尾部:滞后超过 5 天 7,766 笔(其中超过 30 天 5,451 笔);另有 374 笔因子在最近公告日之前就变了,其中提前超过 3 天的 81 笔。提前变化意味着可能含未来信息,这些笔我没有逐笔核查。猜测:长滞后可能来自重述或补报、变更表没有收录对应公告日,没有验证。股息率没有做这项检查:它每天随价格变化,无法用「值变化日」对齐公告日;字段所用的分红是按公告日还是除权日入库,我没有核实。
因子额外滞后后的 IC 通过 因子再晚用 0/1/5/20/60 个交易日,RankIC 均值 0.0312 / 0.0308 / 0.0295 / 0.0270 / 0.0263(NW t:5.69 / 5.62 / 5.41 / 5.00 / 5.04)。滞后 60 日仍保留 84% 的 IC,衰减缓慢,说明信号不依赖「抢先几天」;财务与分红类因子变化慢,这个现象符合预期。
随机因子对照 通过 20 个随机种子:IC 均值绝对值最大 0.0015,|NW t|>2 的有 2 个,最大 |t| = 2.57(随机数约 5% 概率越过 2,20 个里出现 1~2 个属正常)。本因子 t = 5.69 高于随机数的最大值。随机对照隔 3 日抽样、NW 滞后取 7,与正式检验的抽样方式不完全相同,只能作量级参照。
与过去收益的关系 参考 因子与信号日之前收益的日度秩相关均值:过去1日 +0.0032(t=2.20),过去5日 -0.0041(t=-1.28),过去20日 -0.0164(t=-2.83),过去60日 -0.0331(t=-4.50),过去250日 -0.0513(t=-5.62)。绝对值都不大(最大 0.051),|NW t|>2 的有两类:负相关的是过去 20 日、60 日、250 日,即因子值高的股票过去涨幅偏低(价值型、偏逆向的暴露);正相关的是过去 1 日,量级只有 +0.0032,可以忽略。猜测:IC 里有一部分可能是这种逆向暴露,而不是现金流/分红本身;我没有对过去收益做回归剥离,所以不能说因子与过去收益无关。
退市标的是否在样本内 通过 2019 年以来退市 244 只,其中 237 只进入了因子样本(164,912 行,占 2.0%)。离场遇到停牌或退市时按最后可得开盘价平仓,共 780 次;这不代表实盘能以该价成交。
SQL 与 numpy 核对 通过 逐日 RankIC 抽查 40 个交易日,SQL 与 numpy 最大绝对差小于 1e-6(结果文件只保留 6 位小数,运行日志中为 2.8e-15);月末十分组标签 34,401 行一致率 100.0%。正式结果采用 SQL 口径(RankIC 与 20 日分组),月度多空用 numpy 实现。

总结:自检没有发现明显的未来函数迹象,但有两处没有被解释清楚:自由现金流更新日的异常尾部,以及股息率字段的分红入库时点没有核实。请把 IC 结果当作「可能略乐观」来读。

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

{link}