量化策略实战与回测避坑(第 2 篇)
一句话:量化策略 5 大类 + 回测 5 大坑 + 实盘 5 步走。90% 策略回测好,实盘亏钱。5 大坑 = 散户的”量化杀手”。
一、5 大经典策略
1.1 策略 1:双均线(入门)
原理:
短均线上穿长均线 = 金叉 = 买入
短均线下穿长均线 = 死叉 = 卖出
典型参数:
- 短期:5 日 / 10 日 / 20 日
- 长期:60 日 / 120 日 / 250 日
实战代码(Python):
df['ma_short'] = df['close'].rolling(5).mean()
df['ma_long'] = df['close'].rolling(20).mean()
df['signal'] = 0
df.loc[df['ma_short'] > df['ma_long'], 'signal'] = 1 # 买入
df.loc[df['ma_short'] < df['ma_long'], 'signal'] = -1 # 卖出
特点:简单 / 趋势市好 / 震荡市差
1.2 策略 2:多因子选股(进阶)
原理:
多个因子打分(价值 / 成长 / 质量 / 动量)
→ 综合排序
→ 选前 N 只
5 大经典因子: | 因子 | 含义 | 公式 | |—|—|—| | 价值 | PE/PB 低 | EP / BP | | 成长 | 增速高 | 净利润同比 | | 质量 | ROE 高 | 净资产收益率 | | 动量 | 涨得多 | 过去 N 月涨幅 | | 规模 | 市值大 | log(市值) |
实战:
# 多因子打分
df['value_score'] = df['EP'].rank(pct=True)
df['growth_score'] = df['profit_growth'].rank(pct=True)
df['quality_score'] = df['ROE'].rank(pct=True)
df['composite'] = (df['value_score'] + df['growth_score'] + df['quality_score']) / 3
# 选前 10%
top_stocks = df.nlargest(int(len(df) * 0.1), 'composite')
1.3 策略 3:海龟交易法则(趋势跟踪经典)
原理:
20 日内最高价突破 = 入场
跌破 10 日最低价 = 止损
2N 波动加仓
特点:
- 趋势市表现优秀
- 震荡市频繁止损
- 适合长期持有
1.4 策略 4:MACD(技术指标)
原理:
DIF = EMA(12) - EMA(26)
DEA = EMA(DIF, 9)
DIF 上穿 DEA = 金叉 = 买入
DIF 下穿 DEA = 死叉 = 卖出
特点:
- 经典技术指标
- 滞后但稳健
- 适合波段操作
1.5 策略 5:机器学习选股(AI)
原理:
输入:历史财务 + 行情 + 资金
输出:预测未来 1 月收益率
模型:XGBoost / LightGBM / 神经网络
真实表现:
- 论文中的”高夏普”:1.5-2.0
- 实盘中的真实表现:0.8-1.2
- 多数被”过拟合”打败
二、回测的 5 大坑(90% 策略死在这)
2.1 坑 1:过拟合(过拟合 = 死)
策略在历史数据上表现极好
实盘完全跑不出来
→ 用了太多参数 / 太少数据
案例:用 50 个参数拟合 5 年数据 → 历史回测 +200%,实盘 -50%
2.2 坑 2:未来函数
策略用了"未来才知道"的数据
例如:用当天的收盘价作为当天的买入信号
正确做法:
用 T 日的收盘价作为 T+1 日的开盘价信号
(用 T 日 14:30 之前的数据)
2.3 坑 3:滑点
A 股:小盘股滑点 0.5-1%
大单买入:实际成交价 = 显示价 + 0.5%
→ 回测时没考虑滑点
→ 实盘时少赚 1-2%
2.4 坑 4:交易成本
A 股交易成本:0.2-0.3%(买卖各一次)
高频策略:1 年 100 次 = 20-30% 成本
→ 回测时没考虑
→ 实盘时少赚 20%+
2.5 坑 5:幸存者偏差
回测时只用了"现在还存在的股票"
忽略了"已经退市的股票"
→ 历史表现被人为美化
正确做法:用”当时所有股票”做回测(包括已退市的)
三、5 步走通量化(从回测到实盘)
3.1 Step 1:回测(1-3 个月)
目标:验证策略逻辑
数据:5 年历史
指标:年化 / 夏普 / 最大回撤 / 胜率
3.2 Step 2:模拟盘(1-3 个月)
目标:验证实盘可执行性
方式:券商 App 模拟交易
关注:滑点 / 信号频率 / 心理压力
3.3 Step 3:小仓位实盘(3-6 个月)
目标:验证真实环境
资金:1-2 万
关注:实际收益 / 最大回撤
3.4 Step 4:加仓实盘(6-12 个月)
目标:扩大规模
资金:5-10 万
关注:容量 / 心理承受力
3.5 Step 5:稳定运行(1+ 年)
目标:长期收益
资金:最终规模
关注:稳定 / 持续优化
四、5 大回测指标(策略好坏怎么判)
| 指标 | 含义 | 健康值 |
|---|---|---|
| 年化收益 | 1 年赚多少 | > 15% |
| 夏普比率 | 收益 / 风险 | > 1.0 |
| 最大回撤 | 最多亏多少 | < 20% |
| 胜率 | 多少次赚 | > 50% |
| 盈亏比 | 平均赚 / 平均亏 | > 1.5 |
实战标准:
- 夏普 > 1.0 + 回撤 < 20% + 胜率 > 50% = 优秀策略
- 3 项不达标 = 不要实盘
五、3 大真实案例
5.1 案例 1:双均线(简单有效)
| 数据 | 结果 |
|---|---|
| 沪深 300 2015-2024 | 年化 12% / 回撤 18% / 胜率 48% |
| 评价 | ⭐⭐⭐⭐ 中等策略 |
5.2 案例 2:多因子(2020-2024)
| 数据 | 结果 |
|---|---|
| 沪深 300 成分股 | 年化 18% / 回撤 22% / 胜率 55% |
| 评价 | ⭐⭐⭐⭐⭐ 优秀策略 |
5.3 案例 3:机器学习(常见陷阱)
| 数据 | 结果 |
|---|---|
| 回测 | 年化 30% / 回撤 15% |
| 实盘 | 年化 5% / 回撤 30% |
| 评价 | ⭐⭐ 严重过拟合 |
💬 “机器学习 = 最容易过拟合的工具。回测好不代表实盘好。3-5 年实盘才能验证。”
六、5 大实战建议
6.1 建议 1:从最简单的策略开始
双均线 → MACD → 海龟 → 多因子 → 机器学习
不要从机器学习开始!
6.2 建议 2:回测时间 5 年+
短期回测 = 容易过拟合
5 年回测 = 包含牛市 + 熊市
6.3 建议 3:实盘先小仓位
不要 ALL IN 量化
先 1-2 万跑 3-6 个月
6.4 建议 4:关注最大回撤
回测收益 = 不重要
最大回撤 = 重要
回撤 < 20% = 可承受
回撤 > 30% = 心理压力极大
6.5 建议 5:不要过度优化
参数过多 = 过拟合
4-6 个参数 = 最佳
> 10 个参数 = 危险
七、3 大避坑要点
7.1 避坑 1:不被回测曲线迷惑
回测曲线 = 历史
实盘表现 = 未来
回测好 ≠ 实盘好
7.2 避坑 2:不看”绝对收益”看”风险调整后收益”
年化 50% + 回撤 80% = 不如年化 15% + 回撤 15%
→ 看夏普比率
7.3 避坑 3:不要把策略当”圣杯”
5 大坑 = 90% 散户量化失败
1 个好策略 = 3-5 年实战 + 持续优化
💬 “量化 = 数学 + 代码 + 经验。5 大经典策略 + 5 大回测坑 + 5 步实盘 = 散户的’量化入门’。”
07-量化系列/10-从回测到实盘-5步走通量化.md
说明 · 本站内容均为学习笔记与经验总结,所有菜谱与技法请结合实际食材、季节与个人口味灵活调整。涉及生食、营养与健康的内容仅供参考,特殊体质或疾病请咨询专业营养师/医生。