标题: 量化回测中的常见陷阱及规避方法
链接: https://www.joinquant.com/view/community/detail/3
分类: 回测框架
================================================================================

# 量化回测中的常见陷阱及规避方法

## 一、数据相关陷阱

### 1.1 幸存者偏差
- **问题描述**：只使用当前还在上市的股票进行回测
- **实际影响**：高估策略收益，忽略退市股票的亏损
- **规避方法**：
  - 使用包含退市股票的完整数据集
  - 在历史时点上重建当时的股票池
  - 聚宽平台：使用get_all_securities()获取历史时点股票池

### 1.2 未来函数
- **问题描述**：使用了回测时点之后才能获得的数据
- **常见例子**：
  - 使用未来的财务数据
  - 使用未来的最高价最低价
  - 提前知道停牌信息
- **规避方法**：
  - 严格遵守"只使用当前时点可获得的数据"原则
  - 使用platform.get_trading_dates()确认日期
  - 仔细检查数据获取的时间点

## 二、回测设置陷阱

### 2.1 过度拟合
- **问题描述**：策略参数过度优化，对历史数据拟合过好
- **识别方法**：
  - 样本内表现好，样本外表现差
  - 参数微小变化导致结果大幅波动
- **规避方法**：
  - 简化策略逻辑
  - 使用更长的回测周期
  - 参数敏感性分析
  - 留出样本外数据验证

### 2.2 交易成本设置不合理
- **问题描述**：手续费、滑点设置不符合实际
- **规避方法**：
  - 双边手续费：0.03%-0.05%
  - 滑点设置：0.1%-0.2%或固定金额
  - 根据实际券商费率调整

## 三、策略逻辑陷阱

### 3.1 偷价
- **问题描述**：使用不可能的成交价格进行回测
- **常见情况**：
  - 开盘前使用开盘价下单
  - 使用收盘价作为当日买入价
- **规避方法**：
  - 使用下一个bar的价格成交
  - 合理设置成交规则

### 3.2 涨跌停忽略
- **问题描述**：回测时没有考虑涨跌停限制
- **规避方法**：
  - 检查当日是否涨跌停
  - 考虑成交量限制
  - 使用更真实的成交模拟