量化策略 v3 上线:从回测到分级门槛的完整迭代记录
一句话结论 #
用三阶段回测(18 只池内股 × 2025-01~2026-09,baostock 前复权)把模拟盘的负期望体系(胜率 30%、每笔期望 -474 元)改造成了正期望体系:全期 +1384%、近 30 天切片胜率 88.2%、单笔期望 +4.62%。本文记录完整的迭代过程、数据依据和踩坑,2026-09-28 起进入实盘模拟观察期。
起点:一个负期望系统 #
主模拟盘 2026-07-08 ~ 09-22 的 63 笔真实成交:
| 指标 | 数值 | 含义 |
|---|---|---|
| 净值 | 0.860 (-14%) | 稳定亏钱 |
| 胜率 | 30% | 10 笔只赢 3 笔 |
| 盈亏比 | 1.13 | 赢的时候赚太少 |
| 每笔期望 | -474 元 | 交易越多亏越多 |
数学上很简单:30% 胜率要保本,盈亏比得 ≥ 2.4,实际只有 1.13。这不是运气差,是结构性负期望,微调参数救不了,必须动结构。
第一阶段:找 bug + 三项核心修复 #
1. 符号 bug:抄底策略实际在追高 #
最有意思的发现。超跌反弹策略里 drop_5d 定义为"下跌为正",但判断写的是:
if drop_5d < -0.08: # 实际要求"上涨 8%"才加分!
也就是说这个策略从来没抄过底,一直在追高。修复后信号方向才真正对齐"超跌反弹"。
2. 止损:固定比例 → 2×ATR14 #
原固定 -3% 止损小于个股日波动率(3~4%),纯被噪音打掉。改为 入场价 − 2×ATR14,兜底不宽于 -8%:
| 变体 | 胜率 | 单笔期望 |
|---|---|---|
| B 修复符号 bug | 53.2% | +0.84% |
| D B + ATR 止损 | 76.7% | +2.62% |
单这一项,胜率 +23.5 个点。
3. 大盘过滤:接飞刀问题的第一版 #
沪深300 < MA20 定义为熊市,熊市禁新开仓。回测有效(股灾月 -94% → -2.7%),先上了。但这里埋了个伏笔,见第三阶段。
第二阶段:探索更好的出场方式 #
在 E 方案(MA20 过滤 + ATR 止损)基础上测了 4 个变体:
| 变体 | 交易数 | 胜率 | 单笔期望 | 累计 |
|---|---|---|---|---|
| E 基准 | 113 | 77.0% | +2.78% | +314% |
| G 分批止盈 (3%/6%/跟踪) | 138 | 45.7% | +0.35% | ❌ +48% |
| H 移动止损 (高点-2ATR) | 108 | 50.0% | +2.79% | +302% |
| I 低门槛 2 分 | 485 | 68.9% | +1.82% | ✅ +881% |
| J 趋势回调 | 119 | 68.9% | +1.66% | +198% |
两个反直觉发现:
- 网红打法没有用:移动止损(让利润奔跑)在 A 股超短周期期望持平但胜率掉 27 个点,心理体验还差。
- 分批止盈是收益杀手:小步落袋过早掐断利润,期望从 +2.78% 掉到 +0.35%。虽然它是主盘的既定纪律(不擅动),但数据摆在这里。
I 变体做了稳健性检验:18 只池内股全部正期望(0 只负期望,单票期望 +0.30%~+4.04%),排除了过拟合。
第三阶段:近 30 天切片测试抓出的真问题 #
用户问了一句关键的话:“用近一个月的测试过吗?”
之前没单独切过。切片结果(2026-08-25 ~ 09-26,23 个交易日 100% 空头市):
| 版本 | 交易 | 胜率 | 近30天累计 |
|---|---|---|---|
| 旧 bug 策略 | 27 | 63.0% | +17.9% |
| 一刀切禁仓版 | 0 | — | 0%(全程空仓) |
| 熊市分级版 | 17 | 88.2% | +78.6% |
逐月拆解一刀切禁仓过滤器:
- ✅ 救过场:2026-07 股灾月,无过滤 -94.3% vs 有过滤 -2.7%
- ❌ 错过更多:2025-04(-50%)、2025-11(-83%)、2026-08(-50%)、2026-09(-53%) — 指数阴跌时高质量超跌反弹照样赚钱
- 全期总账:一刀切 +932% 居然跑输无过滤的 +1153%
解法:分级门槛 #
熊市不一刀切禁仓,而是提高信号门槛:牛市 ≥2 分开仓,熊市 ≥3 分(深跌+RSI超卖等更强确认):
| 全期 20 个月 | 交易 | 胜率 | 累计 |
|---|---|---|---|
| 一刀切禁仓 | 451 | 70.7% | +932% |
| 熊市 3 分级 | 613 | 73.1% | +1384% |
股灾月 +106%(旧版 -2.7%)、近 30 天 +78.6%、全期 +1384%,三个维度全面胜出。
当前生效规则 #
信号评分: 3日跌5%(+2) 5日跌8%(+2) RSI7<30(+2)/<40(+1) 放量止跌(+2)
门槛: 牛市/中性 ≥2分 | 熊市(沪深300<MA20) ≥3分
止损: 入场价 − 2×ATR14 (兜底 -8%)
止盈: +6%
加仓: 金字塔, atr_width 锁定宽度随摊薄成本上移
周期: 1~10 天, 超时收盘离场
主盘保留熊市一刀切禁仓 + 分步止盈(仓位重、风控从严,刻意保留)。
实盘观察期与回滚条件 #
2026-09-28 起,每天 15:10 自动运行。回滚条件(任一触发):
- 观察期真实胜率 < 50%
- 单笔亏损 > -8% 出现 3 次(ATR 止损失效信号)
- 熊市分级信号连续 5 笔全亏
必须泼的冷水 #
- 回测含理想成交假设:+6% 止盈默认精确成交,涨跌停/流动性会打折
- 近 30 天 +78.6% 来自 V 型反弹市,单边阴跌月(历史最差 -67%)仍可能出现
- 模拟盘才是终极裁判,4 周后用真实账本数据再回答"到底行不行"
复现脚本:backtest/run_backtest.py(阶段1)/ run_backtest_phase2.py(阶段2)/ run_bear_tier.py(阶段3)/ run_recent_check.py(近30天切片)。内部完整记录见 docs/策略迭代/策略迭代记录_v3_分级门槛上线_20260927.md。