交易策略基础:量化交易概述、策略类型与回测评估

大家好,我是你们的老朋友。今天咱们聊聊量化交易的基础——策略。说实话,这行干久了你会发现,策略就是交易员的灵魂。没有策略,你就是在赌场里瞎转悠。

量化交易,说白了就是用数学模型和计算机程序来做交易决策。我刚开始接触这行时,觉得不就是写个代码自动买卖吗?后来踩了不少坑才明白,真正的量化交易是系统化、规则化、纪律化的投资方法。

核心要点:量化交易不是预测未来,而是管理概率。你永远无法100%确定市场会怎么走,但你可以知道在某种情况下,你的策略有60%的概率赚钱。

策略类型:三大主流流派

我个人习惯把策略分成三大类。嗯,其实市面上还有很多细分,但这三类是基础,搞懂了它们,其他都是变种。

1. 趋势跟踪

趋势跟踪,就是「顺势而为」。价格涨了,你觉得还会涨,所以买入;价格跌了,你觉得还会跌,所以卖出或做空。

我在项目中遇到过最经典的例子是双均线策略。简单到令人发指,但效果出奇的好。

# 双均线策略示例
def moving_average_strategy(data, short_window=20, long_window=60):
    data['MA_short'] = data['close'].rolling(window=short_window).mean()
    data['MA_long'] = data['close'].rolling(window=long_window).mean()
    
    # 金叉买入,死叉卖出
    data['signal'] = 0
    data.loc[data['MA_short'] > data['MA_long'], 'signal'] = 1
    data.loc[data['MA_short'] < data['MA_long'], 'signal'] = -1
    
    return data['signal']

你想想看,为什么这么简单的策略能赚钱?因为市场有惯性。一旦趋势形成,短期内很难逆转。但这里有个坑——趋势跟踪在震荡行情里会死得很惨。我曾经在2018年用趋势策略做A股,连续止损了8次,差点把账户亏穿。

避坑指南:趋势跟踪策略一定要搭配趋势识别指标。如果市场没有明显趋势,千万别硬上。我建议用ADX指标(平均趋向指数)来判断市场是否处于趋势状态,ADX > 25才开仓。

2. 均值回归

均值回归,说白了就是「涨多了会跌,跌多了会涨」。这个逻辑基于一个假设:价格会围绕某个均值波动。

最常见的均值回归策略是布林带策略。当价格触及下轨时买入,触及上轨时卖出。

# 布林带策略示例
def bollinger_strategy(data, window=20, num_std=2):
    data['MA'] = data['close'].rolling(window=window).mean()
    data['std'] = data['close'].rolling(window=window).std()
    data['upper'] = data['MA'] + num_std * data['std']
    data['lower'] = data['MA'] - num_std * data['std']
    
    # 触及下轨买入,触及上轨卖出
    data['signal'] = 0
    data.loc[data['close'] < data['lower'], 'signal'] = 1
    data.loc[data['close'] > data['upper'], 'signal'] = -1
    
    return data['signal']

均值回归策略在震荡行情里特别好用。但注意,如果遇到单边行情,你会被市场反复打脸。我记得2020年原油暴跌时,有人用均值回归策略抄底,结果原油从40美元跌到了负值...嗯,那哥们后来转行了。

小技巧:均值回归策略最好搭配波动率指标。当波动率突然放大时,均值回归的成功率会显著下降。我一般会加一个条件:如果ATR(平均真实波幅)突然放大到过去20天的1.5倍以上,就暂停交易。

3. 统计套利

统计套利,这是我最喜欢的策略类型。它不赌方向,赌的是价差回归

举个例子,贵州茅台和五粮液,它们都是白酒龙头,走势高度相关。如果某天茅台涨了5%,五粮液只涨了1%,这个价差大概率会回归。我们就做多五粮液、做空茅台,赚价差回归的钱。

# 配对交易策略示例
def pairs_trading_strategy(asset1, asset2, window=60):
    # 计算价差
    spread = asset1['close'] - asset2['close']
    spread_mean = spread.rolling(window=window).mean()
    spread_std = spread.rolling(window=window).std()
    
    # 计算Z-score
    z_score = (spread - spread_mean) / spread_std
    
    # 当Z-score > 2时,做空价差(卖asset1,买asset2)
    # 当Z-score < -2时,做多价差(买asset1,卖asset2)
    signal = 0
    if z_score.iloc[-1] > 2:
        signal = -1  # 做空价差
    elif z_score.iloc[-1] < -2:
        signal = 1   # 做多价差
    
    return signal

统计套利的好处是市场中性。大盘涨跌跟你关系不大,你只赚价差回归的钱。但难点在于——你怎么确定两个资产真的「相关」?我曾经用统计套利做比特币和以太坊,相关性分析显示相关系数0.95,结果2022年LUNA崩盘时,比特币跌了30%,以太坊跌了60%,价差直接爆表。

重要提醒:统计套利的前提是「协整性」,不是简单的相关性。两个资产必须存在长期均衡关系,短期偏离后一定会回归。做协整检验时,p值要小于0.05才靠谱。

策略回测与评估

策略写好了,能不能赚钱?别急着实盘,先回测。回测就是用历史数据模拟策略表现。

我见过太多人,策略回测年化50%,实盘直接亏30%。为什么?因为回测有坑。

回测的核心指标

指标 含义 我的经验值
年化收益率 策略每年平均赚多少 别信超过30%的,除非你加了杠杆
最大回撤 账户从最高点跌了多少 超过20%就要小心,你可能扛不住
夏普比率 每承担1单位风险能赚多少超额收益 大于1算合格,大于2算优秀
胜率 赚钱的交易占比 别追求高胜率,趋势策略胜率可能只有40%
盈亏比 平均盈利/平均亏损 至少2:1,否则赚的钱不够赔

回测中的常见陷阱

我踩过的坑,今天全告诉你:

  • 未来函数:回测时用了未来数据。比如用今天的收盘价计算今天的信号,这在实际交易中根本做不到。
  • 幸存者偏差:只回测现在还活着的股票。那些退市的、暴跌的股票被忽略了,回测结果自然好看。
  • 过拟合:为了拟合历史数据,加了太多参数。策略在历史数据上表现完美,一到实盘就崩。
  • 交易成本忽略:没算手续费、滑点、冲击成本。高频策略尤其要注意,手续费可能吃掉你所有利润。

我的建议:回测时至少留出20%的数据做「样本外测试」。也就是说,用80%的数据优化参数,用剩下的20%验证效果。如果样本外表现和样本内差距很大,说明策略过拟合了。

知识体系总览

下面这张图,是我自己梳理的交易策略知识体系。你看一眼,心里就有谱了。

交易策略知识体系 量化交易策略 趋势跟踪 均值回归 统计套利 双均线、通道突破 布林带、RSI反转 配对交易、协整 策略回测与评估 年化收益、最大回撤 夏普比率、胜率 盈亏比、样本外测试 ⚠ 常见陷阱:未来函数、过拟合、幸存者偏差

这张图把今天讲的内容串起来了。你仔细看,三条策略主线,加上回测评估模块,构成了量化交易的核心框架。每个模块之间都有联系,比如趋势跟踪策略的回测,要特别关注最大回撤;统计套利则要重点看协整检验的稳定性。

好了,今天就聊到这儿。记住一句话:没有完美的策略,只有适合你的策略。找到自己的风格,控制好风险,剩下的交给时间。


专注资料整理