量化投资就像给策略整容——微调可以但整过头就会看起来美但不自然。历史会重演但不会简单重复。过度拟合是量化新手的头号杀手而混淆相关性与因果性就像认为冰淇淋销量和溺水事件有关所以禁止卖冰淇淋就能减少溺水——荒谬但常见。一、过度拟合策略的整容过度1.1 什么是过度拟合定义策略在历史数据上表现极好但在实盘或新数据上表现很差。通俗解释就像学生死记硬背考试答案考卷上的题全会换个考法就不会了。表现• 回测年化收益50%实盘亏20%• 回测胜率80%实盘胜率40%• 回测最大回撤5%实盘回撤30%1.2 过度拟合的原因原因说明例子参数过多策略有太多可调参数试了100组MACD参数选最好的规则复杂为了拟合历史而设计复杂规则加入20个过滤条件数据挖掘在历史数据中找规律发现每月15日买入这种无意义规律样本太少回测数据量不足只用1年数据回测1.3 识别过度拟合的方法方法1样本外验证将数据分为训练集70%和测试集30%• 在训练集上优化参数• 在测试集上验证表现• 如果测试集表现远差于训练集就是过度拟合方法2简化规则• 参数不超过3个• 规则用一句话能说清楚• 复杂的策略往往过度拟合方法3交叉验证将数据分为多段轮流作为测试集数据2020-2024 测试12020训练2021测试 测试22020-2021训练2022测试 测试32020-2022训练2023测试 测试42020-2023训练2024测试如果各段表现差异大说明策略不稳定。二、数据引用错误2.1 前视偏差Look-ahead Bias定义用未来的信息做过去的决策。常见错误错误正确用收盘价信号假设能在收盘价成交用当日收盘价信号次日开盘价成交用财报数据假设能在发布当天使用用财报发布后一天的数据用当天最高最低价计算收益用开盘价或收盘价计算Excel避免方法// 错误用当天数据决策 IF(B2MA(B2:B20), 买入, ) // 正确用昨天数据决策 IF(B1MA(B1:B19), 买入, )2.2 幸存者偏差Survivorship Bias定义只测试存活到现在的股票忽略了已经退市的。影响• 回测结果过于乐观• 实盘遇到退市股票会巨亏例子回测2015-2024年的小市值策略表现极好。但如果包含2015-2016年退市的股票结果可能完全不同。解决方案• 使用包含退市股票的数据库• 或者只测试大盘股退市概率低• 在回测中模拟退市情况2.3 数据质量错误常见问题• 价格错误除权除息未处理• 成交量异常停牌日显示为0• 时间戳错误检查方法// 检查异常收益率 IF(ABS(日收益率)0.2, 异常, 正常) // 检查缺失数据 IF(ISBLANK(收盘价), 缺失, 正常)三、混淆相关性与因果性3.1 经典案例冰淇淋与溺水数据• 冰淇淋销量高的时候溺水事件也多• 相关系数0.95错误结论冰淇淋导致溺水应该禁止卖冰淇淋正确解释两者都由第三个因素天气炎热导致没有因果关系。3.2 投资中的相关陷阱陷阱1技术指标与收益的虚假相关发现MACD金叉后5天上涨概率70%但可能只是牛市中任何信号都上涨。陷阱2宏观指标与股市的伪相关发现M2增速与股市正相关但可能只是巧合或滞后效应。陷阱3季节性规律春节前后股市必涨——可能只是小样本的巧合。3.3 如何区分相关与因果检验方法说明时间先后原因必须在结果之前排除第三方因素是否有其他变量解释两者关系机制解释是否有合理的逻辑链条样本外验证在其他时间段是否依然成立Excel实现// 计算相关系数 CORREL(指标列, 收益列) // 计算滞后相关性 CORREL(指标列(1:n-1), 收益列(2:n))四、其他常见误区4.1 忽略交易成本影响• 高频策略受影响最大• 可能把盈利策略变成亏损策略成本构成成本类型费率影响佣金0.025%每笔交易印花税0.1%卖出时过户费0.001%每笔交易滑点0.05%估算合计约0.2%/笔双向就是0.4%Excel回测中加入成本// 买入成本 买入价格 * (1 0.002) // 卖出收入 卖出价格 * (1 - 0.002) // 净收益 卖出收入 - 买入成本4.2 过度交易表现• 策略信号频繁每天买卖• 交易成本吃掉利润• 心理压力大解决方案• 增加过滤条件减少交易次数• 设置最小持仓周期如至少持有5天• 设置交易成本阈值如预期收益1%不交易4.3 参数优化过度表现• 试了100组参数选回测最好的那组• 参数过于精确如MA用17天而不是20天解决方案• 参数取整5、10、20、60• 参数稳健性测试相邻参数表现是否一致• 减少参数数量五、样本外验证的具体操作5.1 划分训练集和测试集时间序列数据划分2020-2022年训练集优化参数 2023-2024年测试集验证表现Excel实现// 标记训练集/测试集 IF(日期DATE(2023,1,1), 训练, 测试)5.2 滚动窗口验证方法用过去N天数据优化预测下一天然后滚动前进。Excel实现// 计算滚动窗口内的最优参数 AVERAGE(OFFSET(收益率, -20, 0, 20, 1))5.3 蒙特卡洛模拟方法随机打乱数据顺序多次回测看结果分布。目的检验策略是否依赖于特定的时间顺序。六、策略评估的正确姿势6.1 核心评估指标指标计算公式意义夏普比率(年化收益-无风险收益)/年化波动风险调整后收益索提诺比率(年化收益-目标收益)/下行标准差只惩罚下行风险最大回撤峰值到谷底最大跌幅极端风险胜率盈利次数/总次数准确性盈亏比平均盈利/平均亏损赔率Calmar比率年化收益/最大回撤收益与回撤比6.2 评估的维度维度1收益能力• 年化收益率• 累计收益率• 超额收益相对基准维度2风险控制• 最大回撤• 波动率• 下行风险维度3稳定性• 年度胜率• 月度胜率• 参数敏感性维度4实操性• 交易频率• 资金容量• 滑点影响七、总结与行动清单7.1 避坑检查清单检查项是否通过参数不超过3个☐样本外验证通过☐考虑了交易成本☐没有前视偏差☐数据包含退市股票☐相关性有因果解释☐交易频率合理☐最大回撤可接受☐7.2 下一步行动1.今天就做检查你的策略是否有前视偏差2.本周完成划分训练集和测试集做样本外验证3.本月目标用蒙特卡洛方法测试策略稳健性7.3 一个提醒没有圣杯策略。• 任何策略都有失效的时候• 市场环境会变策略需要迭代• 控制风险比追求收益更重要建议• 保持谦逊承认自己的无知• 持续学习不断优化• 设定止损控制回撤量化投资是一场马拉松不是百米冲刺。活得久比跑得快更重要。标签量化策略 | 过度拟合 | 回测陷阱 | 样本外验证 | 投资误区 | 相关性陷阱 | 交易成本字数约3300字推荐阅读• 上一篇《Excel与通达信联动——多软件协同选股盯盘》• 下一篇《Excel插件推荐——MarketXLS等投资工具评测》
Excel量化策略避坑指南——量化投资中过度拟合、数据引用错误和因果混淆三大核心陷阱避坑指南
量化投资就像给策略整容——微调可以但整过头就会看起来美但不自然。历史会重演但不会简单重复。过度拟合是量化新手的头号杀手而混淆相关性与因果性就像认为冰淇淋销量和溺水事件有关所以禁止卖冰淇淋就能减少溺水——荒谬但常见。一、过度拟合策略的整容过度1.1 什么是过度拟合定义策略在历史数据上表现极好但在实盘或新数据上表现很差。通俗解释就像学生死记硬背考试答案考卷上的题全会换个考法就不会了。表现• 回测年化收益50%实盘亏20%• 回测胜率80%实盘胜率40%• 回测最大回撤5%实盘回撤30%1.2 过度拟合的原因原因说明例子参数过多策略有太多可调参数试了100组MACD参数选最好的规则复杂为了拟合历史而设计复杂规则加入20个过滤条件数据挖掘在历史数据中找规律发现每月15日买入这种无意义规律样本太少回测数据量不足只用1年数据回测1.3 识别过度拟合的方法方法1样本外验证将数据分为训练集70%和测试集30%• 在训练集上优化参数• 在测试集上验证表现• 如果测试集表现远差于训练集就是过度拟合方法2简化规则• 参数不超过3个• 规则用一句话能说清楚• 复杂的策略往往过度拟合方法3交叉验证将数据分为多段轮流作为测试集数据2020-2024 测试12020训练2021测试 测试22020-2021训练2022测试 测试32020-2022训练2023测试 测试42020-2023训练2024测试如果各段表现差异大说明策略不稳定。二、数据引用错误2.1 前视偏差Look-ahead Bias定义用未来的信息做过去的决策。常见错误错误正确用收盘价信号假设能在收盘价成交用当日收盘价信号次日开盘价成交用财报数据假设能在发布当天使用用财报发布后一天的数据用当天最高最低价计算收益用开盘价或收盘价计算Excel避免方法// 错误用当天数据决策 IF(B2MA(B2:B20), 买入, ) // 正确用昨天数据决策 IF(B1MA(B1:B19), 买入, )2.2 幸存者偏差Survivorship Bias定义只测试存活到现在的股票忽略了已经退市的。影响• 回测结果过于乐观• 实盘遇到退市股票会巨亏例子回测2015-2024年的小市值策略表现极好。但如果包含2015-2016年退市的股票结果可能完全不同。解决方案• 使用包含退市股票的数据库• 或者只测试大盘股退市概率低• 在回测中模拟退市情况2.3 数据质量错误常见问题• 价格错误除权除息未处理• 成交量异常停牌日显示为0• 时间戳错误检查方法// 检查异常收益率 IF(ABS(日收益率)0.2, 异常, 正常) // 检查缺失数据 IF(ISBLANK(收盘价), 缺失, 正常)三、混淆相关性与因果性3.1 经典案例冰淇淋与溺水数据• 冰淇淋销量高的时候溺水事件也多• 相关系数0.95错误结论冰淇淋导致溺水应该禁止卖冰淇淋正确解释两者都由第三个因素天气炎热导致没有因果关系。3.2 投资中的相关陷阱陷阱1技术指标与收益的虚假相关发现MACD金叉后5天上涨概率70%但可能只是牛市中任何信号都上涨。陷阱2宏观指标与股市的伪相关发现M2增速与股市正相关但可能只是巧合或滞后效应。陷阱3季节性规律春节前后股市必涨——可能只是小样本的巧合。3.3 如何区分相关与因果检验方法说明时间先后原因必须在结果之前排除第三方因素是否有其他变量解释两者关系机制解释是否有合理的逻辑链条样本外验证在其他时间段是否依然成立Excel实现// 计算相关系数 CORREL(指标列, 收益列) // 计算滞后相关性 CORREL(指标列(1:n-1), 收益列(2:n))四、其他常见误区4.1 忽略交易成本影响• 高频策略受影响最大• 可能把盈利策略变成亏损策略成本构成成本类型费率影响佣金0.025%每笔交易印花税0.1%卖出时过户费0.001%每笔交易滑点0.05%估算合计约0.2%/笔双向就是0.4%Excel回测中加入成本// 买入成本 买入价格 * (1 0.002) // 卖出收入 卖出价格 * (1 - 0.002) // 净收益 卖出收入 - 买入成本4.2 过度交易表现• 策略信号频繁每天买卖• 交易成本吃掉利润• 心理压力大解决方案• 增加过滤条件减少交易次数• 设置最小持仓周期如至少持有5天• 设置交易成本阈值如预期收益1%不交易4.3 参数优化过度表现• 试了100组参数选回测最好的那组• 参数过于精确如MA用17天而不是20天解决方案• 参数取整5、10、20、60• 参数稳健性测试相邻参数表现是否一致• 减少参数数量五、样本外验证的具体操作5.1 划分训练集和测试集时间序列数据划分2020-2022年训练集优化参数 2023-2024年测试集验证表现Excel实现// 标记训练集/测试集 IF(日期DATE(2023,1,1), 训练, 测试)5.2 滚动窗口验证方法用过去N天数据优化预测下一天然后滚动前进。Excel实现// 计算滚动窗口内的最优参数 AVERAGE(OFFSET(收益率, -20, 0, 20, 1))5.3 蒙特卡洛模拟方法随机打乱数据顺序多次回测看结果分布。目的检验策略是否依赖于特定的时间顺序。六、策略评估的正确姿势6.1 核心评估指标指标计算公式意义夏普比率(年化收益-无风险收益)/年化波动风险调整后收益索提诺比率(年化收益-目标收益)/下行标准差只惩罚下行风险最大回撤峰值到谷底最大跌幅极端风险胜率盈利次数/总次数准确性盈亏比平均盈利/平均亏损赔率Calmar比率年化收益/最大回撤收益与回撤比6.2 评估的维度维度1收益能力• 年化收益率• 累计收益率• 超额收益相对基准维度2风险控制• 最大回撤• 波动率• 下行风险维度3稳定性• 年度胜率• 月度胜率• 参数敏感性维度4实操性• 交易频率• 资金容量• 滑点影响七、总结与行动清单7.1 避坑检查清单检查项是否通过参数不超过3个☐样本外验证通过☐考虑了交易成本☐没有前视偏差☐数据包含退市股票☐相关性有因果解释☐交易频率合理☐最大回撤可接受☐7.2 下一步行动1.今天就做检查你的策略是否有前视偏差2.本周完成划分训练集和测试集做样本外验证3.本月目标用蒙特卡洛方法测试策略稳健性7.3 一个提醒没有圣杯策略。• 任何策略都有失效的时候• 市场环境会变策略需要迭代• 控制风险比追求收益更重要建议• 保持谦逊承认自己的无知• 持续学习不断优化• 设定止损控制回撤量化投资是一场马拉松不是百米冲刺。活得久比跑得快更重要。标签量化策略 | 过度拟合 | 回测陷阱 | 样本外验证 | 投资误区 | 相关性陷阱 | 交易成本字数约3300字推荐阅读• 上一篇《Excel与通达信联动——多软件协同选股盯盘》• 下一篇《Excel插件推荐——MarketXLS等投资工具评测》