📋 期货AI基金经理 · 工作日报 (交易日 2026-10-14_TL国债复刻与WF复核) ⏭ 跳到最新(2026-11-12)
# TL(30年国债) G1/G2 复核:**❌ 不成立,且原因可定位为成本**(2026-10-14)
> 为什么做:zadj 停用后,**TL(G1/G2) 是账户60 唯一还在跑的策略**,而它**从未做过样本外检验**
> (`pnl_attrib`:80 笔、胜率 38%、盈亏比 1.31、能力 **−7,080**)。
> 脚本 `verify_tl_wf.py`;数据 TqSdk `KQ.m@CFFEX.TL` 5m(8964 根,2026-01-19~10-14,过数据闸门:死柱 0%、528 时段段全完整)。
## 一、复刻口径(据 strategy_tl.py 规格)
- 信号:5m BB20±2σ(剔除成形 bar),价触下轨→多、触上轨→空;成交价 = 轨值 ±1 tick
- 禁开:10:00 前 / 14:30 后;15:10 后强平不过夜;亏损离场后该组冷却 30 分钟
- G1:固定止盈 ±0.10 + 浮盈≥0.08 后回撤到 ≤0.01 止盈;G2:无固定止盈,浮盈峰值回撤 0.08 平
- 硬止损 ±0.10(=1000元/手);成本 = 双边手续费 6 元 + 2 tick 滑点 200 元 = **206 元/往返**
- **bar 内路径未知**:同时跑「先判止损(保守)」与「先判止盈(乐观)」两种顺序 —— 本数据下两者**结果完全相同**(bar 振幅中位 0.050 很少同时覆盖两侧档位),故结论不受该假设影响。
## 二、结果
| | 笔数 | 净利 | 胜率 | 夏普 | WF 折正 | 样本外 | Deflated Sharpe(32次) |
|---|---|---|---|---|---|---|---|
| **G1**(固定+回撤止盈) | 332 | **−47,902** | 50% | **−3.31** | **1/5** | 221笔 −42,443 | ❌不显著 |
| **G2**(移动止盈) | 265 | **−18,437** | 47% | −1.08 | **1/5** | 227笔 −40,931 | ❌不显著 |
**参数平面**(BB窗口×σ倍数,8 组)**两组全部为负**:G1 −34,247 ~ −133,321;G2 −8,193 ~ −45,794。
→ 不是"孤立尖峰选错参数",是**整片区域为负** ⇒ 与参数无关。
## 三、根因:毛利盖不住成本
| 项 | G1 每股 |
|---|---|
| 净利 / 笔 | **−144 元** |
| 单笔毛利(净利+成本) | **+62 元** |
| 单笔成本 | **−206 元** |
| 目标幅度 | +1000 元(0.10 元) |
**毛利只有成本的 30%**:止盈幅度 1000 元看似是 206 元成本的 4.9 倍,但 50% 胜率 + 对称 ±0.10
使**毛利期望≈0**(实测 +62 来自回撤止盈那点小优势),成本立刻把它吃掉。
→ 这正是 skill 里的**换手成本校验**:高换手信号加成本后归零。
**成本假设已用实盘校准**(关键,避免"估成本"):
逐笔比对 80 笔 G1/G2 开仓成交价 vs 当时的 BB 轨值 ——
不利滑点 **中位 +0.011/+0.014 元(≈1.1~1.4 tick)、均值 +0.007/+0.009 元(≈0.7~0.9 tick)**,不利占比 80~87%。
即回测假设的 **1 tick/边是真实甚至略保守**的,结论不因成本乐观而失真。
## 四、与实盘对撞(量级一致)
- 实盘 G1 82 笔 / G2 78 笔成交(09-10~10-14,约 5 周)≈ 每组 35~41 个往返/月,
与复刻的 **332/9个月 ≈ 37/月** 一致(频率吻合)。
- 实盘 TL 台能力 **−7,080**(80 笔配对);复刻 G1 约 **−5,300/月** → 同期量级吻合。
- ⇒ **复刻可信**,不是"回测写错了"。
## 五、结论(三态)
| 命题 | 结论 |
|---|---|
| TL G1 有样本外边际 | **❌ 证伪**:9个月 −47,902(夏普 −3.31)、WF 折正 1/5、参数平面全负 |
| TL G2 有样本外边际 | **❌ 证伪**:−18,437、WF 折正 1/5、参数平面全负 |
| 改参数能救 | **❌ 不成立**:8 组参数(窗口 15~30 × σ1.5~2.5)全负 |
| 亏损是否只是成本假设过严 | **❌ 不是**:实盘滑点实测 ≈0.7~1.1 tick ≈ 回测假设 |
| 实盘能否更好成交来救 | **⚠️ 唯一未排除项**:若把市价单改成**挂在下轨的限价单**,双边滑点理论上可降到 ~0~1 tick。
但即使滑点归零(省 200 元/往返),G1 的 −47,902 会变成 **+18,498**(332笔),夏普仍仅约 +1,且**未做样本外检验**
→ 需要单独回测"限价成交假设",不能直接上。 |
**→ 建议:停用 TL(G1/G2)**(理由同 zadj:样本外不成立;且它是账户60 最后一根支柱,必须同样诚实对待)。
唯一可能的复活路径:**限价挂轨**(省滑点)+ 重新做样本外验证。
## 六、待办
- [ ] **停用 TL**(`suspended_strategies.json` 加 `tq-strategy-tl`;注意国债在账户60,与 zadj 同账户)→ 需用户拍板
- [ ] 若要复活:先回测"限价挂在下轨/上轨"的成交假设(能否成交、成交概率、未成交时的机会成本),再重跑 WF
- [ ] 复刻脚本的另一处精度限制:5m 数据下 bar 内路径靠极值推断;若有 1m 数据可把"成交价"与"先触哪一侧"标定得更准(本次两种顺序同结果,影响已可忽略)