docs: max_hold分析结论(分温区扫描/v_weak正确回测/遗留建议)
This commit is contained in:
@@ -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 下 15d(v_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)
|
||||
Reference in New Issue
Block a user