---
name: hectorlee-momentum-position-advisor
slug: hectorlee-momentum-position-advisor
version: 1.3.8
displayName: 动量持仓顾问
description: 动量持仓顾问 V1.3.8。纯量价动量评估，判断持仓该继续持有、减仓还是卖出。8持有+6预警+4卖出+4加仓+3反弹形态（含M12V形反转+M13双底+M0横盘兜底）。新增决策滞回防震荡+减仓比例建议+资金流向维度+市场自适应+今日放量反弹覆盖+M10反弹阳线豁免+B2回踩判定修复。108分制评分。
agent_created: true
---

# 动量持仓顾问 V1.4.0

## 概述

纯量价动量评估系统 + 逻辑覆盖层，回答两个核心问题：
1. **「从量价动量角度看，这只股票现在该持有、减仓还是卖出？」**（量价引擎）
2. **「这个卖出信号该不该执行？」**（V1.4.0 逻辑覆盖层：逻辑证伪/量价破坏分级/资金承接/事件日历四层裁决）

设计哲学：**模型告诉你"哪里疼"，覆盖层判断"要不要截肢"**。外生冲击（宏观事件/板块情绪）造成的趋势型破位，在基本面逻辑完好时不应机械执行卖出；反之，结构性走弱（20日无修复）的票即使有单日反弹也不可豁免。

与 [volume-price-screener](../volume-price-screener/SKILL.md) 互补：
- volume-price-screener：捕捉"放量→缩量→横盘→突破"的**收敛蓄力**形态
- 本 skill：捕捉"动量持续→衰竭识别"的**趋势跟踪**信号

### 设计理念

**默认不轻易卖**。6种持有形态覆盖拉升途中的各种调整（缩量回踩/旗形整理/阶梯横盘），只有出现明确的衰竭/破位证据时才发出减仓/卖出信号。

---

## 8+6+4+4+3 种形态（持有/预警/卖出/加仓/反弹）

### 🟢 持有类（8种 + M0兜底）

| # | 形态 | 标签 | 强度 | 描述 |
|:--|:-----|:----:|:----:|:-----|
| M1 | 底部启动加速 | 🚀 | ★★★★★ | 长期低量→放量阳线+突破MA20，双路径（3连阳递增/5日4阳温和反转） |
| M2 | 均线多头发散 | 📈 | ★★★★☆ | MA5>MA10>MA20>MA60，量能温和放大，沿MA5上行 |
| M3 | 趋势中继加速 | 🔥 | ★★★★☆ | 上升通道中，短暂回调不破MA10后再次放量阳线 |
| M4 | 缩量回踩支撑 | 🎯 | ★★★☆☆ | 拉升后缩量回踩MA20/MA60，触及即反弹收阳 |
| M5 | 上升旗形整理 | 🏴 | ★★★☆☆ | 拉升后斜向下收敛震荡，缩量，整理幅度<拉升1/2 |
| M6 | 阶梯横盘蓄力 | 🪜 | ★★☆☆☆ | 拉升后窄幅横盘（普通股<12%，科创板688<15%），缩量，≥60%收盘在上半部 |
| M12 | V形反转 | ⚡ | ★★★☆☆ | 近15日回撤>15%后3日内收复>50%，反弹放量，站上MA20（V1.3.5新增） |
| M13 | 双底反转 | 🔄 | ★★★★☆ | 两低点不破前低(<3%)+放量突破颈线（V1.3.5新增） |
| **M0** | **横盘整理通用** 🪜 | ★★ | **V1.3.2新增**：站上MA10+MA20+VP确认时兜底，给8/15分 |

### 🟡 预警/减仓类（5种 + 1种前置预警）

| # | 信号 | 触发条件 | 含义 |
|:--|:-----|:-----|:-----|
| M7 | 高位搏杀 | 累计涨幅>30% + 爆量/涨停 + 换手>20% + 量能峰值后衰减 | 鱼尾行情 |
| W1 | 涨幅过热 | 20日涨幅>20%，或10日涨幅>15% | 风险累积 |
| W2 | 乖离过大 | 收盘价偏离MA20>15% | 均值回归压力 |
| W3 | 上影频现 | 近5日中≥3日上影线>3% | 抛压增大 |
| W4 | 量能背离 | 价格新高但近5日均量<前5日80% | 动能衰竭 |
| **Pre-M11** | **预破位预警** ⚠️ | 距MA20<3%+量缩至85%+3日2阴+MA20斜率趋平 | **V1.2新增：提前1-3天预警** |

### 🟢 加仓类（4种）— V1.2 新增

| # | 信号 | 触发条件 | 强度 |
|:--|:-----|:-----|:--:|
| B1 | 反包阳线 🔄 | 前日阴线 + 当日阳线实体吞没前日实体 + 放量>1.2x | ★★★ |
| B2 | 回踩确认 🎯 | 回踩MA20/MA60不破缩量 + 当日放量阳线反弹 | ★★★★ |
| B3 | 整理突破 🚩 | M5/M6整理末端 + 放量突破上轨 | ★★★★★ |
| B4 | 缩尽首阳 🌅 | 连续3日+缩量阴线后放量阳线(量>1.5x + 涨>2%) | ★★ |

**前置条件**：动量健康度 ≥ 60（非卖出区间） + 至少命中一种加仓形态  
**评级**：⭐⭐⭐ 强烈建议(8分) | ⭐⭐ 建议(5分) | ⭐ 轻仓试探(3分)  
**VP共振**：VP≥80 升级 | VP≥60 +2分 | VP背离 否决加仓

### 🎲 反弹博弈类（3种）— V1.2 新增（仅卖出区间触发）

| # | 信号 | 触发条件 | 强度 | 策略 |
|:--|:-----|:-----|:--:|:-----|
| R1 | 恐慌抛售反弹 🩸 | 回撤>20% + 量>2x + 收阳 + 锤子线 | ★★★ | 恐慌盘出清，短线反弹确定性最高 |
| R2 | 缩量衰竭反弹 🌑 | 回撤>25% + 量<60%均值 + 跌速放缓 + 连阴≥4力量耗尽 | ★★ | 卖盘枯竭，买方试探 |
| R3 | 超跌均值回归 🎯 | 回撤>30% + 乖离>12% + 止跌信号 + 近3日有试探资金 | ★ | 极端超卖，统计规律驱动 |

**前置条件**：已触发 M10/M11 卖出信号  
**警告**：反弹博弈 ≠ 趋势反转，严格止损(入场价-5%)，目标 MA10

### 🔴 卖出类（4种）

| # | 信号 | 触发条件 | 数据支撑 |
|:--|:-----|:-----|:-----|
| M8 | 高开诱多 | 高开(开>昨收+2%)但收盘涨幅<1%，量>昨量70% | AI股D+1模式 |
| M9 | 缩量连阴 | 连续2日阴线 + 每日量<前5日均量70% | 55%顶部触发 |
| M10 | 峰值回撤 | 从近20日高点回撤>8%，近3日无反弹阳线 | D+2升级版 |
| M11 | 趋势破位 | 收盘跌破MA20且连续2日未收回 | 82%顶部确认 |

---

## 评分体系（108分制：基础五维100 + 加仓10 + 量价共振 + 成本±8 + 资金流向8）

| 维度 | 分值 | 核心因子 |
|:-----|:--:|:-----|
| 趋势强度 | 25 | MA多头排列+15，站上MA20+5；破MA20-10，破MA60分级（M1康复-5/双支撑-10/普通-15） |
| 量能健康度 | 20 | 温和放量+10，涨放量跌缩量+10；放量滞涨-8，量价背离-5 |
| 衰竭信号 | 25 | 无上影+10，回撤小+10，涨幅适中+5；W1~W4硬地板扣分，M1康复豁免 |
| 均线支撑 | 15 | MA10/20/60逐级支撑+5/级；无近端支撑0分 |
| 形态匹配 | 15 | M1~M3/M12~M13:12~15分，M4~M6:8~12分，M0:8分，卖出触发→0分 |
| **基础分小计** | **100** | 以上五维（`base_total`） |
| 加仓信号 | +10 | B1~B4触发+有VP确认加分，VP背离否决 |
| 量价共振 | -10~+12 | VP形态融合加成：强+12/标准+8/弱+3/背离-8 |
| 持仓成本 | ±8 | 盈≥30%→+8，盈≥15%→+5，亏≥10%→-8 |
| 资金流向 | +8 | 近5日主力净流入加分（可选，无数据0分不扣） |
| **满分** | **108** | 总分 clamp 到 [0,108] |

### 决策引擎（V1.3.5 重构：分数+质量+MA结构+信号覆盖+底部反弹+滞回+市场自适应）

```
分数      反弹     M1      MA结构     底部反弹    ≥4维     决策
───────────────────────────────────────────────────────────
<35      有       —        —          —         —        WATCH
<35      无       —        —          ✓          —        WATCH   底部反弹
<35      无       —        —          ✗          —        SELL
35~49    有       —        —          —         —        WATCH
35~49    无       —       多头        —         —        REDUCE  均线多头回调
35~49    无       —       双撑弱       —         —        WATCH   弱势整理
35~49    无       —       破位        —         —        SELL
50~64    有/是    ✓        —          —         —        WATCH   反弹/M1观察
50~64    无       否       —          —         ✓        REDUCE  偏持有观望
50~64    无       否       —          —         ✗        REDUCE  偏谨慎
65~74    —       是       —          —         衰竭✓    HOLD    M1康复
65~74    —       —       多头跌破      —         ✓        REDUCE  涨多回调
65~74    —       —       不破位        —         ✓        HOLD    质量升级
65~74    —       —        —          —         ✗        REDUCE  偏谨慎
≥75      —       —        —          —         —        HOLD    标准持有
```

- **MA结构**：多头=MA10>MA20>MA60；双撑弱=MA10/20双支撑但跌破MA60+无卖出信号；破位=其他
- **底部反弹**：回撤>20% + 收阳线 → 止跌信号，升级WATCH
- **质量置信度**：每个决策附带 N/7维健康 说明

---

## 使用方式

### 持仓批量诊断
```bash
cd scripts
python advisor.py --portfolio              # 读取 data/positions.json
python advisor.py --portfolio --detail     # 带五维评分明细
```

### 单股诊断
```bash
python advisor.py 300663 --cost 6.88              # 带成本价
python advisor.py 300663 600519 --detail          # 多股+明细
python advisor.py --search 科蓝 --cost 6.88       # 搜索后诊断
```

### 全市场动量扫描（选股模式）
```bash
python advisor.py --scan --top 20                 # 扫描动量形态Top20
python advisor.py --scan --top 20 --detail        # 带明细
```

### 参数覆盖
```bash
python advisor.py 300663 --params '{"vol_ratio_min":1.3,"ma_period":10}'
```

---

## 持仓文件格式

`data/positions.json`：
```json
{
  "positions": [
    {"code": "300663", "name": "科蓝软件", "cost": 6.88, "buy_date": "2026-07-15"},
    {"code": "600519", "name": "贵州茅台", "cost": 1800.00, "buy_date": "2026-06-01"}
  ]
}
```

---

## 输出示例

### 简洁模式（默认）
```
═══ 动量持仓顾问 V1.3.5 ═══
  🟢 贵州茅台(600519)  HOLD  82分  M2均线多头  VP:+A/78
  🟡 浪潮信息(000977)  REDUCE  58分  ⚠ 涨幅过热+乖离过大
  👁 万向钱潮(000559)  WATCH  52分  M1康复观察 3/7维健康
  👁 寒武纪(688256)  WATCH  40分  超跌反弹 R3:36分
  🟡 恒玄科技(688608)  REDUCE  35分  均线多头回调 1/7维健康
```

### 详细模式（--detail）
```
═══ 动量持仓顾问 ── 欣旺达(300207) ═══
Price: 18.65 | 成本: 17.50 | PnL: +6.6%
Trend: MA20+7d | peak4d ago -3.5%

Decision: HOLD  68/100pts (63(VP+5))
Primary: 无形态 ❓

趋势强度     ░░░░░░░░░░ 0/25   站上MA20
量能健康度    ██████████ 20/20  温和放量+涨放量跌缩量
衰竭信号     ██████████ 25/25  无上影+回撤小
均线支撑     ██████░░░░ 10/15  MA10/MA20双支撑
形态匹配     █████░░░░░  8/15  M0横盘整理+VP确认
加仓信号     ░░░░░░░░░░  0/10  无加仓信号
量价共振     ██████████ 10/10  标准横盘78.5分

Advice: HOLD 质量升级 4/7维健康
```

---

## 数据源

| 数据 | 来源 | 说明 |
|:-----|:-----|:-----|
| 日K线 | 腾讯 `ifzq.gtimg.cn`（前复权，90根） | 复用 volume-price-screener |
| 实时行情 | 腾讯 `qt.gtimg.cn` | 含换手率/名称/ST标记 |
| 全市场列表 | 东方财富 → 腾讯排行（备用） | 复用 volume-price-screener |

> 依赖：`pip install requests numpy`

---

## 脚本结构

```
scripts/
├── advisor.py            # 主入口：持仓诊断/单股诊断/全市场扫描（含板块共振）
├── momentum_detect.py    # 25种形态并行识别引擎（8持有M1~M6/M12/M13 + 4卖出M8~M11 + 6预警W1~W4/M7/Pre-M11 + 4加仓B1~B4 + 3反弹R1~R3）
├── momentum_scoring.py   # 五维评分引擎 + 成本因子 + 量价共振维度
├── cross_ref.py          # volume-price-screener 交叉引用与融合加成（V1.2强化）
├── sector_resonance.py   # **V1.2新增**：板块分类 + 共振检测 + 降级逻辑
├── risk_filter.py        # 风险前置过滤（ST/退市/一字板/连板）
└── portfolio.py          # 持仓文件读写 + 盈亏计算

data/
└── positions.json        # 默认持仓文件

references/
└── pattern_rules.md      # 形态规则与参数详解
```

---

## 与 volume-price-screener 融合

V1.1 起，持仓诊断会**自动融合 volume-price-screener 的量价收敛形态结果**进入评分体系：

### 融合规则（V1.2 加权强化）

| 量价收敛结果 | 动量决策 | 加成 | 逻辑 |
|:-----|:-----|:--:|:-----|
| 强形态(≥80分) | 持有 | **+12** | 共振：蓄力+动量双确认，最优信号 |
| 标准形态(≥60分) | 持有 | **+8** | 双重确认：蓄力确认+动量趋势 |
| 弱形态(<60分) | 持有 | **+3** | 略有加分 |
| 背离预警(出货嫌疑) | 任意 | **-8** | 强化卖出信号 |
| 强形态(≥60分) | 减仓 | **+5** | 回调蓄力中，减仓不急 |
| 强形态(≥60分) | 卖出 | **+5** | 关注假跌破可能 |
| 未命中 | 任意 | **0** | 纯动量驱动 |

### 输出体现

**简洁模式**：`VP:~C/57.0`（变体/分数）
**详细模式**：独立"量价共振"维度（0-10分）+ 底部摘要行

详见 `scripts/cross_ref.py`

---

## 设计依据

本 skill 的顶部识别逻辑基于 2026-08-02 对 14 只 AI 概念股 50 日 K 线的实证分析：

- 11 个确认顶部中，**82% 峰值日收阳线**（无预警）
- **D+1/D+2 高开低走 + 缩量连阴**是 55% 顶部的首现信号
- **跌破 MA20** 是 82% 顶部的最终确认
- 顶部前 20 日平均涨幅 **+24.2%**
- 顶部后 5 日平均跌幅 **-14.4%**

详见 `references/pattern_rules.md`（形态规则与参数详解）

---

## V1.4.0 逻辑覆盖层（2026-09-11）

### 背景

V1.3.8 实盘复盘（2026-09-11，18只热门科技股20日回溯）暴露的系统性问题：**外生冲击日（FOMC前/美股暴跌传导）M10/M11 趋势型卖出信号批量误触发**——11/18 只被判 SELL，但其中多数基本面逻辑完好、且出现低位承接信号。纯量价模型无法区分"杀估值"与"杀逻辑"。

### 新增：logic_overlay.py 四层裁决（在决策引擎之上，最终权威）

1. **逻辑证伪检验**：`data/fundamentals.json` 配置每只票的 `logic: intact|weak|broken` + `note` + `support`（纪律位）+ `valid_until`（过期自动失效）
2. **量价破坏分级**：区分趋势型信号（M10/M11，可豁免）与形态型信号（M8/M9，不轻易豁免）
3. **资金承接检验**：`detect_absorption_day()` — 下影线≥2% + 收盘位于振幅上半部 + 量比≥1.2x = 低位承接日
4. **事件日历检验**：`data/events.json` 配置事件窗口（如 FOMC 前N日），窗口内外生冲击类卖出可逆性高

### 三条核心规则

| 规则 | 触发 | 动作 |
|---|---|---|
| **A 逻辑完好豁免** | SELL(仅M10/M11) + logic=intact + (承接日\|底部反弹\|事件窗口) | SELL → WATCH，标注纪律位 |
| **B 结构性走弱升级** | 20日无任何≥2%修复阳线 + logic≠intact | REDUCE/WATCH → SELL（"恒玄模式"：无修复日的票没有恐慌日背景，是病灶） |
| **C 逻辑破坏加速** | logic=broken | HOLD → REDUCE |

配置缺失/过期时自动退回纯量价决策，不影响主流程；覆盖层异常打印 stderr 并降级。

### 实战验证（2026-09-11，18只热门科技股）

- V1.3.8：1 HOLD / 5 REDUCE / 1 WATCH / **11 SELL**（FOMC+美股存储暴跌双重外生冲击日）
- V1.4.0：1 HOLD / 5 REDUCE / **8 WATCH** / 4 SELL
- 7只M11/M10型SELL被豁免（寒武纪/中芯/澜起/兆易/北方华创/拓荆/长川），其中兆易/北方华创/拓荆由承接日信号独立确认
- 恒玄（20日无修复+逻辑weak）、立讯（逻辑weak）、德明利（逻辑weak）、天孚（M8形态型+weak）维持SELL——与人工四层框架判断一致

### 配置文件格式

`data/fundamentals.json`:
```json
{
  "688981": {"logic": "intact", "note": "Q3指引+产能满载", "support": [115.8, 113], "valid_until": "2026-09-30"},
  "688608": {"logic": "weak", "note": "20日无修复，结构性走弱", "support": []}
}
```

`data/events.json`:
```json
[
  {"date": "2026-09-16", "name": "美联储FOMC决议", "window": 3}
]
```

`window` = 事件日前 N 天内视为事件窗口。建议在每次重大宏观事件后更新此文件与 fundamentals.json。

---

## 注意事项

- **不构成投资建议**。本 skill 仅从纯量价动量角度提供参考信号，不替代基本面判断
- 形态识别为纯量价信号，需结合板��轮动、消息面、资金面综合决策
- 卖出信号触发后，实际执行时机和比例由用户自行判断
- 历史顶部模式不能保证未来完全重复，但统计共性具有较强的参考价值

---

## V1.2 更新日志 (2026-08-03)

### 新增功能

1. **Pre-M11 预破位预警**：在 M11 趋势破位正式确认前 1-3 日发出预警。触发条件：价格距 MA20 < 3% + 缩量至 85% + 3 日 2 阴 + MA20 斜率趋平。严重度评分(0-100)，≥50 分为高危。

2. **板块共振降级**：批量诊断后，若同板块 ≥2 只触发 SELL，自动将该板块内 HOLD/REDUCE 标的降 10 分。支持精确代码映射 + 名称关键词匹配 + 代码前缀推断三级分类。

3. **VP 共振加权强化**：加成幅度全面提高——强形态 +8→+12，标准 +5→+8，关注 +2→+3，减仓/卖出场景 +3→+5，背离惩罚 -5→-8。

4. **持仓成本融合**：根据盈亏幅度调整决策紧迫度。大盈(≥30%)+8 分（利润缓冲，可从缓），大亏(≤-10%)-8 分（止损优先）。

5. **反弹博弈判断（R1-R3）**：仅在 M10/M11 卖出信号触发后检测，识别潜在的短线技术反弹机会。R1 恐慌抛售反弹(最强)、R2 缩量衰竭反弹(中)、R3 超跌均值回归(弱)。所有反弹信号必须出现止跌K线（阳线/十字星）才能触发，避免接飞刀。

### 文件变更
- `scripts/momentum_detect.py`: 新增 `detect_pre_m11_warning()` + `detect_rebound_signals()` (R1-R3) + `detect_all()` 主信号逻辑调整
- `scripts/cross_ref.py`: `compute_fusion_bonus()` 加成值全面上调
- `scripts/momentum_scoring.py`: 新增 `compute_cost_factor()` 函数 + 反弹博弈信号展示
- `scripts/advisor.py`: `diagnose_single()` 传递成本数据，批量模式增加板块共振检测
- `scripts/sector_resonance.py`: **新文件**，板块分类 + 共振检测 + 降级逻辑

---

## V1.1 更新日志 (2026-08-02)

### 形态识别优化

1. **M6 阶梯横盘振幅阈值放宽**：振幅从 <8% → <12%（普通股），科创板688代码 → <15%
2. **W1 涨幅过热场景区分**：距60日高点回撤 >40% 的超跌修复场景，涨幅阈值从20%→35%
3. **M1 底部启动突破条件放宽**：从"突破MA60"放宽为"站上MA20即可"，突破MA60额外+3分。新增路径B：5日4阳温和反转（不要求严格3连阳递增）
4. **底部反转加分**：距60日低点 <15% 出现放量阳线时，趋势强度额外 +10分

### 文件变更
- `scripts/momentum_detect.py`: M1/M6/W1 逻辑增强，`detect_all()` 接受 `code` 参数
- `scripts/momentum_scoring.py`: 趋势强度增加底部反转加分，衰竭信号增加超跌修复场景
- `scripts/advisor.py`: 传递 code 到 `detect_all()`

---
## V1.3.2 更新日志 (2026-08-04)

### 决策引擎重构（六轮迭代）

1. **R3 乖离阈值 -20% → -12%**：MA20 下行时乖离难以追赶跌幅，寒武纪跌 31% 乖离仅 -13.5%。

2. **MA60 跌破惩罚分级**：M1 康复 -5 / 站上 MA10+MA20 双支撑 -10 / 普通 -15。

3. **M0 横盘整理通用形态**：无 M1~M6 命中但 VP 确认 + MA10/20 双支撑时，给 8/15 分兜底。

4. **WATCH 观望决策**：<50 分 + 有 R1~R3 反弹信号 → WATCH（不再一刀切 SELL）。

5. **质量置信度体系**：统计 N/7 维健康（≥60% 满分），边界区根据质量升降级。

6. **决策引擎全面重构**：分数定区间 + 质量定升降 + MA 结构覆盖 + 反弹信号覆盖 + M1 特殊通道。新增 WATCH 覆盖：35~49 反弹→WATCH，50~64 反弹/M1→WATCH。MA 多头回调（MA10>20>60 但价格破 MA20）降为 REDUCE 而非 SELL。

### 文件变更
- `scripts/momentum_detect.py`: R3 乖离阈值 -20→-12
- `scripts/momentum_scoring.py`: MA60 分级/M0 形态/决策引擎重构/质量置信度
- `scripts/advisor.py`: 汇总支持 WATCH
- `scripts/cross_ref.py`: reduce_watch 兼容

---
## V1.3.3 更新日志 (2026-08-05)

### 决策引擎边界信号修正

1. **双支撑弱势整理 WATCH**：35-49分区间新增中间状态判断。当价格站上MA10+MA20（短期双支撑）但跌破MA60（中期未修复）且无明确卖出形态触发时，决策从 SELL 修正为 **WATCH（弱势整理）**。

   **触发动机**：万向钱潮(000559) 40分跌破MA60判SELL，但MA10/20双支撑+窄幅整理+跌幅仅4%不构成趋势破位，实战中应为观望等方向而非卖出。

2. **卖出信号区分**：决策引擎新增 `has_sell_signal` 判断，区分"形态明确触发卖出"和"因分数边界值被动判SELL"两种情况。前者维持SELL，后者在有双支撑时降级WATCH。

### 新增变量
- `ma1020_double_support`：价格同时站上MA10和MA20
- `ma60_broken`：价格跌破MA60
- `double_support_weak`：双支撑+破MA60+非多头排列（弱势整理特征）
- `has_sell_signal`：是否有卖出形态明确触发

### 文件变更
- `scripts/momentum_scoring.py`: 新增双支撑弱势整理检测 + 决策引擎 35-49 区间新增 WATCH 分支 + 卖出信号区分

---
## V1.3.4 更新日志 (2026-08-05)

### 底部反弹 WATCH（反机械SELL）

1. **深度回撤+阳线 = 止跌信号**：<35分区间不再一刀切SELL。当回撤>20%且今日收阳时，升级为 **WATCH（底部反弹）**。

   **触发动机**：寒武纪(-27.6%)、兴森科技(-34.1%)、中芯国际(-28.3%) 都因M11破位判SELL，但今日均放量收阳。深度回撤后卖在底部不合理，应给观察期等MA20修复方向。

2. **不放量要求**：底部反弹初期天然缩量（买方试探），不能用调整期高量做基准。只要回撤>20%+阳线即触发，不要求量能确认。

3. **回撤计算**：基于近20日最高价 vs 当前收盘价。仅对 <35 分区间生效，不影响其他区间判断。

### 实战案例验证
- 寒武纪 688256：SELL→WATCH（回撤27.6%+阳线 ✓）
- 兴森科技 002436：SELL→WATCH（回撤34.1%+阳线 ✓）
- 中芯国际 688981：SELL→WATCH（回撤28.3%+阳线 ✓）
- 恒玄科技 688608：SELL→SELL（回撤15.0% 不足20%，维持）

### 板块共振改善
半导体板块从「4只卖出→共振降级」变为「1只卖出→关注」，不再触发板块级降级。

### 新增变量
- `peak20`：近20日最高价
- `drawdown`：基于 peak20 的回撤百分比（负值=回撤）
- `is_bullish_day`：最后一天是否为阳线（close > open）
- `deep_rebound_watch`：回撤>20% + 阳线 = 底部反弹WATCH

### 文件变更
- `scripts/momentum_scoring.py`: 新增底部反弹检测 + 决策引擎 <35 区间新增底部反弹 WATCH 分支

---
## V1.3.6 更新日志 (2026-08-17)

### 修复：今日放量反弹覆盖（反机械卖出）

**问题**：M8/M9/M10 卖出信号 + Pre-M11 预破位预警均以"近3日阴线"为触发条件，未识别"最新日已放量反弹收复MA20"的反转事实，导致放量阳线反弹日仍误判 SELL。

**触发动机**：寒武纪(688256) 今日(8-17)收盘 1156.00（+5.76% 放量阳线）站上 MA20(1154.20)，却因 M10 峰值回撤（近3日2日阴线）+ M8 高开诱多 + Pre-M11 预破位（severity 100）被判 SELL。实际是明确的止跌反弹，应 WATCH。

### 修复内容

1. **卖出信号反弹覆盖**：`detect_all()` 中新增——最新日为放量反弹阳线（收阳 + 涨≥2% + 量≥1.1x + 站上MA20）时，清除 M8/M9/M10 回撤/诱多型卖出信号。M11 趋势破位要求连续2日跌破MA20，今日阳线站上天然不触发，无需处理。

2. **Pre-M11 反弹豁免**：`detect_pre_m11_warning()` 中新增——最新日放量阳线（涨≥2% + 量≥1.1x + 站上MA20）属于向上收复而非向下逼近MA20，方向相反，不构成预破位预警，直接返回 None。

### 设计依据

V1.3.4 已确立"深度回撤+阳线=止跌信号，不应机械卖出"的哲学，但仅覆盖"回撤>20%"的场景。本次将这一哲学上移到统一层面：只要最新日是放量反弹阳线收复MA20，无论回撤幅度，回撤/诱多/预破位类信号一律失效，交由决策引擎按弱势整理(WATCH)处理。

### 实战验证
- 寒武纪 688256：SELL→WATCH（+5.76%放量阳线站上MA20 ✓，回撤16.4%不足20%但反弹覆盖生效）
- 中芯国际 688981：WATCH（维持，双支撑弱势整理）
- 兴森科技 002436：WATCH（维持，M1底部启动）

### 文件变更
- `scripts/momentum_detect.py`: 新增 `detect_all()` 卖出信号反弹覆盖 + `detect_pre_m11_warning()` 反弹豁免

---
## V1.3.7 更新日志 (2026-08-18)

### 修复：M10 峰值回撤的"无反弹阳线"语义修正

**问题**：V1.3.6 的"今日放量反弹覆盖"只覆盖了"最新日为大阳线"的场景，未覆盖"昨日大阳反弹 + 今日缩量回踩"。中芯国际(688981) 8-17 放量阳线 +2.93% 创新高后，8-18 缩量回踩 -2%，却因 M10 的"近3日≥2日阴线"（8-14 阴 + 8-18 阴）误判 SELL。

**根因**：M10 文档语义是"回撤>8% **且近3日无反弹阳线**"，但代码实现成"近3日≥2日阴线"，两种表述在"见底反弹后正常回踩"时不等价——后者会把反弹阳线也数进去，误杀反弹股。

### 修复内容

1. **M10 反弹阳线豁免**：`detect_m10_peak_drawdown()` 中，在"≥2日阴线"判断前，先检查近3日是否出现涨幅≥2%的阳线。若有，说明已有反弹，直接不触发 M10。

### 实战验证
- 中芯国际 688981：SELL→WATCH（8-17 阳线 +2.93% 反弹确认，8-18 缩量回踩不构成峰值回撤卖出）
- 寒武纪 688256：WATCH（维持）
- 兴森科技 002436：REDUCE（维持，W1涨幅过热）

### 文件变更
- `scripts/momentum_detect.py`: `detect_m10_peak_drawdown()` 新增反弹阳线豁免
