因子与规则地图 v2:按维度看我们用了什么、试死了什么、还空着什么
以最新回测逻辑为准:固定评分卡(官方 9f / 10f+atr)和 2026-10-21 合入 main 的严格滚动评分卡(wf_rolling_job)两套口径并列。每个维度一章,固定模板:这个维度回答什么问题 → 数据从哪来 → 每个子维度里的成员、定义、打分、实测、判决 → 空白格。目的:看完就能指出往哪挖。
00 · 一页看懂
最新回测逻辑 = 两套评分卡,同一个组合引擎
| 口径 | 评分卡怎么定 | 因子 | asof 结果(1×,$5M) | 状态 |
|---|---|---|---|---|
| I. 固定评分卡 官方口径,实盘在跑 | 分桶边界、分值、因子入选全部用全样本人工定(多数因子 2026-04~07 定稿);门槛 score_raw ≥ 6 | 9f = iv · stock_price · otm · asset_type · rule_hit · time_slot · ret_5d_roll_deep · rv3d_band_15_30 · dvol_10d_low_pen 10f+atr = 9f + atr_low_pen_roll | asof1009,2023-04-20 → 2026-10-09,SPY 半仓 guard:9f 99.37% / DD 20.58%;10f+atr 104.17% / DD 20.48% / Calmar 5.09 / 1,848 笔 / 胜率 55.4%;分年 +29.0 / +115.7 / +234.2 / +28.2。IWM guard 对照:10f+atr 103.9% / DD 13.72% / Calmar 7.57 | 生产 |
| II. 严格滚动评分卡 wf_rolling_job,2026-10-21 合入 | 每月月初只用过去 12 个月 [T−365, T−7) 的信号重学:每个因子按训练窗五分位分桶,桶内 vs 桶外 Welch |t| ≥ 2 且前后两半同号才给 ±1,否则 0;门槛 k_T 取训练窗入选率最接近 5% 的整数;当月 score_raw = S − k_T + 6 交给同一个 run_backtest_v9.py --min-score 6 | 候选池 20 个:atr_pct · iv_pct · realized_vol_3d · gamma_abs · stock_price · ret_5d · vwap_dev · price_vs_ma20_pct · dvol_asym_10d · otm_pct · dte · chain_ba · log_seqv · log_premium · ml_o_large_flag · same_day_bearish_flag · sector · time_slot · rvol_tod · asset_type_4;A1N 再加 11 个引擎 rule 特征(每月从 7 种打分逻辑里选) | asof1019,2024-07-01 → 2026-10-19:选中 A1N + IWM + 不开 edge_t,全期年化 90.8% / DD 20.5%;最近 3 个月 +22.2%(固定卡 V1 −7.4%),检验期选股超额 +1.56pp(t=3.15)vs 固定卡 −0.26pp。不含 rule 的 A3 几乎相同(+22.5%) | 建议 shadow ≥1 季度 |
维度总图
在用候选 / shadow试死空白规则层 格子里的成员是代表,完整清单在各维度章节。
信号漏斗(固定评分卡,asof1009)
call/put × ASK/BID,权利金 ≥ $100k,uw_csv 本地生成→ ASK+call 子集→ 底表 base_xy 75,529 行
分钟线能算出 entry/exit/y_2d→ 可交易池 36,123
STOCK/ADR · OTM∈[5,50] · 滚动因子已热身→ score ≥ 6:2,386(6.6%)→ 成交 1,848 笔
资金 / 同日同票去重 115 / 行业上限 6 跳过
可交易池 score≥6 信号的 y_2d 分年:2023 +0.76(n 282)· 2024 +1.37(426)· 2025 +1.54(863)· 2026 +0.28(815,胜率 49.4%)。滚动评分卡报告给出的解释:固定卡在定稿数据覆盖段(到 2026-06)每季选股超额 +1.5~2pp,数据一结束就掉到 0 附近;同一批特征只用过去 12 个月重学,2024Q3–2026Q1 平均季度超额只有 +0.44pp(固定卡 +1.62)。历史回测的 100%+ CAGR 应视为被高估的上限,不是预期。
01 · 两套回测逻辑与硬规则
流水线(两套口径共用 Stage 1 和 Stage 3)
| 阶段 | 做什么 | 关键规则(不打分,但决定谁能进评分、进了能拿多少钱) | 代码 |
|---|---|---|---|
| Stage 0 信号 CSV | UW full-tape(T+1,每天 2–5GB zip)+ flow-alerts API → 按 ET 日生成 uw_csv/data/days/*.csv.gz → 组装成 37 列 CSV,任何机器逐字节相同 | BigOpen 过滤:volume > OI ∧ size > OI ∧ size > OI + (volume − size) ∧ 虚值 ∧ premium ≥ $100,000 ∧ tag ∈ {ask_side, bid_side} ∧ 北京抓取窗 21:30–04:59(= ET 09:30–15:59:59)∧ 不在窗最后一秒。2023-11-09 之前 UW 不再提供,冻结原抓取 26,898 行。rule 列来自 alerts API 对回成交(同合约区间覆盖 → 同 ticker ±1 ms 且总量相等的多腿 Floor),不来自 tape。与原抓取:成交级列 100% 或 ≥99.98%,rule 99.77%,sector/industry/earnings 为"当前值" | uw_csv/(config / tape / alerts / rows / rules / assemble / daily) |
| Stage 1-1 拉缓存 | Massive 分钟线按月分片 + ticker 类型缓存;只拉不算 | 指数类 skip;节假日 0 bar 记 explored;fails=0 不代表完整,须做覆盖率 checklist | stage1_1_fetch_minute_bars.py, utils/bigopen_stage1_fetch.py, utils/split_guard.py(拆股断层守卫,2026-10-14 接入 nbp3d 日作业) |
| Stage 1-2 底表 base_xy | CSV + 缓存 → 每条信号的 entry/exit/y_2d + 日频特征(realized_vol_3d、dvol_3d/5d/10d_ratio),纯离线 | 信号集 ASK + call;RTH 内且 ≤ 15:59:30;入场 = 信号后第一根完整分钟 bar 收盘(15:59 信号用最后一根 bar);持有 2 自然日到点按 bar 收盘退,跨周末周一 09:30 开盘退;−15% 止损;strict asof(理论退出 > asof 16:00 整行丢);exit_reason = data_end 丢;price_status ≠ ok 过滤(asof1009 通过率 ~82%) | build_bigopen_v9_opportunities.py, utils/bigopen_stage1_build.py(main 版 L876 用 astype("int64"),pandas 3.0.1 下 dev_zlj 的 _zlj 版保留 us/ns 修补) |
| Stage 2-I 固定评分卡 | build_factors.py --factors …:每个因子 score(df) 加一列,score_raw = Σ;滚动因子热身期整行删除(不是 fillna 0);因子不得 peek score_raw(靠调用顺序) | OTM 硬准入列 otm_admission_ok ∈ [5, 50] 闭区间(2026-04-27 由 (5,50] 改) | factor_registry.py(62 个 key,CORE 6)· factors/_base.py · factors/rolling_ic_base.py |
| Stage 2-II 滚动评分卡 | 特征面板(stage 2 全特征表 + build_features 的 rvol_tod / vwap_dev / dvol_asym / 两个 flag + enrich_price_vs_ma20 + uw_labels 引擎三列)→ 每月重学 → 写出 tables/<模型>/signal_table.parquet(score_raw 已含门槛平移) | 宇宙 U = otm_admission_ok ∧ asset_type_4 ≠ ETF_ETN ∧ y_2d 非空;覆盖率 < 95% 的特征整体排除(dvol_10d_ratio 94.5% / vol_oi 88.5% / open_buy_pcr 36.8% 被排除);任一特征缺失的行 drop,不兜底;去聚类:同 (票, 日, 桶) 合并为一个单位;桶内或桶外 < 30 单位记 0 | wf_rolling_job/(config / build_features / build_panel / bucket_learner / learn_a3 / learn_a1n / learn_ridge / select_system / report)· 预注册 PREREGISTRATION.md |
| Stage 3 组合引擎 | run_backtest_v9.py:同一引擎跑两套评分表 | pre-filter:score_raw ≥ 6 ∧ otm_admission_ok ∧ STOCK/ADR;基础仓位 = 目标利用率(正常 0.60×杠杆 / guard 日 0.30)÷ 过去 10 交易日合格信号数中位数,最低 2%;分数权重 6→×1.0、7→×1.1、8+→×1.2(硬编码,改 min_score 要改引擎);上限单笔 15% / 单票 20% / 行业 50%(guard 25%)/ 总敞口 = 杠杆(guard 0.5);最小仓位 $500;同日同票去重;guard:今日 guard 标的开盘 < 昨日 SMA20 → risk-off(SPY 官方,IWM 对照;--guard-mode off 关;API key 缺失静默 fail-open);成本:滑点每边 5bp、佣金 $0.005/股最低 $1 | bigopen_v9.py: PortfolioConfig / run_portfolio_backtest / build_spy_guard_map |
实盘旁注(只为对照,不是本页主体)
wk 4001 跑 10f+atr 2×;lrh 4061 / jz 4081 跑 9f(文件名 10factor);cy 4021 自 2026-10-12 跑 10f+atr 1×;全部账户 guard 2026-10-12 起 SPY → IWM;edge_t 周度降仓已合入默认关。实盘 rule_hit 只在 UW 于 10/30/120 秒内回填 rule 时计分;实盘信号源 = UW 自定义 alert big_open 落库 custom_alert_signals,与 CSV 过滤条件相同。
A · 合约本身:这张单子长什么样
回答的问题:单看这一笔期权大单(不看历史、不看标的、不看市场),它像不像一个知情方向单?数据:全部来自 UW CSV 单行(37 列),无时间窗口、无前瞻问题;缺点是每一列都是 UW 在成交那一刻的快照,没有"相对该票历史"的归一化。
| 子维度 | 成员 | 定义 / 打分 | 实测 / 判决 | 状态 |
|---|---|---|---|---|
| A1 定价 / 波动 | iv | 合约隐含波动率 iv_pct;≤25 −2 · (25,50] +1 · (50,100] +2 · >100 −1 | 见下卡。滚动卡 28 个月里 iv 最低五分位 −1 入选 18 月、次低 −1 20 月、最高五分位 +1 入选 17 月(与固定卡 >100 → −1 方向相反) | 在用 |
| IV rank | iv_pct 相对该票过去 N 日 IV 分位 | 需要票级 IV 历史(UW 或 Massive 期权链),没人做过 | 空白 | |
| price / theo 偏离 | CSV 自带 price 与 theo,成交价高于理论价多少 | 没人看过 | 空白 | |
| iv / rv 比 | iv_pct ÷ realized_vol_3d(隐含对已实现的溢价) | 两个现役特征的组合,未试 | 空白 | |
| A2 虚值 / 到期 | otm | (K−S)/S 整数 %;≤2 −2 · (2,5] −1 · (5,10] 0 · (10,20] +2 · (20,50] +1 · >50 0;硬准入 [5,50] | 见下卡。(10,20] 与 (20,50] 四年都稳定高于 ≤10 约 0.15pp,六核心里最像排序因子的一个 | 在用 |
dte_static · dte_rolling · dte_bucket_rolling | 到期天数分桶 / 滚动 IC | 与 otm_score ρ=+0.33,A 档残差 t=−0.08,上卡 Calmar 10.96→7.81;重验时唯一接近显著者(p=0.088)仍不过。滚动卡候选池里 dte 偶有入选 | 试死 B | |
true_dte14_otm_d20_45_zlj · true_dte21_otm_d20_45_zlj | Springer 2025:真 DTE ≤ 14/21 ∧ |δ| ∈ [0.2, 0.45] → +1 | FSLY 离群;2026 复筛 ΔCAGR −0.4 / −1.2pp 带内,dte14 2024 −19.7pp | 试死 A | |
| A3 规模 | premium_tier_v3a/b/c | 权利金倒 U 分档 −1/+1/+1/−1 等三版 | 回测不达标;注意 premium 本身已被 ≥$100k 预选 | 试死 C |
premium_high · premium_low | 权利金滚动 IC 三元 | 否 | 试死 | |
ml_o_large | ML-O 多腿 ∧ premium ≥ $1M → −1(对冲腿) | 固定卡否;作为 ml_o_large_flag 进滚动卡候选池 | 试死 / 滚动候选 | |
size · seqv_high/low(share_eqv) | 张数 / 折合股数名义 | Step 1 无信号(size p=0.858);log_seqv 在滚动卡候选池 | 试死 A | |
asset_interest_p70/p80_zlj | Springer 2025:premium × size × (1−|δ|) 60 日滚动分位 → +1 | 2026 复筛 −4.9 / −5.6pp,新增 747 笔均收 0.34%,典型加单摊薄 | 试死 A | |
| A4 合约流动性 | vol_oi · vol_oi_ratio_5/10/20_zlj | 当日量 / 持仓 ≥ 阈值 → +1(UOA 教科书"新开仓") | Step 1 p=0.118;有前端 premium≥$100k 的预选偏差;ratio_10 是复筛里唯一超 placebo 带的(DD −6.0、2026 +24pp)但 2025 −57pp regime 翻转,信号层 2026 因子=1 反而更差。滚动卡因覆盖率 88.5% 排除 | 试死 A / regime |
chain_ba_major_penalty · chain_ba_full_gate | chain_bid_ask = 100% → −1 / <100 → +1 | p=0.118 无信号;chain_ba 在滚动卡候选池 | 试死 A | |
open_buy_pcr_low/high | Pan & Poteshman 前一日开仓 PCR | 否;滚动卡因覆盖率 36.8% 排除 | 试死 | |
| A5 希腊 | delta_abs · theta_abs | — | Step 1 p=0.472 / 0.232 | 试死 A |
high_gamma(gamma_abs ≥ 0.045 → +1) | — | t=3.14 全骗人:是 low-price 代理(与 stock_price_score ρ=+0.50),回测 Calmar −23%;gamma_abs 仍在滚动卡候选池 | 试死 B | |
| A6 腿 / 执行方式 | legs · flags(FLOOR/SWEEP) · tape at_nbbo / inside_nbbo / rel_spread / is_multi | — | 见 H 章;CSV 的 flags 列本身没单独试过 | 见 H / flags 空白 |
iv — 隐含波动率 在用 固定卡角色:风控腿
- 直觉
- 50–100 的中高 IV 说明市场已在定价"有事要发生";<25 师出无名;>100 彩票 / 暴雷区
- 文件
factors/iv_static.py;实盘_score_iv()(API 给 0.56 要 ×100)
| 桶 | 分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 | 份额漂移 23→26 |
|---|---|---|---|---|---|---|---|---|
| ≤ 25 | −2 | 4.1% | 0.05 | 0.14 | 0.18 | −0.15 | 0.08 | 8.5% → 1.7% |
| (25, 50] | +1 | 37.5% | 0.11 | 0.26 | 0.13 | 0.05 | 0.09 | 54.7% → 26.5% |
| (50, 100] | +2 | 44.0% | 0.50 | 0.45 | 0.62 | 0.45 | 0.50 | 29.3% → 52.4% |
| > 100 | −1 | 14.4% | 0.46 | 0.58 | −0.15 | 1.15 | 0.27 | 7.5% → 19.4% |
读数:+2 桶四年稳定最好;+1 桶接近零收益只是份额大;−1 桶(>100)全样本 0.46 并不差,年际剧烈,固定卡的 −1 在压方差而不是压均值。份额在往高 IV 漂(>100 从 7.5% 涨到 19.4%),固定 100 这条线 2026 切到的东西和 2023 不同。score≥6 的信号 87% 来自 +2 桶。滚动卡的裁决:最高五分位 17/28 个月给 +1,这是固定卡与数据分歧最明确的一处;报告建议若要改,冻结"iv≥100 不罚"纸面交易一个季度再判,不要回测调参。
otm — 虚值程度 在用 固定卡角色:排序腿 + 硬准入
- 直觉
- 10–20% OTM 是"真方向性押注"甜区;≤5% 近平值多是对冲 / 做市 / 备兑;>50% 是彩票
- 硬准入
- otm_pct ∈ [5, 50] 闭区间。otm_pct = 5 整数落在 (2,5] 桶得 −1 但被准入(UW 的 otm 是整数百分比),下表第一行 9.4% 由此而来
- 文件
factors/otm_static.py
| 桶(准入内) | 分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|---|
| = 5(落 (2,5] 桶) | −1 | 9.4% | 0.27 | 0.23 | −0.09 | 0.23 | 0.49 |
| (5, 10] | 0 | 29.5% | 0.24 | 0.04 | 0.22 | 0.24 | 0.29 |
| (10, 20] | +2 | 29.4% | 0.40 | 0.60 | 0.33 | 0.47 | 0.33 |
| (20, 50] | +1 | 31.8% | 0.37 | 0.39 | 0.36 | 0.40 | 0.35 |
score≥6 的信号 60% 来自 +2 桶、30% 来自 +1 桶。准入范围本身在滚动卡里也沿用生产、不重学。
B · 标的动力学:这只票最近怎么走
回答的问题:同样一张大单,落在一只刚深跌、波动适中、有人在交易的票上,和落在一只死寂 / 狂暴 / 没人看的票上,后续 2 天表现是否不同?数据:Massive 分钟线(dvol、rv3d、dvol_asym、rvol_tod、vwap_dev)和日线(ret_5d、atr、price_vs_ma20);现役四个全部截止 T−1 收盘,滚动卡新加的 rvol_tod / vwap_dev 用信号前已收完的分钟 bar。这是目前证据最硬的维度:滚动卡里唯一"稳定、可事前学到"的是波动率家族,2026 新出现被奖励的结构也在这里(深度回调 / 投降式抄底)。
| 子维度 | 成员 | 定义 / 打分 | 实测 / 判决 | 状态 |
|---|---|---|---|---|
| B1 收益 / 位置 | ret_5d_roll_deep | close[T−1]/close[T−6] − 1;≤ 滚动深分位阈值 → +1 | 见下卡。唯一在 2026 变强的现役腿;滚动卡 2026 起最低五分位 +1,t 到 +6.8 | 在用 |
ret_5d_static · ret_5d_roll_* 宽尾 | < −10% → +1 / p10–90 候选 | static 只作 sanity 基线(±5% 阈值 CAGR 差 <2pp);宽尾 p10–90 版 CAGR 更高但选中分位 std=36 U 型双峰,2023–24 退化成"恒 +1"蹭 beta | 试死(关 5) | |
price_vs_ma20(< −10% → +1) | 收盘相对 MA20 | 固定卡:与 ret_5d ρ=−0.40、A 档反向(B);滚动卡候选 price_vs_ma20_pct 2026 最低五分位 +1 被选中 | 固定卡 B / 滚动候选 | |
| dist_52w_high | 距 52 周高点 | 被 rule_hit 吸收(B) | 试死 B | |
rs_5d_vs_spy · ticker_recent_abs_ret_8/15pct_zlj | 相对 SPY 5 日 / 昨日 |ret| > 8/15% → −1 | A 档残差 t<2;复筛 +1.85pp 全是 sizing,剔除单均收 +0.5% | 试死 A | |
| ret_20d / ret_60d · 隔夜跳空 / 盘前 | 中期动量;T 日开盘 vs T−1 收盘 | 现役全部截止 T−1 收盘,T 日盘中只有 rvol_tod / vwap 碰过 | 空白 | |
| B2 波动 | rv3d_band_15_30 | 3 日对数收益 std×√252;rv/滚动阈值 ∈ [1.5, 3.0] → +1 | 见下卡。滚动卡 rv3d 最低五分位 −1 入选 16/28 月 | 在用 |
rv3d_band_rolling · rv3d_band_12_30 · rv3d_band_06_30 · rv3d_roll_high | band 每日 IC 网格选 / 其他 band / 单边 | 对照版本;walk-forward 显示最优 band 单调收敛到 (1.5, 3.0) | 对照 | |
atr_low_pen_roll(+ atr_low_pen_20/25/30 fixed) | ATR14/close ≤ 滚动低分位阈值 → −1 | 见下卡。滚动卡最稳定的一条:atr 最低五分位 −1 入选 21/28 月、最高 +1 17/28 月 | 在用(4001/4021) | |
atr_pct(≥6.49 → +1)· atr_pct_roll_high · vspike_20d | 高波动 booster | 信号面全绿但回测塌(Calmar 11.1→9.0);"容量挤占"死因后被证伪为自身有害(高 ATR 单止损率高、集中度抬 MaxDD,trades +24% 年化不动);vspike_20d A 档 t<2 | 试死 C | |
| B3 量能 / 关注 | dvol_10d_low_pen | 近 10 日 RTH 美元成交额 / 前 20 日 < 0.80 → −1 | 见下卡 | 在用 |
dvol_10d_low_pen_roll · dvol_3d / dvol_5d · dvol_10d_band | rolling 对照 / 其他窗口 / +1 band 版 | 3d F=0.80 无分层,5d 单尖峰,10d 带状最干净;+1 band 版回测 −18% | 试死 C | |
| dvol_asym_10d | 近 10 日上涨日成交额占比(窗口截止 T−1) | 滚动卡候选池新特征(2026-07 f12 筛选来的) | 滚动候选 | |
rvol_gate_20/25/30(rvol_tod gate)· vol_breakout · sec_rvol10 | 信号日盘中相对量能右尾 −1 / 量突破 / 行业量能 | rvol_tod:只 3.0 单点有效无 plateau,2023 反向,96% 改善来自 2026 34 笔;vol_breakout 去聚类后 F 3.27→0.03 纯聚类假象;sec_rvol10 残差网格 100% 却年年亏 −$10.66M(诊断层中性化不能迁移到生产) | 试死 C / A | |
| rvol_tod(连续值) | 当日至信号时成交额 ÷ 过去 10 日同时刻 | 作为连续特征进滚动卡候选池(与 gate 版不同,不固定阈值) | 滚动候选 | |
| B4 信号日 T 盘中 | vwap_deep_05/06/10/15/20/25 | 日内击穿 VWAP 深度 → +1 | 全宇宙分层极强(t=5.17、与 10f 正交)但阈值景观崎岖无 plateau(动 0.1pp 终值差 $13M),扩窗到 2024 底全负;滚动卡里 vwap_dev 深度低于 VWAP +1(t 到 4.8)只在最近 12 个月窗口显著——这本身是 regime 依赖的证据 | 固定卡 C / 滚动候选 |
| intra_30m_ret · rvol0 早退 | 前 30 分钟收益 / 开盘量能不足提前一天退 | intra_30m A 档 t<2;rvol0 早退属执行层(见 I),asof0814 复现 +16%/+11% Calmar | A / I 章 |
ret_5d_roll_deep — 近 5 日回撤 在用 固定卡角色:排序腿
- 公式
ret_5d = (close[T−1] / close[T−6] − 1) × 100;Massive 日线缓存;日线与信号日间隔 >7 天给 NaN- 阈值
- 每日从训练窗 [D−97, D−7) 的 STOCK/ADR 样本里,在 [5,10,15,20,25] 分位中挑 IC 最大者("deep");ret_5d ≤ 阈值 → +1,否则 0;热身 NaN 删行
- 直觉
- 大单 + 标的刚深度回调 = 拉升前低吸;评分卡里唯一的逆向腿
- 文件
factors/ret_5d_rolling.py·ret_5d_feature.py· 阈值exp_result/ret_5d_threshold.csv;实盘factor_ret_5d_job/
| 打分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|
| +1(深跌) | 14.5% | 1.04 | 0.46 | 0.77 | 0.85 | 1.47 |
| 0 | 85.5% | 0.21 | 0.31 | 0.19 | 0.25 | 0.17 |
| 年 | 阈值中位 | 范围 |
|---|---|---|
| 2024 | −8.9% | −13.6 ~ −1.7 |
| 2025 | −8.5% | −16.4 ~ −2.0 |
| 2026 | −10.0% | −16.0 ~ −3.0 |
score≥6 的信号 31.7% 带这个 +1。可交易池 ret_5d 中位 +1.5%、p10 −9.2%,+1 大约就是池子最差的 10–15%。
rv3d_band_15_30 — 3 日已实现波动"金发姑娘区" 在用 固定卡角色:排序腿
- 公式
rv3d = std(log 日收益, 最近 3 根) × √252 × 100,日收盘 = 分钟线最后一根 RTH bar,在 Stage 1-2 写进 base_xy- 两段式
- ① 每日 IC 阈值 thr(候选 [40,45,50,55,60] 分位,direction high,min_samples 50);② rv_ratio = rv3d / thr ∈ [1.5, 3.0] → +1,否则 0;rv3d 缺失但阈值已就绪 → 0 保留行
- band 来历
- 双峰:ratio <0.6 噪声、[0.6,3.0] 好区、>3.0 反指;walk-forward 扩窗最优 band 单调收敛 (1.0,3.0)→(1.2,3.0)→(1.5,3.0),hi=3.0 完全稳定
- 文件
factors/realized_vol_3d_rolling.py;阈值exp_result/realized_vol_3d_threshold.csv;实盘factor_rv3d_job/
| 打分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|
| +1(带内) | 23.5% | 0.39 | 1.09 | −0.09 | 0.60 | 0.32 |
| 0 | 76.5% | 0.31 | 0.17 | 0.35 | 0.28 | 0.35 |
| 年 | IC 阈值中位 (rv %) | 范围 | 带 [1.5,3.0] 对应 rv |
|---|---|---|---|
| 2024 | 24.2 | 17–32 | ≈ 36–73% |
| 2025 | 28.9 | 21–46 | ≈ 43–87% |
| 2026 | 33.9 | 25–45 | ≈ 51–102% |
全池层面最弱(+1 组只高 0.08pp,2024 为负、2026 持平),价值在准入边界:score≥6 的信号 43% 带 rv3d +1。阈值随市场波动水平逐年上移,band 对应的绝对波动率 2026 比 2024 高四成。与 atr 分数相关 0.21,现役最高的一对。
dvol_10d_low_pen — 近 10 日美元成交额不足 在用 固定卡角色:门
- 公式
dvol[d] = Σ_RTH 分钟 (close × volume);ratio = mean(dvol[T−10..T−1]) / mean(dvol[T−30..T−11]);< 0.80 → −1,NaN → 0- 阈值
- 0.70–0.85 sweep 中 [0.72, 0.82] 是 Calmar plateau,取整 0.80;自归一化不需 rolling;触发率跨年 18–22% 稳定;8 维对抗式验证 ship-with-caveats 信心 0.80(它删的正是 SPY guard 该拦的低量能信号)
- 滚动卡
- 因覆盖率 94.5% < 95% 被整体排除(敏感性组 A2dvol 加回后更差)
- 文件
factors/dvol_10d_low_pen.py· 实盘特征dvol_ratio_feature.py· 底表utils/bigopen_stage1_build.py~L902
| 打分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|
| −1(ratio < 0.80) | 20.2% | −0.04 | 0.25 | −0.13 | −0.23 | 0.12 |
| 0 | 79.8% | 0.42 | 0.34 | 0.37 | 0.52 | 0.39 |
score≥6 的信号里仍有 12.4% 带 −1(靠别的分项顶到 6),它主要是把 6 分压成 5 分的门。池内 ratio 中位 1.04、p10 0.68。
atr_low_pen_roll — 日内振幅太小 在用(10f+atr) 固定卡角色:排序腿(惩罚方向)
- 公式
TR_i = max(H−L, |H−C_{i−1}|, |L−C_{i−1}|);atr_pct = mean(TR, T−14..T−1) / close[T−1] × 100(简单均值);Massive 日线 OHLC- 阈值
- 每日从训练窗 atr_pct 的 [5,10,15,20,25] 分位里挑 IC 最负者;atr_pct ≤ 阈值 → −1,缺失 → 0。atr 水平逐年上移(80 分位 4.75→6.57),rolling 低分位 2023→2026 阈值 1.7→3.3 自动收紧
- 直觉
- ATR/价 2–3% 以下的票 2 天窗口动不到让 OTM call 有 payoff 的幅度,大单更像对冲或流动性驱动
- 文件
factors/atr_pct_low_pen.py·atr_pct_feature.py· 阈值exp_result/atr_low_pen_roll_threshold.csv;实盘factor_atr_low_pen_job/
| 打分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|
| −1(低振幅) | 16.0% | 0.07 | −0.13 | 0.07 | −0.07 | 0.20 |
| 0 | 84.0% | 0.38 | 0.38 | 0.30 | 0.44 | 0.37 |
| 年 | 阈值中位 (atr %) | 范围 |
|---|---|---|
| 2024 | 2.06 | 1.60–2.53 |
| 2025 | 2.52 | 1.68–3.52 |
| 2026 | 3.33 | 1.93–4.37 |
score≥6 的信号里只有 1% 带 −1,纯粹在 5/6 边界工作。asof1009 对 9f:CAGR 104.17 vs 99.37、MaxDD 20.48 vs 20.58。滚动卡给了它最高的证据等级(atr 最低五分位 −1 21/28 月,atr 最高 +1 17/28 月)。
C · 期权流上下文:这张合约 / 这只票最近的流
回答的问题:这笔大单之前,同一合约 / 同一只票 / 全市场的期权流是什么样?是第一波还是追高?是孤立的还是成簇的?数据:UW CSV 全集(含 put/BID 侧,nbp3d 用);UW 14 天 flow dump(757 万行,每源文件最多 250 行,重票历史只剩 10–15% 的流,数据止于 2026-03);full-tape 回填(2026-05-08 起);自建 tape store(2023-11-17 起,见 H)。这是试死最多的维度(主干 + zlj 共 60 余个 key),三年里只上过线一个(nbp3d),且只在 2024–25 有效。
| 子维度 | 成员 | 定义 | 判决 | 状态 |
|---|---|---|---|---|
| C1 同合约历史 | nbp3d_low(nbp3d_high) | 同合约(ticker+strike+expiry,tol=0)前 3 个交易日 (bull − bear)/(bull + bear) 权利金,bull = call 吃 ASK + put 吃 BID;低 → +1(滚动阈值 p10–90,训练池 STOCK/ADR) | 2026-08-17 实盘拔除:增量来自 2024–25,2026 转负;lag_1week "+6pp" 57% 来自单笔 SMCI。滚动卡 28 次重学 0 次入选,2026-10-21 从候选池删除 | 已拔除 |
| 合约 OI 变化(T 日 OI vs T−1)· tape repeat_n / cluster_share / lone_print | 验证"开仓"是否真成立;同合约重复打印 | OI 变化没人做;tape 版见 H | 空白 / H | |
| C2 票级 14 天流 | uw_flow_count_14d_zero · uw_flow_count_14d_le1 · uw_flow_count_low/high | 前 14 天该票 ≥$25k 流笔数 ≤ K → +1 | le1 曾报 +17.53pp 四年全正;(file_ticker, file_date) 分组 dump 窗口 bug + 55% 新增里 64% 集中单笔 FSLY | 试死 A(关 3/6) |
uw_flow_simple_no_flow_big_ticket · uw_no_flow_14d_global_zlj | 前 14 天无流 ∧ 大单 → +1 | 主干版按 (file_ticker, file_date) 找文件只有 ~70% 信号有文件,2026-06 后 35% 被当"无流",作废;global-dedup 复刻 −2.4pp,2025 异象 | 数据 bug / A | |
uw_sparse_ask_dominance_14d(B)· uw_B_param_c{1,2,3}_ms{60..80}_as{60..80}_zlj 15 格网格 · uw_flow_codex_combo_065/070/075/080 · uw_sparse_bull/bear_dominance_14d_zlj | 1 ≤ count_14d ≤ 2 ∧ 最大单笔占比 ≥ 0.70 ∧ ASK 占比 ≥ 0.70 → +1 及变种 | 曾推荐上线;drop-2025 从 +0.289/t=2.80 塌到 +0.058/t=1.01;2026 复筛信号层 score≥6 的 y_2d 因子=1 −0.03 vs =0 +0.59,四年都比非 B 差;combo_070 曾是唯一 promote ratio ≥ 0.9 的,同样失守 | 试死 A(关 7) | |
uw_floor50_dom_bid_14d(曾上线后拔除)· uw_floor50_dombid_domcall / domput / domask_domcall / domask_domput_zlj · uw_floor50_bull50/bear50/bull70/bear70_zlj · uw_floor50_only_zlj · uw_floor50_dom_ask_zlj · uw_floor33_only_zlj · uw_floor67_only_zlj · uw_floor_param_fs{33..75}_{dombid,any}_zlj 12 格 | 14 天流里 FLOOR 占比 ≥ 阈值 ∧ 主导侧 / 主导类型 | dombid_domcall +4.2pp 但 2026 增量 89% 来自 4 笔(DFTX/MSTR/WULF/SNDK),trim-4 归零;其余带内或更差 | 试死 A(关 6) | |
uw_opening_ask_spread_high/low · uw_opening_ask_spread_pos / pos05 … pos30(F2) | 前 14 天机构 ASK call 主导程度(√premium 加权)> 阈值 → +1 | 修 bug 后 +8.63pp 缩到 +2.18pp;复筛 −8~−10pp,2024 −23pp | 试死 C | |
uw_net_sentiment_high/low · uw_contract_size · uw_lottery_share · uw_sweep_dir · uw_time_weighted_bullish · uw_flow_accel · uw_mean_delta_abs · uw_ask_ratio · uw_bullish_ratio · uw_dir_ex_count_gated · bear_pen_ex_count_roll_zlj | 14 天流的情绪 / 均张数 / 彩票占比 / 扫单方向 / 加速度 / 方向性 ex-count 等 | 均未过筛;main 2026-10 已删除其中 7 个文件;bear_pen 复筛 −0.7pp | 试死 | |
| 用 full-tape 重算全部 C2 特征 | 以 2023-11-17 起的完整逐笔替代截断 dump | 所有历史 C2 结论都建立在残缺数据上;回填只补 2026-05 之后 | 空白 | |
| C3 当日有向流 | same_day_bearish → same_day_bearish_flag | 同日同票大额空单 → −1 | 固定卡注册无结论;作为 flag 进滚动卡候选池 | 滚动候选 |
| tape imb_day / imb_30m · tk_quiet_prior · prior_day_quiet | 信号前签名不平衡 | 信号层成立(见 H) | H | |
| C4 期权量 vs 正股 | uw_quiet_option_spike_90d_zlj · codex_current_call_low_oi_zlj · tape os20 | 低换手安静股 + 期权量异常 → +1;CALL ASK oi≤150 ∧ premium∈[250k,400k] → +1 | quiet_spike 全在 p5 placebo 带内;current_call_low_oi 去 score=5 条件后 −10.49pp(是 admission rule 不是因子);os20 不显著 | 试死 |
| C5 市场级流量 | uw_mkt_count_p2_zlj | 全市场 30 日 UW count 的 252 日滚动分位 ∈ [0.50, 0.75) → +1 | −10.9pp,2024 −31.7pp;市场级日 count 2026-06 后从 ~6k 降到 ~3k 是市场本身 | 试死 |
D · UW 标签 / rule:UW 给这笔流贴的形态
回答的问题:UW 的九条 flow-alert rule 各自是什么、有没有信息、能不能自己复现并改造?数据:CSV rule 列(UW alerts API T+1 对回);uw_rules/ 引擎复现(2026-10-19 冻结);uw_labels/ 给每条 BigOpen 信号打引擎标签(Strategy_bigopen_10plus_engine.csv 多三列 rule_engine / rule_engine_all / rule_engine_found,737 天,找到 99.67%,UW 标签率 7.6% vs 引擎 21.3%)。
D1 · 九条 rule 的精确定义(uw_rules 对账确认,分组键都是合约)
| rule | 触发与门槛 | 复现程度 | 可交易池 n | y 全样本 | 2023 / 24 / 25 / 26 | 引擎候选信号层 y |
|---|---|---|---|---|---|---|
| Repeated Hits(新版 Era B2,2026-10-08 起) | 同合约,以首笔为锚的固定 2000 ms 窗口;≥2 笔、总张数 ≥100、权利金 ≥$10k;排除期权多腿码与股票组合腿码;不分市值 | 召回 99.4–99.8%,精确 96–98.7%;实盘 58/58 一致,本地 3.4 秒出结果(UW 11–13 秒) | 709 | 0.12 | 0.48 / 1.03 / 0.44 / −0.73 | 0.348 |
| Repeated Hits(旧版 Era A,2023-11-09 → 2026-09-14;过渡期 09-15 → 10-07 两段) | 同合约,相邻间隔 ≤100 ms 成组;≥5 笔、≥5 张;权利金按市值分档 <$500 亿 $10k / $500–5000 亿 $50k / ≥$5000 亿或指数 $100k | 召回 96–99.9%,精确 78–85%(市值分档用"当日收盘 × 当前流通股"估算是主要误差) | ||||
| Repeated Hits Ascending / Descending Fill | 同上;末笔价 ≠ 首笔价且该方向"相邻两笔上涨次数 − 下跌次数" ≥2 或首末价差 ≥5 美分 → Asc / Desc(旧版:高于首价笔数 − 低于首价笔数 ≥2) | 方向一致 98.9–99.3% | 381 / 210 | 0.44 / −0.47 | Asc −0.48 / −0.95 / 1.21 / 0.35 Desc 3.95 / −0.88 / 0.20 / −1.61 | 0.671 / −0.121 |
| Floor Trade Small / Mid / Large Cap | 同合约,Floor 码(slft/mlft/tlft/mfsl/tfsl)相邻 ≤1 秒成组,毫秒批量累加首次过线即发;权利金 ≥$100k 或张数 ≥1000;市值 [$3 亿, 20 亿) / [20 亿, 100 亿) / [100 亿, 500 亿);OTM ≥ −15%;非 no_side、非撤销;多腿包只登记权利金最大的腿 | 召回 89–100%,精确只有 5–30%:UW 还有一道按"ticker 的一次 Floor 事件"整体生效的闸门(普通事件放行 ~12%,持续巨量 Floor 流 ~60%,16:50 ET 后不发),AUC 0.61 不可复现;闸门不挑信号(候选未发 0.347% vs 已发 0.359%) | 57 / 375 / 681 | 0.79 / 0.23 / 0.22 | Small −2.84 / 0.57 / 2.56 / 0.96 Mid −0.26 / 1.85 / −0.09 / −0.57 Large −0.14 / −0.19 / 0.84 / 0.09 | 0.379 / 0.474 / 0.136 |
| Low Historic Volume Floor | 同上;市值 <$1500 亿;权利金 >$50k;组内张数 > 前 3 个交易日同类型(call/put)期权成交量均值 | 有 3 日量数据的日子召回 88–97%,精确 36–47%;3 日量历史只有约 2 年(2024-10 起) | 1,275 | 0.59 | −0.03 / 1.03 / 0.87 / 0.30 | 0.599 |
| OTM Earnings Floor | 权利金 ≥$250k;OTM >0;DTE ≤90;距下次财报 0–14 天(当天盘前已发不算) | 750 条 alert 中 743 条符合 | 71 | −1.08 | 0.33 / −1.03 / −2.54 / −0.73 | 0.930 |
| Sweeps Followed By Floor | 一笔权利金 ≥$100k 的 Floor 单之前 600 秒内有 ≥10 笔 isoi(sweep);同一串 sweep 只发一次 | 召回 90–98%,精确 35% | 169 | −0.34 | 0.49 / −0.55 / 0.10 / −1.33 | 0.495(n 36) |
| EMPTY | UW 没贴任何九条之一(VolumeOverOi 等不显示的规则也为空) | — | 32,195 | 0.34 | 0.37 / 0.23 / 0.32 / 0.40 | 0.270(引擎无) |
注意 UW 标签与引擎标签对同一 rule 名给出的信号层收益可以差很多(如 OEF:UW 标 −1.08,引擎候选 +0.93;Large Cap 引擎候选 0.136 最差),因为 UW 的闸门与多命中时的显示优先级(Sweeps > LHV > RH 三类 > 市值档 > OEF)改变了样本构成。引擎标签 2026-10-20 已按该优先级取主标签。
rule_hit — UW 规则命中 在用 固定卡角色:门
- 打分
- rule 非空 +1 / 空 −1(六核心里唯一的 ±1 对称项,相当于 2 分差距)
- 文件
factors/rule_hit_static.py;变体rule_hit_variants.py
| 桶 | 分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|---|
| HIT | +1 | 10.9% | 0.27 | 0.07 | 0.54 | 0.64 | −0.17 |
| EMPTY | −1 | 89.1% | 0.34 | 0.37 | 0.23 | 0.32 | 0.40 |
读数:全池看 HIT 略差于 EMPTY,但组合层 rule_hit 值 +33pp(2023-12→2026-10 窗口 10f 118.8% vs 去掉 rule 74.7%;uw_rules 同口径 IWM:126.5% vs 无 rule 86.2%),因为它在 5→6 分边界起作用:只因 rule +1 才入选的 499 笔赚 $12.7M(均收 +1.14%),Repeated Hits 家族 +$9.7M、LHVF +$7.8M。2026 HIT 组转负(−0.17 vs 0.40),组合层 2026 贡献为零。score≥6 的信号 42.7% 带 rule。
D1 · 在 rule 上已经做过的全部实验(最新回测逻辑下)
| 实验 | 做法 | 结果 | 状态 |
|---|---|---|---|
rule_hit_asym · rule_hit_3way | HIT +1/EMPTY 0;BULL 4 条 +1 / BEAR 5 条 −1 | 没有一条 rule 在 14 个季度里持续跑赢,分档必过拟合 | 试死 |
rule_lhvf_plus1_zlj · rule_repeated_plus1_zlj | 只给 LHVF / Repeated +1 | 前者 2025 异象(+28pp 其余三年负),后者 −18pp | 试死 |
rule_weak_veto_zlj(Codex) | OEF ∨ SFF → −1 | score≥6 的 273 条 y_2d −0.67% vs 池 +0.38%,四年全负 p=0.003;但 3.5 年只剔 30 笔,组合 +6pp 里 4/5 是 sizing | admission 层零成本补丁 |
| 引擎全候选替换 UW 标签(uw_rules §5 / rule_engine_bt_job) | 同一张 asof1009 评分表只换 rule 列,10f+atr,IWM 半仓 | UW 126.5% / DD 13.7 / Calmar 9.22 / 1,616 笔 → 引擎 121.2 / 16.9 / 7.18 / 2,214 笔;只用 RH 三类 121.7 / 15.2 / 8.01;无 rule 86.2 / 14.0 / 6.17。引擎多买 879 笔均收 0.63%、少买 281 笔均收 0.99%;Large Cap 候选 −$67 万是最大拖累 | 不比 UW 好 |
| 命中数加分 / 按规则取舍(rule_engine_bt_job 第二轮,9f IWM) | 1→+1, ≥2→+2;只 RH;RH+LHV;去 Large Cap;"UW 或 RH/LHV/OEF/SFF" | 命中数不单调(≥3 条 −0.07%);Calmar:基线 6.09 · 命中数 4.90 · RH+LHV 7.35 · 去 Large Cap 7.11 · UW 或特定规则 8.22(10f+atr 9.93)。终审:等量随机 +1 的 20 种子 placebo Calmar 均值 7.17、最大 9.27,真实 8.22 赢 18/20、z=1.17;残差网格同向 66% / 41% 低于 80% 门槛,LHV 单独 48% → 提升主要是多准入 reshuffle | 不部署 |
| 滚动卡 A1R(12 个 rule 类型各自进候选池) | R_FTS/FTM/FTL/LHV/OEF/SFF/RH/ASC/DESC/R_ANY/R_NSTACK/R_PRIMARY | 拆开市值档后出现方向稳定约一年的规律:Small Cap +1(2025-03→2026-02 连续 12 月)、Mid Cap +1(9 月)、Large Cap −1(10 月),2026 全部消失;组合层只改善回撤(Calmar 1.33→1.96),不改善选股 | 信息时变 |
| 滚动卡 A1N(rule 打分逻辑也在滚动里选) | 每类 rule 每月从 {不用 / 命中与否 / ×atr 三分位 / ×股价三分位 / ×时段 / ×ret_5d 三分位 / ×SPY guard} 选验证 IC 最高者 | Calmar 1.30 → 3.29、选股超额翻倍,是本轮唯一让滚动框架明显变好的改动;2025H2 起最常被选的是"命中 × 波动率";但增量集中 2024Q4–2025Q4,整体 t=1.56 不显著,2026 无贡献;检验期与不含 rule 的 A3 几乎相同 | 选中系统的一部分,shadow |
自建复刻 rt_repeat_any / rt_floor_lowvol / v2 跨日版(H 章) | 用 tape 复刻 RH / LHVF | 直接 alpha +1.1M / −1.3M 远不及 UW 标签 +12.7M;S2(同合约当日有前单 ∧ imb_30m ≥ 0)几乎复刻了 rule_hit 的分年形态 | H |
D2 空白:CSV 的 flags(FLOOR/SWEEP)、tags(除资产类别外的 emoji 标签)、code(MLFT / CBMO 等来源码)三列从未单独检验过。
E · 时间:什么时候出的单
回答的问题:同样的单,出在开盘、盘中、收盘前,或临近到期 / opex,信息含量是否不同?数据:CSV 北京时间戳(→ ET)、expiry、UW earnings。
| 子维度 | 成员 | 定义 / 打分 | 实测 / 判决 | 状态 |
|---|---|---|---|---|
| E1 日内时段 | time_slot | open 09:30–10:30 +1 · mid_morn / midday / pre_close 0 · close 15:00–16:00 +1 | 见下卡;滚动卡候选池含 time_slot,A1N 的 rule × 时段逻辑也用它 | 在用 |
| open / close 拆成两个因子 | — | +1 的价值全在 close 段,open 段与盘中无差别;最便宜的待验证改动 | 空白 | |
| E2 到期 / opex | opex_dist_days | 距月度 opex 天数 | raw ANOVA F=36.6 p=1e-30 形状干净,但 A 档残差 t=1.13、逐年翻号(raw 显著 ≠ A 档 booster 有效) | 试死 B |
rt_near_expiry_pen_zlj(dte ≤2)· rt_opex_week_pen_zlj | tape 版 | 激活 1–2%,无信号 | 试死 | |
| E3 日历 | 财报季拆分 | 信号日是否落在财报密集期 | 严格口径下中性(19 窗口扫描无一显著),非因子 | 中性 |
| 周几 · 月末 · 距上条同票信号的间隔 | — | 没人看过(同日同票去重只是跳过第二条) | 空白 |
time_slot — 日内时段 在用 固定卡角色:风控腿
| 时段 | 分 | 份额 | y 全样本 | 说明 |
|---|---|---|---|---|
| open 09:30–10:30 | +1 | 22.8% | 0.28 | 与盘中三段无差别 |
| mid_morn 10:30–12:00 | 0 | 26.8% | 0.29 | |
| midday 12:00–14:00 | 0 | 25.3% | 0.28 | |
| pre_close 14:00–15:00 | 0 | 12.1% | 0.30 | |
| close 15:00–16:00 | +1 | 13.0% | 0.62 | 唯一真有信号的时段 |
+1 组分年 0.50 / 0.38 / 0.63 / 2026 0.24;0 组 0.25 / 0.20 / 0.20 / 2026 0.40,2026 反转。入场机制:15:59 的信号用最后一根 RTH bar 收盘入场、其余用下一根 bar,然后隔夜持有到两天后(或下周一开盘)退出,所以 close 段实际在赌"收盘前大单 → 隔夜跳空",与盘中信号是不同的收益来源。文件 factors/time_slot_static.py。
F · 标的属性:这只票是什么
回答的问题:票本身的静态属性(类别、价位、行业、市值、事件)是否改变大单的含义?数据:Massive ticker 类型缓存、CSV spot / sector / industry / earnings、uw_rules 的市值与财报缓存(可借用)。
| 子维度 | 成员 | 定义 / 打分 | 实测 / 判决 | 状态 |
|---|---|---|---|---|
| F1 资产类别 | asset_type | STOCK/ADR +1 · ETF_ETN −1 · 其他 0;引擎只放行 STOCK/ADR | 可交易池内 100% 为 +1,无区分度,真实身份是过滤器(分数 +1 只是门槛平移)。滚动卡 2026-02 起 ADR 桶 +1 被选中(ADR 优于 STOCK) | 在用(过滤器) |
| F2 价格水平 | stock_price | ≤$20 +2 · (20,50] +1 · (50,150] −1 · (150,500] −2 · >500 0 | 见下卡 | 在用 |
| stock_price_roll | 股价滚动 IC | 否(报告 stock_price_roll_factor_exploration) | 试死 | |
| F3 行业 | sector cap(组合层) | 行业敞口上限 50%(guard 日 25%) | asof1009 仅 6 笔被此跳过;分行业回测:Technology 521 笔 +$23.8M,Utilities 25 笔 −$2.2M PF 0.45,Real Estate 胜率 38% | 规则层 |
industry 哑变量 · sector_5d_up_zlj · sector_10d_up_zlj · sector_5d_drop_3pct_zlj · sector_5d_drop_5pct_zlj · sec_rvol10 | 行业哑变量 / 行业 ETF 动量 / 行业量能 | industry F=3.97 但 108 选 1 多重比较(A);sector regime 激活 60% 无选择性 −24~−28pp;sec_rvol10 年年亏 | 试死 A / C | |
| sector(类别特征) | 原类别,训练窗 <30 单位的类别记 0 | 滚动卡候选池;2026 学到回避 Consumer Cyclical / Consumer Defensive | 滚动候选 | |
| F4 事件 | days_to_earnings | 距财报天数 | 0–2 天"有形但样本太小" | 搁置 D |
| OTM Earnings Floor(rule) | 财报前 0–14 天的 OTM floor 单 | UW 标签 −1.08(四年三负),引擎候选 +0.93;是 rule_weak_veto 成员 | 见 D | |
| F5 市值 / 流通盘 / 空头 | — | — | 没人做过;Floor 三档 rule 按市值分档且方向相反(Small +1 / Large −1 在 2025)暗示市值有信息;uw_rules 的 facts_uw.mcap_for / uw_labels/mcap_hist.py 已有历史市值可直接借用 | 空白 |
| F6 指数成分 | — | Russell 2000 vs S&P 500 成分的信号表现 | IWM guard 实验(DD 压到 13.7 而 CAGR 不降)是旁证;中概股多空研究否(空头负 EV,多头靠 JD+GDS 两只) | 空白 |
stock_price — 正股价格水平 在用 固定卡角色:风控腿
| 桶 | 分 | 份额 | y 全样本 | 2023 | 2024 | 2025 | 2026 | 份额漂移 |
|---|---|---|---|---|---|---|---|---|
| ≤ $20 | +2 | 9.1% | 0.79 | 0.26 | 0.75 | 1.23 | 0.49 | 13.6% → 6.9% |
| (20, 50] | +1 | 13.0% | 0.41 | 0.64 | 0.11 | 0.66 | 0.22 | 18.6% → 9.5% |
| (50, 150] | −1 | 27.7% | 0.33 | 0.15 | 0.44 | 0.14 | 0.49 | 31.9% → 24.2% |
| (150, 500] | −2 | 33.8% | 0.20 | 0.30 | 0.23 | 0.21 | 0.17 | 29.1% → 37.1% |
| > $500 | 0 | 16.4% | 0.27 | 0.61 | −0.12 | 0.09 | 0.47 | 6.9% → 22.3% |
全样本单调(0.79 → 0.41 → 0.33 → 0.20),六核心里形状最干净;2026 低价桶优势收窄,低价票份额从 13.6% 掉到 6.9%。score≥6 的信号 52% 来自 ≤$20、35% 来自 20–50。直觉:低价股百分比涨幅空间大,右尾大赢家多出在这里。文件 factors/stock_price_static.py。
G · 市场 regime:大盘 / 行业在干什么
回答的问题:大盘状态该不该改变我们对信号的态度?结论已经很清楚:作为信号因子全部失败,作为组合层旋钮(guard)有用。
| 成员 | 定义 | 结果 | 状态 |
|---|---|---|---|
| MA20 guard | 今日 guard 标的开盘 < 昨日 SMA20 → 当天总敞口 0.5×、行业上限 25%、动态仓位目标 0.30 | asof1009 10f+atr:SPY 半仓 104.2% / DD 20.5 / Calmar 5.09;IWM 半仓 103.9 / 13.7 / 7.57;无 guard 119.9 / 15.5 / 7.75(11f);不开仓 62.8 / 13.9。滚动卡与实盘都选 IWM。guard 变体"单笔半仓笔数不变"Calmar 略优。这是曝险旋钮,不是 alpha | 规则层 |
spy_5d_drop_2/25/3/4/5pct_zlj · spy_10d_drop_3/5pct_zlj · spy_below_ma20_filter_zlj | 大盘急跌 / 跌破 MA20 → −1(admission 过滤) | 方向反了:剔掉的是均收 +1.2~+2.5% 的好单;below_ma20_filter DD +7.5pp | 试死 A |
spy_5d_up_zlj · spy_10d_up_zlj · spy_above_ma20_zlj · sector_5d_up_zlj · sector_10d_up_zlj | 顺风 → +1 | 激活 60–70% 无选择性,−8~−35pp | 试死 |
| 闲置资金指数 overlay | 平均闲置 55% 配低相关底仓 | 均值骗局(p95 利用率 100%);黄金低相关是 regime 产物已衰减 | 搁置 D |
| GUARD_ON 作为交互条件 | 滚动卡 A1N 的 "rule 命中 × SPY guard 开/关" 逻辑 | 在菜单里,偶被选中;注意它用 SPY 状态而回测选 IWM(预注册口径不一致,未改) | 滚动卡内 |
H · tape 微观结构:自建 rules
回答的问题:绕过 UW 的网页过滤 / 标签,直接从逐笔重建"大开仓单"和它周围的微观结构,能不能找到 UW rule 之外(或之下)的信息?数据:UW full-tape 本地 store(claude_explore/cache/tape_zlj/,2023-11-17 起 731 天 5.6GB;prints 过滤 premium ≥25k ∨ (≥10k ∧ size>OI));信号 ↔ 打印按 (ticker, 秒, strike, expiry, type, side, size) 匹配 100%。硬事实:UW 信号宇宙可 95.3% 本地复刻,watchlist ≈ 全市场。代码 claude_explore/rules_zlj/,因子 factors_zlj/rules_tag_factors_zlj.py。控制组基线(9 非 rule 因子 min-score 6)62.1% / DD 19.6 / 2,405 笔;placebo 带 p30 ΔCAGR [−13.5, +24]。
| 假设 | 特征 → 因子 key | 含义 | 信号层 | 组合层 / 判决 |
|---|---|---|---|---|
| H3 有向流 | imb_day / imb_30m → rt_imb_day_neg_zlj · rt_imb_day_negm25_zlj · rt_imb_30m_neg_zlj(−1) | 当日此前 / 前 30 分钟该票签名(bull − bear)不平衡 | 成立:imb_30m Q1 0.04% vs Q5 1.01%,p=0.01,三年同号 | ΔCAGR +17~22 但直接 alpha 仅 +0.2~0.7M,其余 sizing,带内 |
| H5 重复 / 孤单 | repeat_n_30m / repeat_n_day / cluster_prem_share / ascending_fill → rt_lone_print_zlj · rt_cluster_share90_zlj(−1)· rt_repeat3_30m_zlj · rt_ascending_zlj(+1) | 同合约此前打印数;本单在簇中的权利金占比;递增成交 | 孤单打印剔池均收 0.13% vs 0.73%,p=0.000(但占 75% 交易);ascending 2025 −35pp | lone_print −1 是 S5 的一半 |
| H6 激进度 / 结构 | is_multi / is_sweep / is_floor → rt_multi_pen_zlj · rt_sweep_plus_zlj · rt_floor_pen_zlj | 多腿 / 跨所扫单 / floor | multi_pen 剔除 0.35%(p=0.015)但 2026 −22pp;sweep 激活 0.7%;floor 单独无信号 | 否 |
| H7 成交位置 | at_nbbo / inside_nbbo / rel_spread → rt_at_nbbo_plus_zlj · rt_not_at_nbbo_pen_zlj · rt_inside_nbbo_pen_zlj · rt_wide_spread_pen_zlj | 是否在对手价成交 / 价改在 NBBO 内侧 / 相对价差 | at_nbbo 0.33 vs 0.77(p=0.034)与"激进=知情"相反,inside_nbbo 反而更好 | at_nbbo_plus +3M 是加单稀释(新增 648 笔均收 0.72 换掉剔除 189 笔均收 1.4) |
| H2 异常度 | unusual_prem20 / unusual_size20 / tk_prior_prem_day → rt_unusual_q20_pen_zlj · rt_unusual_q80_plus_zlj · rt_unusual_size_q20_pen_zlj · rt_tk_quiet_prior_pen_zlj · rt_prior_day_quiet_zlj | 本单 premium / 该票 20 日日均总 premium(中位 ~0.01);票当日已有热度;D−1 打印数 <5 | 不显著或分年反号 | q80_plus +2M 是稀释 |
| H9 O/S | os20 → rt_os20_high_pen_zlj · rt_os20_q80_pen_zlj | 期权量 / 正股量 20 日 | 不显著 | 否 |
| H10 到期 | dte / days_to_opex → rt_near_expiry_pen_zlj · rt_opex_week_pen_zlj | 临近到期 / opex 周 | 激活 1–2% 无信号 | 否 |
| UW 复刻 v1 | rt_repeat_any_zlj · rt_repeat2_zlj · rt_repeat_asc_zlj · rt_repeat_pm_zlj · rt_floor_lowvol_zlj · rt_floor_lowvol_q75_zlj · rt_uwrule_proxy_pm_zlj | 同合约当日前单 ≥1/≥2 / ∧ 递增;floor ∧ unusual_size ≥ p50/p75;整体 ±1 | — | 直接 alpha +1.1M / −1.3M,远不及 UW 标签 +12.7M → UW rule 里有当时没复刻出的东西(跨日 repeat、LHVF 绝对阈值;现已由 uw_rules 精确给出) |
| UW 复刻 v2 | rt_lhvf_v2_zlj · rt_lhvf_v2_strict_zlj · rt_repeat5d_zlj · rt_repeat5d_any_zlj · rt_repeat20d_days_zlj · rt_uwrule_v2_pm_zlj | floor ∧ unusual_size ≥ 0.5/1.0;跨日 5 日 ≥2 / ≥1;20 日 ≥3 个不同日 | 跑中 | 待阶梯 (ii) 结果 |
| 组合 | rt_self_S2_pm_zlj · rt_self_S3_pm_zlj · rt_self_S4_pm_zlj · rt_self_S5_zlj · rt_self_S5b/S5c/S5d/S5e_zlj | S2 同合约有前单 ∧ imb_30m ≥ 0(±1);S5 孤单 ∧ imb_30m < 0(−1 gate)及 b–e 变体 | S5 剔除 445 笔均收 0.25%(p=0.048) | S2 94.6 / 24.8 复刻了 rule_hit 的分年形态;S5 75.1 / DD 13.4 / Calmar 5.58,ΔMaxDD 优于全部 placebo,但 2026 剔除的单均收 0.49% 高于基线 0.36 → 只在 2024–25 有效 |
进度:tape store 全量、控制组标定、阶梯 (i)/(iii)、信号层电池、placebo 带已完成;阶梯 (ii) 触发变体(premium $50k / noopen / strictopen)跑中;待做:S5 叠加官方 10f;用 uw_rules 的精确定义替换 v1/v2 复刻。
I · 执行 / 组合层:不打分的规则
这些规则决定"进了评分之后能拿多少钱、拿多久"。任何只在边界起作用的想法(按 score 桶加分、rule_weak_veto)应做到这一层,不要伪装成因子(因子的 score() 不能 peek score_raw)。
| 层 | 规则 / 候选 | 现状与证据 | 状态 |
|---|---|---|---|
| 准入 | ASK+call · RTH ≤15:59:30 · OTM [5,50] · STOCK/ADR · score ≥ 6 · 同日同票去重 | 见 §01 | 规则层 |
rule_weak_veto_zlj · admission_filter 系列(spy/sector/ticker 过滤) | weak_veto 信号层成立量级小;其余方向反了 | 补丁 / 否 | |
| 持有 / 退出 | 2 自然日 · −15% 止损 · 周一 09:30 开盘退(monday_open_max_hold) | exit sweep 35+ 变体:现行 2-day 全样本最优但 2026 差(day2 动量死);Mon-exit vs 2 交易日:收益≈但 MaxDD 砍半,Calmar 8.89 vs 6.21;OPG 竞价卖无执行损耗(190 组中位 −4.8bp) | 规则层 |
| take_profit 15% | 报告 take_profit_15pct_8f_backtest:否 | 试死 | |
| day2-gate(gate on ex_2td) | 快速 walk-forward Calmar 7.63 → ~10 / MaxDD −3pp;对抗验证抓出 look-ahead 后修正;需 guardrail + shadow | shadow | |
| rvol0 早退(开盘量能不足提前一天退) | asof0814 复现 +16% / +11% Calmar,建议采纳;对 atr 高尾 booster 复活无效 | 建议采纳 | |
| 仓位 / 杠杆 | 动态基数 = 目标利用率 ÷ 10 日合格数中位 · 分数权重 1.0/1.1/1.2 · 上限 15/20/50(25)% | 回测里分数 6 的 1,045 笔均收 +1.29% PF 1.53,分数 7 的 534 笔 +0.96% PF 1.22,分数 9 的 63 笔 PF 0.95:分数越高并不越好,权重档是温和设定 | 规则层 |
| edge_t 周度降仓(选股超额 t < 2 → ×0.5) | PR #170 合入,实盘默认关;对固定卡有用(V4 IWM 检验期 −9.7% → −2.2%),对滚动卡有害(A1N 检验期 +20.3% → +7.5%) | 固定卡可开 | |
| trailing-60 胜率逆向 up-lever | 被拒信号池无择时信息;唯一幸存的执行层杠杆因子 test ΔCalmar +1.41 | shadow | |
| RF 整体替换评分卡 · RIDGE / RIDGE-R(滚动卡对照) | RF Calmar 7.97 → 0.74;岭回归没超过简单分桶学习器,加 rule 哑变量更差,正则常选到网格上限 1000 | 试死 C |
11 · 数据源地图
| 数据 | 位置 / 接口 | 粒度 · 覆盖 | 喂给谁 | 坑 |
|---|---|---|---|---|
| UW bigopen CSV(主信号源) | future_v_0_1/database/Strategy_bigopen_10plus.csv,由 uw_csv/ 从 full-tape + flow-alerts 本地生成(冻结段 2023-03-10→11-08 + 日文件 2023-11-09 起,737 天已提交);带引擎标签版 Strategy_bigopen_10plus_engine.csv(uw_labels/assemble.py) | 37 列(+3 引擎列),358,463 行,权利金 ≥ $100k,call/put × ASK/BID | A/D/E/F 维全部字段、nbp3d、signal_id、入场时刻 | date+time 北京时间;dte 是查看日算的要重算;premium 显示字符串;sector/industry/earnings 是"当前值"(重跑历史日会变,要同一份就用 assemble 不要重跑);rule 来自 alerts API 不来自 tape |
| Massive 分钟线 | massive_cache/{TICKER}/YYYY-MM.parquet + _meta.json | 1 分钟 OHLCV,2,600+ 票,2023-03 起 | entry/exit/y_2d、止损、dvol、rv3d、dvol_asym、rvol_tod、vwap_dev | fails=0 ≠ 完整;截断分片 / greedy fallback / vintage 漂移(utils/cache_repair_zlj.py);按月冻结不回刷复权 → 拆股后假标签 −74~−96%(utils/split_guard.py 2026-10-14 起守卫) |
| Massive 日线 | massive_cache/daily_bars/ | 日 OHLC,按需补拉(需 MASSIVE_API_KEY) | ret_5d、atr_pct、price_vs_ma20、mcap_hist | V9 与 V10 共用,谁刷新都改对方 rolling 因子历史;delta build 时 NaN 要跑 fix_base_features_zlj.py |
| Massive ticker 类型 | massive_ticker_type_cache.json | CS / ADRC / ETF / ETV / INDEX… | asset_type + 引擎过滤 | 缺失退回 CSV tags emoji |
| Massive 单合约逐笔 | uw_labels/cache/massive/{日}/trades.parquet(从复现机拷,808MB,737 天,$10k 门槛候选合约) | 逐笔 + 股票 NBBO | uw_labels 引擎标签(RH 用 realtime.repeated_hits,Floor 按天批量) | 与 UW 时间戳差 ≤3 ms(99%),匹配 ±2 秒;2024-08-05 指数期权缓存不全 |
| UW 参考数据 | UW_RULES_REF_DIR(stock_info / options_volume / earnings / mcap_hist) | 票级市值、前 3 日同类型期权量(约 2 年历史)、财报日 | uw_rules Floor 六类;F5 空白格可借 | 缓存必须覆盖全部信号标的,缺 stock_info 的票 Floor 三档给不出(第二次勘误的原因) |
| SPY / IWM 日线 + SMA20 | Massive API | 日 | guard | API key 缺失 guard 静默 fail-open(历史"同 base 不同 CAGR"主因) |
| UW 14 天 flow dump | UW_Flow_Dumps_bigopen_csv_chunks/(Gary dump 到 2026-05-23 + full-tape 回填到 10-07) | 每信号前 14 天该票 ≥$25k 流,757 万行 | C2 维全部 uw_* 因子(已全否) | 每源文件 ≤250 行,重票历史只剩 10–15%;必须 codex global-dedup,不能按 (file_ticker, file_date) |
| UW full-tape | GET /api/option-trades/full-tape/{date} → claude_explore/cache/tape_zlj/;uw_csv 的 tape 种子 | 全市场逐笔,1.5–5GB/天,本 token 最早 2023-11-17,UW 只保留 730 个交易日 | H 维、uw_csv、Tier B 回填 | 滚出窗口的日子只有仓库里的日文件 |
| 实盘 RDS | Signal Store(claude_explore/SIGNAL_DB_QUICKREF_ZLJ.md) | alerts / flows / scores / trades / positions / 阈值表 | 对账、factor_*_job | PnL 用 trades 表;positions.quantity 只记末段 |
12 · 原始 37 列逐列用途
| 列 | 内容 | 状态 | 去向 / 结论 |
|---|---|---|---|
date, time | 北京时间 | 在用 | signal_time / time_slot / entry 对齐;tz_localize('Asia/Shanghai') → ET |
ticker | 标的 | 在用 | 分钟线、资产类型;BRKB → BRK.B 归一化 |
strike, expiry | 合约 | 半用 | nbp3d 合约键(已拔);dte 重算;引擎标签与 tape 匹配键(option_chain) |
option_type, side | call/put · ASK/BID | 在用 | 信号集 ASK+call;其余三象限只在 nbp3d 里当上下文 |
premium | "$9.51M" 字符串,≥ $100k 已预选 | 试死 | premium_tier / rolling / ml_o_large 否;log_premium 在滚动卡候选池 |
size | 张数 | 试死 | Step 1 无信号;RH 规则门槛用它 |
spot | 正股价 | 在用 | stock_price |
dte | 查看日算的到期天数 | 试死 | dte_static 共线 otm;用前必须重算;滚动卡候选池 |
price | 期权成交价 | 未用 | 与 theo 偏离度是空白 |
otm_pct | 整数 % | 在用 | otm + 硬准入 |
bid_ask_range | "$18.91 - $19.06" | 试死 | chain_ba p=0.118;tape 版 rel_spread / at_nbbo 见 H |
volume, oi, vol_oi | 当日量 / 持仓 / 比 | 试死 | 预选偏差 + regime 翻转;BigOpen 过滤本身用 volume>OI ∧ size>OI |
chain_bid_ask | 链价差指标 | 试死 | chain_ba 两版否;滚动卡候选池 |
share_eqv | 折合股数 | 试死 | seqv rolling 否;log_seqv 滚动卡候选池 |
iv_pct | 合约 IV | 在用 | iv |
delta, theta, gamma, vega, rho, theo | 希腊字母 / 理论价 | 试死 | delta_abs / theta_abs Step 1 死;gamma 低价代理(仍在滚动卡候选池);vega / rho / theo 没单独看 |
sector, industry | 分类(当前值) | 半用 | 组合层行业上限;sector 在滚动卡候选池;industry 哑变量否 |
earnings | 距下次财报天数(当前值,88.8% 一致) | 试死 | days_to_earnings 样本太小;OEF rule 用 UW earnings 缓存 |
rule | UW alert rule 名(9 种) | 在用 | rule_hit;D 章 |
legs | ML-O 多腿标记 | 试死 | ml_o_large 否;flag 进滚动卡;tape multi_pen 2026 −22pp |
code | MLFT / CBMO / SLFT 等成交条件码 | 未用 | uw_rules 用它判 Floor / 多腿(FLOOR_CODES = slft/mlft/tlft/mfsl/tfsl;ML_O = mlet/mlat/mlct/mlft/mesl/masl/mfsl/cbmo);CSV 列本身没当因子试 |
flags | FLOOR / SWEEP | 未用 | tape 版 floor_pen / sweep_plus 无信号;CSV 列没单独试 |
tags | 🐂BULLISH 🛍️ASK 🧰ETF 等(95.6% 一致,事后回写) | 半用 | 只作 ETF / INDEX 回退识别 |
source_bucket, source_segment, source_file | 10_20 = $100–200k / 20plus = >$200k · 抓取分段 | 未用 | bucket 即权利金档位;file 用于 signal_id |
13 · 挖掘纪律 · 入口 · 开发单
六条硬线
- placebo 带:随机 +1 在这套回测上的天然噪声 ±6pp CAGR、±2–4pp DD、±10pp 2026 年收益;rule 变体用等量随机准入对照(20 种子)。不超带不算数,"四年全正"也能随机出现。
- 直接 alpha 拆分:ΔPnL = 剔除 / 新增 / sizing 三块;+1 型看新增均收是否 > 基线 1.21%,−1 型看剔除均收是否显著低于随机抽样。headline 由 sizing 撑起的不算。
- 资金受限引擎里 +1 的真实门槛 = 新增要好过被挤掉的(热年机会成本约 +2%/笔),不是均值为正。bear_A_tk t=4.35 进组合 −$1.28M。
- 训练池 = 可交易池(STOCK/ADR,排除 ETF);搜索空间要窄,看选中 percentile 的分布判过拟合(std 7 vs 36)。
- 终审带 2026;regime / vol 类的诊断层中性化不能迁移到生产(sec_rvol10 残差网格 100% 却年年亏)。
- 严格滚动是新基线:固定卡的历史 CAGR 含事后知识(滚动重学只有其 27%)。新因子除了过固定卡的 9 关,还应放进 wf_rolling_job 候选池看它能不能被事前学到;不要用滚动结果去"修"固定卡再回测。
入口
| 要做什么 | 去哪 |
|---|---|
| 看所有已注册因子 | python3 factor_registry.py list / show <key>(主干 62);claude_explore/factor_registry_zlj.py(注入 ~138,含 30 placebo、~40 参数网格) |
| 固定卡新因子流程 | /explore-factor(Phase 1 分层 → 2 信号层 → 3 组合回测 → 4 九维健康度);方法论手册 claude_explore/factor_playbook_zlj/ |
| 写因子 | 继承 factors/_base.py: FactorBase 或 rolling_ic_base.py;探索期放 claude_explore/factors_zlj/ |
| 建评分表 / 回测 | build_factors.py → run_backtest_v9.py --start-date 2023-04-20 --min-score 6 --factors …;一键 /refresh-backtest |
| 把特征放进滚动卡 | wf_rolling_job/config.py: NUMERIC / CATEGORICAL + build_features.py 加 kind → run_all.sh;读 PREREGISTRATION.md 先写预注册 |
| 同表基线 + placebo + 归因三件套 | claude_explore/factor_rescreen_2026_zlj/;rule 版 rule_engine_bt_job/ |
| rule 引擎 / 引擎标签 | uw_rules/(README §1 定义、§3 用法);uw_labels/daily.py → _engine.csv |
| tape 微观结构 | claude_explore/rules_zlj/(README_ZLJ.md 总账) |
| 剔除因子的真实理由 | reports/*_exploration.md(31 份) |
按维度开发单(看完地图后在这上面写指引)
| 维度 / 子维度 | A1–I 中的哪一格;是在用格的改造、试死格的复活(需说明死因 A/B/C 为何不再成立)、还是空白格 |
| 一句话假设 | 它为什么能预测 2 日收益(说不清 = data mining,停) |
| 特征定义 | 公式、窗口、截止时点(T−1 收盘 / 信号前完整 bar)、数据源、历史可得起点、实盘可得性 |
| 打分形式 | 固定卡:binary 0/+1 还是 gating 0/−1、阈值候选集(要窄、圆整);滚动卡:进 NUMERIC 还是 CATEGORICAL |
| 预期作用点 | 全池排序 / 5→6 边界 / 组合层;预期触发率(8–18% 最好) |
| 要过的关 | 固定卡 9 关 + placebo 带 + 直接 alpha 拆分 + 2026 终审;滚动卡:28 个月里被选中的月数与符号稳定性 |
| 对照 | 与现役哪条腿最可能共线(ρ 矩阵:atr×rv3d 0.21、atr×iv 0.20,其余 ≤0.11) |