第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亿,否则进出场成本会吃掉利润。
  • 定期再平衡。我一般每周五收盘后做一次再平衡。太频繁了增加成本,太久了权重偏离严重。
我曾经犯过的错:有一年我做了个10个品种的组合,觉得分散够充分了。结果遇到系统性风险——所有品种的基差同时走扩。后来我才明白,分散化只能降低非系统性风险,系统性风险躲不掉。所以,组合里一定要留一部分现金或者做对冲。

六、一张图看懂多品种基差组合策略

下面这张图是我自己总结的框架,每次做组合前我都会过一遍:

多品种基差组合策略框架 第一步:品种筛选 流动性、相关性、波动率 第二步:相关性矩阵 滚动窗口、热力图、聚类 第三步:风险平价 动态风险预算 第四步:执行与监控 再平衡、止损、调仓 持续反馈优化 关键监控指标 • 组合波动率:目标年化8%-12% • 最大回撤:控制在15%以内 • 夏普比率:目标1.5以上 • 品种数量:5-12个为宜 • 相关性均值:低于0.3 • 换手率:月均不超过50% • 资金利用率:70%-85% • 单品种权重:不超过30%

这张图我每次做组合都会看一遍。从品种筛选到执行监控,形成一个闭环。说白了,多品种组合不是一锤子买卖,而是持续优化的过程。

七、最后说几句

多品种基差组合,说到底是个风险管理的游戏。你不需要每个品种都赚钱,只要组合整体赚钱就行。我见过很多交易员,单品种做得很好,但一搞组合就乱套——要么过度分散,要么权重失衡。

我的建议是:从5个品种开始,跑顺了再加。别一上来就搞十几个品种,管理不过来。记住,组合的目的是降低风险,不是增加复杂度。

一个小技巧:我每次调仓后,都会把组合的预期波动率和最大回撤算一遍。如果预期最大回撤超过15%,我就减仓或者加对冲。这个习惯帮我躲过了好几次大坑。

好了,多品种组合策略就聊到这儿。记住三个关键词:相关性、风险平价、动态调整。把这三点吃透了,你的基差交易就能上一个台阶。

公众号:蓝海资料掘金营,微信deep3321