2.3 正定矩阵与二次型
正定矩阵在优化和风险管理中无处不在——它决定了一个函数是凸还是凹、组合方差永远不会为负。
一、二次型
1.1 从一元到多元
一元二次:(一个平方项)
多元二次(二次型):把所有平方项和交叉项放在一起,写成矩阵形式。
例:,则二次型 为:
注意 永远输出一个数字。
1.2 算一个具体值
取 :
取 :
所以二次型的最小值至少是 0。它能不能是负数?取决于 的性质。
二、正定矩阵
2.1 定义
对称矩阵 称为:
- 正定:对所有 ,
- 半正定:对所有 ,
- 负定:对所有 ,
2.2 判定
最常用的判定方法:所有特征值 > 0(详见 2.4)⇔ 正定。
取上面的 :
两个特征值都大于 0,所以 是正定的。
2.3 为什么重要
在一元函数中, 意味着函数是凸的(最小值), 是凹的(最大值)。
在多元函数中,海森矩阵 的作用就相当于 :
- 正定 → 局部最小值 ✅
- 负定 → 局部最大值
- 有正有负 → 鞍点
Quant Link:协方差矩阵一定是半正定的,为什么?因为对任何权重向量 ,组合方差 (方差不可能为负)。这保证了:
- 你做组合优化时,最小方差组合存在且唯一
- 如果 不正定(即奇异),说明有资产能被其他资产复制——需要剔除冗余
三、Cholesky 分解
正定矩阵 可以分解为 ,其中 是下三角矩阵。
量化核心应用:生成相关随机数。
你想生成 1000 个服从 的样本,怎么做?
- 对 做 Cholesky 分解:
- 生成 1000 个独立标准正态向量
- 计算
得到的 就具有协方差 。
手算验证
,Cholesky 分解得
验证: ✅
python
import numpy as np
Sigma = np.array([[1.0, 0.7], [0.7, 1.0]])
L = np.linalg.cholesky(Sigma)
print(f"L =\n{L}")
print(f"LLᵀ =\n{L @ L.T}")
# 生成相关随机数
np.random.seed(42)
z = np.random.normal(size=(100000, 2))
x = z @ L.T
print(f"样本相关系数: {np.corrcoef(x.T)[0,1]:.4f}") # ≈ 0.7\n> 下一步:继续学习 2.4 特征值分解与SVD