4、最小方差模型:最小方差组合的推导、优化求解、实战应用

聊到ETF仓位管理,很多人一上来就想着怎么收益最大化。但我个人习惯,先想怎么活下来。最小方差模型,说白了就是帮你找到那个「最不折腾」的组合。它不追求最高收益,只追求波动最小。嗯,这在量化交易里,其实是个很实在的起点。

4.1 最小方差组合的数学推导

先回忆一下,我们手头有N个ETF资产。每个资产有它的预期收益率和波动率。资产之间还有相关性。我们的目标很简单:找到一组权重w,让整个组合的方差最小。

组合方差公式长这样:

σ²_p = w^T Σ w

其中w是权重向量,Σ是协方差矩阵。约束条件是所有权重加起来等于1,而且不能做空(权重非负)。

为什么要加非负约束?我在项目中遇到过,有人为了追求极致低波动,给某些ETF配了负权重。结果呢?回测漂亮,实盘一跑就崩。因为融券成本、流动性问题全来了。所以,老老实实加个非负约束。

数学上,这是个带约束的二次规划问题:

min  w^T Σ w
s.t. sum(w) = 1
     w_i >= 0

求解这个优化问题,就能得到最小方差组合的权重。说白了,就是找那个「最稳」的配置。

核心结论:最小方差组合不依赖预期收益率的估计,只依赖协方差矩阵。这意味着它天然避开了「收益预测不准」这个大坑。

4.2 优化求解:从理论到代码

理论讲完了,咱们直接上代码。我习惯用Python的scipy库来求解。你想想看,手算协方差矩阵再求逆?那得算到猴年马月去。

import numpy as np
from scipy.optimize import minimize

def min_variance_portfolio(cov_matrix):
    n = cov_matrix.shape[0]
    
    # 初始权重:等权
    w0 = np.ones(n) / n
    
    # 约束条件:权重和为1
    constraints = ({'type': 'eq', 'fun': lambda w: np.sum(w) - 1})
    
    # 边界:权重非负
    bounds = tuple((0, 1) for _ in range(n))
    
    # 目标函数:组合方差
    def portfolio_variance(w):
        return w.T @ cov_matrix @ w
    
    result = minimize(portfolio_variance, w0, 
                      method='SLSQP',
                      bounds=bounds, 
                      constraints=constraints)
    
    return result.x

这段代码看着简单,但有几个坑我得提醒你:

  • 协方差矩阵的估计:直接用历史数据算?小心!极端行情下,相关性会突变。我建议用指数加权移动平均(EWMA)来估计,给近期数据更高权重。
  • 数值稳定性:有些ETF相关性极高,协方差矩阵可能接近奇异。这时候加个正则化项,比如给对角线加个小常数,能避免求解失败。
  • 再平衡频率:最小方差组合不是一劳永逸的。市场在变,协方差也在变。我个人习惯每月再平衡一次,太频繁了交易成本受不了。

实战小技巧:如果你发现求解出来的权重集中在少数几个ETF上,说明你的资产池里相关性太高了。这时候应该考虑加入不同类别的ETF,比如债券ETF、商品ETF,来真正分散风险。

4.3 实战应用:一个完整的例子

光说不练假把式。咱们拿A股市场常见的几个ETF来跑一遍。假设我们选了5个ETF:沪深300ETF、中证500ETF、创业板ETF、国债ETF、黄金ETF。

先看它们的协方差矩阵(基于过去1年的日收益率数据):

沪深300 中证500 创业板 国债 黄金
沪深300 0.0004 0.0003 0.00035 -0.00002 0.00001
中证500 0.0003 0.0005 0.0004 -0.00001 0.00002
创业板 0.00035 0.0004 0.0006 -0.00003 0.00001
国债 -0.00002 -0.00001 -0.00003 0.0001 0.00005
黄金 0.00001 0.00002 0.00001 0.00005 0.0002

跑完优化,得到的最小方差组合权重是:

  • 沪深300ETF:15%
  • 中证500ETF:10%
  • 创业板ETF:5%
  • 国债ETF:55%
  • 黄金ETF:15%

看到没?国债ETF占了半壁江山。这就是最小方差模型的逻辑——谁波动小,谁就配得多。股票类ETF虽然收益潜力大,但波动也大,所以权重被压得很低。

注意:这个组合的年化波动率大约只有4-5%,但年化收益率可能也只有3-4%。别指望它帮你暴富。它的定位是「压舱石」,不是「冲锋舟」。

4.4 知识体系:最小方差模型的核心逻辑

下面这张图,是我自己总结的最小方差模型知识框架。你看一眼,就能明白整个流程。

最小方差模型核心逻辑 输入:N个ETF 计算协方差矩阵 (EWMA方法) 二次规划求解 (SCIPY优化) 输出:最优权重 约束条件 权重和=1,非负 实战应用:月度再平衡 + 风险监控

这张图把整个流程串起来了。从输入ETF数据开始,到计算协方差矩阵,再到带约束的优化求解,最后输出权重并投入实战。每一步都有讲究,缺一不可。

4.5 避坑指南与个人经验

做最小方差模型这几年,我踩过不少坑。分享几个印象深刻的:

  • 协方差矩阵的「记忆效应」:我曾经直接用过去3年的数据算协方差,结果模型在2020年疫情暴跌时完全失效。为什么?因为2017-2019年的低波动环境让模型过于自信。后来我改用EWMA,给近期数据更高权重,效果好了很多。
  • 权重集中问题:最小方差模型天然倾向于把大部分权重分配给低波动资产。但如果你只配国债ETF,那还叫什么组合?我建议加个「最大单资产权重」约束,比如不超过30%,强制分散。
  • 交易成本不可忽视:模型给出的权重可能和当前持仓偏差很大。一次大调仓,交易成本可能吃掉几个月的收益。我习惯加个「调仓成本惩罚项」,让模型在「最优」和「稳定」之间找个平衡。

最后说一句:最小方差模型不是万能药。它适合风险厌恶型投资者,或者作为整个投资组合的「底仓」。如果你追求高收益,那得另请高明。但如果你想睡个安稳觉,这个模型值得一试。

好了,这一章就到这里。最小方差组合的推导、求解和实战,咱们都过了一遍。代码也给了,坑也说了,剩下的就是你自己去跑一跑、试一试。记住,纸上得来终觉浅,绝知此事要躬行。

专注资料整理