第27章 多品种组合策略:投资组合优化、品种间相关性矩阵、风险平价在基差中的应用
做基差交易做到一定阶段,你会发现一个尴尬的事——单品种做得再好,资金容量有限,回撤也大。我早年就吃过这个亏,重仓押注一个品种的基差回归,结果遇到极端行情,差点爆仓。后来我学乖了,开始搞多品种组合。
说白了,多品种组合的核心就三个问题:选谁、配多少、怎么调。今天咱们就聊聊这个。
一、为什么基差交易需要多品种组合?
单品种基差交易有个天然缺陷——非系统性风险太大。你想想看,一个品种的基差可能因为产业政策、天气、运输问题突然走扩,这些因素你根本预测不了。
但多品种组合就不一样了。不同品种的基差波动往往不同步,有的正相关,有的负相关。组合在一起,就能平滑整体收益曲线。我自己的实盘经验是,从单品种到5-8个品种的组合,夏普比率能提升0.5-0.8。
二、品种间相关性矩阵——你的组合基石
做组合之前,第一件事就是算相关性矩阵。别偷懒,这个矩阵决定了你后面所有优化的质量。
我一般用滚动窗口60天的基差收益率来计算相关性。为什么是60天?太短了噪声大,太长了反应迟钝。这是我试过很多参数后觉得最稳的。
import pandas as pd
import numpy as np
# 假设df是多个品种的基差收益率数据,列名为品种代码
def calc_corr_matrix(df, window=60):
"""
计算滚动相关性矩阵
"""
# 计算相关系数矩阵
corr_matrix = df.rolling(window=window).corr()
return corr_matrix
# 示例:计算最近一个窗口的相关性
latest_corr = calc_corr_matrix(basis_returns).iloc[-len(basis_returns.columns):]
print(latest_corr)
这里有个坑,我提醒一下——相关性不是一成不变的。2019年螺纹和热卷的相关性高达0.85,但2020年疫情后降到了0.6。所以你得定期更新矩阵,我建议每周重新算一次。
| 品种对 | 正常市场 | 极端行情 | 备注 |
|---|---|---|---|
| 螺纹-热卷 | 0.75-0.85 | 0.90+ | 同产业链,高相关 |
| 铜-铝 | 0.40-0.55 | 0.70+ | 同为有色,但供需不同 |
| 豆粕-玉米 | 0.10-0.25 | 0.30+ | 饲料替代,弱相关 |
| 原油-黄金 | -0.10-0.10 | 0.50+ | 避险属性,不稳定 |
三、投资组合优化——从均值方差到风险预算
传统的马科维茨均值方差模型,在基差交易里其实不太好用。为什么?因为基差收益率的分布不是正态的,尾部风险很大。你算出来的最优权重,可能一个极端行情就全毁了。
我个人更推荐风险预算模型。它的思路很简单:每个品种对组合风险的贡献度相等。这样就不会出现某个品种权重过大,把整个组合带崩的情况。
from scipy.optimize import minimize
def risk_parity_weights(cov_matrix):
"""
风险平价权重计算
"""
n = cov_matrix.shape[0]
def risk_contribution(w):
portfolio_risk = np.sqrt(w @ cov_matrix @ w)
marginal_contrib = cov_matrix @ w / portfolio_risk
risk_contrib = w * marginal_contrib
return risk_contrib
def objective(w):
rc = risk_contribution(w)
target_rc = np.mean(rc)
return np.sum((rc - target_rc) ** 2)
constraints = ({'type': 'eq', 'fun': lambda w: np.sum(w) - 1})
bounds = [(0, 0.3) for _ in range(n)] # 单个品种权重上限30%
result = minimize(objective,
x0=np.ones(n)/n,
bounds=bounds,
constraints=constraints)
return result.x
你看,代码里我加了个权重上限30%。这是我踩过坑之后加的——有一次某个品种的基差突然走扩,权重到了40%,组合回撤直接破了历史记录。从那以后,我就给每个品种设了上限。
四、风险平价在基差中的特殊应用
风险平价在股票、债券里用得很多,但在基差交易里,你得做些调整。原因很简单——基差交易的波动率不是稳定的。临近交割月,波动率会急剧放大;远月合约,波动率又很小。
我的做法是:动态调整风险预算。具体来说,根据每个品种的基差波动率,动态调整它的风险贡献目标。
举个例子。假设豆粕基差的历史平均波动率是15%,当前波动率到了25%,那它的目标风险贡献就上调到基准的1.67倍。这样,波动率大的品种会自然降低权重,起到稳定组合的作用。
嗯,这里要注意——不要过度调整。我试过用10天滚动波动率来调,结果权重变来变去,交易成本高得吓人。后来改成用30天滚动波动率,效果就好多了。
五、实战中的避坑指南
做多品种基差组合这几年,我踩过的坑不少。挑几个重点说说:
- 别把同产业链品种放太多。我曾经同时做螺纹、热卷、线材三个品种,结果遇到限产政策,三个品种一起崩。相关性太高,组合效果等于单品种。
- 注意流动性差异。有些品种基差交易机会很好,但流动性差,滑点大。我建议每个品种的日均成交额不低于1亿,否则进出场成本会吃掉利润。
- 定期再平衡。我一般每周五收盘后做一次再平衡。太频繁了增加成本,太久了权重偏离严重。
六、一张图看懂多品种基差组合策略
下面这张图是我自己总结的框架,每次做组合前我都会过一遍:
这张图我每次做组合都会看一遍。从品种筛选到执行监控,形成一个闭环。说白了,多品种组合不是一锤子买卖,而是持续优化的过程。
七、最后说几句
多品种基差组合,说到底是个风险管理的游戏。你不需要每个品种都赚钱,只要组合整体赚钱就行。我见过很多交易员,单品种做得很好,但一搞组合就乱套——要么过度分散,要么权重失衡。
我的建议是:从5个品种开始,跑顺了再加。别一上来就搞十几个品种,管理不过来。记住,组合的目的是降低风险,不是增加复杂度。
好了,多品种组合策略就聊到这儿。记住三个关键词:相关性、风险平价、动态调整。把这三点吃透了,你的基差交易就能上一个台阶。