Files
Hermes-Skills/intraday-regime-detector/references/decision-tree.md
T
mike e23f8d38c0 feat(strategy-management): exit_levels.py - 港美股做T 出场点位算法 (混合公式)
方法 2 (百分比波动率) + 方法 3 (关键价位) 混合算法

feat(intraday-regime-detector): 新 skill - 日内市场状态判别

来源: DeepSeek chat share 26iikphv8h94feze9q
核心: R² + ADF + 历史波动率, 识别趋势市 / 震荡市 / 混乱
推荐: 趋势跟踪 / 网格交易 / 布林带回归 / NO_TRADE
2026-07-18 21:26:14 +08:00

144 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 决策树详细说明
来源: DeepSeek chat share 26iikphv8h94feze9q
## 一、核心判别算法
### 1. 趋势效率 R² (线性回归)
**目的**: 衡量趋势的"纯粹度", 比单纯看均线方向更科学。
**计算**:
- 取过去 N 根 K 线 (默认 20 根 5min K) 的收盘价序列
- 以时间 (1,2,3...20) 为自变量 X, 收盘价为因变量 Y
- 做一元线性回归
- 计算 R²
**判断**:
| R² | 状态 | 含义 |
|---|---|---|
| > 0.75 | 趋势市 | 价格运动有明确方向, 噪声小 |
| < 0.30 | 震荡市 | 价格运动无方向, 充满噪声 |
| 0.30-0.75 | 过渡 | 方向不明, 等待 |
### 2. ADF 平稳检验 (Augmented Dickey-Fuller)
**目的**: 判断价格序列是否倾向于均值回归。
**计算**:
- 对过去价格序列执行 ADF 检验
- 返回 p 值
**判断**:
| p 值 | 含义 | 策略匹配 |
|---|---|---|
| < 0.05 | 拒绝非平稳假设, 统计上平稳 | **均值回归, 适合震荡做T** |
| > 0.05 | 不能拒绝非平稳, 可能是随机游走或趋势 | **不做均值回归** |
**⚠️ 简化实现**: 本 skill 用一阶差分自相关近似, 生产建议替换为 `statsmodels.tsa.stattools.adfuller` (代码已 fallback).
### 3. 历史波动率 (年化)
**计算**: log returns 标准差 × √252
**判断**:
| 波动率 | 含义 |
|---|---|
| > 30% | 高波动, 适合宽间距逆势 (布林带) |
| ≤ 30% | 低波动, 适合网格 |
### 4. 开盘缺口
**计算**: (open - prev_close) / prev_close × 100%
**判断**:
| 缺口 | 含义 |
|---|---|
| > +0.5% | 高开强势, 优先做正T |
| < -0.5% | 低开弱势, 优先做倒T |
| 平开/微小 | 默认震荡模式 |
## 二、策略参数说明
### 1. 趋势跟踪做T (TREND_FOLLOWING)
**适用**: 强趋势市 (R² > 0.75)
**参数** (5min K):
- `direction`: long_only / short_only
- `entry_trigger`: 价格回踩 EMA5 不破 (上涨) / 价格反弹至 EMA5 受阻 (下跌)
- `stop_loss`: EMA5 × 0.995 (long) / EMA5 × 1.005 (short)
- `take_profit`: 现价 × 1.02 / × 0.98
### 2. 网格交易做T (GRID_TRADING)
**适用**: 低波动震荡 (R² < 0.30 + ADF 平稳 + 低波动)
**参数**:
- `grid_spacing`: 近期平均振幅 × 0.8, 至少 0.5%
- `grid_levels`: 3 (默认)
- `base_price`: 当前价
- `reverse_at_boundary`: True (在边界反向开仓)
### 3. 布林带回归做T (BOLLINGER_REVERSION)
**适用**: 高波动震荡 (R² < 0.30 + ADF 平稳 + 高波动)
**参数** (20 期 ±2σ):
- `upper_band`: MA20 + 2σ
- `lower_band`: MA20 - 2σ
- `sell_at_upper`: True
- `buy_at_lower`: True
- `stop_if_break`: True (破带止损)
### 4. NO_TRADE (暂停)
**适用**: 混乱或过渡状态
**参数**: `reason: 市场状态不清晰, 等待趋势或明确震荡信号`
## 三、决策流程图
```
┌─────────────────────┐
│ 输入 20 根 5min K │
│ + 开盘缺口 │
└──────────┬──────────┘
┌─────────────────────┐
│ 计算 R² │
└──────────┬──────────┘
┌─────────────────┼─────────────────┐
↓ ↓ ↓
R² > 0.75 0.30-0.75 R² < 0.30
强趋势 过渡 震荡
↓ ↓ ↓
TREND UNKNOWN 计算 ADF
FOLLOWING NO_TRADE ↓
┌─────┴─────┐
↓ ↓
ADF<0.05 ADF≥0.05
平稳 不平稳
↓ ↓
计算波动率 CHAOTIC
↓ NO_TRADE
┌───┴───┐
↓ ↓
vol>30% vol≤30%
↓ ↓
BOLLINGER GRID
REVERSION TRADING
```
## 四、与本 skill 的对应关系
| 步骤 | 函数 | 文件 |
|---|---|---|
| 输入校验 | `diagnose()` | intraday_regime.py |
| 计算 R² | `_calculate_r_squared()` | intraday_regime.py |
| 计算 vol | `_calculate_historical_volatility()` | intraday_regime.py |
| 计算 ADF | `_adf_test()` | intraday_regime.py |
| 趋势判断 | `_classify_regime()` | intraday_regime.py |
| 策略匹配 | `_match_strategy()` | intraday_regime.py |
| 拉 K 线 + 整合 | `regime_scan.py` | regime_scan.py |