Files
sanguo_vnpy/research/jq_essence_articles/article_03.txt
T
2026-04-11 21:18:55 +08:00

65 lines
2.1 KiB
Plaintext
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.
标题: 量化回测中的常见陷阱及规避方法
链接: 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 涨跌停忽略
- **问题描述**:回测时没有考虑涨跌停限制
- **规避方法**
- 检查当日是否涨跌停
- 考虑成交量限制
- 使用更真实的成交模拟