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