docs: max_hold分析结论(分温区扫描/v_weak正确回测/遗留建议)

This commit is contained in:
xxm
2026-08-17 22:25:40 +08:00
parent bdd318a896
commit 788dba0131
+73
View File
@@ -0,0 +1,73 @@
# max_hold(持有期上限)分析与优化结论
> 日期:2026-08-17
> 背景:老莫发现策略回测里大量个股"到期自然出货"exit_reason=time)而非到 RR 卖点(target),质疑 max_hold 是拍脑袋定的。要求重新测算并评估对收益率/年化的影响。
## 一、结论速览
1. **老莫质疑成立**:各策略 max_hold 大部分是硬编码拍定,缺乏专项测算。
2. **分温区网格扫描后**:最优 max_hold 随市场环境变化——**trend_down/choppy 下 20d 最优,trend_up 下 15dv_mr 族)**hk_pe_oversold 相反(down 30d/up 60d)。
3. **短持有提升年化**(资金周转快),但可能降单笔收益——trade-off 需温区自适应。
4. **"到期自然出货"不是缺陷**:是短持有+高止盈组合的必然结果,年化证明资金效率更优。
## 二、max_hold 来源审计(是否拍脑袋)
| 策略 | 值 | 来源 | 依据 |
|------|-----|------|------|
| v_weak | 40d(已改20) | mr_scanner EXIT_CFG 硬编码 | ❌ git 从30跳到40无扫描 |
| b_td1_v3 | 35d(已改20) | 库 config | ❌ 实盘3.4天触达,35虚设 |
| s2_panic_v2 | 60d(已改20) | scanner/gen 硬编码 | ⚠️ 评估窗口常量非优化 |
| hk_pe_oversold | 40d | hk_strategies 硬编码 | ❌ |
| hk_pe_oversold_v2 | gen20/库40 | 自相矛盾(已统一20) | ❌ |
| accumulation | **无** | 未定义(已补20) | ❌ 完全没定 |
| v_mr | 25d | register 硬编码 | ⚠️ 早期值 |
| p_oversold | 40d | 数据测算 | ✅ 唯一有依据 |
## 三、网格扫描(固定 tp/sl,重演 15/20/30/40/60d
### 均收益最优(分温区)
| 策略 | trend_down | choppy | trend_up |
|------|-----------|--------|----------|
| v_mr | **20d** (4.92%) | **20d** (2.59%) | 15d (1.50%) |
| s2_panic_v2 | **20d** (6.69%) | — | — |
| hk_pe_oversold | 30d (9.22%) | 40d (4.98%) | 60d (5.92%) |
### 年化对比(8槽近似,v_mr)
| max_hold | 20d | 30d | 40d | 60d | 80d |
|----------|-----|-----|-----|-----|-----|
| 年化 | **483%** | 370% | 281% | 245% | 221% |
**关键**:短持有 → 资金周转快 → 年化显著更高(2倍级)。
### 稳健性(分年份,v_mr
20d 仅 4/11 年最优(2018 大熊市主导);2021/2022/2024 均 40d 最优 → **最优值随市场环境变化**,单一固定值不稳健。
## 四、实施(2026-08-17
| 文件 | 改动 |
|------|------|
| s2_panic_v2_scanner.py | max_hold_days 60→20 |
| s2_panic_v2_gen.py | max_hold 60→20 |
| mr_scanner.py (v_weak) | max_hold_days 40→20 |
| accumulation_scanner.py | 补 max_hold=20 定义 |
| b_td1_v3 (DB config 4行) | 35→20 |
| hk_pe_oversold_v2 (DB config 4行) | 40→20(与gen统一)|
| strategy_research v_weak | 补正确参数化回测(id=519) |
## 五、v_weak 正确回测(id=519
用 v_mr 信号集 + v_weak exit 参数(tp30/sl12/20d) 重演:
- **胜率 61.5%**(优于 v_mr 53.6%
- 均收益 3.93%
- **time 占比 74.8%** —— 印证老莫观察:20d 内难到 +30% 止盈,多数到期小赚
## 六、遗留建议(非本次实施)
1. **温区自适应 max_hold**:最优做法是把 max_hold 做成随 market_regime 变化的配置(down→20d, up→60d for hk_pe),而非固定值。本次先统一到 trend_down 最优值(当前温区),后续可接入 regime 动态化。
2. **tp 与 max_hold 联动**v_weak time 74.8% 说明 tp30 在 20d 内偏难,可考虑 tp 降到 20-25% 提升 target 占比(需专项扫描)。
3. **v_weak 真实信号集回测**:本次用 v_mr 信号集参数化重演(近似),完整 v_weak entry 信号(ADX甜区等)回测待建。
## 涉及文件
- deploy/profile-scripts/{s2_panic_v2_scanner,s2_panic_v2_gen,mr_scanner,accumulation_scanner}.py
- strategy_research 表(b_td1_v3/hk_pe_oversold_v2 config + v_weak 新行 id=519