第二章 核心理论基础(上):马科维茨均值-方差模型、有效前沿的构建、风险与收益的数学定义

各位同学,欢迎来到第二章。

这一章,我们开始真正触碰资产配置的“灵魂”。说白了,就是回答一个最根本的问题:我到底该怎么分配钱,才能在风险可控的前提下,赚到尽可能多的收益?

这个问题,在1952年之前,基本靠拍脑袋。直到一个叫哈里·马科维茨的年轻人,用一篇博士论文,把整个投资界拉进了“科学时代”。他提出的均值-方差模型,至今仍是所有量化配置策略的基石。我个人习惯,每次搭建新策略前,都会先跑一遍这个模型,看看“基准答案”长什么样。

2.1 风险与收益:先给它们一个“数学身份证”

做量化,第一件事就是把模糊的概念变成精确的数字。收益和风险,在咱们这行,有非常明确的数学定义。

2.1.1 收益的度量:期望收益率

你买一只股票,未来能赚多少?没人能100%确定。所以我们用期望收益率来刻画“平均来看,大概能赚多少”。

对于单个资产,如果它有N种可能的收益率,每种概率是p_i,那么期望收益率E(R)就是:

E(R) = Σ (p_i * R_i)

现实中,我们常用历史数据的算术平均收益率来近似。比如过去5年,某基金年化收益分别是10%、15%、-5%、20%、8%,那它的期望收益率就是(10+15-5+20+8)/5 = 9.6%。

对于投资组合,期望收益率就是各资产期望收益率的加权平均:

E(R_p) = Σ (w_i * E(R_i))

其中w_i是资产i的权重。这个公式很简单,但它是整个配置模型的起点。

我的经验: 别迷信历史均值。我见过太多人直接用过去3年的平均收益当期望,结果模型跑出来全是追涨的。我一般会结合宏观经济预测,对历史均值做一点“贝叶斯收缩”,让估计更稳健。

2.1.2 风险的度量:方差与标准差

风险是什么?在金融里,风险就是不确定性。数学上,我们用方差标准差来度量这种不确定性。

方差衡量的是收益率偏离期望值的程度:

Var(R) = Σ [p_i * (R_i - E(R))²]

标准差σ就是方差的平方根。为什么用标准差?因为它的单位和收益率一样,是百分比,更直观。

举个例子:资产A的期望收益是10%,标准差是15%;资产B的期望收益也是10%,但标准差是30%。你选哪个?

答案很明显:A。因为同样的收益,A的风险更小。这就是“均值-方差”框架的核心思想——在给定收益下,追求风险最小化;在给定风险下,追求收益最大化

注意: 方差作为风险度量,有一个隐含假设——收益率是正态分布的。但真实市场有“肥尾”现象(极端行情比正态分布预测的更频繁)。我曾经在2008年回测时,模型显示某组合99%的概率不会亏损超过10%,结果一个月就亏了25%。从那以后,我总会额外加一个“压力测试”来补充方差的风险度量。

2.2 组合的魔法:协方差与相关系数

单个资产的风险收益搞清楚了,但组合的魅力在于“分散化”。为什么分散能降低风险?因为资产之间不是完全同步波动的。

我们用协方差来衡量两个资产收益率的协同变动:

Cov(R_i, R_j) = Σ [p_k * (R_i,k - E(R_i)) * (R_j,k - E(R_j))]

协方差为正,说明两个资产同涨同跌;为负,说明一个涨时另一个跌。但协方差的数值大小受单位影响,不好直接比较。所以我们更常用相关系数ρ

ρ_ij = Cov(R_i, R_j) / (σ_i * σ_j)

ρ的取值范围是[-1, 1]。ρ=1表示完全正相关,分散化没用;ρ=-1表示完全负相关,可以构建无风险组合;ρ=0表示不相关。

有了这些,组合的方差就可以写成:

Var(R_p) = Σ Σ (w_i * w_j * Cov(R_i, R_j))

这个公式看着复杂,但它的含义很深刻:组合的风险,不仅取决于单个资产的风险,更取决于资产之间的相关性。你想想看,如果你把10个相关系数0.9的股票放一起,分散效果其实很差。但如果你加入一个和它们相关性很低的债券,效果就出来了。

核心洞察: 资产配置的唯一“免费午餐”,就是利用低相关性来降低组合风险。这是马科维茨模型最伟大的贡献。

2.3 有效前沿:找到“最优”的那条线

好了,现在我们有工具了。假设我们有N个资产,可以算出它们的期望收益率、方差,以及两两之间的协方差。那么,我们可以构建无数个不同权重的组合。每个组合都有一个(风险, 收益)坐标点。

把这些点画在图上,你会看到一个类似“子弹头”的散点区域。在这个区域的左上边界上,有一系列特殊的点——它们满足:在相同风险下,收益最高;或者在相同收益下,风险最低。这条边界,就是有效前沿(Efficient Frontier)

风险 (标准差 σ) 期望收益 E(R) 有效前沿 无效组合 最小方差组合 0

有效前沿上的每一个点,都代表一个“最优”组合。你选择哪个点,取决于你的风险偏好。保守的人选左边的点(低风险、低收益),激进的人选右边的点(高风险、高收益)。

2.4 数学求解:如何画出这条线?

画有效前沿,本质上是一个优化问题。最经典的方法是:在给定目标收益率R_target下,最小化组合方差

数学形式如下:

目标函数:min  σ²_p = w^T * Σ * w
约束条件:
  1. w^T * E(R) = R_target  (组合收益等于目标)
  2. w^T * 1 = 1            (权重之和为1)
  3. w_i ≥ 0                (可选,不允许卖空)

其中,w是权重向量,Σ是协方差矩阵,E(R)是期望收益率向量,1是全1向量。

这是一个典型的二次规划问题。在Python里,用scipy.optimize或者cvxopt库就能轻松求解。我一般会遍历一系列目标收益率(从最小方差组合的收益率到最大收益率),每个收益率解一次优化,把得到的(风险, 收益)点连起来,就是有效前沿。

避坑指南: 我曾经在求解时,忘了加“权重之和为1”的约束,结果模型给我算出一个权重加起来等于0.8的组合。嗯,那意味着有20%的钱没投出去,收益率自然不对。这种低级错误,检查约束条件就能避免。

2.5 一个简单的例子:两种资产

为了让你更直观地理解,我们看一个两种资产的例子。

假设:

  • 资产A:期望收益E(R_A)=10%,标准差σ_A=20%
  • 资产B:期望收益E(R_B)=5%,标准差σ_B=10%
  • 相关系数ρ_AB=0.2

我们让资产A的权重w从0变化到1,步长0.1,计算每个组合的收益和风险:

w_A w_B E(R_p) σ_p
0.01.05.0%10.0%
0.20.86.0%10.6%
0.40.67.0%12.2%
0.60.48.0%14.5%
0.80.29.0%17.2%
1.00.010.0%20.0%

你看,当w_A=0.2时,组合收益6%,风险10.6%。而单独持有B(w_A=0)时,收益5%,风险10%。多承担0.6%的风险,多赚了1%的收益——这就是分散化的好处。在这个例子中,有效前沿就是这6个点连成的曲线(实际上,步长更细的话,曲线会更平滑)。

关键结论: 只要资产间的相关系数小于1,有效前沿就是一条凸向原点的曲线。这意味着,通过组合,你总能获得比简单加权平均更好的风险收益比。

2.6 模型的局限与我的应对

马科维茨模型很漂亮,但直接用到实盘,有几个坑:

  1. 输入敏感: 期望收益和协方差矩阵的微小变化,会导致最优权重剧烈变动。我见过一个组合,把历史数据窗口从3年改成5年,最优权重就从60%股票变成40%股票。
  2. 未来不等同于过去: 模型用的是历史数据估计的参数,但未来可能完全不同。尤其是相关系数,在市场危机时,所有资产的相关性都会趋近于1,分散化效果大打折扣。
  3. 单期模型: 它只考虑一个投资期,不考虑交易成本和再平衡。实盘中,频繁调仓会吃掉收益。

我的应对方法很简单:不把它当“圣杯”,而是当“基准”。我会用模型跑出一个参考组合,然后结合主观判断、行业约束、流动性要求,做适当调整。另外,我会用Black-Litterman模型(后面章节会讲)来融合主观观点,让输入更稳健。

好了,这一章的核心内容就这些。你理解了风险收益的数学定义,知道了协方差的作用,也明白了有效前沿是怎么来的。下一章,我们继续深入,看看如何把理论模型真正落地到代码里,并加入一些实战中必须考虑的约束条件。


专注资料整理