量化投资就像给策略"整容"——微调可以,但整过头就会"看起来美,但不自然"。历史会重演,但不会简单重复。过度拟合是量化新手的头号杀手,而混淆相关性与因果性,就像认为"冰淇淋销量和溺水事件有关",所以禁止卖冰淇淋就能减少溺水——荒谬但常见。
一、过度拟合:策略的"整容过度"
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 测试1:2020训练,2021测试 测试2:2020-2021训练,2022测试 测试3:2020-2022训练,2023测试 测试4:2020-2023训练,2024测试如果各段表现差异大,说明策略不稳定。
二、数据引用错误
2.1 前视偏差(Look-ahead Bias)
定义:
用"未来的信息"做"过去的决策"。
常见错误:
| 错误 | 正确 |
|---|---|
| 用收盘价信号,假设能在收盘价成交 | 用当日收盘价信号,次日开盘价成交 |
| 用财报数据,假设能在发布当天使用 | 用财报发布后一天的数据 |
| 用当天最高最低价计算收益 | 用开盘价或收盘价计算 |
Excel避免方法:
// 错误:用当天数据决策 =IF(B2>MA(B2:B20), "买入", "") // 正确:用昨天数据决策 =IF(B1>MA(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等投资工具评测》