# 🔬 回测详解 × 分层回测：如何优化回测系统（深度报告）

> **dsh-quant 新 ann** · 2026-08-28 · 量化概念系列（指标大全之后的"验证层"）
> 目标：讲透回测的本质、可信度陷阱、分层回测方法，以及如何**优化回测系统**
> 关联：dsh-quant layeredBacktest（分层）· backtestMaCross（含费用）· 三策略 · 防过拟合四件套（#101）

---

## 0. 一句话

> **回测不是"跑一遍看赚不赚钱"——是"在历史数据上证明策略对未来有预测力"。
> 分层的意义：因子不只看"整体 IC"，还要看"分 5 层后单调性"——这是因子有效性
> 的黄金验证。优化回测系统 = 让每个结论都经得起拆解（防过拟合 + 诚实成本）。**

---

## 一、回测的本质（为什么难）

### 1.1 回测回答的问题
```text
这个策略在历史上：赚吗？（Return）稳吗？（Sharpe）扛得住吗？（MaxDD）
→ 但这些是"历史"——关键是：对未来有预测力吗？
```

### 1.2 回测的三大陷阱（可信度杀手）
| 陷阱 | 说明 | 防法 |
|---|---|---|
| **过拟合（Overfit）** | 调参调到历史完美，未来失效 | 样本外（walk-forward）· 参数少 |
| **未来函数（Look-ahead）** | 用了未来数据（偷看）| 时序严格（bar i 信号，i+1 成交）|
| **成本幻觉** | 忽略手续费/滑点 | 诚实建模费用+滑点 |

### 1.3 可信回测的 5 原则
1. **无未来函数**：信号在 bar i，成交在 bar i+1（dsh-quant 契约）
2. **诚实成本**：双边手续费 + 滑点 + 冲击
3. **样本外验证**：训练/验证/测试三段分离
4. **参数稳健**：微调参数结果不应剧变
5. **多场景**：不同市场状态（牛/熊/震荡）

---

## 二、回测系统的构成（如何优化）

### 2.1 回测管线（dsh-quant 视角）
```text
数据（PDAT 点时数据）
  → 因子/信号（quant_factor）
  → 回测引擎（backtestMaCross / 自定义）
  → 费用/滑点（trading-cost）
  → 指标（METRIC_CATALOG：Sharpe/MaxDD/PnL）
  → 分层验证（layeredBacktest）
  → 稳健性（walk-forward / 参数扫描）
  → 结论（过没过）
```

### 2.2 优化回测系统的 6 个方向
| 方向 | 优化点 |
|---|---|
| **1. 真实性** | 真实撮合（非"触及即成交"）· 队列位置 · 部分成交 |
| **2. 成本** | 手续费 + 滑点 + 冲击 + 融资成本 |
| **3. 稳健性** | walk-forward · purged CV · 参数网格 |
| **4. 防未来函数** | 严格时序 · 数据版本冻结 |
| **5. 可复现** | 种子固定 · 版本钉住（dsh-quant 7 CI 门禁）|
| **6. 分层验证** | 因子单调性检验（见下）|

---

## 三、分层回测（Layered Backtest）⭐ 核心

### 3.1 是什么
**把股票按因子值从高到低分成 N 组（通常 5 组/10 组），分别回测每组的表现**——
检验"因子是不是单调有效"。

```text
按因子值排序 → 分 5 层（Q1 最高 ... Q5 最低）
→ 每层单独回测（等权组合）
→ 看层间收益是否单调
```

### 3.2 怎么看结果（黄金判断）
| 现象 | 结论 |
|---|---|
| **Q1 > Q2 > ... > Q5（单调）** | ✅ 因子有效——强因子 |
| Q1 最高但中间乱 | ⚠️ 非线性/噪音——需谨慎 |
| Q1 ≈ Q5 | ❌ 因子无效（无区分度）|
| Q5 反而最高 | 🔄 反向因子（取反可用）|
| **Q1-Q5 价差（多空收益）** | 因子强度（考虑成本后仍正才真）|

### 3.3 分层回测的价值（vs 只看 IC）
- **IC 只给一个数**（相关性）——分层层内单调性更直观
- **暴露非线性**：因子可能只在极端组有效（Q1 好，Q2-Q4 平）
- **可构建多空组合**：买 Q1 卖 Q5（如果成本允许）
- **dsh-quant 已实现**：layeredBacktest（分层回测，返回层间结果）

### 3.4 实操（dsh-quant 流程）
```text
因子 → quant_factor_evaluate（IC/ICIR）
  → layeredBacktest（分 5 层回测）
  → 看单调性 + Q1-Q5 价差
  → 扣成本 → 过不过
```

---

## 四、防过拟合四件套（呼应 #101）

| 工具 | 作用 |
|---|---|
| **相关性检查** | 因子间冗余 |
| **Deflated Sharpe** | 多重测试校正（试了很多参数后的真实 Sharpe）|
| **压力测试** | 极端行情表现 |
| **敏感性分析** | 参数微调结果稳不稳 |
+ **walk-forward / purged CV**：时间序列交叉验证（防未来信息泄漏）

---

## 五、优化回测系统的最佳实践（总结）

```text
1. 数据：点时数据（PDAT）· 版本冻结
2. 信号：无未来函数（契约）
3. 执行：真实撮合 + 诚实成本
4. 验证：分层（单调性）+ walk-forward + Deflated Sharpe
5. 复现：种子固定 + CI 门禁（dsh-quant 7 道）
6. 结论：过一关进一关（研究 → 模拟 → 实盘）
```

**关键心态**：回测的目的不是"证明能赚"，是**"证明没偷看、没过拟合、成本诚实"**——
干净的回测才可信，可信的回测才能上实盘。

---

## 🐳 一句话

> **回测 = 在历史上证明未来有预测力。分层 = 因子的黄金验证（单调性 + 多空价差）。
> 优化回测系统 = 防过拟合 + 诚实成本 + 严格时序 + 可复现。
> dsh-quant 已经把分层回测 + 费用校验工程化了——让每个策略都经得起拆解。**

---

## 📚 参考

- dsh-quant：layeredBacktest · backtestMaCross · trading-cost · METRIC_CATALOG
- 防过拟合四件套（Discussion #101）
- 指标大全（#119）· IC/IR（#117）

欢迎翻阅、指正、PR 🐳
