📊 中低频多因子策略 · 反转20中段 + 低波20 · 月频 · 全A股

中低频多因子策略说明文档

反转(20日)中段 + 低波(20日)双因子 · 月频调仓 · 全A股 数据源: 小石大数据 R2 历史日线 (qfq) · 回测区间 2019-01 ~ 2026-08 生成日期: 2026-08-09 · 完整回测报告见同目录 report.html


1. 策略概述

一句话: 每月最后一个交易日,在全A股(上市满1年、20日均成交额≥1亿元)中,选"过去20日跌幅处于中段(rank 40%~60%)且波动率最低"的 30 只股票,等权持有到下月。

项目 设定
策略模式 多因子 (反转20日 + 低波20日), 月频调仓, 中低频
股票池 全A股, 上市≥1年, 20日均成交额≥1亿元
信号生成 每月最后交易日收盘, 反转因子 rank∈[0.40,0.60] 中段, 池内低波选 TOP30
执行规则 T+1 开盘价成交; 涨停不买 / 跌停不卖 / 停牌不交易; A股 T+1
基准 同池等权 (相同流动性/年龄过滤, 月频重平衡)
成本 佣金万3双边 + 卖出印花税 0.05% + 滑点 0.1% (双边)
数据 小石 R2 日线 qfq, 2018-2026 (2018 为因子预热段)

2. 设计思路与关键发现

2.1 为什么是"反转中段"而非"跌最惨"?—— 反转微笑曲线

全市场月频下,按过去20日跌幅分十分位,未来1月平均收益呈微笑型:

十分位 含义 未来1月均收益
D1 跌最惨 (垃圾股陷阱: 连续跌停/基本面崩塌) -0.63%
D2 跌很惨 -0.01%
D3~D7 温和回调 (反转 alpha 所在) +0.42% ~ +1.18%
D8~D10 抗跌/强势 +0.84% ~ +0.98%

结论: 买"跌最惨的"是经典错误——极端尾部是基本面崩塌的垃圾股,继续下跌。真实的月频反转 alpha 只存在于温和回调区间。因此策略把反转因子 rank 限制在 [0.40, 0.60] 中段。

2.2 为什么叠加低波?

2.3 流动性分层验证 (反转 alpha 真实可交易)

流动性层 (1=最不活跃~5=最活跃) 反转 IC
1 -0.019
3 +0.026
5 (最活跃) +0.051

反转 IC 随流动性增强 → alpha 不是小票流动性溢价的混入, 在高流动性大中盘上真实存在。


3. 防未来函数设计 (先设计, 后实证)

检查项 设计 实证结果
因子无前视 所有因子用 shift 构建, 只含截至 T 收盘信息 ✅ 通过
信号→执行滞后 T 收盘生成信号, T+1 开盘才成交 ✅ 通过
信号延迟检验 延迟 1/2/3 天执行, 结果应方向合理 ✅ T+2 夏普 0.554, T+3 0.574 (vs 基线 0.543), 不依赖抢先执行
参数扰动 冠军参数 ±50% 邻域 81 组 ⚠️ 平台中等: 夏普均值 0.18, 正夏普占比 89%
随机对照 同仓位同成本随机选股 50 次 ✅ 随机夏普均值 0.16 (p95 0.35), 冠军 0.54 击败全部 50 次
幸存者偏差 R2 数据含 242 只已退市股票, universe 为每日在市快照 ✅ 无幸存者偏差
停牌/涨跌停 停牌收益记 0; 涨停买不进/跌停卖不出按未成交处理并强制保留 ✅ 通过 (42 笔拒单)
样本外验证 训练 2019-2023 网格选参 (108 组), 样本外 2024-2026 不调参 ✅ 样本外夏普 0.72 > 训练 0.50

4. 回测结果

4.1 全样本 (2019-2026)

指标 策略 同池等权基准
年化收益 11.8% 8.0%
年化波动 18.0% 24.7%
夏普比率 0.54 0.24
索提诺 0.78 0.32
最大回撤 -23.0% -44.3%
卡玛 0.51 0.18
年化超额 / IR +3.8pp / 0.50
期末净值 2.25x 1.75x

4.2 分年表现

年份 策略 基准
2019 +40.0% +31.1%
2020 +26.2% +20.1%
2021 +23.2% +14.7%
2022 -2.3% -20.6%
2023 +0.2% -6.0%
2024 +42.0% +3.2%
2025 +11.3% +33.8%
2026 (至8月) +4.9% -11.6%

熊市 (2022-2023) 防御显著: 策略 -2% 而基准 -26%; 2024 小盘普跌年策略 +42%。

4.3 样本内外

区间 年化 夏普 超额
训练 2019-2023 10.6% 0.50 +2.6pp
样本外 2024-2026 15.6% 0.72 -2.1pp

样本外夏普高于训练段 → 参数未过拟合到样本内。样本外超额为负 (普涨行情) 但风险调整后优势扩大。


5. 与旧版 80/10 双因子对比

策略 口径 年化 夏普
80/10 (动量80+低波60) 中证1000 原版宽松 +24.0% 1.17
80/10 中证1000 严格 +10.8% 0.44
80/10 全A流动性 严格 -16.8% -0.55
中低频 (反转20+低波20) 中证1000 严格 +15.7% 0.68
中低频 (反转20+低波20) 全A流动性 严格 +11.8% 0.54

关键结论: 1. 原版 80/10 夏普 1.17 来自宽松执行口径 (信号日当日收益计入 + 无涨跌停限制), 严格化后只剩 0.44 2. 动量双因子池子依赖严重: 中证1000 有效, 全A流动性池直接转负 (-0.55) 3. 中低频策略在两个池子上都胜出, 且全A池版本通过全部防未来检查

详见 report_compare_8010.html


6. 局限与下一步

局限 (诚实披露)

  1. 参数平台中等: 冠军参数 (0.40,0.60) 区间显著优于邻域, 89% 邻域组合仍为正夏普, 但非极宽平台
  2. 样本外超额收窄: 2024-2026 普涨行情下选股超额为 -2.1pp, 但夏普 0.72 保持
  3. 未做行业/风格中性化: 风格暴露未剥离, 可能与低波/反转风格共振
  4. 小石中低频因子数据集未纳入: 北向/融资/资金流等因子历史样本仍在积累 (accumulating), 本次只用日线价格

下一步建议

  1. 影子模式跟踪 (paper trading) 验证实盘一致性
  2. 加入行业中性 + 风格因子剥离
  3. 数据积累后叠加北向持仓变化/融资余额因子
  4. 通过提升门禁后再考虑实盘

7. 文件清单

文件 说明
report.html 完整回测报告 (图表+检查表)
report_compare_8010.html 与 80/10 双因子对比报告
equity.csv 每日净值/基准/持仓数
trades.csv 4870 笔交易明细 (含拒单)
summary.json 指标汇总 (机器可读)
leakage_checks.json 防未来函数检查原始数据
backtest_mlf.py 回测引擎 (可复现)
data_wide.pkl 宽表数据缓存
data/qfq_*.parquet 小石 R2 原始日线 (2018-2026, sha256 已校验)