← 文档库
📄 文档learn/截面选基-理解手册/12-惯性层周度换仓回放与典型case-2026-10-24.md
🌱 创建于2026-10-24 23:46
✏️ 修改于2026-10-24 23:58
👁️ 浏览量—
🔗 短链接/~learn/s/60aec8d2
🔐 可见性

惯性层周度换仓回放与典型 Case(2026-04-03 ~ 2026-10-23)

> 复盘对象:截面选基的「持仓惯性」层 —— 用真实历史行情做 135 个交易日的隔离回放, > 看它到底把日换手压到什么程度、一周持仓怎么变、以及「因子分掉了却还得继续持有」这类 case 有多普遍。 > > 数据来源:本机历史行情缓存 + 真实因子打分,回放状态全部写在 /tmp/sim_inertia/,未触碰实盘。 > 生成方式:/tmp/sim_inertia.py(回放)→ /tmp/sim_report.py(本报告,数字全部现算)。

0. 一句话结论

惯性层把日度新进从无惯性时的平均 2.07 只压到 0.60 只(最多 3 只),但它是「滚动 5 个交易日最多新进 3 只」,不是自然周配额;卖出/硬退出不受配额限制;你这段时间 745 个「高分新面孔被挡在门外」的持仓日(覆盖 135 天、51 个品种),另有 565 个「原始排名已掉出前 10 但仍真实有仓位」的持仓日×品种(另有 257 个只是名单占位、当天 0 仓位)。

⚠️ 最重要的发现不是策略本身,而是:生产链路上惯性状态每生成一次推送就会被清空,实盘大概率从未真正积累过惯性(详见第 6 节,附实盘状态文件证据)。本报告展示的是「修好之后」应有的效果。

1. 模拟口径与前提

项 取值
----------
区间 2026-04-03 ~ 2026-10-23,135 个交易日 / 30 个自然周
预热 20 个交易日(只喂状态,不计入统计)
每日调用 run_selection(date, top_n=99) → 惯性层 eff_n=10
权重 _compute_portfolio_weights(top_n=10, score_weighted, exposure_cap=当日regime上限)
核心名单 = 分散化后 ranked.head(10),也是惯性层提交的 10 只;日均其中只有 6.86 只真实有仓位(min 3 / max 10),其余是 0 权重占位
实际组合 _compute_portfolio_weights 输出的 holdings,日均 10.03 只(7~12),权重已归一化到当日 exposure_cap 内(合计 98.7%);其中平均 3.17 只不在核心名单(国债固定对冲位 / _ensure_min 补位)
状态隔离 regime 状态、惯性历史、信号连击库全部重定向到 /tmp/sim_inertia/
QDII 溢价 打桩为空(回放不联网),不影响排名主体(溢价只作用于同指数克隆择优)
regime 分布 MILD_BULL 73 天,RANGING 62 天
hold_src 分布 allocator 135 天

已知前提偏差:同一区间两次回放(full2 / full3),有 71/135 天的「前 3 名」不完全一致,原因是行情缓存当日刷新/数据源切换(日志里 load_best 在 tushare / akshare 之间选择)。本报告所有数字以 replay_full3 为唯一来源;这类漂移也说明:因子分对数据源敏感,结论看结构不看个位数。

2. 你的记忆 vs 代码实际

你的说法 代码实际 影响
------------------------
日换手能到 30% 无惯性时原始 Top10 平均每天换 2.07 只(= 21% 仓位名字变化),最多 7 只 记忆方向正确
每周最多换 3 只 实际是滚动 5 个交易日窗口内最多新进 3 只(_MAX_NEW_PER_WINDOW=3、_NEW_WINDOW_DAYS=5) 跨自然周可能看到 4 只新进(见 3.2),不是 bug
卖出不受限、只限制准入 正确。配额只约束 new_entries,卖出/硬退出(分数<0.20)随时可走 与你的预期一致
相当于一个惯性 惯性来自两层:①在位加分 +3.0%~4.5%;②新进配额 3 只/5 日 你问的「分掉了还留着」主要是①,②决定「进来的名额有限」
熊市怎么办 BEAR/SEVERE_BEAR 时整个惯性层停用(不写配额账、不加分) 本区间没有熊市日,分支未触发(见 Case 5)

一致性校验:prev_top 与上一交易日最终核心组合 134/134 天完全一致(无不一致)。

3. 一周的持仓会怎么变化

3.1 30 周逐周快照(每周最后一个交易日)

周 最后交易日 regime 仓位上限 权重和 本周新进 本周剔除 明细(实际持仓·权重,降序)
:--:-------------------:-------::-----::--------::--------:------------------
W0403 2026-04-03 RANGING 51.0% 100.0% 4 3 30年国债ETF39.6%,十年国债ETF11.1%,豆粕ETF9.3%,电力ETF6.8%,德国ETF6.6%,沙特ETF6.2%,稀土ETF5.6%,光伏ETF5.3%,科创100ETF4.0%,东证指数ETF3.4%,恒生ETF2.0%
W0410 2026-04-10 RANGING 62.0% 100.0% 4 4 30年国债ETF39.6%,十年国债ETF11.1%,法国ETF7.3%,东证指数ETF7.2%,沙特ETF7.1%,煤炭ETF6.1%,光伏ETF6.0%,豆粕ETF5.6%,科创100ETF4.2%,黄金ETF3.9%,恒生科技ETF1.9%
W0417 2026-04-17 MILD_BULL 72.0% 100.0% 2 2 30年国债ETF39.6%,十年国债ETF11.1%,沙特ETF7.9%,东证指数ETF7.9%,标普油气ETF7.1%,煤炭ETF6.2%,豆粕ETF5.6%,黄金ETF5.1%,新能源ETF3.9%,科创100ETF3.6%,恒生科技ETF2.0%
W0424 2026-04-24 MILD_BULL 72.0% 100.0% 1 1 30年国债ETF39.6%,十年国债ETF11.1%,沙特ETF8.0%,标普油气ETF7.3%,化工ETF7.2%,豆粕ETF6.3%,煤炭ETF6.2%,东证指数ETF5.1%,新能源ETF3.9%,科创100ETF3.3%,恒生科技ETF1.9%
W0430 2026-04-30 MILD_BULL 74.0% 100.0% 2 2 30年国债ETF39.6%,十年国债ETF11.1%,豆粕ETF8.3%,东证指数ETF8.0%,标普油气ETF7.9%,化工ETF7.4%,红利低波ETF6.8%,新能源ETF3.9%,科创100ETF3.5%,恒生科技ETF1.9%,港股红利ETF1.7%
W0508 2026-05-08 MILD_BULL 78.0% 100.0% 3 3 30年国债ETF39.6%,十年国债ETF11.1%,标普油气ETF8.6%,东证指数ETF8.1%,标普生物科技ETF7.2%,黄金ETF6.6%,豆粕ETF5.6%,新能源车ETF4.0%,新能源ETF3.8%,科创100ETF3.5%,恒生科技ETF2.0%
W0515 2026-05-15 MILD_BULL 82.0% 100.0% 3 3 30年国债ETF39.6%,十年国债ETF11.1%,标普油气ETF9.1%,日经ETF8.1%,标普生物科技ETF7.2%,豆粕ETF5.6%,新能源车ETF5.3%,黄金ETF4.9%,中证1000ETF3.8%,科创100ETF3.4%,恒生科技ETF2.0%
W0522 2026-05-22 MILD_BULL 82.0% 100.0% 2 2 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,标普油气ETF9.5%,标普生物科技ETF7.2%,新能源车ETF5.3%,新能源ETF4.3%,豆粕ETF3.8%,中证1000ETF3.7%,科创100ETF3.6%,恒生科技ETF2.0%
W0529 2026-05-29 MILD_BULL 83.0% 100.0% 4 5 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,标普油气ETF9.8%,沙特ETF8.7%,标普生物科技ETF7.2%,煤炭ETF5.6%,科创100ETF3.8%,黄金ETF2.2%,港股通科技ETF2.0%
W0605 2026-06-05 MILD_BULL 83.0% 95.0% 3 5 30年国债ETF39.6%,煤炭ETF11.1%,十年国债ETF11.1%,道琼斯ETF10.0%,东证指数ETF9.9%,标普生物科技ETF7.2%,科创100ETF4.2%,中概互联ETF1.9%
W0612 2026-06-12 MILD_BULL 80.0% 85.5% 3 4 30年国债ETF39.6%,十年国债ETF11.1%,东证指数ETF9.9%,标普油气ETF9.7%,纳指ETF7.8%,豆粕ETF5.6%,中概互联ETF1.9%
W0618 2026-06-18 MILD_BULL 81.0% 85.9% 2 1 30年国债ETF39.6%,十年国债ETF11.1%,德国ETF8.2%,美国50ETF7.9%,纳指ETF7.8%,豆粕ETF5.6%,东证指数ETF3.9%,中概互联ETF1.9%
W0626 2026-06-26 MILD_BULL 81.0% 96.3% 3 2 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,德国ETF8.4%,纳指ETF7.9%,美国50ETF7.9%,豆粕ETF5.6%,东证指数ETF3.9%,恒生科技ETF1.9%
W0703 2026-07-03 MILD_BULL 81.0% 100.0% 2 1 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,道琼斯ETF8.4%,纳指ETF7.9%,美国50ETF7.9%,证券ETF5.7%,东证指数ETF3.9%,豆粕ETF3.5%,恒生科技ETF1.9%
W0710 2026-07-10 MILD_BULL 80.0% 100.0% 3 3 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,标普消费ETF8.7%,美国50ETF8.1%,纳指ETF7.9%,证券ETF5.8%,东证指数ETF3.9%,豆粕ETF3.4%,香港证券ETF1.5%
W0717 2026-07-17 RANGING 63.0% 100.0% 2 2 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,道琼斯ETF8.8%,美国50ETF8.1%,纳指ETF7.9%,证券ETF4.0%,东证指数ETF3.9%,豆粕ETF3.7%,科创100ETF2.9%
W0724 2026-07-24 RANGING 52.0% 100.0% 2 1 30年国债ETF39.6%,十年国债ETF11.1%,纳指生物科技ETF9.3%,道琼斯ETF8.4%,美国50ETF8.0%,纳指ETF7.9%,豆粕ETF4.2%,东证指数ETF3.9%,证券ETF3.1%,科创100ETF2.5%,恒生互联网ETF1.9%
W0731 2026-07-31 RANGING 43.0% 96.4% 1 2 30年国债ETF39.6%,十年国债ETF11.1%,纳指生物科技ETF8.5%,道琼斯ETF8.0%,美国50ETF7.9%,纳指ETF7.8%,豆粕ETF5.5%,东证指数ETF3.9%,证券ETF2.1%,恒生生物科技ETF2.0%
W0807 2026-08-07 RANGING 55.0% 100.0% 3 4 30年国债ETF39.6%,十年国债ETF11.1%,纳指生物科技ETF9.1%,道琼斯ETF8.2%,纳指ETF7.8%,标普生物科技ETF7.2%,日经ETF7.1%,新兴亚洲ETF7.0%,证券ETF3.0%
W0814 2026-08-14 MILD_BULL 61.0% 100.0% 1 0 30年国债ETF39.6%,十年国债ETF11.1%,纳指生物科技ETF9.2%,道琼斯ETF8.2%,纳指ETF7.8%,新兴亚洲ETF7.8%,标普生物科技ETF7.2%,证券ETF3.5%,消费50ETF3.0%,日经ETF2.7%
W0821 2026-08-21 MILD_BULL 60.0% 100.0% 2 2 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,道琼斯ETF8.3%,纳指生物科技ETF8.2%,日经ETF7.7%,标普生物科技ETF7.2%,证券ETF3.1%,消费50ETF2.8%,恒生ETF2.0%
W0828 2026-08-28 RANGING 60.0% 99.9% 2 2 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,纳指生物科技ETF9.9%,道琼斯ETF8.4%,新兴亚洲ETF7.7%,消费50ETF4.4%,养殖ETF4.1%,证券ETF2.8%,恒生ETF2.0%
W0904 2026-09-04 RANGING 56.0% 100.0% 2 3 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,道琼斯ETF8.5%,法国ETF7.5%,新兴亚洲ETF7.4%,标普生物科技ETF7.2%,纳指生物科技ETF6.4%,证券ETF2.3%
W0911 2026-09-11 RANGING 54.0% 100.0% 3 2 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,纳指生物科技ETF10.0%,道琼斯ETF8.6%,德国ETF7.4%,标普生物科技ETF7.2%,证券ETF2.2%,恒生ETF2.0%,豆粕ETF1.9%
W0918 2026-09-18 RANGING 52.0% 100.0% 3 3 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,纳指生物科技ETF10.0%,道琼斯ETF8.6%,德国ETF7.2%,标普生物科技ETF7.2%,消费50ETF3.5%,恒生ETF2.0%,黄金ETF0.9%
W0924 2026-09-24 RANGING 53.0% 100.0% 4 3 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,纳指生物科技ETF9.9%,道琼斯ETF8.7%,标普生物科技ETF7.2%,消费50ETF4.0%,央企ETF4.0%,恒生ETF2.0%,恒生科技ETF1.9%,豆粕ETF1.7%
W0930 2026-09-30 RANGING 48.0% 100.0% 1 1 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,纳指生物科技ETF9.9%,道琼斯ETF8.6%,标普生物科技ETF7.2%,央企ETF3.4%,消费50ETF3.4%,豆粕ETF3.0%,恒生ETF2.0%,恒生科技ETF1.9%
W1009 2026-10-09 RANGING 48.0% 100.0% 2 3 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,标普油气ETF10.0%,纳指生物科技ETF9.8%,道琼斯ETF8.5%,东证指数ETF4.4%,消费50ETF3.4%,恒生科技ETF1.8%,央企ETF1.3%
W1016 2026-10-16 RANGING 46.0% 100.0% 3 2 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,标普油气ETF10.0%,纳指生物科技ETF9.8%,道琼斯ETF8.5%,东证指数ETF4.1%,稀土ETF1.9%,恒生科技ETF1.8%,豆粕ETF1.8%,房地产ETF1.5%
W1023 2026-10-23 RANGING 44.0% 100.0% 0 1 30年国债ETF39.6%,十年国债ETF11.1%,标普500ETF10.0%,标普油气ETF10.0%,纳指生物科技ETF9.9%,道琼斯ETF8.6%,东证指数ETF3.8%,豆粕ETF3.7%,恒生科技ETF1.9%,房地产ETF1.5%

> 明细 = 当日实际持仓(含国债固定对冲位、补位/QDII 保底),按权重降序;「本周新进/剔除」= 相对上周最后一个交易日的实际持仓变化。3.2 的配额统计仍用「惯性核心名单」口径(配额只作用于名单准入)。

3.2 周度新进分布(验证「每周最多 3 只」)

一周新进只数 周数
:---::---:
0 只 1 周
1 只 3 周
2 只 4 周
3 只 19 周
4 只 3 周

超过 3 只的周:3 个(2026-04-17 新进 4 只,2026-07-24 新进 4 只,2026-10-16 新进 4 只)。

3.3 仓位结构

按核心序位(分数高低,不是权重高低;0 权重也计入分母):

序位 平均权重 区间 有仓位天数占比
:---::-------:------:---:
#1 5.2% 0.0% ~ 10.0% 61%
#2 5.5% 0.0% ~ 10.0% 70%
#3 5.0% 0.0% ~ 10.0% 70%
#4 5.1% 0.0% ~ 10.0% 81%
#5 5.7% 0.0% ~ 39.6% 81%
#6 6.0% 0.0% ~ 39.6% 75%
#7 5.0% 0.0% ~ 39.6% 78%
#8 5.0% 0.0% ~ 39.6% 74%
#9 3.2% 0.0% ~ 10.0% 59%
#10 4.4% 0.0% ~ 39.6% 36%

按当日真实权重降序(仅核心名单内,真正花了多少钱):

权重名次 平均权重 区间
:---::-------:------
#1 14.3% 7.0% ~ 39.6%
#2 8.9% 6.3% ~ 10.0%
#3 8.2% 6.0% ~ 10.0%
#4 6.9% 0.0% ~ 8.6%
#5 5.0% 0.0% ~ 7.9%
#6 3.5% 0.0% ~ 7.2%
#7 2.2% 0.0% ~ 6.4%
#8 1.0% 0.0% ~ 4.2%
#9 0.1% 0.0% ~ 2.8%
#10 0.0% 0.0% ~ 2.0%

> 权重高度集中在头部:#1 平均 14.3%(含 30年国债ETF(511090.SH) 的对冲大仓,属于防御位而非进攻仓),#8~#10 平均只有 1.0% / 0.1% / 0.0%。所以「惯性多留一个名字」占的是候选名额,多数时候并不占用资金。

> 注:核心序位表里 #5~#8 的 39.6% 上限不是异常 —— 那是 30年国债ETF(511090.SH) 的固定对冲额度,它按当日调整后分数落在名单的不同序位上,所以「固定大仓」会在不同序位之间跳。

4. 换手率效果

指标 无惯性(原始 Top10) 有惯性(实际)
------:---::---:
日均新进只数 2.07 0.60
单日最多新进 7 3
零新进天数 10/134 77/134
换手率(名字口径) 21%/日 6%/日

持仓年龄(回放期内每只品种的最长连续持有天数):

最长连续持有 品种数
:---::---:
≥20 日 18
10~19 日 20
5~9 日 14
<5 日 7

平均 18.7 日;最长的几只:创业板ETF(159915.SZ) 69 日,道琼斯ETF(513400.SH) 68 日,纳指生物科技ETF(513290.SH) 62 日,证券ETF(512880.SH) 59 日,科创100ETF(588220.SH) 49 日,东证指数ETF(513800.SH) 46 日。

5. 典型 Case(供你 review)

Case 1|因子分掉了,但因为惯性仍被继续持有

定义:当天在核心名单里,但原始因子排名已经掉出前 10。

口径 数量
------:---:
名单内(含 0 权重占位) 822 个「持仓日×品种」
真实有仓位(权重 >0) 565 个「持仓日×品种」,涉及 35 个品种、124 段
仅名单占位、当天权重 0 257 个
国债固定对冲位(511090/511260,强制候选、固定额度) 22 个「名单日」,已从上表剔除

> 511090.SH(30年国债ETF)与 511260.SH(十年国债ETF)由 bond_fixed_slots 强制进候选池并给固定额度,与因子排名、惯性都无关,所以不列入「惯性留住」统计。

为什么会这样(机制,不是“加分加得多”):配额用满后,所有超配额新面孔被压到「入选线 − 0.015」,而在位者只要分数 ≥0.20 就仍占据前 10 位;只要在位者够 10 只,排名表就被老成员填满,跟新面孔多少分无关。全期 66/135 天配额是满的;下表 ≥5 日的长段里,有 12/44 段期间配额多数时间满额,另一半是「还有名额、但被在位加分 + 分散化保护留住」。

下列为真实有仓位且连续 ≥5 个交易日(「整整一周以上」)都在原始前 10 之外的段:

品种 区间 天数 原始排名 原始分 权重
------------:---::---::---::---:
东证指数ETF(513800.SH) 2026-06-03 ~ 2026-07-29 40 12 ~ 32 0.564 ~ 0.732 3.9% ~ 9.9%
豆粕ETF(159985.SZ) 2026-04-16 ~ 2026-05-22 24 11 ~ 48 0.508 ~ 0.703 2.0% ~ 11.1%
证券ETF(512880.SH) 2026-06-29 ~ 2026-07-29 23 11 ~ 23 0.665 ~ 0.733 2.5% ~ 6.1%
标普生物科技ETF(159502.SZ) 2026-05-06 ~ 2026-06-02 20 11 ~ 34 0.577 ~ 0.706 7.2% ~ 7.2%
恒生科技ETF(513180.SH) 2026-09-24 ~ 2026-10-23 16 18 ~ 36 0.531 ~ 0.611 1.8% ~ 1.9%
消费50ETF(515650.SH) 2026-08-14 ~ 2026-09-02 14 14 ~ 25 0.590 ~ 0.677 2.6% ~ 4.5%
消费50ETF(515650.SH) 2026-09-17 ~ 2026-10-14 14 20 ~ 54 0.493 ~ 0.617 3.0% ~ 4.0%
德国ETF(159561.SZ) 2026-06-15 ~ 2026-06-29 10 20 ~ 29 0.599 ~ 0.641 8.2% ~ 8.4%
纳指生物科技ETF(513290.SH) 2026-08-19 ~ 2026-09-01 10 25 ~ 36 0.575 ~ 0.600 2.5% ~ 10.0%
新兴亚洲ETF(520580.SH) 2026-08-27 ~ 2026-09-09 10 11 ~ 31 0.555 ~ 0.696 3.6% ~ 7.7%
德国ETF(513030.SH) 2026-09-10 ~ 2026-09-23 10 12 ~ 25 0.604 ~ 0.664 7.0% ~ 7.8%
科创100ETF(588220.SH) 2026-04-15 ~ 2026-04-24 8 11 ~ 25 0.587 ~ 0.707 3.3% ~ 4.0%
中证1000ETF(512100.SH) 2026-05-13 ~ 2026-05-22 8 12 ~ 29 0.590 ~ 0.685 3.6% ~ 3.8%
美国50ETF(513850.SH) 2026-06-23 ~ 2026-07-02 8 11 ~ 14 0.709 ~ 0.735 7.9% ~ 7.9%
恒生ETF(159920.SZ) 2026-09-10 ~ 2026-09-21 8 11 ~ 17 0.652 ~ 0.686 2.0% ~ 2.0%
稀土ETF(516780.SH) 2026-10-13 ~ 2026-10-22 8 24 ~ 42 0.507 ~ 0.581 1.4% ~ 1.9%
东证指数ETF(513800.SH) 2026-10-14 ~ 2026-10-23 8 14 ~ 20 0.601 ~ 0.663 3.8% ~ 4.4%
法国ETF(513080.SH) 2026-04-08 ~ 2026-04-16 7 15 ~ 32 0.544 ~ 0.674 6.8% ~ 7.8%
东证指数ETF(513800.SH) 2026-04-16 ~ 2026-04-24 7 12 ~ 19 0.657 ~ 0.712 5.1% ~ 8.1%
东证指数ETF(513800.SH) 2026-04-30 ~ 2026-05-13 7 13 ~ 36 0.587 ~ 0.652 8.0% ~ 9.4%
美国50ETF(159577.SZ) 2026-07-07 ~ 2026-07-15 7 12 ~ 14 0.719 ~ 0.747 8.1% ~ 8.1%
标普生物科技ETF(159502.SZ) 2026-08-19 ~ 2026-08-27 7 19 ~ 34 0.578 ~ 0.634 1.6% ~ 7.2%
标普生物科技ETF(159502.SZ) 2026-08-31 ~ 2026-09-08 7 12 ~ 29 0.594 ~ 0.670 1.9% ~ 7.2%
证券ETF(512880.SH) 2026-09-08 ~ 2026-09-16 7 11 ~ 39 0.521 ~ 0.687 1.8% ~ 2.4%
央企ETF(510060.SH) 2026-09-24 ~ 2026-10-12 7 25 ~ 63 0.472 ~ 0.572 1.3% ~ 4.0%
标普油气ETF(159518.SZ) 2026-10-15 ~ 2026-10-23 7 11 ~ 21 0.597 ~ 0.693 10.0% ~ 10.0%
化工ETF(159870.SZ) 2026-04-24 ~ 2026-05-06 6 16 ~ 26 0.592 ~ 0.660 7.0% ~ 7.4%
标普油气ETF(159518.SZ) 2026-05-13 ~ 2026-05-20 6 14 ~ 62 0.508 ~ 0.701 8.9% ~ 9.3%
日经ETF(513520.SH) 2026-08-07 ~ 2026-08-14 6 13 ~ 23 0.614 ~ 0.668 2.7% ~ 7.7%
养殖ETF(159865.SZ) 2026-08-26 ~ 2026-09-02 6 18 ~ 27 0.605 ~ 0.638 2.6% ~ 4.2%

> 共 44 段 ≥5 日;表中列前 30 段。

逐日明细示例:东证指数ETF(513800.SH),2026-06-03 ~ 2026-07-29 连续 40 个交易日

日期 regime 原始排名 原始分 惯性后分 权重 说明
--------------:-------::------::-------::---:------
2026-06-03 MILD_BULL 14 0.665 0.695 9.9% 已在原始前10之外
2026-06-04 MILD_BULL 15 0.682 0.714 9.9% 已在原始前10之外
2026-06-05 MILD_BULL 15 0.687 0.721 9.9% 已在原始前10之外
2026-06-08 MILD_BULL 17 0.681 0.717 9.8% 已在原始前10之外
2026-06-09 MILD_BULL 13 0.700 0.738 9.9% 已在原始前10之外
2026-06-10 MILD_BULL 13 0.693 0.733 9.8% 已在原始前10之外
2026-06-11 MILD_BULL 13 0.703 0.745 9.8% 已在原始前10之外
2026-06-12 MILD_BULL 14 0.701 0.745 9.9% 已在原始前10之外
2026-06-15 MILD_BULL 12 0.687 0.732 9.9% 已在原始前10之外
2026-06-16 MILD_BULL 12 0.684 0.729 9.9% 已在原始前10之外
2026-06-17 MILD_BULL 14 0.688 0.733 3.9% 已在原始前10之外
2026-06-18 MILD_BULL 15 0.672 0.717 3.9% 已在原始前10之外
2026-06-22 MILD_BULL 18 0.667 0.713 3.9% 已在原始前10之外
2026-06-23 MILD_BULL 19 0.647 0.692 3.9% 已在原始前10之外
2026-06-24 MILD_BULL 18 0.651 0.696 3.9% 已在原始前10之外
2026-06-25 MILD_BULL 16 0.667 0.712 3.9% 已在原始前10之外
2026-06-26 MILD_BULL 17 0.687 0.732 3.9% 已在原始前10之外
2026-06-29 MILD_BULL 16 0.674 0.719 3.9% 已在原始前10之外
2026-06-30 MILD_BULL 17 0.653 0.698 3.9% 已在原始前10之外
2026-07-01 MILD_BULL 17 0.677 0.722 3.9% 已在原始前10之外
2026-07-02 MILD_BULL 18 0.659 0.704 3.9% 已在原始前10之外
2026-07-03 MILD_BULL 21 0.621 0.666 3.9% 已在原始前10之外
2026-07-06 MILD_BULL 20 0.664 0.709 3.9% 已在原始前10之外
2026-07-07 MILD_BULL 18 0.702 0.747 3.9% 已在原始前10之外
2026-07-08 MILD_BULL 19 0.705 0.750 3.9% 已在原始前10之外
2026-07-09 MILD_BULL 18 0.712 0.757 3.9% 已在原始前10之外
2026-07-10 MILD_BULL 14 0.732 0.777 3.9% 已在原始前10之外
2026-07-13 MILD_BULL 15 0.712 0.757 3.9% 已在原始前10之外
2026-07-14 MILD_BULL 20 0.683 0.728 3.9% 已在原始前10之外
2026-07-15 MILD_BULL 20 0.693 0.738 3.9% 已在原始前10之外
2026-07-16 MILD_BULL 18 0.690 0.735 3.9% 已在原始前10之外
2026-07-17 RANGING 32 0.593 0.638 3.9% 已在原始前10之外
2026-07-20 RANGING 20 0.615 0.660 3.9% 已在原始前10之外
2026-07-21 RANGING 16 0.651 0.696 3.9% 已在原始前10之外
2026-07-22 RANGING 17 0.634 0.679 3.9% 已在原始前10之外
2026-07-23 RANGING 22 0.620 0.664 3.9% 已在原始前10之外
2026-07-24 RANGING 25 0.590 0.635 3.9% 已在原始前10之外
2026-07-27 RANGING 22 0.614 0.658 3.9% 已在原始前10之外
2026-07-28 RANGING 26 0.593 0.638 3.9% 已在原始前10之外
2026-07-29 RANGING 27 0.564 0.609 3.9% 已在原始前10之外

Case 2|因子分很高,但配额/惯性把它挡在门外

定义:当天原始排名 ≤10、但最终没进核心 10 只,且不是被分散化剔除(惯性 Top10 里也没有它)。全期 745 条记录、覆盖 135 天、51 个品种。

> 口径说明:「被挡」只归因到惯性这一层。这些新面孔里有一部分是同指数克隆,即使放开配额也可能被后续克隆去重/类别上限剔除,所以这里统计的是「惯性层挡住」的上限值。

被挡次数最多的品种:

品种 被挡天数 最高原始排名
------:-------::---:
纳指ETF(513390.SH) 65 #2
纳指ETF(513100.SH) 61 #2
标普500ETF(159612.SZ) 60 #2
纳斯达克ETF(513300.SH) 54 #1
标普ETF(159655.SZ) 54 #1
纳指科技ETF(159501.SZ) 51 #1
美国50ETF(513850.SH) 39 #3
标普500ETF(513650.SH) 31 #1
创业板综ETF(159908.SZ) 29 #3
美国50ETF(159577.SZ) 29 #3
纳指ETF(159941.SZ) 20 #2
国芯ETF(512760.SH) 18 #5

配额锁死的代表例(高分新面孔 vs 最弱在位者):

日期 新面孔 原始排名 原始分 被压到 最弱在位者 其原始排名/分 其惯性后分 其权重
--------------:---::---::---:-----------:---::---::---:
2026-10-21 纳指科技ETF(159501.SZ) #1 0.875 0.533 稀土ETF(516780.SH) #42 / 0.508 0.548 1.9%
2026-04-30 创业板50ETF(159949.SZ) #1 0.841 0.567 煤炭ETF(515220.SH) #41 / 0.537 0.582 0.0%
2026-09-28 标普500ETF(513650.SH) #1 0.831 0.571 消费50ETF(515650.SH) #28 / 0.546 0.586 3.7%
2026-09-14 标普ETF(159655.SZ) #1 0.821 0.553 标普500ETF(513650.SH) #4 / 0.804 0.553 10.0%
2026-09-15 标普500ETF(513500.SH) #1 0.821 0.565 证券ETF(512880.SH) #33 / 0.535 0.580 1.8%
2026-09-23 标普油气ETF(159518.SZ) #1 0.804 0.583 游戏ETF(159869.SZ) #34 / 0.553 0.598 0.0%
2026-06-18 纳斯达克ETF(513300.SH) #1 0.793 0.633 标普生物科技ETF(159502.SZ) #23 / 0.618 0.648 0.0%

被惯性加分挤出的代表例(配额还有余额):

日期 新面孔 原始排名 原始分 被压到 备注
--------------:---::---::---:------
2026-10-22 纳指ETF(159941.SZ) #2 0.854 0.590 窗口已用 2/3,仍被在位加分顶掉
2026-10-23 纳指ETF(159941.SZ) #3 0.850 0.618 窗口已用 1/3,仍被在位加分顶掉
2026-10-22 纳指ETF(513100.SH) #3 0.849 0.590 窗口已用 2/3,仍被在位加分顶掉
2026-07-13 纳指科技ETF(159501.SZ) #3 0.833 0.618 窗口已用 2/3,仍被在位加分顶掉
2026-10-22 纳斯达克ETF(513300.SH) #4 0.831 0.590 窗口已用 2/3,仍被在位加分顶掉
2026-10-23 纳斯达克ETF(513300.SH) #4 0.831 0.618 窗口已用 1/3,仍被在位加分顶掉

最弱在位者的五因子明细(为什么它还能留在组合里):

日期 最弱在位者 动量 夏普 反追高 稳定性 估值锚 权重
-----------------:---::---::---::---::---::---:
2026-10-21 稀土ETF(516780.SH) 0.22 0.43 0.51 0.31 0.96 1.9%
2026-04-30 煤炭ETF(515220.SH) 0.88 0.95 0.12 0.95 0.14 0.0%
2026-09-28 消费50ETF(515650.SH) 0.50 0.75 0.36 0.74 0.51 3.7%
2026-09-14 标普500ETF(513650.SH) 0.97 0.89 0.27 0.88 0.13 10.0%
2026-09-15 证券ETF(512880.SH) 0.28 0.34 0.99 0.28 0.73 1.8%
2026-09-23 游戏ETF(159869.SZ) 0.25 0.41 0.93 0.26 0.85 0.0%
2026-06-18 标普生物科技ETF(159502.SZ) 0.67 0.63 0.30 0.63 0.23 0.0%

> 被挡的新面孔没有落库的因子明细(_get_factor_detail 只覆盖最终排名表里的 13~18 只),所以这里只能列出「谁守住了位置、靠的是哪几个因子」这一侧。

Case 3|硬退出(分数 <0.20 强制出局)

0 例。原因:能留在核心的品种,当天综合分都 ≥0.20;真正掉队的品种在原始排名层面就已被挤出前 10,轮不到硬退出阈值出手。这条规则是「兜底」,本区间没被触发。

Case 4|惯性选出 Top10 ≠ 最终实际持仓(后续过滤环节二次改写)

有 135/135 天,惯性层给出的 Top10 与 _compute_portfolio_weights 输出的实际持仓不完全相同(这是结构性的:国债固定位/补位总会插进来);其中 70/135 天连「核心名单 10 只」都不一样。

类型 品种数 含义
------:---:------
惯性 Top10 → 最终一分钱没投(权重 0) 50 被分散化/区域 CAP/相关性闸门剔除,或留在名单里但仓位被挤成 0
惯性 Top10 → 仍有仓位但不在核心 10 只名单里 1 被挪到候选名额之外,但仍分到仓位
最终实际持仓但不在惯性 Top10 39 国债固定对冲位 / _ensure_min 补位 / QDII 保底塞进来的

惯性 Top10 里最终 0 仓位最多的品种:

品种 天数 最近一次
------:---::---:
创业板ETF(159915.SZ) 69 2026-07-17
创业板50ETF(159949.SZ) 52 2026-07-21
人工智能ETF(159819.SZ) 50 2026-07-28
游戏ETF(159869.SZ) 30 2026-10-23
传媒ETF(159805.SZ) 26 2026-10-23
机器人ETF(562500.SH) 25 2026-07-06
芯片ETF(159995.SZ) 16 2026-06-16
纳指科技ETF(159501.SZ) 16 2026-10-23
生物医药ETF(512290.SH) 16 2026-08-12
纳斯达克ETF(513300.SH) 15 2026-10-16

仍有仓位但被挪出核心名单的品种:

品种 天数 最近一次
------:---::---:
十年国债ETF(511260.SH) 1 2026-04-08

非惯性进入核心(补位/保底)的品种:

品种 天数
------:---:
十年国债ETF(511260.SH) 134
30年国债ETF(511090.SH) 119
豆粕ETF(159985.SZ) 56
恒生科技ETF(513180.SH) 46
中概互联ETF(513050.SH) 16
黄金ETF(518880.SH) 15
煤炭ETF(515220.SH) 12
黄金ETF(159937.SZ) 11
香港证券ETF(513090.SH) 8
港股通科技ETF(159636.SZ) 6

Case 5|熊市停用惯性(本区间未触发)

本区间 regime 全是 MILD_BULL 73 天、RANGING 62 天,BEAR/SEVERE_BEAR 共 0 天,所以「熊市整体停用惯性」这条分支没有被验证到。真要验证得挑 2021-2023 或 2024 年初的区间单独回放。

6. 结论与建议

6.1 策略本身:符合你的记忆,但有三点要说清

6.2 ⚠️ 发现的链路隐患:生产环境惯性状态每天被清空

代码路径(已逐行核对):

结果:下一次选品时 prev_set 为空 → 没有在位加分、recent_new_entries 为空 → 3 只配额永远满血,惯性层等于完全失效,实盘每天仍是「原始排名直出」。

实盘证据(adata/db/.holding_inertia.json,2026-10-24 17:03 写入):

{"last_top_codes": ["159501.SZ", "513100.SH", ...], "last_date": "2026-10-23",
 "streaks": {"159501.SZ": 1, "513100.SH": 1, ... 全部为 1},
 "recent_new_entries": []}

10 只在位品种的 streaks 全部等于 1、recent_new_entries 为空 —— 只有「历史被清空后重新建仓」才会出现这种状态。如果惯性正常生效,连板品种的 streak 应该是 2、3、5…

建议修法(最小改动):把惯性历史像 regime 快照一样做「备份 → 回测 → 恢复」,或者干脆让回测使用独立的临时历史文件。需要我直接改就说一声(改完会在隔离回放里验证 streak 能连续增长)。

6.3 其他观察

7. 复现方式

# 1) 隔离回放(约 2 分钟,135 个交易日)
env -u PYTHONHOME PYTHONPATH=/Users/aohan/PycharmProjects/adata \
  .venv/bin/python /tmp/sim_inertia.py --days 135 --warmup 20 --tag full3
# 2) 生成本报告
env -u PYTHONHOME PYTHONPATH=/Users/aohan/PycharmProjects/adata \
  .venv/bin/python /tmp/sim_report.py

> 回放状态文件:/tmp/sim_inertia/inertia.json、regime_state.json;原始数据:replay_full3.json。

▶ 📜 变更历史(0 次提交)

暂无 Git 提交记录(文件未被跟踪或刚创建)
🍃quant 知识库
by 伊甸园和枫

🔊 播放设置

勾选音源后调节配比,总和自动归一化
已选 0 个 · 合计:0%
合成中...
00:00/00:00
1.0x

分享图片

生成中...