Day2_factor2 回调缩量因子选股策略报告
得分最高 20 只 · 等权 · 月度调仓 · 基准中证全指 · 红涨绿跌 · 数字均来自结果文件
1 概览与总评
总评:无效。
作为「得分最高 20 只、月度调仓」的选股策略,五项课程指标 0/5 达标,验证段夏普为 -0.75(训练段 0.37),判定为过拟合;
测试段(2024-06-03~2026-10-28)年化超额为 2.5%,但信息比率只有 0.25(课程口径 > 1.0),且训练、验证两段超额都是负的,不足以说明有规律。
因子的 RankIC 在训练/验证/测试三段同为正(0.017 / 0.045 / 0.033),说明排序力很弱但方向没翻,但这个强度没有被 20 只组合兑现为稳定超额。
测试段年化收益
11.0%
基准 8.5%,累计 27.4%
测试段夏普 / 最大回撤
0.50 / -32.9%
验证段夏普 -0.75
试验次数
10 组
DSR 概率 0.65(<0.95,选择运气警告)
验证集 / 测试集查看次数
5 / 1~2
测试集已用掉,不能再改策略(见第 8 节)
总评口径(我自定):五项全不达标且验证段判为过拟合 →「无效」;方向证据充分、五项至少三项达标且无过拟合 →「有效」;其余「存疑」。
因子含义为猜测,且方向证据不足,总评本来最高只能给「存疑」,现按上述口径落在「无效」。基准为中证全指,与股票池口径不完全一致(股票池另剔除了 ST、次新、低流动性股)。
2 方向判定
只用训练段(2019-01-01~2022-11-30)46 个月末信号日,下期收益 = 本信号日次日开盘到下个信号日次日开盘。方向 = RankIC 均值的符号,锁定后未改动(trials.json 记录 modified=false)。
指标 训练段 验证段(只检查符号) 测试段(只检查符号) RankIC 均值 0.0170 0.0450 0.0332 t 值 1.83 2.47 2.75 IC>0 的月份占比 65% 73% 74% 前半段 / 后半段 IC 0.0221 / 0.0119 0.0664 / 0.0263 0.0483 / 0.0193 期数 46 15 27 G5−G1 月均收益差 0.26% 1.01% 0.68% 符号与方向一致 —(方向由此得出) 一致 一致
训练段 5 分组下期平均收益(G1 因子最小 → G5 最大)
0.00% 0.50% 1.00% 1.50% G1:1.22% 1.22% G1 G2:1.32% 1.32% G2 G3:1.41% 1.41% G3 G4:1.50% 1.50% G4 G5:1.48% 1.48% G5
G1~G5:G1 1.22%、G2 1.32%、G3 1.41%、G4 1.50%、G5 1.48%。不是 U 形(否)。
三项可信度检查
|t| ≥ 2:不通过 (t = 1.83)
前后半段 IC 符号一致且与方向一致:通过 (0.0221 / 0.0119)
G5−G1 收益差符号与方向一致:通过 (0.26%)
结论:方向证据不足。 三项里有一项未过(|t| 不到 2),仍按 IC 符号继续,总评上限「存疑」。
与文档核对:一致 。因子表字段说明:factor =「最终因子:中性化残差再 z-score,越大越看好」;描述:「前20日涨得多、最近5日缩量回调且跌幅接近3%的股票得分高」。
滞后衰减(RankIC 均值,滞后 0~3 期,训练/验证):训练0期 0.017(t=1.8);训练1期 0.012(t=1.3);训练2期 0.013(t=1.5);训练3期 0.015(t=2.1);验证0期 0.045(t=2.5);验证1期 0.018(t=0.7);验证2期 0.013(t=1.2);验证3期 0.036(t=2.1)。
0.000 0.010 0.020 0.030 0.040 0.050 训练·滞后0:0.017 0.017 训练·滞后0 训练·滞后1:0.012 0.012 训练·滞后1 训练·滞后2:0.013 0.013 训练·滞后2 训练·滞后3:0.015 0.015 训练·滞后3 验证·滞后0:0.045 0.045 验证·滞后0 验证·滞后1:0.018 0.018 验证·滞后1 验证·滞后2:0.013 0.013 验证·滞后2 验证·滞后3:0.036 0.036 验证·滞后3
3 规则卡、假设卡与三集切分
假设卡 猜测 :强势股缩量小幅回调,抛压衰竭后惯性延续上涨。
(依据仅是因子表文档的描述「前20日涨得多、最近5日缩量回调且跌幅接近3%」,未经验证。)
三集切分
训练 2019-01-01~2022-11-30;验证 2023-01-01~2024-04-30;测试 2024-06-01~2026-10-28。斜纹为约 20 个交易日的隔离期(标签不跨段)。回测是 2019-01-01 起一次连续运行,三段指标是把日收益按日期切开后重算,段间持仓连续。
规则卡
项目 规则 因子表与列 Day2_factor2,列 factor(越大越看好;表里还有 factor_raw、ln_cap 两列数值,文档把 factor 标为「最终因子」) 方向与依据 越大越好(+1),依据见第 2 节 候选池 全 A;剔除 ST、停牌、上市不足 250 个交易日、近 20 日日均成交额 < 5000 万;因子缺失者不入池 选股 得分 = 方向 × factor,取最高 20 只;信号日涨停者不买(涨停≠次日开盘可成交,回测后核对拒单与成交价) 权重 等权;总仓位 95%(留 5% 防现金不足被削量),单票上限 8%(20 只时每只 4.75%) 调仓与成交 每月最后一个交易日收盘后出信号,下一交易日开盘成交(D 日下单、D+1 开盘成交,不加额外滞后) 风控 无止损;停牌或无行情的票当日跳过下单,记录;退市股保留到最后一个交易日 成本 佣金万三(最低 5 元)、卖出印花税 0.1%、滑点单边 0.1%,用 param() 声明 基准 000985.CSI(中证全指)。候选:中证全指(000985.CSI)是库内覆盖全 A 的宽基,与股票池最接近;但本池另外剔除了 ST、次新、低流动性股,口径不完全一致 初始资金 1,000,000
候选池诊断(2019-01-01~2024-04-30,64 个月末信号日)
因子在过滤后候选池内的覆盖率 99.996%(缺失 7 行)
每期候选池:最小 1412 只(2019-01-31),中位数 2709 只,低于 100 只的月份 0 个
20 只持仓里单行业最大 11 只(行业 370000,2020-01-23),未超过 30 只
各过滤条件剔除条数(月末股票-日合计):停牌 1,203;ST 9,464;上市不足 250 交易日 22,771;近 20 日日均成交额<5000 万 88,120;信号日涨停(不买)2,531(之后在选股时剔除)
4 三集对照与衰减判定
指标 训练段 验证段 测试段 区间 2019-01-03~2022-11-30 2023-01-03~2024-04-30 2024-06-03~2026-10-28 交易日数 949 320 583 年化收益 6.3% -16.7% 11.0% 基准年化 9.9% -6.7% 8.5% 年化超额 -3.7% -10.0% 2.5% 夏普 0.37 -0.75 0.50 最大回撤 -36.5% -34.2% -32.9% 信息比率 -0.17 -0.82 0.25 月换手 90% 93% 94% 累计收益 25.8% -20.7% 27.4%
衰减判定:过拟合(验证段夏普符号翻转)。 训练段夏普 0.37,验证段 -0.75,验证/训练 = -2.03(≥0.6 才算正常衰减)。
验证段 RankIC 为 0.0450(t=2.47),符号与锁定方向一致:因子排序力的符号没翻,但 20 只组合在验证段仍然亏损。
测试段夏普 0.50 高于训练段,年化超额转正(2.5%),但信息比率仅 0.25,最大回撤 -32.9%,单段结果不能推翻验证段的过拟合判定。
换手口径:当月单边成交额 ÷ 当月平均净值,月度平均。
5 图表
图 1 训练段 5 组下期收益(方向依据) 0.00% 0.50% 1.00% 1.50% G1:1.22% 1.22% G1 G2:1.32% 1.32% G2 G3:1.41% 1.41% G3 G4:1.50% 1.50% G4 G5:1.48% 1.48% G5
图 2 策略与基准净值(训练 / 验证 / 测试三段底色) 训练 验证 测试 0.50 1.00 1.50 2.00 2019 2020 2021 2022 2023 2024 2025 2026 策略净值 基准 中证全指
图 3 超额净值(策略÷基准) 训练 验证 测试 0.60 0.70 0.80 0.90 1.00 1.10 2019 2020 2021 2022 2023 2024 2025 2026 超额净值(策略÷基准)
图 4 策略回撤 训练 验证 测试 -60% -40% -20% -0% 2019 2020 2021 2022 2023 2024 2025 2026 策略回撤
图 5 参数高原:持仓数 ×(月度 / 双月)的夏普
训练段(搜索窗口)
0.00 0.10 0.20 0.30 0.40 16只·月度:0.04 0.04 16只·月度 16只·双月:0.12 0.12 16只·双月 18只·月度:0.16 0.16 18只·月度 18只·双月:0.26 0.26 18只·双月 20只·月度:0.25 0.25 20只·月度 20只·双月:0.32 0.32 20只·双月 22只·月度:0.23 0.23 22只·月度 22只·双月:0.35 0.35 22只·双月 24只·月度:0.31 0.31 24只·月度 24只·双月:0.36 0.36 24只·双月
验证段(留出)
-1.50 -1.00 -0.50 0.00 16只·月度:-1.14 -1.14 16只·月度 16只·双月:-1.15 -1.15 16只·双月 18只·月度:-1.15 -1.15 18只·月度 18只·双月:-0.97 -0.97 18只·双月 20只·月度:-1.20 -1.20 20只·月度 20只·双月:-0.98 -0.98 20只·双月 22只·月度:-1.25 -1.25 22只·月度 22只·双月:-1.10 -1.10 22只·双月 24只·月度:-1.27 -1.27 24只·月度 24只·双月:-1.18 -1.18 24只·双月
配置 训练夏普 验证夏普 夏普衰减 符号 16 只 / 月度 0.04 -1.14 3249% 符号翻转 16 只 / 双月 0.12 -1.15 1066% 符号翻转 18 只 / 月度 0.16 -1.15 801% 符号翻转 18 只 / 双月 0.26 -0.97 471% 符号翻转 20 只 / 月度 0.25 -1.20 577% 符号翻转 20 只 / 双月 0.32 -0.98 413% 符号翻转 22 只 / 月度 0.23 -1.25 651% 符号翻转 22 只 / 双月 0.35 -1.10 410% 符号翻转 24 只 / 月度 0.31 -1.27 514% 符号翻转 24 只 / 双月 0.36 -1.18 425% 符号翻转
持仓数 16~24(20 的 ±20%)加调仓周期共 10 组。要求验证段夏普衰减 < 30% 且符号不变,0 组满足,不通过;验证段 10 组夏普全部为负。
试验总数 10,DSR 概率 0.65(最优夏普 0.36,纯运气期望最大值 0.17),触发 SELECTION_LUCK 警告:最优组合的夏普没有超出多次尝试带来的运气。
图 6 成本 ×1 与 ×2 净值(训练 + 验证段) 训练 验证 0.50 1.00 1.50 2.00 2019 2020 2021 2022 2023 2024 成本×1 净值 成本×2 净值 基准
成本 ×2(佣金、最低佣金、印花税、滑点全部加倍):训练段年化超额 -3.7% → -7.9%,验证段 -10.0% → -13.8%。
成本 ×1 的超额本来就是负的,所以「×2 后超额是否仍为正」这一项不通过(训练、验证段均不为正)。
图 7 分年度超额(策略年收益 − 基准年收益) -40% -20% 0% 20% 40% 2019:-8.4% -8.4% 2019 2020:-17.6% -17.6% 2020 2021:+34.2% +34.2% 2021 2022:-17.8% -17.8% 2022 2023:+3.3% +3.3% 2023 2024:-13.7% -13.7% 2024 2025:+12.9% +12.9% 2025 2026*:-4.3% -4.3% 2026*
2019 年自 01-03 起算,2026 年(*)只到 10-28。全回测连续运行,年度数字取自引擎的年度表。
图 8 月换手 课程口径 20%~50% 0% 25% 50% 75% 100% 125% 2019-02:42% 2019-02 2019-03:88% 2019-04:91% 2019-05:94% 2019-06:98% 2019-07:99% 2019-08:95% 2019-09:87% 2019-09 2019-10:90% 2019-11:94% 2019-12:88% 2020-01:92% 2020-02:26% 2020-03:98% 2020-04:89% 2020-04 2020-05:83% 2020-06:93% 2020-07:86% 2020-08:95% 2020-09:99% 2020-10:90% 2020-11:92% 2020-11 2020-12:91% 2021-01:94% 2021-02:86% 2021-03:91% 2021-04:94% 2021-05:90% 2021-06:90% 2021-06 2021-07:90% 2021-08:93% 2021-09:93% 2021-10:94% 2021-11:85% 2021-12:92% 2022-01:98% 2022-01 2022-02:87% 2022-03:96% 2022-04:102% 2022-05:86% 2022-06:93% 2022-07:95% 2022-08:96% 2022-08 2022-09:97% 2022-10:92% 2022-11:92% 2022-12:97% 2023-01:90% 2023-02:91% 2023-03:97% 2023-03 2023-04:94% 2023-05:90% 2023-06:90% 2023-07:95% 2023-08:97% 2023-09:94% 2023-10:91% 2023-10 2023-11:93% 2023-12:95% 2024-01:100% 2024-02:89% 2024-03:92% 2024-04:98% 2024-05:90% 2024-05 2024-06:95% 2024-07:97% 2024-08:99% 2024-09:91% 2024-10:102% 2024-11:88% 2024-12:95% 2024-12 2025-01:95% 2025-02:87% 2025-03:94% 2025-04:96% 2025-05:89% 2025-06:92% 2025-07:92% 2025-07 2025-08:89% 2025-09:91% 2025-10:90% 2025-11:95% 2025-12:92% 2026-01:90% 2026-02:93% 2026-02 2026-03:102% 2026-04:90% 2026-05:85% 2026-06:97% 2026-07:112% 2026-08:84% 2026-09:93% 2026-09 2026-10:102%
蓝色带为课程口径 20%~50%。月均 92%,几乎每月整仓换掉。
随机因子对照
股票池、规则、成本不变,把得分换成「代码+日期+种子」的哈希值,跑 5 个种子(训练 + 验证段)。随机选股的年化超额均值:训练段 -0.9%(标准差 3.9%),验证段 -4.6%(标准差 8.5%);
本策略为 -3.7% 和 -10.0%。随机选股没有稳定正超额(符合预期),本策略在两段都不比它好。测试段没有做随机对照(未做)。
6 五个数评价
指标(测试段) 数值 课程口径 是否达标 年化超额 2.5% > 8% 未达标 信息比率 0.25 > 1.0 未达标 最大回撤 -32.9% > -20% 未达标 月换手 94% 20%~50% 未达标 容量(粗估) 0.44 亿 > 5 亿 未达标
0/5 达标。「先怀疑数据」的提示未触发:超额、信息比率、回撤没有同时漂亮。容量按「单笔成交额 ≤ 标的前一日 20 日均成交额的 5%、取成交占比 90 分位线性放大」粗估,约 0.44 亿(粗估,未建模冲击成本)。
超额拆解(训练 / 验证段,粗估)
项目 训练段 验证段 β(对中证全指) 0.98 1.06 策略年化 / 基准年化 6.3% / 9.9% -16.7% / -6.7% 大盘 β 贡献(算术年化) 11.4% -6.0% 剩余 α(算术年化,已扣成本) -2.2% -10.0% 佣金+印花税拖累(年化) 1.7% 1.8% 滑点拖累(年化,成交额×0.1% 估) 2.1% 2.2%
剩余 α 已含成本拖累;加回成本后训练段 α 约 1.6%,验证段约 -6.0%。
风格暴露:未做(库内无现成风格因子收益序列,不编)。测试段未拆解。
7 结论(大白话)
更像运气,不像规律。 依据:
训练段方向本身就不扎实:RankIC 均值 0.017,t 只有 1.83,没到 2;5 组里最高组比最低组每月只多赚 0.26%,而且 G4 比 G5 还高一点。
组合没把排序力变成稳定超额:训练段年化超额 -3.7%,验证段 -10.0%,验证段夏普 -0.75(训练段 0.37),判为过拟合。
换参数救不了:持仓数 16~24、月度或双月共 10 组,验证段夏普全部为负,成本 ×2 后更差。
测试段年化超额 2.5%、夏普 0.50,看起来转好了,但信息比率只有 0.25,最大回撤 -32.9%;一段 583 个交易日的正超额,抵不过前两段的负超额。
唯一一致的信号:RankIC 在三段都为正(t 分别为 1.83、2.47、2.75)。这说明因子的排序方向没有翻,但强度很弱,而 20 只、每月几乎整仓换掉(月换手 94%)的做法把它的优势耗在了成本和噪声里(猜测:持仓更分散、换手更低时可能更适合这个因子,未验证)。
要不要进入纸面跟踪: 按现在这套规则,我的建议是不进。五项课程指标 0/5 达标,验证段过拟合,且方向证据不足。
如果想继续研究,需要改规则(例如放宽持仓数、降低换手),那就是新策略:测试集已经用掉,必须声明「原测试集作废」,另划一段更晚的新测试区间,并把这次的试验次数计入。
8 风险与备注
试验次数与 DSR
测试集打开前共跑回测 31 次(含 10 组参数的训练段试验、10 组的验证段留出、成本 ×2 1 次、随机对照 5 次,以及为核对订单和日志的重复运行 2 次);测试集 1 次;方向修改 0 次。
参数搜索 10 组,DSR 概率 0.65(<0.95,SELECTION_LUCK)。因子方向未参与搜索。
验证集被看了 5 次:第二步:基线回测的验证段绩效与验证段 RankIC;第三步:参数高原对 10 组配置在验证段各回测 1 次;第三步:成本×2 回测的验证段绩效;第三步:随机因子对照 5 个种子的验证段绩效;第三步:IC 滞后 1~3 期的验证段 RankIC。验证集因此已不是干净的样本外,只能当作「看过多次的检验段」。
测试集:我第一次可见的 step4_run.py 执行因哈希断言失败而中止,此时策略文件的 END 已是 2026-10-28、trials.json 已含 final_run 字段,且文件修改时间与该次执行同在 16:22:04。原因未查明:可能是同一条命令被重复执行了一次(推测,未验证)。核实结果:把 END 还原后文件哈希与冻结哈希完全一致,逻辑未被改动;台账无 test_final 记录、无任何测试段输出文件、AIStudio 无残留进程,我在此之前没有看到过任何测试段数字。无法排除第一次执行已跑过一次完整回测,所以测试集的实际打开次数记为「1 次,最多 2 次」。
成本与容量假设
佣金万三(最低 5 元)、卖出印花税 0.1%、滑点单边 0.1%,已进回测净值;成本 ×2 的结果见图 6。容量约 0.44 亿,是粗估,没有建模冲击成本,也没有用测试段数据。
涨跌停与被拒单
信号日涨停的票不买(选股时剔除)。信号日涨停不等于 D+1 开盘能否成交,所以回测后核对:共 1840 笔买入成交,其中开盘即一字涨停的 0 笔;当日以涨停收盘的 29 笔(开盘能买到、盘中封板,正常)。引擎对开盘价处于涨停的买单会撤单(1 笔:买|'open' price is upper limit 1)。
全回测 3744 笔订单:拒单 13 笔(买|[-107]Market data not found 1;买|[-114]Insufficient cash 12),撤单 28 笔(买|'open' price is upper limit 1;卖|'open' price is lower limit 21;卖|Cancelled: No bar volume 6)。测试段拒单 0 笔、撤单 3 笔。
12 笔资金不足的买单全部发生在 2020-02-03 当天;同日有多笔卖单因开盘跌停被撤。两者可能相关(猜测:卖单没成交,现金没回来,未逐笔验证)。卖单被跌停挡住时持仓顺延到下个调仓日。
另有 6 笔 ORDER_TRIMMED(买入按可用现金削量),已留 5% 现金缓冲,影响很小。
未建模的交易细节
没有冲击成本,滑点固定 0.1%;没有融券、没有申赎或停牌期间的估值调整。
股票池没有排除科创板和北交所:回测成交里科创板(688)205 笔、北交所 99 笔。真实账户可能没有交易权限。
回测从 2019-01-02 起,首个月末信号日是 2019-01-31,实际首笔订单在 2019-02-01,所以 2019 年 1 月空仓,训练段首月的超额因此偏负。
股票池要求的「上市不足 250 个交易日」在 trading_days 缺失处用自然日 ×245/365 折算。
自检结果
被跳过标的:策略在信号日无行情时会记录并跳过,实际 0 次触发(月末信号日候选池已剔除停牌)。另有 1 笔买单因 D+1 当天停牌被拒([-107] 无行情,002722.SZ,2022-01-04):停牌是信号日之后才发生,无法在信号日剔除,属于单个标的的偶发,不集中在某类股票(仅 1 例,不做分布判断)。
退市标的:成交过的 1050 只股票里,18 只在 2024-04-15 前终止交易,都在样本内(保留到最后一个交易日),最后一根日线之后无持仓记录。该检查基于成本 ×2 那次回测(与基线持仓相同到训练+验证段),测试段未单独做。
训练/验证段指标在 END 改为测试段结束日后与第二步逐项一致:是。
未做:风格暴露拆解、测试段的随机因子对照与超额拆解、测试段的退市检查。无其他未解释的异常。
假设卡、容量、「运气」解读均为猜测或粗估,已逐处标注;其余数字来自 step1~step4 的结果文件。生成时间 2026-10-29 16:32。