策略组合入门:常见的策略类型及其特点
做量化交易这些年,我见过太多人一上来就追求「圣杯策略」。说实话,这玩意儿不存在。真正赚钱的,往往是懂得把不同策略组合起来的人。今天咱们聊聊四种最基础的策略类型——趋势跟踪、均值回归、统计套利、事件驱动。搞懂它们,你就算入门了。
一、趋势跟踪:跟着市场走
趋势跟踪,说白了就是「追涨杀跌」。听起来简单吧?但执行起来可没那么容易。
核心逻辑:市场一旦形成趋势,往往会持续一段时间。我们要做的,就是在趋势启动时进场,在趋势反转时离场。
我个人习惯用双均线系统来判断趋势:
# 简单的双均线趋势跟踪
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']
三、统计套利:找亲戚之间的价差
统计套利,说白了就是找两只「长得像」的股票,做它们之间的价差。
核心逻辑:找到具有协整关系的资产对,当价差偏离历史均值时,做多被低估的、做空被高估的。
举个例子:茅台和五粮液,长期走势高度相关。如果某天茅台涨了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
四、事件驱动:靠消息吃饭
事件驱动策略,就是利用重大事件带来的价格波动赚钱。比如财报发布、并购重组、政策变化等。
核心逻辑:提前预判事件影响,在事件发生前后进行交易。
这类策略对信息处理能力要求极高。我见过做得好的团队,专门雇了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%做事件驱动(进攻型)。当然,这个比例要根据市场环境动态调整。
好了,四种策略的基本概念就讲到这里。记住一句话:没有最好的策略,只有最合适的组合。下一章咱们聊聊怎么给这些策略分配资金,那才是真正的技术活。