3、核心理论基础(下):协方差矩阵与相关性、投资组合的数学期望与方差、无差异曲线与最优组合选择
3.1 协方差矩阵:资产之间的“社交网络”
咱们做量化,说白了就是在研究资产之间的关系。你想想看,如果两只股票总是同涨同跌,那把它们放在一起,风险根本分散不了。协方差矩阵,就是用来量化这种关系的工具。
我个人习惯把协方差矩阵看作一张“社交关系表”。矩阵里的每个元素,都告诉你两只资产之间是怎么“互动”的。正数表示它们倾向于一起涨跌,负数则表示一个涨的时候另一个在跌。
Cov(Ri, Rj) = E[(Ri - μi)(Rj - μj)]
我在项目中遇到过一个问题:直接用历史数据算协方差,结果发现矩阵不是正定的。这意味着什么?意味着你没法做后续的优化求解。嗯,这里要注意,数据量不够或者资产高度相关时,很容易出现这种情况。
3.2 相关性:把协方差“标准化”
协方差有个缺点——它受量纲影响。比如一只股票价格是100块,另一只是10块,它们的协方差数值会很大,但这不代表相关性就强。这时候就需要相关性系数出场了。
说白了,相关性就是把协方差“归一化”到[-1, 1]之间。公式很简单:
我曾经踩过一个坑:看到两只资产相关性是0.8,就以为它们高度相关。其实在极端市场环境下,相关性会急剧变化。平时0.8,危机时刻可能直接跳到0.99。所以做风控时,我建议用滚动窗口算动态相关性,别只看静态值。
3.3 投资组合的数学期望:你预期的回报
组合的期望收益,其实就是各资产期望收益的加权平均。这个很好理解:
但这里有个陷阱——期望收益是“期望”,不是“保证”。我见过太多人把历史平均收益直接当成期望收益,结果模型跑出来很漂亮,实盘一跑就崩。为什么?因为历史不会简单重复。
3.4 投资组合的方差:风险的量化
组合的方差就没那么简单了。它不仅要考虑每个资产自身的波动,还要考虑资产之间的协方差。公式长这样:
其中Σ就是协方差矩阵,w是权重向量。你想想看,如果组合里有10只资产,协方差矩阵就有100个元素。手动算?不现实。所以我们用矩阵运算,一行代码搞定。
import numpy as np
# 假设有3只资产,协方差矩阵和权重已知
cov_matrix = np.array([
[0.04, 0.01, 0.005],
[0.01, 0.09, 0.02],
[0.005, 0.02, 0.16]
])
weights = np.array([0.4, 0.3, 0.3])
# 计算组合方差
portfolio_variance = weights.T @ cov_matrix @ weights
portfolio_std = np.sqrt(portfolio_variance)
print(f"组合方差: {portfolio_variance:.4f}")
print(f"组合标准差: {portfolio_std:.4f}")
3.5 无差异曲线:投资者的“口味”
每个投资者对风险和收益的偏好都不一样。有人愿意为了多赚1%去承担10%的波动,有人则完全受不了。无差异曲线就是用来描述这种偏好的。
它的核心思想是:在同一条曲线上,投资者觉得所有点都一样“爽”。比如点A(收益10%,波动5%)和点B(收益15%,波动10%),如果投资者觉得两者没区别,那它们就在同一条无差异曲线上。
U = E(R) - 0.5 × A × σ²
这里的A是风险厌恶系数。A越大,说明越讨厌风险。我习惯把A设在2到4之间,具体看投资者的风险承受能力。
3.6 最优组合选择:找到那个“切点”
好了,现在我们有两条东西:
- 有效前沿:所有最优组合的集合(给定风险下的最大收益)
- 无差异曲线:投资者的偏好集合
最优组合就是这两者的切点。说白了,就是在你“最满意”的那条无差异曲线上,找一个在有效前沿上的点。
我记得有一次帮客户做配置,他的风险厌恶系数特别高(A=6)。结果最优组合里债券占了80%,股票只有20%。他一开始觉得收益太低,但回测下来,他的风险承受能力确实只能配这么多股票。嗯,这就是无差异曲线的实际应用。
3.7 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以看到,从底层数据到最终决策,每一步都环环相扣。
3.8 实战中的几点提醒
另外,无差异曲线虽然理论完美,但实际中很难精确知道投资者的A值。我通常的做法是:先算几个不同A值下的最优组合,然后让投资者自己选。这样既保留了理论框架,又增加了灵活性。
好了,这一章的内容就到这里。记住,理论是骨架,实践是血肉。下一章我们会把这些工具真正用到实盘中去。