策略组合入门:常见的策略类型及其特点

做量化交易这些年,我见过太多人一上来就追求「圣杯策略」。说实话,这玩意儿不存在。真正赚钱的,往往是懂得把不同策略组合起来的人。今天咱们聊聊四种最基础的策略类型——趋势跟踪、均值回归、统计套利、事件驱动。搞懂它们,你就算入门了。

一、趋势跟踪:跟着市场走

趋势跟踪,说白了就是「追涨杀跌」。听起来简单吧?但执行起来可没那么容易。

核心逻辑:市场一旦形成趋势,往往会持续一段时间。我们要做的,就是在趋势启动时进场,在趋势反转时离场。

我个人习惯用双均线系统来判断趋势:

# 简单的双均线趋势跟踪
def trend_follow(data, short_window=20, long_window=60):
    data['short_ma'] = data['close'].rolling(short_window).mean()
    data['long_ma'] = data['close'].rolling(long_window).mean()
    
    # 金叉买入,死叉卖出
    data['signal'] = 0
    data.loc[data['short_ma'] > data['long_ma'], 'signal'] = 1
    data.loc[data['short_ma'] <= data['long_ma'], 'signal'] = -1
    
    return data['signal']
特点总结:
  • 适合单边行情,胜率不高但盈亏比大
  • 震荡行情容易反复打脸
  • 需要设置合理的止损

我在项目中遇到过最典型的案例:2020年原油暴跌那波,趋势跟踪策略赚翻了。但到了2021年震荡市,同一个策略亏得亲妈都不认识。所以啊,没有万能策略。

二、均值回归:赌它不会一直极端

均值回归和趋势跟踪正好相反。它赌的是:价格偏离均值太远,迟早会回来。

核心逻辑:当价格偏离历史均值超过一定标准差时,反向开仓。

你想想看,如果一只股票平时波动在±2%以内,突然一天跌了5%,大概率是过度反应。这时候买入,等它回归。

# 布林带均值回归策略
def mean_reversion(data, window=20, std_dev=2):
    data['ma'] = data['close'].rolling(window).mean()
    data['std'] = data['close'].rolling(window).std()
    
    data['upper'] = data['ma'] + std_dev * data['std']
    data['lower'] = data['ma'] - std_dev * data['std']
    
    # 触及下轨买入,触及上轨卖出
    data['signal'] = 0
    data.loc[data['close'] < data['lower'], 'signal'] = 1
    data.loc[data['close'] > data['upper'], 'signal'] = -1
    
    return data['signal']
避坑指南:我曾经在2015年股灾时用均值回归策略抄底,结果被连续跌停板教做人。记住:趋势行情里千万别用均值回归,会死得很惨。

三、统计套利:找亲戚之间的价差

统计套利,说白了就是找两只「长得像」的股票,做它们之间的价差。

核心逻辑:找到具有协整关系的资产对,当价差偏离历史均值时,做多被低估的、做空被高估的。

举个例子:茅台和五粮液,长期走势高度相关。如果某天茅台涨了5%,五粮液只涨了1%,这个价差大概率会回归。

# 配对交易统计套利
def pairs_trading(asset_a, asset_b, window=60):
    # 计算价差
    spread = asset_a - asset_b
    spread_mean = spread.rolling(window).mean()
    spread_std = spread.rolling(window).std()
    
    # 标准化价差
    z_score = (spread - spread_mean) / spread_std
    
    # 当z-score超过阈值时开仓
    signal = 0
    if z_score.iloc[-1] > 2:
        signal = -1  # 做空价差
    elif z_score.iloc[-1] < -2:
        signal = 1   # 做多价差
    
    return signal
注意:统计套利最大的坑是「协关系断裂」。我记得2018年贸易战期间,很多原本高度相关的股票对突然就不相关了。做统计套利,一定要定期检查协整关系是否还在。

四、事件驱动:靠消息吃饭

事件驱动策略,就是利用重大事件带来的价格波动赚钱。比如财报发布、并购重组、政策变化等。

核心逻辑:提前预判事件影响,在事件发生前后进行交易。

这类策略对信息处理能力要求极高。我见过做得好的团队,专门雇了NLP工程师来解析新闻文本。

# 简单的事件驱动框架
def event_driven(event_calendar, price_data):
    """
    event_calendar: 事件日历,包含事件类型、时间、预期影响
    price_data: 价格数据
    """
    for event in event_calendar:
        # 事件前建仓
        if event['type'] == 'earnings':
            # 财报事件:预期利好则做多
            position = 1 if event['sentiment'] == 'positive' else -1
            # 事件后平仓
            # ...
    return positions
特点总结:
  • 收益高,但风险也大
  • 需要强大的信息获取和处理能力
  • 适合有资源、有渠道的团队

四种策略对比

为了方便你理解,我整理了一张对比表:

策略类型 适用行情 胜率 盈亏比 最大回撤
趋势跟踪 单边趋势 30%-40% 3:1以上 中等
均值回归 震荡行情 60%-70% 1:1左右 较小
统计套利 任何行情 50%-60% 2:1左右 较小
事件驱动 事件密集期 40%-50% 2:1-5:1 较大

策略组合的核心逻辑

看到这里你可能会问:知道了这四种策略,然后呢?

嗯,重点来了。单一策略都有短板,但组合起来就不一样了。比如:

  • 趋势跟踪 + 均值回归:一个抓大行情,一个吃震荡收益
  • 统计套利 + 事件驱动:一个做稳定收益,一个博超额收益

我个人习惯的做法是:用60%的资金做趋势跟踪和统计套利(稳健型),30%做均值回归(辅助型),10%做事件驱动(进攻型)。当然,这个比例要根据市场环境动态调整。

我的经验:刚开始做策略组合时,别贪多。先跑通两个策略的组合,跑顺了再加第三个。我曾经一口气上了五个策略,结果出了问题都不知道是哪个策略的锅。
策略组合知识体系 策略组合 资金分配 趋势跟踪 追涨杀跌 均值回归 反向交易 统计套利 配对交易 事件驱动 消息面 单边行情 震荡行情 协整关系 重大事件 四种策略互补,组合使用可降低整体风险

好了,四种策略的基本概念就讲到这里。记住一句话:没有最好的策略,只有最合适的组合。下一章咱们聊聊怎么给这些策略分配资金,那才是真正的技术活。

专注资料整理