Day2_factor1 因子选股策略 · 检验报告

因子表 Day2_factor1(列 factor) | 区间 2019-01-01 ~ 2026-10-28 | 月度调仓,T+1 开盘成交 | 生成于 2026-10-29 17:17

一、概览

无效因子越大越好(证据不足)。训练段夏普 0.49、验证段 -1.21(符号翻转)、测试段 0.22,测试段年化超额 -3.27%,按事先登记的规则判为「无效」。
因子方向
越大越好
取训练段 IC 符号;证据不足,见第二节
测试段年化超额
-3.27%
策略 5.22% vs 基准 8.49%
夏普 训练/验证/测试
0.49 / -1.21 / 0.22
验证段符号翻转
测试段最大回撤
-27.98%
基准 -23.75%
平均月换手(测试段)
90%
课程区间 20%~50%
试验次数 / DSR
15 / 0.84
DSR 低于 0.95,SELECTION_LUCK

二、方向判定

项目结果说明
训练段 RankIC 均值 / t0.0152 / 0.8647 个月度样本,IC>0 占 49%
前半 / 后半 IC-0.0299 / 0.0583符号相反
G5 − G1 下期收益+0.43%五组形状为 U 形(两端高于中间)
文档交叉核对文档未说明文档没有写因子的收益方向
检查一 |t| ≥ 2未通过
检查二 前后半同号且与方向一致未通过
检查三 G5−G1 与方向同号通过
验证段 RankIC0.0105(t=0.25,14 期)与方向同号
测试段 RankIC0.0222(t=1.01,26 期)与方向同号

结论:方向证据不足(三项可信度检查中两项未通过,且五组呈 U 形,所以「只选最高 20 只」本身不适用),评级上限为存疑。方向在第一步锁定为「越大越好」,验证和测试只核对 IC 符号,没有改动过。

图 1 训练段五分组下期平均收益

每月末按因子值从小到大分五组(池内等权),看下一期平均收益;橙色虚线为池内等权均值。两端高于中间,不是单调关系。

三、规则卡与假设卡

项目设定
股票池全 A;剔除 ST/*ST、停牌、上市不足 250 个交易日(以 250 根日线计)、近 20 日日均成交额<5000 万;另剔除信号日涨停(price_limit_status=3,不等于次日能否成交)
持仓得分 = 方向 × 因子值,取最高 20 只,等权,单票≤8%,总仓位 95%(余下付佣金与滑点)
调仓每月最后一个交易日收盘后出信号,T+1 开盘成交(引擎自带,不加滞后)
风控无止损;单行业持仓数仅作诊断;被拒单与成交价回测后核查
交易成本佣金买 3‱ / 卖 3‱,最低 5 元;卖出印花税 0.1%;单边滑点 0.1%
基准000985.CSI 中证全指(与全 A 口径最接近;仍与「剔除 ST/低流动性」后的股票池口径不完全一致)
初始资金1,000,000 元

假设卡:大涨后缩量小回调,猜测:短线洗盘后上涨延续。(猜测,未验证)(标签:猜测。因子表和文档没有写出含义,这是从因子名「大涨缩量小回调」读出来的,没有被任何检验证实。)

训练 2019-01-01~2022-11-30
验证 2023-01-01~2024-04-30
测试 2024-06-01~2026-10-28
灰色空档为约 20 个交易日的隔离带。三段由同一次连续回测按日期切出,段首持仓延续上一段期末持仓,段首几天的收益含上段仓位的影响。

四、三段对比

指标训练验证测试
区间2019-01-02~2022-11-302023-01-03~2024-04-302024-06-03~2026-10-28
年化收益+12.96%-25.74%+5.22%
基准年化+9.93%-6.73%+8.49%
年化超额+3.02%-19.01%-3.27%
夏普0.49-1.210.22
最大回撤-43.53%-44.50%-27.98%
信息比率0.25-1.18-0.08
月换手85%88%90%
RankIC(月度)0.0152(t=0.86)0.0105(t=0.25)0.0222(t=1.01)

训练 → 验证:夏普 0.49 → -1.21,判为过拟合(符号翻转)(规则:验证夏普 ≥ 训练的 60% 为正常衰减,符号翻转或腰斩为过拟合)。验证 → 测试:夏普 -1.21 → 0.22,夏普回正,但年化超额仍为 -3.27%,没有看到因子带来的额外收益。

一致性核对:第四步连续回测的训练+验证段净值与第二步逐日相比,1292 个交易日最大相对差 0.0e+00。

五、图表

图 2 训练 / 验证 / 测试 拼接净值

策略中证全指
三段由同一次连续回测切出,背景色区分;灰色空档为隔离带。净值均归一到首日,红色策略、灰色基准。

图 3 超额净值(策略 ÷ 基准)

曲线上行表示跑赢基准。

图 4 回撤

策略基准
整条拼接曲线从历史最高点算起的回撤。

图 5 参数高原:训练与验证夏普

训练夏普验证夏普
横轴为「持股数|成交额下限(万元)」,15 个邻域组合;验证夏普全部为负,没有稳定区域。

图 6 成本 ×1 与 ×2(训练+验证段)

成本×1成本×2基准
成本翻倍后净值明显下移;测试段不重跑成本压力,避免多看一次测试集。

图 7 分年度超额

策略年收益减基准年收益(算术差),红正绿负;首尾年份天数不足一年,横轴括号内为交易日数。

图 8 月换手

(买入额+卖出额)/2 ÷ 当月平均净值;橙线为课程上限 50%,月均远高于该线。

图 9 RankIC 滞后衰减

训练验证
信号滞后 0~3 期后的 RankIC;滞后后符号不稳定,没有逐级衰减的规律。

六、五项评价

指标课程标准结果判定
年化超额(测试段)> 8%-3.27%未达标
信息比率(测试段)> 1.0-0.08未达标
最大回撤(测试段)优于 −20%-27.98%未达标
月换手(测试段)20%~50%90%未达标
容量(粗估)> 5 亿2.47 亿未达标

五项中 0 项达标,没有「好得过头」的迹象,不触发「先怀疑数据」的提醒。

容量口径:单票持仓不超过其近 20 日日均成交额的 10%,按各月初快照持仓的第 90 分位参与率反推可承载净值,取中位数 2.47 亿(下四分位 1.70 亿,按最拥挤一只算 1.22 亿)。这是粗估,只覆盖训练+验证段,测试段未单独估算。

七、大白话结论

  1. 更像运气,不像规律。训练段夏普 0.49,看着是正的;换到没见过的验证段变成 -1.21,方向翻了;再换到测试段 0.22,但年化超额 -3.27%,没有跑赢基准。
  2. 依据:① 方向判定的三项检查两项没过,训练段 IC 的 t 值只有 0.86;② 参数邻域 15 个组合,验证夏普全部为负(-1.48 ~ -1.10),没有高原;③ 成本翻倍后训练段超额由 +3.02% 变为 -1.24%,验证段由 -19.01% 进一步降到 -21.93%;④ 随机选股对照(5 个种子)年化超额均值 -2.41%、标准差 2.68%,因子的 -4.54% 落在随机区间内,分不开。
  3. 是否进入模拟盘跟踪:不建议。按事先登记的规则判为无效;若要继续,应先弄清因子含义、把「大涨缩量小回调」拆成可检验的条件,而不是在现有结果上继续调参。

八、风险与说明

  1. 试验次数与过拟合。参数邻域 15 次试验,DSR 概率 0.84(训练段口径,第 11 号试验夏普 0.63,15 次里「最幸运者」期望 0.11),未到 0.95,运行日志带 SELECTION_LUCK 警告。
  2. 验证段与测试段被看的次数。验证段累计被看约 29 次(第二步指标与 IC、15 次邻域验证、成本×2、5 个随机种子、4 个滞后 IC、2 次基线重跑),看的次数越多,验证结果越不干净。测试段只开了一次完整回测(2026-10-28),策略文件哈希 4e42ee03091396b3…,此后不得再改;如改动,原测试集作废。
  3. 账本说明。第三步成本×2 与随机对照第一次运行被中断,随后完整重跑,账本按执行次数如实记录:成本×2 2 次、随机对照 8 次(5 个不同种子)。
  4. 第一步分组口径修复。第一步 IC 分组原用 c_ntile(不跳过 NULL,池外行被编进分桶),发现后改为池内 c_rank 自切五分位;方向 +1 不变,但分组由「G5-G1 同号」变为 U 形。
  5. 成本与容量。成本按规则卡设定,未调参;容量为粗估(见第六节),只覆盖训练+验证段。超额拆解(训练+验证段,1270 个交易日):年化超额 -2.37%,对基准 beta 1.006,扣费后 alpha -2.42%;佣金与印花税拖累约 1.68%/年,滑点按 0.1% 单边估计约 2.10%/年(估计值),加回后费前 alpha 约 +1.36%。持仓风格(各月初快照、市值加权的全市场分位,0.5 为中性):市值 0.59、近 20 日动量 0.66、近 20 日波动 0.71,偏高动量、高波动(这是描述,不是原因)。测试段未做拆解和风格暴露,标「未做」。
  6. 涨跌停与被拒单。训练+验证段:被拒 15 单(现金不足 14、无行情 1),被取消 22 单(卖出时开盘跌停 18、无成交量 4);现金不足集中在 2020-02-03。成交价核对:买入成交 1182 笔中开盘涨停成交 0 笔,卖出成交 1149 笔中开盘跌停成交 2 笔,开盘跌停被拦下的卖单 18 笔。测试段:被拒 0、被取消 0,买入开盘涨停成交 0 笔,卖出开盘跌停成交 0 笔。引擎对涨停开盘买入的处理没有文档说明,上面是对成交记录的核对结果,不是对引擎规则的断言。
  7. 没有模拟的细节。分红送转的现金到账时点、融券、盘中排队与冲击成本、停牌复牌后的连续跌停、基准与股票池口径差异(基准为中证全指,而股票池已剔除 ST 和低流动性)。
  8. 数据自检。被拒/取消的标的 37 只(主板 27 单、创业板 10 单),成交过的 858 只里主板 66%、创业板 26%,被拒集中度与成交分布相近,没有看出按板块扎堆。因子样本内 139 只股票在区间内退市,策略实际买过其中 11 只,所以样本不是只含存活股。因子表有 38 个交易日缺失,其中信号日 2024-01-31(训练+验证段)和 2024-09-30(测试段);按代码逻辑,当月信号日无因子则该月没有新持仓,沿用上月持仓(这是读代码的推断,没有逐笔核对)。
  9. 未能解释的异常。订单表里「已提交」记录没有对应终态的有 40 条(训练+验证段)和 38 条(测试段),原因未查明;测试段被拒和被取消均为 0,与训练+验证段(被拒 15 + 被取消 22 单)差异明显,我没有找到原因,不作解释。另外训练段夏普 0.49 与最大回撤 -43.53% 并存,训练段本身也不是一条平稳的曲线。
  10. 因子本身。训练段 47 个信号日里,有 25 个月高因子值的股票不足 20 只(中位数 17 只),持仓需要用因子值接近 0 的股票补足;补足部分的选择接近噪声(这是猜测)。
本报告的数字全部来自 selout/ 目录下的 JSON 与 CSV 结果文件;文字中标「猜测」的部分未经检验。本报告不构成投资建议。