第二章 核心理论基础(上):马科维茨均值-方差模型、有效前沿的构建、风险与收益的数学定义
各位同学,欢迎来到第二章。
这一章,我们开始真正触碰资产配置的“灵魂”。说白了,就是回答一个最根本的问题:我到底该怎么分配钱,才能在风险可控的前提下,赚到尽可能多的收益?
这个问题,在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的权重。这个公式很简单,但它是整个配置模型的起点。
2.1.2 风险的度量:方差与标准差
风险是什么?在金融里,风险就是不确定性。数学上,我们用方差或标准差来度量这种不确定性。
方差衡量的是收益率偏离期望值的程度:
Var(R) = Σ [p_i * (R_i - E(R))²]
标准差σ就是方差的平方根。为什么用标准差?因为它的单位和收益率一样,是百分比,更直观。
举个例子:资产A的期望收益是10%,标准差是15%;资产B的期望收益也是10%,但标准差是30%。你选哪个?
答案很明显:A。因为同样的收益,A的风险更小。这就是“均值-方差”框架的核心思想——在给定收益下,追求风险最小化;在给定风险下,追求收益最大化。
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)。
有效前沿上的每一个点,都代表一个“最优”组合。你选择哪个点,取决于你的风险偏好。保守的人选左边的点(低风险、低收益),激进的人选右边的点(高风险、高收益)。
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库就能轻松求解。我一般会遍历一系列目标收益率(从最小方差组合的收益率到最大收益率),每个收益率解一次优化,把得到的(风险, 收益)点连起来,就是有效前沿。
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.0 | 1.0 | 5.0% | 10.0% |
| 0.2 | 0.8 | 6.0% | 10.6% |
| 0.4 | 0.6 | 7.0% | 12.2% |
| 0.6 | 0.4 | 8.0% | 14.5% |
| 0.8 | 0.2 | 9.0% | 17.2% |
| 1.0 | 0.0 | 10.0% | 20.0% |
你看,当w_A=0.2时,组合收益6%,风险10.6%。而单独持有B(w_A=0)时,收益5%,风险10%。多承担0.6%的风险,多赚了1%的收益——这就是分散化的好处。在这个例子中,有效前沿就是这6个点连成的曲线(实际上,步长更细的话,曲线会更平滑)。
2.6 模型的局限与我的应对
马科维茨模型很漂亮,但直接用到实盘,有几个坑:
- 输入敏感: 期望收益和协方差矩阵的微小变化,会导致最优权重剧烈变动。我见过一个组合,把历史数据窗口从3年改成5年,最优权重就从60%股票变成40%股票。
- 未来不等同于过去: 模型用的是历史数据估计的参数,但未来可能完全不同。尤其是相关系数,在市场危机时,所有资产的相关性都会趋近于1,分散化效果大打折扣。
- 单期模型: 它只考虑一个投资期,不考虑交易成本和再平衡。实盘中,频繁调仓会吃掉收益。
我的应对方法很简单:不把它当“圣杯”,而是当“基准”。我会用模型跑出一个参考组合,然后结合主观判断、行业约束、流动性要求,做适当调整。另外,我会用Black-Litterman模型(后面章节会讲)来融合主观观点,让输入更稳健。
好了,这一章的核心内容就这些。你理解了风险收益的数学定义,知道了协方差的作用,也明白了有效前沿是怎么来的。下一章,我们继续深入,看看如何把理论模型真正落地到代码里,并加入一些实战中必须考虑的约束条件。