专栏 A 股深度方法论 子专栏 量化与跨境 3 篇

量化策略实战与回测避坑(第 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
说明 · 本站内容均为学习笔记与经验总结,所有菜谱与技法请结合实际食材、季节与个人口味灵活调整。涉及生食、营养与健康的内容仅供参考,特殊体质或疾病请咨询专业营养师/医生。