4. 资产配置理论:现代投资组合理论、马科维茨模型、有效前沿

聊到资产配置,我脑子里第一个蹦出来的就是马科维茨。这老爷子在1952年搞了个大新闻,把数学塞进了投资领域。说白了,他告诉我们一个道理:别把所有鸡蛋放在一个篮子里。但光知道这句俗话没用,你得知道怎么放、放多少、为什么这么放。

我在做量化系统的时候,发现很多新手一上来就搞深度学习预测股价,结果回测漂亮,实盘一塌糊涂。为什么?因为忽略了最基础的东西——资产配置。你想想看,预测准了又怎样?仓位管理一塌糊涂,照样亏钱。

4.1 现代投资组合理论的核心思想

现代投资组合理论(MPT)的核心就一句话:通过分散投资,在给定风险下最大化收益。听起来简单,但数学上挺有意思。

它假设投资者都是理性的,都讨厌风险。给定同样的收益,大家肯定选风险小的;给定同样的风险,大家肯定选收益高的。嗯,现实中的人可没那么理性,但理论总得有个起点。

MPT 有两个关键输入:

  • 预期收益:每个资产未来能赚多少
  • 风险(标准差):收益的波动有多大
  • 相关性:资产之间怎么联动

我习惯把相关性叫做「资产之间的性格匹配」。两个股票如果同涨同跌,那分散效果就很差。一个涨一个跌,那才是好搭档。

核心公式:组合的预期收益 = 各资产收益的加权平均

组合的风险 ≠ 各资产风险的加权平均(因为有相关性)

4.2 马科维茨模型:数学之美

马科维茨模型,其实就是把上面的想法变成了一个优化问题。你要在「给定收益下最小化风险」或者「给定风险下最大化收益」。

数学上长这样:

min  σ²_p = wᵀ Σ w
s.t. wᵀ μ = μ_target
     Σ w_i = 1
     w_i ≥ 0 (可选,不加就是允许做空)

其中 w 是权重向量,Σ 是协方差矩阵,μ 是预期收益向量。说白了,就是解一个二次规划问题。

我在项目中遇到过一件事:直接用历史数据算协方差矩阵,结果优化出来的权重全是极端值——满仓一两个资产。为什么?因为历史数据有噪声,协方差矩阵不稳定。后来我加了收缩估计(Shrinkage),才让结果靠谱起来。

避坑指南:我曾经直接用过去3年的日收益率算协方差,结果优化出来的组合在下一个季度直接崩了。后来我改用指数加权移动平均(EWMA),给近期的数据更高权重,效果好了很多。

4.3 有效前沿:那条神奇的曲线

有效前沿,就是所有「最优组合」的集合。画在图上,横轴是风险(标准差),纵轴是收益。这条曲线上的每个点,都是在某个风险水平下收益最高的组合。

曲线以下的点,要么风险太高,要么收益太低,反正不是最优。曲线以上的点,对不起,不存在——至少理论上不存在。

我习惯用 Python 画这条曲线,代码大概长这样:

import numpy as np
import matplotlib.pyplot as plt

def efficient_frontier(returns, num_portfolios=10000):
    # returns: 各资产的预期收益
    # cov_matrix: 协方差矩阵
    results = np.zeros((3, num_portfolios))
    
    for i in range(num_portfolios):
        weights = np.random.random(len(returns))
        weights /= np.sum(weights)
        
        port_return = np.dot(weights, returns)
        port_risk = np.sqrt(np.dot(weights.T, np.dot(cov_matrix, weights)))
        
        results[0,i] = port_return
        results[1,i] = port_risk
        results[2,i] = port_return / port_risk  # 夏普比率
    
    return results

跑完这个,你会看到一堆散点,有效前沿就是这些点的上边界。我个人习惯用凸优化库(比如 cvxopt)直接求解,比随机模拟快得多。

4.4 知识体系结构图

下面这张 SVG 图,把这一章的核心逻辑串起来了。你看一眼就明白:

资产配置理论核心结构 预期收益 各资产未来收益估计 风险(标准差) 收益波动率 相关性矩阵 资产间联动关系 马科维茨优化模型 二次规划:最小化风险 / 最大化收益 有效前沿 所有最优组合的集合 输出:最优资产权重配置

4.5 实践中的坑与对策

理论讲完了,说说实战。马科维茨模型在教科书上完美无瑕,但拿到真实市场里,问题一堆。

问题 表现 我的对策
输入敏感 预期收益微调,权重大变 用 Black-Litterman 模型融合主观观点
协方差不稳定 历史数据噪声大 EWMA + 收缩估计
极端权重 满仓一两个资产 加权重约束(比如单资产不超过20%)
忽略交易成本 频繁调仓,成本吃掉收益 引入交易成本惩罚项

重要提醒:别迷信有效前沿。我见过有人把有效前沿当成圣杯,结果市场风格一变,前沿直接漂移了。有效前沿是静态的,市场是动态的。你得定期重估,或者用滚动窗口来做。

4.6 一个简单的实战案例

假设你有三个资产:股票、债券、黄金。预期年化收益分别是 10%、4%、6%。风险(标准差)分别是 20%、8%、15%。相关性:股票和债券 -0.2,股票和黄金 0.1,债券和黄金 0.3。

我习惯先跑一个随机模拟,看看散点图长什么样。然后找到夏普比率最高的那个点——那就是「最优风险组合」。最后根据你的风险承受能力,在有效前沿上选一个点。

举个例子:如果你能接受 12% 的年化波动,那就在有效前沿上找到对应 12% 风险的那个点,看看权重是多少。可能是 60% 股票、30% 债券、10% 黄金。嗯,这个组合就是为你量身定做的。

我的习惯:每次做资产配置,我都会跑三个版本——保守、均衡、激进。然后让客户自己选。别替别人做决定,你只提供选项和背后的逻辑。

好了,这一章就到这里。资产配置不是一锤子买卖,你得持续监控、动态调整。下一章我们聊聊怎么把理论落地到代码里,做一个自动化的再平衡系统。

专注资料整理