↓
  1. 技术文章/

量化策略 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 修复符号 bug53.2%+0.84%
D B + ATR 止损76.7%+2.62%

单这一项,胜率 +23.5 个点。

3. 大盘过滤:接飞刀问题的第一版 #

沪深300 < MA20 定义为熊市,熊市禁新开仓。回测有效(股灾月 -94% → -2.7%),先上了。但这里埋了个伏笔,见第三阶段。


第二阶段:探索更好的出场方式 #

在 E 方案(MA20 过滤 + ATR 止损)基础上测了 4 个变体:

变体交易数胜率单笔期望累计
E 基准11377.0%+2.78%+314%
G 分批止盈 (3%/6%/跟踪)13845.7%+0.35%❌ +48%
H 移动止损 (高点-2ATR)10850.0%+2.79%+302%
I 低门槛 2 分48568.9%+1.82%✅ +881%
J 趋势回调11968.9%+1.66%+198%

两个反直觉发现:

  1. 网红打法没有用:移动止损(让利润奔跑)在 A 股超短周期期望持平但胜率掉 27 个点,心理体验还差。
  2. 分批止盈是收益杀手:小步落袋过早掐断利润,期望从 +2.78% 掉到 +0.35%。虽然它是主盘的既定纪律(不擅动),但数据摆在这里。

I 变体做了稳健性检验:18 只池内股全部正期望(0 只负期望,单票期望 +0.30%~+4.04%),排除了过拟合。


第三阶段:近 30 天切片测试抓出的真问题 #

用户问了一句关键的话:“用近一个月的测试过吗?”

之前没单独切过。切片结果(2026-08-25 ~ 09-26,23 个交易日 100% 空头市):

版本交易胜率近30天累计
旧 bug 策略2763.0%+17.9%
一刀切禁仓版0—0%(全程空仓)
熊市分级版1788.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 个月交易胜率累计
一刀切禁仓45170.7%+932%
熊市 3 分级61373.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 自动运行。回滚条件(任一触发):

  1. 观察期真实胜率 < 50%
  2. 单笔亏损 > -8% 出现 3 次(ATR 止损失效信号)
  3. 熊市分级信号连续 5 笔全亏

必须泼的冷水 #

  1. 回测含理想成交假设:+6% 止盈默认精确成交,涨跌停/流动性会打折
  2. 近 30 天 +78.6% 来自 V 型反弹市,单边阴跌月(历史最差 -67%)仍可能出现
  3. 模拟盘才是终极裁判,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。