T+1 日 开盘前 · 每交易日一次
① 状态引擎(训练窗拟合、测试日固定)
14 个状态变量 → 对数化+标准化 → PCA → PC1/PC2
变量集:n_total_trades / tot_turnover / qvol_001·005·01·02·05·10 / qturn_01 / cov_c1 / buy_sell_ratio / 升级率中位 / cov_c2 / 大单数缺口
离散规则(训练窗内 kmeans 对齐后标定)
pc1<−1.0 → 放量分散  |  pc1≥0.6 且 pc2<0.6 → 低迷
pc1≥1.0 且 pc2≥1.0 → 尾部极端  |  其余 → 常态
② 选层 · cov_c1 阈值
cov_c1 < 0.90 → 用 c3 族(低迷/极端,均值增益 +31%)
cov_c1 ≥ 0.90 → 用 c1 族(常态/活跃)
滞回带 0.88–0.92:连续 2 日越过才切换,防抖动
③ 符号表 + 状态权重
93 个方向稳定因子 参与符号自适应(A10)
17 个反转因子黑名单强制剔除;其余因子沿用全样本符号
状态权重:训练窗内该状态 <8 日 → 权重回缩到全局(shrinkage)
④ 软压力轴(可选第三层)
buy_sell_ratio 相对 rolling 中位(20日) 偏离 → 连续权重 ∝ 偏离度
卖压 <0.85:d31/d34/c3 加权 ×1.2;买压 >1.05:缩量日整体降权 ×0.8
⑤ 合成信号 → colblk 新因子
S(t) = Σf wf,s(t) · signf,s(t) · zf(t)
写入 store 为派生因子 → 走 tail_pipeline_engine 标准回测(raw+neu × gap1/gap5)
滚动样本外(walk-forward,step=1)
训练窗 t−39…t(40 日,拟合 PCA/阈值/符号/权重) 测试日 t+1(参数固定)
对 t = 40…58 逐日滚动:每天换一次训练窗,得到 19 个真正样本外日(每日预测只用历史)。59 日样本两天间隔 ≥1 周,无重叠泄漏,无需 purge/embargo。
对照组:前 70%/后 30% 单切(41 训练 / 18 测试),与 walk-forward 双轨并跑,结论一致才采纳。
A/B 判定门槛(全部满足才算自适应胜出)
指标自适应 vs 固定版
OOS 日 mean|IC|(NEU)≥ +15% 相对提升
OOS 日胜率(逐日 IC 更优占比)≥ 60%
综合 IR / sharpe(gap1)更高
训练—测试 gap(train IC − OOS IC)自适应 ≤ 固定版 +0.01
状态覆盖检查(每折)
状态全样本天数单折训练窗可期处置
低迷29(聚类 21)~14–19可拟合
常态19(聚类 17)~11–13可拟合
活跃7(聚类 10)~4–7只做软权重,不做硬符号
极端4(聚类 11)~2–7并入低迷侧规则,禁止独立拟合
买压3~2仅 rolling 偏离度软编码