量化交易中文教材

第 07a 章 正定矩阵的刻画、平方根与 Cholesky 分解

对应原书:Horn & Johnson《Matrix Analysis》第 2 版,第 7 章 Positive Definite and Semidefinite Matrices 的 7.0–7.2 节(书 p.425–448,PDF p.445–468)。第 7 章其余部分:极分解与 SVD 的推论见第 07b 章,Schur 乘积定理与同时对角化见第 07c 章,Loewner 序与行列式不等式见第 07d 章。

第 7 章是整册书里和量化交易关系最密切的一章。任何协方差矩阵、相关矩阵、核矩阵、Hessian(在极小点处)都是半正定矩阵;风险模型、组合优化、蒙特卡罗模拟、回归、PCA 的每一步都默认"这个矩阵是半正定的"。这一章先回答三个最实际的问题:怎样判断一个矩阵是不是(半)正定;为什么半正定矩阵可以"开平方"、可以写成 \(LL^T\);当手里的"相关矩阵"不是半正定时该怎么办。

学习目标

读完本章,你应当能够:

  1. 用二次型、特征值、主子式、Gram 分解、Cholesky 分解五种等价方式判定(半)正定性,并知道"顺序主子式非负"不能推出半正定。
  2. 理解半正定矩阵的关键引理 \(x^*Ax=0\iff Ax=0\) 及其推论:零对角元所在行列全为零、行列包含性质、相关系数不超过 1。
  3. 掌握唯一半正定平方根 \(A^{1/2}\) 的构造与性质,理解 Cholesky 分解 \(A=LL^*\) 及"任何两个平方根因子只差一个酉(正交)矩阵"。
  4. 理解"每个半正定矩阵都是 Gram 矩阵",把协方差矩阵看成收益向量的内积表,从而解释奇异协方差的含义。
  5. 能在量化场景中:检验协方差/相关矩阵是否合法,用 Cholesky 生成相关随机数,修复非半正定的相关矩阵(最近相关矩阵),读懂 AR(1) 相关矩阵与 VIF。

读前导读

这一章在解决什么问题。 一句话:什么样的矩阵才"有资格"当协方差矩阵,以及怎样把它"开平方"。

你在 CFA 一级就写过两资产组合方差 \(\sigma_p^2=w_1^2\sigma_1^2+w_2^2\sigma_2^2+2w_1w_2\rho\sigma_1\sigma_2\)。写成矩阵就是 \(\sigma_p^2=w^T\Sigma w\),这个式子叫二次型。方差不能为负,所以对任何权重 \(w\) 都必须有 \(w^T\Sigma w\ge0\)——满足这个条件的对称矩阵叫半正定;对所有非零 \(w\) 都严格大于 0,叫正定。正定就是"没有任何一个组合是零风险的",半正定但不正定就是"存在某个组合方差恰好为 0"(某个资产能被其他资产完全复制)。

这个看似显然的条件,实务中经常被破坏:成对删除缺失数据估出的相关矩阵、风控人员手工改过的压力情景相关矩阵、不同频率拼起来的协方差,都可能出现"方差为负的组合"。把这样的矩阵交给优化器,会得到无穷大的杠杆。本章给出检验方法(特征值、Cholesky)和修复方法(截断负特征值、最近相关矩阵)。

第二个主题是"开平方"。标量情形,方差 \(\sigma^2\) 开平方得到波动率 \(\sigma\),于是 \(x=\sigma z\)(\(z\) 标准正态)就有方差 \(\sigma^2\)。矩阵情形,找到 \(L\) 使 \(LL^T=\Sigma\),就能用 \(x=Lz\) 生成协方差为 \(\Sigma\) 的随机收益——这是蒙特卡罗 VaR 的第一步。Cholesky 分解给出下三角的 \(L\),它的每个元素都有回归解释(对冲比率与残差波动率)。\(L\) 不唯一,不同的 \(L\) 之间只差一个旋转——这正是因子模型"载荷可以旋转"的数学原因。

需要先想起来的数学。

  • 矩阵乘法与转置。\((AB)^T=B^TA^T\);\(w^T\Sigma w\) 是一个数(\(1\times n\) 乘 \(n\times n\) 乘 \(n\times1\))。例:\(w=(1,1)\),\(\Sigma=\begin{bmatrix}4&1\\1&9\end{bmatrix}\),\(w^T\Sigma w=4+1+1+9=15\)。见 第 00 册第 06 章 线性代数速成。
  • 特征值分解(谱分解)。对称矩阵可写成 \(\Sigma=U\Lambda U^T\),\(U\) 的列是两两正交的单位特征向量(主成分方向),\(\Lambda\) 对角线是特征值(主成分方差)。例:\(\begin{bmatrix}5&4\\4&5\end{bmatrix}\) 的特征值是 9(方向 \((1,1)/\sqrt2\))和 1(方向 \((1,-1)/\sqrt2\))。
  • 行列式与主子式。\(2\times2\) 行列式 \(ad-bc\)。主子式是"选出同一组行和列"得到的子矩阵的行列式;顺序主子式只取左上角。对协方差矩阵,\(\begin{vmatrix}\sigma_1^2&\sigma_{12}\\\sigma_{12}&\sigma_2^2\end{vmatrix}=\sigma_1^2\sigma_2^2(1-\rho^2)\)。
  • Hessian 与二阶条件。Hessian 是二阶偏导数组成的矩阵,多元函数的"二阶导数"。一元函数 \(f''>0\) 是极小点,多元函数对应的条件是 Hessian 正定。见 第 00 册第 05 章 多元微积分与优化。
  • 期望的线性性。\(E[aX+bY]=aE[X]+bE[Y]\),由此 \(\operatorname{Var}(\sum w_iX_i)=\sum_{i,j}w_iw_j\operatorname{Cov}(X_i,X_j)\)。见 第 00 册第 07 章 概率中的分析工具。

符号提示:本章的 \(x^*\) 表示共轭转置,实数情形就是 \(x^T\);"Hermitian"读作"实对称","酉矩阵"读作"正交矩阵",正文 7.2.1 也这样提示了。

怎么读这一章。 核心必读:7.2.1–7.2.3(定义、主子矩阵继承、关键引理)、7.3.1(特征值刻画)、7.3.2 的"常见误区"、7.3.4(Gram 分解与 \(n>T\) 时样本协方差奇异)、7.3.5(Cholesky)、7.3.6(Gram 矩阵的几何直觉)。7.1 节的 (3)(4)(5) 和 7.2.5 的正定函数第一次可以只看量化读法;Sylvester 判据 (a) 的证明、7.3.3 的唯一性证明可以跳过。实战 1–3 是本章最实用的部分,建议全部细读。


7.1 正定矩阵从哪里来

正定矩阵是"正数"在矩阵上的推广。原书 7.0 节用五个例子说明它们自然出现的场合,每一个在量化里都有对应物。

(1) Hessian 与极小化。 设 \(f\) 是 \(\mathbf R^n\) 上光滑函数,\(y\) 是临界点(梯度为零)。Taylor 展开到二阶:

\[f(x)-f(y)=\tfrac12(x-y)^TH(f;y)(x-y)+\cdots,\qquad H(f;y)=\Big[\frac{\partial^2f}{\partial x_i\partial x_j}\Big|_y\Big].\]

若对所有 \(z\ne0\) 有 \(z^TH(f;y)z>0\),\(y\) 就是局部极小点——这是一元"二阶导数为正"的推广。若 Hessian 在整个区域上处处半正定,\(f\) 就是凸函数。组合方差 \(w^T\Sigma w\) 的 Hessian 是 \(2\Sigma\),所以"\(\Sigma\) 半正定"就是"组合方差是 \(w\) 的凸函数",均值–方差优化因此是凸优化(第 04 册)。

金融直觉:这和债券凸性是同一个"二阶项"。债券价格对收益率展开:\(\Delta P/P\approx-D\,\Delta y+\tfrac12C(\Delta y)^2\),凸性 \(C>0\) 说明价格–收益率曲线向上弯。多元函数在临界点处一阶项为零,剩下的二阶项 \(\tfrac12(x-y)^TH(x-y)\) 决定往哪个方向走都"向上弯"还是有的方向"向下弯"。Hessian 正定 = 每个方向都向上弯 = 极小点。 为什么 \(w^T\Sigma w\) 的 Hessian 是 \(2\Sigma\):两资产时 \(f=\sigma_1^2w_1^2+2\sigma_{12}w_1w_2+\sigma_2^2w_2^2\),\(\partial^2f/\partial w_1^2=2\sigma_1^2\),\(\partial^2f/\partial w_1\partial w_2=2\sigma_{12}\),正好是 \(2\Sigma\) 的各元素。

(2) 协方差矩阵(covariance matrix)。 随机变量 \(X_1,\dots,X_n\) 的协方差矩阵 \(A=[a_{ij}]\),\(a_{ij}=E[(\overline{X_i-\mu_i})(X_j-\mu_j)]\)。对任意系数向量 \(z\):

\[z^*Az=E\Big|\sum_iz_i(X_i-\mu_i)\Big|^2\ge0 .\]

推导拆解(实数情形,把 \(^*\) 和共轭都去掉):

  1. 记 \(Y_i=X_i-\mu_i\),则 \(a_{ij}=E[Y_iY_j]\)。
  2. \(z^TAz=\sum_{i,j}z_iz_ja_{ij}=\sum_{i,j}z_iz_jE[Y_iY_j]\)。
  3. 期望是线性的,可以把有限和与系数都搬进期望里:\(=E\big[\sum_{i,j}z_iY_i\,z_jY_j\big]=E\big[(\sum_iz_iY_i)^2\big]\)。
  4. 平方非负,非负随机变量的期望非负,所以 \(\ge0\)。 第 3 步那个平方里的 \(\sum_iz_iY_i\) 正是"权重为 \(z\) 的组合收益减去其均值",所以 \(z^TAz\) 就是组合方差。这就是 CFA 组合方差公式的矩阵证明。

这只用到期望的线性和"非负随机变量期望非负"。量化含义一目了然:\(z^*Az\) 是组合 \(\sum z_iX_i\) 的方差,方差不可能为负。一个协方差矩阵不半正定,就意味着存在"方差为负"的组合——这是本章实战 1 要揭示的病态。

(3) 矩序列与 Hankel 矩阵。 对 \([0,1]\) 上非负函数 \(f\),矩 \(a_k=\int_0^1x^kf(x)\,dx\) 组成的 Hankel 矩阵 \([a_{i+j}]\) 满足 \(\sum a_{j+k}z_jz_k=\int_0^1(\sum z_kx^k)^2f(x)\,dx\ge0\),是半正定的。

(4) 三角矩与 Toeplitz 矩阵。 对 \([0,2\pi]\) 上非负函数 \(f\),\(a_k=\int_0^{2\pi}e^{ik\theta}f(\theta)\,d\theta\) 组成的 Toeplitz 矩阵 \([a_{i-j}]\) 半正定。Bochner 定理说反过来也对:只要所有这样的 Toeplitz 二次型非负,\(a_k\) 就一定是某个非负测度的 Fourier 系数。时间序列里,平稳序列的自协方差矩阵 \([\gamma(i-j)]\) 正是半正定 Toeplitz 矩阵,\(f\) 就是谱密度(第 06 册)。

(5) 差分格式。 两点边值问题 \(-y''+\sigma(x)y=f\) 用中心差分离散后得到三对角系数矩阵(原书 (7.0.5.1)):对角元 \(2+h^2\sigma_i\),次对角元 \(-1\)。它的二次型

\[x^TAx=x_1^2+\sum_{i=1}^{n-1}(x_i-x_{i+1})^2+x_n^2+h^2\sum_i\sigma_ix_i^2\]

在 \(\sigma\ge0\) 时对 \(x\ne0\) 为正,所以 \(A\) 正定、非奇异,离散问题总有唯一解。期权定价中用有限差分解 Black–Scholes 型方程时,希望得到正定系数矩阵,道理相同(第 08 册)。


7.2 定义与基本性质

7.2.1 定义

定义 7.1.1。 Hermitian 矩阵 \(A\in M_n\) 称为

  • 正定(positive definite):对所有非零 \(x\in\mathbf C^n\),\(x^*Ax>0\);
  • 半正定(positive semidefinite):对所有 \(x\),\(x^*Ax\ge0\)。

反向不等式分别称负定、负半定(等价于 \(-A\) 正定、半正定);\(x^*Ax\) 既取正值又取负值时称不定(indefinite)。第 07d 章会引入记号 \(A\succ0\)(正定)与 \(A\succeq0\)(半正定)。

两点说明。第一,在复数域上"Hermitian"其实是多余的假设:若 \(x^*Ax\) 对一切复向量 \(x\) 都是实数,\(A\) 必然 Hermitian(第 04a 章)。在实数域上则必须单独要求对称——\(\begin{bmatrix}1&1\\-1&1\end{bmatrix}\) 满足 \(x^TAx=x_1^2+x_2^2>0\),但它不对称,我们不称它正定。量化中处理的都是实对称矩阵,读者可以把本章所有的 \(^*\) 读成 \(^T\)、"Hermitian"读成"实对称"、"酉"读成"正交"。第二,\(1\times1\) 情形正定就是正实数;\(\begin{bmatrix}1&1\\1&1\end{bmatrix}\) 半正定但不正定(\(x=(1,-1)^T\) 使二次型为零);\(A\) 正定则 \(\bar A,A^T,A^{-1}\) 都正定(令 \(Ay=x\),\(x^*A^{-1}x=y^*Ay\))。

金融直觉:\(\begin{bmatrix}1&1\\1&1\end{bmatrix}\) 是两只完全正相关(\(\rho=1\))、波动率相同的资产的协方差矩阵。\(x=(1,-1)\) 是"多一只、空一只"的对冲组合,方差恰好为 0。所以:

  • 正定:不存在零风险的组合,没有哪只资产能被其他资产精确复制。
  • 半正定但不正定:存在零风险组合,即某些资产线性相关。例如同时持有 ETF 及其全部成分股,或者把"现金"列为一个零方差资产。
  • 不定:存在"方差为负"的组合——这在真实世界里不可能,一定是估计或拼接出了错。 至于 \(A^{-1}\) 也正定:协方差矩阵的逆叫精度矩阵,它同样是合法的"二次型",在最小方差组合 \(w\propto\Sigma^{-1}\mathbf 1\) 和马氏距离里都要用到。

7.2.2 立即可得的性质

主子矩阵继承(Observation 7.1.2)。 \(A\) 正定(半正定)⇒ 每个主子矩阵 \(A[\alpha]\) 正定(半正定)。证明:取 \(x\) 只在 \(\alpha\) 上非零,\(x^*Ax=x[\alpha]^*A[\alpha]x[\alpha]\)。特别地,对角元为正(非负)。量化读法:从协方差矩阵里挑出任意一组资产,子协方差矩阵仍然合法。

凸锥(Observation 7.1.3)。 半正定矩阵的非负线性组合仍半正定;只要有一项系数为正且该项正定,组合就正定。半正定矩阵构成一个凸锥。收缩估计 \(\hat\Sigma=(1-\delta)S+\delta F\)(样本协方差与结构化目标的凸组合)之所以总是合法的协方差,依据就是这一条。

特征值(Observation 7.1.4)。 正定(半正定)矩阵的特征值为正(非负)实数:\(Ax=\lambda x\) ⇒ \(\lambda=x^*Ax/x^*x\)。

迹与行列式(Corollary 7.1.5)。 半正定 ⇒ \(\operatorname{tr}A\)、\(\det A\) 以及所有主子式非负(正定时为正);且 \(\operatorname{tr}A=0\iff A=0\)。

7.2.3 关键引理:\(x^*Ax=0\) 与 \(Ax=0\)

对不定矩阵,\(x^*Ax=0\) 不说明什么:\(A=\operatorname{diag}(1,-1)\),\(x=(1,1)^T\) 使 \(x^*Ax=0\),但 \(Ax\ne0\)。半正定矩阵不会这样。

Observation 7.1.6。 \(A\) 半正定,则 \(x^*Ax=0\iff Ax=0\)。

证明思路:设 \(x^*Ax=0\)。对实数 \(t\) 考虑 \(p(t)=(tx+Ax)^*A(tx+Ax)=t^2x^*Ax+2t\,x^*A^2x+x^*A^3x=2t\|Ax\|_2^2+x^*A^3x\)。半正定性要求 \(p(t)\ge0\) 对所有 \(t\) 成立;若 \(\|Ax\|_2\ne0\),令 \(t\to-\infty\) 就得到负值,矛盾。(第 7.3.4 节给出更短的证明:\(x^*Ax=\|A^{1/2}x\|^2\)。)

推导拆解(实数情形):

  1. 展开 \(p(t)=(tx+Ax)^TA(tx+Ax)\),得四项:\(t^2x^TAx+t\,x^TA(Ax)+t\,(Ax)^TAx+(Ax)^TA(Ax)\)。
  2. 用对称性 \(A^T=A\):中间两项都等于 \(t\,x^TA^2x\),合起来是 \(2t\,x^TA^2x\);而 \(x^TA^2x=(Ax)^T(Ax)=\|Ax\|_2^2\)。最后一项是 \(x^TA^3x\),是与 \(t\) 无关的常数。
  3. 已知 \(x^TAx=0\),所以 \(t^2\) 项消失,\(p(t)=2t\|Ax\|^2+c\) 是 \(t\) 的一次函数。
  4. 一次函数要对所有 \(t\) 都 \(\ge0\),斜率必须为 0,即 \(\|Ax\|=0\)。 思路:在 \(x\) 附近沿方向 \(Ax\) 稍微挪一点,若 \(Ax\ne0\),二次型就会掉到负数。半正定矩阵不允许这样,所以"零方差方向"必须是 \(A\) 的零空间方向。

量化读法:方差为零的组合,必然对每一项资产的协方差都为零。若 \(w^T\Sigma w=0\),则 \(\Sigma w=0\),组合收益与每一只资产的协方差都是 0——它是一个"无风险组合",也就意味着资产收益之间存在精确线性关系。

由这条引理立刻得到一串推论:

  • Corollary 7.1.7:半正定矩阵正定 ⇔ 非奇异。
  • Observation 7.1.8(*合同保持半正定性,*congruence):\(A\) 半正定,\(C\in M_{n,m}\),则 \(C^*AC\) 半正定,且 \(\operatorname{null}(C^*AC)=\operatorname{null}(AC)\)。若 \(A\) 正定,则 \(C^*AC\) 正定 ⇔ \(C\) 列满秩。量化读法:\(\Sigma\) 是资产协方差,\(C\) 的列是若干组合的权重,\(C^T\Sigma C\) 就是这些组合的协方差矩阵——它当然合法;只要组合权重线性无关且 \(\Sigma\) 正定,组合协方差也正定。因子模型 \(B\Sigma_fB^T\) 也是这种形式。
  • Observation 7.1.9(连续性论证):Hermitian 矩阵 \(A\) 半正定 ⇔ 它是正定矩阵序列的极限(取 \(A_k=A+k^{-1}I\))。许多对正定矩阵成立的结论,借此可以"取极限"推广到半正定矩阵。岭化 \(A+\varepsilon I\) 在数值上就是这一思想。

7.2.4 行列包含性质与"零对角元"

把 \(A\) 分块为 \(\begin{bmatrix}A_{11}&A_{12}\\A_{21}&A_{22}\end{bmatrix}\),\(A_{11}\in M_k\)。若对每个 \(k\) 都有 \(\operatorname{range}A_{12}\subset\operatorname{range}A_{11}\)(等价地:存在 \(X\) 使 \(A_{12}=A_{11}X\)),称 \(A\) 有列包含性质(column inclusion property);行包含类似定义。

Observation 7.1.10。 每个半正定矩阵都有行、列包含性质。特别地,若 \(a_{kk}=0\),则第 \(k\) 行与第 \(k\) 列全为零。

证明思路:若 \(\xi^*A_{11}=0\),令 \(x=[\xi;0]\),则 \(x^*Ax=\xi^*A_{11}\xi=0\),由关键引理 \(x^*A=0\),从而 \(\xi^*A_{12}=0\)。

量化读法:一只资产方差为零(如现金),它与所有资产的协方差都必须为零;协方差矩阵里出现"某资产方差为 0 但协方差非零"一定是数据错误。

推论:\(|a_{ij}|^2\le a_{ii}a_{jj}\)(7.1.P1)。 对 \(2\times2\) 主子矩阵用"行列式非负"即得;正定时严格。由此得到相关矩阵(correlation matrix)(7.1.P3–P4):若 \(A\) 半正定且对角元为正,则

\[C=D^{-1/2}AD^{-1/2}=\Big[\frac{a_{ij}}{\sqrt{a_{ii}a_{jj}}}\Big],\qquad D=\operatorname{diag}(a_{11},\dots,a_{nn})\]

是半正定矩阵(*合同),对角元为 1,所有元素的模不超过 1。正定时 \(|c_{ij}|<1\) 严格成立。这就是"相关系数在 \([-1,1]\) 之间"的矩阵论证明。注意反过来不成立:每个元素都在 \([-1,1]\) 中、对角为 1 的对称矩阵不一定是相关矩阵,实战 1 会给出例子。

推导拆解:

  1. \(|a_{ij}|^2\le a_{ii}a_{jj}\):取出第 \(i,j\) 行列组成的 \(2\times2\) 主子矩阵 \(\begin{bmatrix}a_{ii}&a_{ij}\\a_{ji}&a_{jj}\end{bmatrix}\),它仍半正定(主子矩阵继承),行列式 \(a_{ii}a_{jj}-|a_{ij}|^2\ge0\)。对协方差就是 \(\sigma_{ij}^2\le\sigma_i^2\sigma_j^2\)。
  2. \(D^{-1/2}AD^{-1/2}\) 是把 \(A\) 的第 \(i\) 行、第 \(i\) 列都除以 \(\sqrt{a_{ii}}\)(即波动率 \(\sigma_i\)),所以 \((i,j)\) 元变成 \(\sigma_{ij}/(\sigma_i\sigma_j)=\rho_{ij}\)。它是 \(C^*AC\) 形式(\(C=D^{-1/2}\)),由 7.1.8 仍半正定。 金融直觉:\(D^{-1/2}\) 就是"把每只资产的仓位换算成单位波动率",类似风险平价里先按波动率倒数缩放仓位。缩放不会把一个合法的协方差变成不合法的,反之亦然。所以检验协方差合法与检验对应的相关矩阵合法是同一件事。

推论:\(A,B\) 半正定且 \(A+B=0\) ⇒ \(A=B=0\)(7.1.14)。 这是"\(a,b\ge0\)、\(a+b=0\) ⇒ \(a=b=0\)"的矩阵版。

广义 Schur 补(7.1.P28)。 若 \(A=\begin{bmatrix}B&C\\C^*&D\end{bmatrix}\) 半正定,由列包含可写 \(C=BX\),于是

\[\begin{bmatrix}I&0\\-X^*&I\end{bmatrix}A\begin{bmatrix}I&-X\\0&I\end{bmatrix}=B\oplus(D-X^*BX),\]

\(\tilde S=D-X^*BX\) 与 \(X\) 的选取无关、半正定,且 \(\operatorname{rank}A=\operatorname{rank}B+\operatorname{rank}\tilde S\)。\(B\) 可逆时 \(\tilde S=D-C^*B^{-1}C\) 就是通常的 Schur 补——在正态分布里它是"给定第一组变量后第二组变量的条件协方差"。第 07d 章会系统讨论。

金融直觉:Schur 补就是"对冲后的剩余风险"。设第一组是对冲工具(如股指期货、行业 ETF),协方差 \(B\);第二组是要对冲的持仓,协方差 \(D\);两组之间的协方差是 \(C\)。用对冲工具做最小方差对冲,对冲比率是 \(X=B^{-1}C\)(CFA 里单资产时就是 \(h^*=\rho\,\sigma_S/\sigma_F=\operatorname{Cov}(S,F)/\operatorname{Var}(F)\))。对冲后组合的协方差为

\[D-C^*B^{-1}C .\]
推导:对冲后收益 \(r_2-X^*r_1\) 的方差是 \(D-X^*C-C^*X+X^*BX\),代入 \(X=B^{-1}C\),后三项合并成 \(-C^*B^{-1}C\)。 单资产例子:股票波动率 30%、期货波动率 20%、相关系数 0.8,剩余方差 \(0.09-0.048^2/0.04=0.09-0.0576=0.0324\),剩余波动率 18%,即 \(30\%\times\sqrt{1-0.64}\)。 正文的分块消元式把 \(A\) 拆成"对冲工具的风险 \(B\)"加"对冲不掉的风险 \(\tilde S\)",两者互不相关,秩也就相加。

7.2.5 半正定的"函数"版本:正定函数与核

原书 7.1.P7–P13 引入正定函数(positive definite function):\(f:\mathbf R\to\mathbf C\),对任意点组 \(t_1,\dots,t_m\),矩阵 \([f(t_i-t_j)]\) 都半正定。基本性质:\(f(-t)=\overline{f(t)}\),\(f(0)\ge0\),\(|f(t)|\le f(0)\)。例子:\(e^{ist}\)、\(\cos t\)、\(e^{-t^2}\)、\(e^{-|t|}\)、\(\sin(\alpha t)/(\alpha t)\)、\(1/(1+t^2)\) 都是正定函数;\(\sin t\) 不是。一般地,若 \(g\ge0\) 可积,\(f(t)=\int e^{its}g(s)\,ds\) 是正定函数(Bochner 定理的易证方向)。

量化用途:构造合法的相关结构。若想让期限结构上各点(或时间上的各个观测)的相关系数按距离衰减,令 \(\rho_{ij}=f(t_i-t_j)\),只要 \(f\) 是正定函数,得到的矩阵自动半正定。\(e^{-|t|}\) 对应 AR(1)/OU 过程,\(e^{-t^2}\) 对应高斯核。随手设计的衰减函数(如"距离超过 5 年相关为 0,之内线性衰减")则可能破坏半正定性。

min 矩阵(7.1.P18–P20)。 \(0<\alpha_1<\dots<\alpha_n\) 时 \([\min\{\alpha_i,\alpha_j\}]\) 正定;核 \(K(s,t)=\min\{s,t\}\) 是 Brown 运动的协方差核,满足

\[\iint\min\{s,t\}\overline{f(s)}f(t)\,ds\,dt=\int_0^N\Big|\int_t^Nf(s)\,ds\Big|^2dt\ge0 .\]

在离散时点 \(t_1<\dots<t_n\) 上,Brown 运动的协方差矩阵就是 \([\min\{t_i,t_j\}]\),路径模拟用它的 Cholesky 因子——那恰好是"累加独立增量"的下三角矩阵(见 7.2.P3 与练习 3)。


7.3 等价刻画、平方根与 Cholesky 分解

7.3.1 特征值刻画与几个实用判据

Theorem 7.2.1。 Hermitian 矩阵半正定 ⇔ 全部特征值非负;正定 ⇔ 全部特征值为正。

证明:谱分解 \(A=U\Lambda U^*\),令 \(y=U^*x\),\(x^*Ax=\sum_i\lambda_i|y_i|^2\)。

推导拆解:\(x^*Ax=x^*U\Lambda U^*x=(U^*x)^*\Lambda(U^*x)=y^*\Lambda y\),对角阵的二次型就是 \(\sum_i\lambda_i|y_i|^2\)。 若所有 \(\lambda_i\ge0\),和非负;反过来若某个 \(\lambda_k<0\),取 \(x\) 为对应的特征向量(\(y=e_k\)),二次型等于 \(\lambda_k<0\)。 金融直觉:这是 PCA 风险分解。\(U\) 的列是主成分组合,\(y_i=u_i^Tw\) 是组合 \(w\) 在第 \(i\) 个主成分上的暴露,\(\lambda_i\) 是该主成分的方差。于是

\[\sigma_p^2=\sum_i\lambda_i\,(\text{在主成分 }i\text{ 上的暴露})^2 .\]
主成分之间互不相关,所以组合方差就是各主成分方差按暴露平方加权求和,没有交叉项。只要有一个主成分的"方差" \(\lambda_k<0\),把全部仓位押在那个主成分上,就得到负方差。所以检验半正定最直接的办法就是看最小特征值。

推论:\(A\) 半正定 ⇒ \(A^k\) 半正定(Corollary 7.2.2)。

Corollary 7.2.3(对角占优判据)。 Hermitian、严格对角占优且对角元为正 ⇒ 正定。理由:Geršgorin 圆盘(第 06 章)都在开右半平面,而特征值是实数。这是不算特征值就能确认正定的廉价方法,例如很多"对角加载"后的协方差矩阵满足它。

Corollary 7.2.4(特征多项式系数)。 Hermitian 矩阵半正定 ⇔ 特征多项式的非零系数严格交错变号。理论上有趣,实践中不用。

7.3.2 Sylvester 判据与一个常见误区

Theorem 7.2.5(Sylvester 判据,Sylvester's criterion)。 \(A\) Hermitian。

  • (a) 若所有主子式(共 \(2^n-1\) 个)非负,则 \(A\) 半正定;
  • (b) 若所有顺序(左上角,leading)主子式为正,则 \(A\) 正定(右下角的尾部主子式也可以);
  • (c) 若前 \(n-1\) 个顺序主子式为正且 \(\det A\ge0\),则 \(A\) 半正定。

证明思路:(b) 用归纳和交错定理(第 04a 章):\(A_k=A[\{1..k\}]\) 正定时,\(A_{k+1}\) 至多有一个特征值不为正;而 \(\det A_{k+1}>0\) 是全部特征值之积,所以这个特征值也为正。(a) 用特征多项式 \(p_A(t)=t^{n-r}(t^r-E_1t^{r-1}+\cdots+(-1)^rE_r)\),其中 \(E_k\) 是全部 \(k\) 阶主子式之和,非负的 \(E_k\) 使括号内多项式在 \((-\infty,0)\) 上没有零点。

白话解释:(b) 的归纳是"一次加一只资产"。前 \(k\) 只资产的协方差 \(A_k\) 已知正定(所有特征值为正)。加入第 \(k+1\) 只后,交错定理说新矩阵的特征值与旧的"交错排列",因此最多只有最小的那个可能跑到 0 或以下。行列式等于全部特征值之积,其余特征值都为正,若 \(\det A_{k+1}>0\),最小的那个也只能为正。 两资产例子:\(\begin{bmatrix}\sigma_1^2&\sigma_{12}\\\sigma_{12}&\sigma_2^2\end{bmatrix}\) 正定 ⇔ \(\sigma_1^2>0\) 且 \(\sigma_1^2\sigma_2^2(1-\rho^2)>0\) ⇔ 波动率为正且 \(|\rho|<1\)。 为什么半正定不能只看顺序主子式:顺序主子式为 0 时,"最小特征值为正"的推理断了——行列式为 0 只说明有一个特征值为 0,不能保证后面加入的变量不带来负特征值。下面的 \(\begin{bmatrix}0&0\\0&-1\end{bmatrix}\) 就是第一只"资产"方差为 0,掩盖了第二只的负方差。

常见误区:半正定不能只看顺序主子式。 \(\begin{bmatrix}0&0\\0&-1\end{bmatrix}\) 的顺序主子式是 \(0,0\),都非负,但它有特征值 \(-1\)。要判定半正定,或者检查全部主子式((a)),或者用特征值。实战 1 中的 \(3\times3\) 例子则说明:顺序主子式 \(1,0.04\) 都为正、第三个才变负,只看左上角 \(2\times2\) 会以为一切正常。

数值上,Sylvester 判据几乎从不直接使用(行列式计算不稳定、指数级多的主子式)。实际使用的是:Cholesky 能否完成(判正定,最便宜,约 \(n^3/3\) 次运算)和最小特征值是否 \(\ge-\text{tol}\)(判半正定)。

7.3.3 唯一的半正定 \(k\) 次方根

Theorem 7.2.6。 \(A\) 半正定,\(\operatorname{rank}A=r\),\(k\ge2\) 为整数。

  • (a) 存在唯一的半正定矩阵 \(B\) 使 \(B^k=A\);
  • (b) 存在实系数多项式 \(p\) 使 \(B=p(A)\),所以 \(B\) 与所有和 \(A\) 交换的矩阵交换;
  • (c) \(\operatorname{range}B=\operatorname{range}A\),\(\operatorname{rank}B=\operatorname{rank}A\);
  • (d) \(A\) 实则 \(B\) 实。

构造:\(A=U\Lambda U^*\),令 \(B=U\Lambda^{1/k}U^*\)(每个特征值取非负 \(k\) 次根)。唯一性的关键:取插值多项式 \(p\) 使 \(p(\lambda_i)=\lambda_i^{1/k}\),则 \(B=p(A)\)。若另有半正定 \(C\) 满足 \(C^k=A\),则 \(B=p(C^k)\) 与 \(C\) 交换,两者可同时酉对角化,对角线上非负 \(k\) 次根唯一,故 \(B=C\)。

记 \(A^{1/2}\) 为唯一半正定平方根。例:\(\begin{bmatrix}5&4\\4&5\end{bmatrix}\) 的特征值为 9 和 1,特征向量 \((1,\pm1)/\sqrt2\),所以

\[\begin{bmatrix}5&4\\4&5\end{bmatrix}^{1/2}=\begin{bmatrix}2&1\\1&2\end{bmatrix}.\]

推导拆解:按构造 \(B=U\Lambda^{1/2}U^T\) 逐步算。

  1. \(U=\frac1{\sqrt2}\begin{bmatrix}1&1\\1&-1\end{bmatrix}\),\(\Lambda=\operatorname{diag}(9,1)\),\(\Lambda^{1/2}=\operatorname{diag}(3,1)\)。
  2. \(B=3u_1u_1^T+1\cdot u_2u_2^T=\frac32\begin{bmatrix}1&1\\1&1\end{bmatrix}+\frac12\begin{bmatrix}1&-1\\-1&1\end{bmatrix}=\begin{bmatrix}2&1\\1&2\end{bmatrix}\)。
  3. 验证:\(\begin{bmatrix}2&1\\1&2\end{bmatrix}^2=\begin{bmatrix}5&4\\4&5\end{bmatrix}\)。 读法:矩阵平方根就是"在每个主成分方向上,把方差开方成波动率",再转回原坐标。主成分 \((1,1)/\sqrt2\) 的方差 9 变成 3,主成分 \((1,-1)/\sqrt2\) 的方差 1 保持为 1。 唯一性的直觉:要求平方根也半正定、且与 \(A\) 共用主成分方向,那么每个方向上的"非负波动率"只有一个选择。

\(A\) 正定时 \((A^{1/2})^{-1}=(A^{-1})^{1/2}\),记为 \(A^{-1/2}\)。注意"唯一"指的是半正定平方根:\(\begin{bmatrix}1&1\\0&-1\end{bmatrix}^2=I\),单位阵还有许多非对称、非半正定的平方根(7.2.P8)。

白化(whitening)。 若收益向量 \(x\) 的协方差为 \(\Sigma\succ0\),则 \(\Sigma^{-1/2}x\) 的协方差为 \(I\)。这叫 ZCA 白化(对称白化);用 Cholesky 因子 \(L^{-1}x\) 也能白化,但结果依赖资产排序。对称白化是所有白化变换中"离原变量最近"的一个,这一点要到第 07b 章的 Procrustes 问题才能证明。

推导拆解:\(\operatorname{Cov}(Mx)=M\Sigma M^T\)。取 \(M=\Sigma^{-1/2}\)(对称),得 \(\Sigma^{-1/2}\Sigma\Sigma^{-1/2}=\Sigma^{-1/2}\Sigma^{1/2}\Sigma^{1/2}\Sigma^{-1/2}=I\)。这是标量"标准化" \((x-\mu)/\sigma\) 的矩阵版:除以波动率变成除以"波动率矩阵"。 金融直觉:白化后,每个分量方差为 1、彼此不相关,长度的平方 \(\|\Sigma^{-1/2}x\|^2=x^T\Sigma^{-1}x\) 就是马氏距离。它在风控里的用途是"异常日检测":某天收益向量的马氏距离很大,说明这一天的联合走势在历史相关结构下极不寻常,即使每只资产单独看都不算极端(例如两只平时高度正相关的股票一涨一跌)。湍流指数(turbulence index)就是这个量。

7.3.4 Gram 分解 \(A=B^*B\)

Theorem 7.2.7。 \(A\) Hermitian。

  • (a) \(A\) 半正定 ⇔ 存在 \(B\in M_{m,n}\) 使 \(A=B^*B\);
  • (b) 若 \(A=B^*B\),则 \(Ax=0\iff Bx=0\),故 \(\operatorname{rank}A=\operatorname{rank}B\);
  • (c) 若 \(A=B^*B\),则 \(A\) 正定 ⇔ \(B\) 列满秩。

"⇐"只有一行:\(x^*B^*Bx=\|Bx\|_2^2\ge0\)。"⇒"取 \(B=A^{1/2}\)。于是 \(x^*Ax=\|A^{1/2}x\|_2^2\),关键引理 7.1.6 立刻成立。

量化读法:\(B\) 可以是去均值的收益数据矩阵(\(T\times n\),除以 \(\sqrt{T-1}\)),\(A=B^TB\) 是样本协方差。(b)(c) 说:样本协方差的秩等于数据矩阵的秩;当资产数 \(n\) 大于样本期数 \(T\) 时,\(\operatorname{rank}\le T-1<n\),样本协方差必然奇异——存在"样本内零方差"的组合,最小方差优化器会疯狂利用它们。这就是高维风险模型必须做因子化或收缩的根本原因。

推导拆解:为什么秩不超过 \(T-1\)。

  1. 数据矩阵 \(R\) 是 \(T\times n\),它的秩不超过行数 \(T\)。
  2. 去均值后每一列的和为 0,即 \(\mathbf 1^TR=0\):\(T\) 行之间有一个线性关系,所以秩不超过 \(T-1\)。
  3. 由 (b),\(\operatorname{rank}(R^TR)=\operatorname{rank}R\le T-1\)。 例:60 个月数据、500 只股票,样本协方差的秩至多 59,有 \(500-59=441\) 维的"零方差组合"空间。最小方差优化器会在这 441 维里找出样本内波动率为 0 的组合,样本外它们当然有风险。 金融直觉:\(w\) 在 \(R\) 的零空间里,意思是"在这 60 个月里,组合 \(w\) 每个月的收益都恰好等于它的平均值"——用 500 个自由度去拟合 60 个数据点,总能找到这样一个过度拟合的组合。这和回归中参数比样本多时 \(R^2=1\) 是同一件事。

Corollary 7.2.8:\(A\) 正定 ⇔ \(A\) *合同于单位阵(\(A=B^*IB\),\(B\) 非奇异)。

因子的不唯一性。 若 \(A\) 正定且 \(A=C^*C\)(\(C\) 方阵),则存在酉矩阵 \(V\) 使 \(C=VA^{1/2}\)。证明:\((CA^{-1/2})^*(CA^{-1/2})=A^{-1/2}AA^{-1/2}=I\)。更一般的结论在第 07b 章(Theorem 7.3.11):\(A^*A=B^*B\) 当且仅当 \(B=VA\),\(V\) 列正交。同一个协方差矩阵的"平方根因子"彼此只差一个旋转——这正是因子模型"旋转不定性"的数学本质:载荷矩阵 \(B\) 与 \(BV\)(\(V\) 正交)给出同样的 \(BB^T\)。

7.3.5 Cholesky 分解

Corollary 7.2.9(Cholesky 分解,Cholesky factorization)。 Hermitian 矩阵 \(A\) 半正定(正定)⇔ 存在对角元非负(为正)的下三角矩阵 \(L\) 使

\[A=LL^* .\]

\(A\) 正定时 \(L\) 唯一;\(A\) 实时 \(L\) 可取实。

证明:对 \(A^{1/2}\) 做 QR 分解(第 02a 章)\(A^{1/2}=QR\),\(R\) 上三角、对角非负。则 \(A=A^{1/2}A^{1/2}=(QR)^*(QR)=R^*R\),令 \(L=R^*\)。反过来,第 07b 章(7.3.P34)会用 Cholesky 推出 QR:\(X^TX=R^TR\),再由 7.3.11 得 \(X=QR\)。二者本是同一件事的两面。

计算上,Cholesky 由逐列公式给出(实情形):

\[\ell_{jj}=\Big(a_{jj}-\sum_{k<j}\ell_{jk}^2\Big)^{1/2},\qquad \ell_{ij}=\frac1{\ell_{jj}}\Big(a_{ij}-\sum_{k<j}\ell_{ik}\ell_{jk}\Big),\ i>j .\]

根号里出现负数或零,说明矩阵不是正定的——这就是"Cholesky 成功与否"作为正定检验的原理。它的统计含义也很清楚:\(\ell_{jj}^2\) 是第 \(j\) 个变量对前 \(j-1\) 个变量做总体回归后的残差方差。

推导拆解:两资产情形,设 \(L=\begin{bmatrix}\ell_{11}&0\\\ell_{21}&\ell_{22}\end{bmatrix}\),展开 \(LL^T=\begin{bmatrix}\ell_{11}^2&\ell_{11}\ell_{21}\\\ell_{11}\ell_{21}&\ell_{21}^2+\ell_{22}^2\end{bmatrix}\),与 \(\Sigma=\begin{bmatrix}\sigma_1^2&\rho\sigma_1\sigma_2\\\rho\sigma_1\sigma_2&\sigma_2^2\end{bmatrix}\) 逐元素对比:

  1. \((1,1)\) 元:\(\ell_{11}=\sigma_1\)。
  2. \((2,1)\) 元:\(\ell_{21}=\rho\sigma_1\sigma_2/\sigma_1=\rho\sigma_2\)。
  3. \((2,2)\) 元:\(\ell_{22}=\sqrt{\sigma_2^2-\rho^2\sigma_2^2}=\sigma_2\sqrt{1-\rho^2}\)。 一般公式就是按"先第 1 列、再第 2 列……"的顺序做同样的对比,每次只有一个新未知数。 金融直觉:于是 \(x=Lz\) 写成
    \[x_1=\sigma_1z_1,\qquad x_2=\rho\sigma_2z_1+\sigma_2\sqrt{1-\rho^2}\,z_2 .\]
    第二只资产 = 与第一只共享的部分(系统部分,载荷 \(\rho\sigma_2\))+ 独有部分(残差波动率 \(\sigma_2\sqrt{1-\rho^2}\))。这正是单指数模型 / CAPM 的分解:\(\rho\sigma_2/\sigma_1\) 是 beta,\(\sigma_2^2(1-\rho^2)\) 是特质方差,\(\rho^2\) 是 \(R^2\)。多资产时,Cholesky 依次用前面所有资产去回归下一只,所以结果依赖资产的排列顺序。 根号里出现负数,意味着"残差方差为负",即 \(R^2>1\)——这不可能,所以矩阵不合法。

Hadamard 不等式(7.2.P5)。 由 \(a_{ii}=\sum_{k<i}|\ell_{ik}|^2+\ell_{ii}^2\ge\ell_{ii}^2\) 与 \(\det A=\prod\ell_{ii}^2\) 得

\[\det A\le a_{11}a_{22}\cdots a_{nn},\]

等号当且仅当 \(A\) 是对角阵。原书例:\(\begin{bmatrix}4&2\\2&4\end{bmatrix}=L_1L_1^*\),\(L_1=\begin{bmatrix}2&0\\1&\sqrt3\end{bmatrix}\),\(4\cdot4\ge2^2(\sqrt3)^2=12\)。统计含义:"广义方差" \(\det\Sigma\) 不超过各方差之积,相关性越强、行列式越小;相关矩阵的行列式 \(\le1\),等号当且仅当两两不相关。第 07d 章还会给出这个不等式的一整个家族。

7.3.6 Gram 矩阵:半正定矩阵的几何面孔

内积空间中向量 \(v_1,\dots,v_m\) 的 Gram 矩阵(Gram matrix) 是 \(G=[\langle v_j,v_i\rangle]\)。

Theorem 7.2.10。 (a) \(G\) 半正定;(b) \(G\) 正定 ⇔ \(v_1,\dots,v_m\) 线性无关;(c) \(\operatorname{rank}G=\dim\operatorname{span}\{v_1,\dots,v_m\}\)。

核心等式:

\[x^*Gx=\Big\|\sum_ix_iv_i\Big\|^2\ge0 .\]

反过来,把 \(A^{1/2}\) 按列写成 \([v_1\cdots v_n]\),\(A=[v_i^*v_j]\)——每个半正定矩阵都是 Gram 矩阵。

金融直觉:把每只资产的去均值日收益序列看成一个 \(T\) 维向量(\(T\) 天,每天一个分量)。两个向量的内积(除以 \(T-1\))是协方差,长度是波动率,夹角余弦是相关系数。于是:

  • 相关系数 0.9 ⇔ 夹角约 \(26^\circ\);相关系数 0 ⇔ 垂直;相关系数 \(-1\) ⇔ 反向。
  • 组合收益序列 \(\sum w_iv_i\) 是这些向量的加权和,它的长度平方就是组合方差——\(x^*Gx\) 的公式。
  • 三角形式的约束:A 与 B 夹角 \(\theta_{AB}\)、B 与 C 夹角 \(\theta_{BC}\),则 \(\theta_{AC}\le\theta_{AB}+\theta_{BC}\)。相关系数 0.98、0.97 对应约 \(11^\circ\)、\(14^\circ\),所以 A 与 C 的夹角不超过约 \(25^\circ\),相关系数至少约 0.90,绝不可能是 \(-0.93\)。这就是实战 1 那个矩阵"不合法"的几何原因。

这是理解协方差矩阵最好的角度:在随机变量空间 \(L^2\) 中用内积 \(\langle X,Y\rangle=E[(X-EX)(Y-EY)]\),协方差矩阵就是去均值收益的 Gram 矩阵;方差是长度的平方,相关系数是夹角的余弦;秩是收益张成空间的维数;奇异 ⇔ 收益线性相关 ⇔ 存在零方差组合。"相关系数 \(\rho_{AB}=0.98\)、\(\rho_{BC}=0.97\)、\(\rho_{AC}=-0.93\)"之所以不可能,用几何说就是:三个单位向量不可能 A 与 B 夹角很小、B 与 C 夹角很小、而 A 与 C 却几乎反向。

7.3.7 两个在量化中常见的显式例子

Markov 矩阵(AR(1) 相关矩阵,7.2.P12–P13)。 \(M(r,n)=[r^{|i-j|}]\) 是平稳 AR(1) 过程在 \(n\) 个连续时点上的相关矩阵,也常用作"按距离衰减"的期限结构相关矩阵。原书给出:

\[\det M(r,n)=(1-r^2)^{n-1},\]

所以 \(|r|<1\) 时 \(M\) 正定(顺序主子式全为正),从而 \(e^{-|t|}\) 是正定函数(令 \(r=e^{-1/m}\) 取极限)。它的逆是对称三对角阵:

\[(1-r^2)M^{-1}=\begin{bmatrix}1&-r&&&\\-r&1+r^2&-r&&\\&\ddots&\ddots&\ddots&\\&&-r&1+r^2&-r\\&&&-r&1\end{bmatrix}.\]

逆矩阵三对角对应 AR(1) 的 Markov 性:给定相邻两点,某点与其余点条件独立(精度矩阵的零元 = 条件独立,第 03 册)。

Gauss 矩阵(7.2.P14)。 \(G(r,n)=[r^{(i-j)^2}]\),\(\det G=\prod_{k=1}^{n-1}(1-r^{2k})^{n-k}\),\(|r|<1\) 时正定,从而 \(e^{-t^2}\) 是正定函数。

7.3.8 7.2 节习题中值得记住的结论

  • 7.2.P15 秩一扰动的交错:\(A\) 半正定,\(A+zz^*\) 的特征值与 \(A\) 的特征值交错。给协方差矩阵加一个"市场因子"项,每个特征值只会上移,且移动不跨过下一个特征值。
  • 7.2.P16 收缩降低条件数:\(A\) 正定且不是数量阵,则 \(\kappa(A+tI)\) 在 \(t\ge0\) 上严格递减且凸。岭回归、协方差"对角加载"的数学依据(实战 4 数值验证)。
  • 7.2.P19 精度矩阵的对角元:\(A\) 正定、\(\|x\|=1\) 时 \((x^*Ax)^{-1}\le x^*A^{-1}x\)。对相关矩阵 \(C\),\((C^{-1})_{ii}\ge1\),等号当且仅当第 \(i\) 个变量与其余变量都不相关。\((C^{-1})_{ii}=1/(1-R_i^2)\) 正是回归中的方差膨胀因子(VIF),\(R_i^2\) 是第 \(i\) 个变量对其余变量回归的决定系数。
  • 7.2.P21 乘积的特征值:\(A,B\) 半正定时 \(AB\) 一般不对称,但它与 \(A^{1/2}BA^{1/2}\) 有相同的(实、非负)特征值。广义特征值问题 \(\Sigma_1w=\lambda\Sigma_2w\) 的特征值因此都是实数(第 07c 章)。
  • 7.2.P23 矩阵几何平均:\(G(A,B)=A^{1/2}(A^{-1/2}BA^{-1/2})^{1/2}A^{1/2}\) 是 Riccati 方程 \(XA^{-1}X=B\) 的唯一正定解,且 \(G(A,B)=G(B,A)\)。在协方差矩阵的黎曼几何(例如平均多个时期的协方差)中会用到。
  • 7.2.P28–P29 相关矩阵的谱:\(n\times n\) 相关矩阵的特征值都在 \([0,n]\) 中,\(J_n\)(全 1 阵)说明上界可达。相关矩阵的最大特征值除以 \(n\) 常被用作"市场一致性/吸收比率"指标,它的取值范围就是 \([1/n,1]\)。
  • 7.2.P26:\(A,B\) 半正定时 \(0\le\operatorname{tr}(AB)\le\lambda_{\max}(A)\operatorname{tr}B\)。

量子力学中的密度矩阵与不确定性原理(7.2.P34–P36)是本节习题的另一条线索:密度矩阵是迹为 1 的半正定矩阵,协方差 \(\operatorname{Cov}_R(X,Y)\) 是半内积,Cauchy–Schwarz 不等式给出 Heisenberg–Schrödinger 不确定性原理。与量化无直接关系,有兴趣可回原书 p.446–448。


量化实战

实战 1:相关矩阵为什么会"不合法",以及怎样检验

场景:风险系统按成对删除(pairwise deletion)估计相关矩阵——每两只资产只用它们共同有数据的日期。资产停牌、上市时间不同、数据源断档时,这样做很常见。问题在于:不同元素用的是不同时段的数据,拼出来的矩阵不再是任何一个随机向量的协方差,半正定性没有保证。

import numpy as np
import pandas as pd

rng = np.random.default_rng(0)

# ---------- 1. 成对删除(pairwise)估计的相关矩阵可能不是半正定 ----------
# 三段行情,三只资产各缺一段(停牌/上市较晚/数据源断档),三段的相关结构不同
T = 90
s1, s2, s3 = slice(0, 30), slice(30, 60), slice(60, 90)
z = rng.normal(0, 0.01, (T, 3))
X = np.empty((T, 3))
X[s1, 0] = z[s1, 0];  X[s1, 1] = z[s1, 0] + 0.3 * z[s1, 1]     # 第 1 段:A≈B
X[s2, 1] = z[s2, 0];  X[s2, 2] = z[s2, 0] + 0.3 * z[s2, 1]     # 第 2 段:B≈C
X[s3, 0] = z[s3, 0];  X[s3, 2] = -z[s3, 0] + 0.3 * z[s3, 1]    # 第 3 段:A≈-C
X[s2, 0] = np.nan; X[s3, 1] = np.nan; X[s1, 2] = np.nan
df = pd.DataFrame(X, columns=["A", "B", "C"])
C = df.corr().values                                  # pandas 默认成对删除
print("成对相关矩阵:\n", np.round(C, 3))
print("特征值:", np.round(np.linalg.eigvalsh(C), 4))

# 检验 1:顺序主子式
lead = [np.linalg.det(C[:k, :k]) for k in range(1, 4)]
print("顺序主子式:", np.round(lead, 4))
# 检验 2:Cholesky 是否成功(最便宜的正定检验)
try:
    np.linalg.cholesky(C); print("Cholesky 成功 → 正定")
except np.linalg.LinAlgError:
    print("Cholesky 失败 → 不是正定")
# 用 x = 最小特征向量 构造"负方差组合"
w, V = np.linalg.eigh(C)
x = V[:, 0]
print("组合权重 x =", np.round(x, 3), "  x^T C x = %.4f  ('方差'为负)" % (x @ C @ x))

# ---------- 2. 顺序主子式非负不能推出半正定 ----------
B = np.array([[0., 0.], [0., -1.]])
print("\nB 的顺序主子式:", B[0, 0], np.linalg.det(B), "  特征值:", np.linalg.eigvalsh(B))

关键输出:

成对相关矩阵:
 [[ 1.     0.979 -0.933]
 [ 0.979  1.     0.973]
 [-0.933  0.973  1.   ]]
特征值: [-0.9235  1.9327  1.9908]
顺序主子式: [ 1.      0.0408 -3.5533]
Cholesky 失败 → 不是正定
组合权重 x = [ 0.575 -0.583  0.574]   x^T C x = -0.9235  ('方差'为负)

B 的顺序主子式: 0.0 0.0   特征值: [-1.  0.]

读法:

  1. 每个元素都在 \([-1,1]\) 内、对角为 1,但矩阵有特征值 \(-0.92\)。用 7.3.6 节的几何语言,三个单位向量不可能满足"A≈B、B≈C、A≈−C"。
  2. 若把这个矩阵交给最小方差优化器,它会发现组合 \(x\approx(0.58,-0.58,0.57)\) 的"方差"为负——优化问题无下界,结果是巨大的杠杆和毫无意义的权重。
  3. 检验顺序:先试 Cholesky(失败即非正定);要区分"半正定但奇异"和"不定",再看最小特征值是否 \(\ge-\text{tol}\)。不要用顺序主子式判半正定(例 2)。

实战 2:用 Cholesky 生成相关随机数

场景:蒙特卡罗 VaR、期权组合情景、策略压力测试都需要从 \(N(0,\Sigma)\) 抽样。做法是:抽独立标准正态 \(z\),令 \(x=Lz\),则 \(\operatorname{Cov}(x)=L\,I\,L^T=\Sigma\)。任何满足 \(FF^T=\Sigma\) 的因子 \(F\) 都可以;Cholesky 最便宜,对称平方根最"对称",奇异时用特征分解。

import numpy as np
from scipy.linalg import sqrtm, ldl

rng = np.random.default_rng(1)

# ---------- 1. 用 Cholesky 生成相关正态收益 ----------
vol = np.array([0.20, 0.25, 0.30, 0.15]) / np.sqrt(252)          # 日波动率
Rho = np.array([[1.0, 0.6, 0.3, 0.1],
                [0.6, 1.0, 0.5, 0.2],
                [0.3, 0.5, 1.0, 0.4],
                [0.1, 0.2, 0.4, 1.0]])
Sigma = np.outer(vol, vol) * Rho
L = np.linalg.cholesky(Sigma)                  # Sigma = L L^T,L 下三角、对角为正
N = 200_000
Z = rng.standard_normal((N, 4))                # 独立标准正态,行 = 一个情景
X = Z @ L.T                                    # 每行 x = L z,Cov(x) = L I L^T = Sigma
print("L =\n", np.round(L * np.sqrt(252), 4), "(年化)")
print("样本相关与目标相关的最大偏差: %.4f" % np.abs(np.corrcoef(X.T) - Rho).max())

# ---------- 2. 因子不唯一:L 与对称平方根 Sigma^{1/2} 只差一个正交矩阵 ----------
S = sqrtm(Sigma).real                          # 唯一的半正定平方根
Q = np.linalg.solve(S, L)                      # L = S Q  ⇒  Q = S^{-1} L
print("Q^T Q = I ? ", np.allclose(Q.T @ Q, np.eye(4)))
X2 = Z @ S.T                                   # 另一种因子:同一协方差、不同情景
print("两种因子情景的相关矩阵差: %.4f;  同一 z 生成的情景逐个相同吗? %s"
      % (np.abs(np.corrcoef(X2.T) - np.corrcoef(X.T)).max(), np.allclose(X, X2)))

# ---------- 3. 半正定但奇异:Cholesky 失败,用特征分解或 LDL ----------
B = rng.normal(size=(4, 2))                     # 2 因子、无特质风险 → 秩 2
Sig2 = B @ B.T
try:
    np.linalg.cholesky(Sig2)
except np.linalg.LinAlgError as e:
    print("\n秩 2 协方差的 Cholesky:", e)
w, V = np.linalg.eigh(Sig2)
F = V * np.sqrt(np.clip(w, 0, None))            # Sig2 = F F^T,F = V Λ^{1/2}
print("特征值:", np.round(w, 6))
print("F F^T 还原误差: %.2e" % np.abs(F @ F.T - Sig2).max())
lu, d, perm = ldl(Sig2)                          # 带主元的 LDL^T 也能处理
print("LDL^T 的 D 对角:", np.round(np.diag(d), 6))

# ---------- 4. 2×2 平方根的手算例子(原书 7.2.6 后练习)----------
A = np.array([[5., 4.], [4., 5.]])
print("\n[[5,4],[4,5]]^{1/2} =\n", np.round(sqrtm(A).real, 10))

关键输出:

L =
 [[0.2    0.     0.     0.    ]
 [0.15   0.2    0.     0.    ]
 [0.09   0.12   0.2598 0.    ]
 [0.015  0.0262 0.052  0.1374]] (年化)
样本相关与目标相关的最大偏差: 0.0022
Q^T Q = I ?  True
两种因子情景的相关矩阵差: 0.0007;  同一 z 生成的情景逐个相同吗? False

秩 2 协方差的 Cholesky: Matrix is not positive definite
特征值: [-0.        0.        4.260292  7.642376]
F F^T 还原误差: 1.11e-15
LDL^T 的 D 对角: [ 5.940246  2.114703 -0.        0.      ]

[[5,4],[4,5]]^{1/2} =
 [[2. 1.]
 [1. 2.]]

读法:

  1. \(L\) 的第一列就是各资产与资产 1 的"共同部分":资产 2 的年化载荷 \(0.15=0.6\times0.25\);\(\ell_{22}=0.2=0.25\sqrt{1-0.6^2}\) 是资产 2 去掉资产 1 后剩余的波动率。Cholesky 是"按顺序逐个正交化",第 \(j\) 个随机数只用于解释第 \(j\) 个资产里前面资产解释不了的部分。
  2. \(L=\Sigma^{1/2}Q\),\(Q\) 正交:两种因子生成的情景分布相同(相关矩阵只差抽样误差),但同一组 \(z\) 映射到的具体情景不同。做准蒙特卡罗或对偶变量/重要性抽样时,因子的选择会影响方差缩减效果;做情景归因("第 1 个随机数代表什么")时,Cholesky 依赖资产排序,PCA 因子 \(V\Lambda^{1/2}\) 则把第 1 个随机数对应到第一主成分。
  3. 协方差奇异(纯因子模型、资产数大于样本数)时 Cholesky 在第一个零主元处失败。用特征分解 \(F=V\Lambda^{1/2}\)(截掉数值上 \(-0\) 的特征值)或带主元的 LDL 即可。奇异协方差的情景只落在一个低维子空间里,这在模拟中是正确的行为。

实战 3:修复非半正定的相关矩阵——最近相关矩阵

场景:风控在压力测试中手工把某些相关系数改成"危机值"(例如股票间相关提高到 0.95),或者成对估计、不同频率拼接、专家判断混合得到的相关矩阵不半正定。需要找一个合法的相关矩阵,尽量少改动原矩阵。

承接说明:第 05a 章实战已从范数角度做过同一件事(截断负特征值 + Higham 交替投影,原书 5.2.P14)。本节从半正定矩阵的角度给出截断最优性的证明,并补充截断后重新缩放与最近相关矩阵的比较,两处代码可对照阅读。

最近半正定矩阵。 在 Frobenius 范数下,离 Hermitian 矩阵 \(A=U\Lambda U^*\) 最近的半正定矩阵是把负特征值截成 0:\(A_+=U\Lambda_+U^*\)。证明只需本章工具:对任意半正定 \(X\),令 \(Y=U^*XU\)(仍半正定,所以 \(y_{ii}\ge0\)),Frobenius 范数酉不变,

\[\|A-X\|_F^2=\|\Lambda-Y\|_F^2\ge\sum_i(\lambda_i-y_{ii})^2\ge\sum_{\lambda_i<0}\lambda_i^2=\|A-A_+\|_F^2 .\]

第一个不等号丢掉了非对角元,第二个用了 \(y_{ii}\ge0\)。(第 07b 章会把这类"截断特征值/奇异值"的最优性推广到所有酉不变范数。)

最近相关矩阵。 截断后对角线不再是 1。要求"半正定且对角为 1",可行集是半正定锥与仿射集 \(\{X:x_{ii}=1\}\) 的交,两者都是凸集。Higham (2002) 的做法是在两个集合上交替投影,并加 Dykstra 修正以保证收敛到真正的最近点(不加修正只能收敛到交集中的某个点)。

import numpy as np

def nearest_psd(A):
    """Frobenius 范数下最近的半正定矩阵:把负特征值截成 0。"""
    w, V = np.linalg.eigh((A + A.T) / 2)
    return (V * np.clip(w, 0, None)) @ V.T

def clip_and_rescale(A, eps=0.0):
    """业界常用的快速修补:截断特征值后再把对角线缩放回 1(不是最近的)。"""
    w, V = np.linalg.eigh(A)
    X = (V * np.clip(w, eps, None)) @ V.T
    d = 1 / np.sqrt(np.diag(X))
    return X * np.outer(d, d)

def nearest_corr(A, tol=1e-10, maxit=1000):
    """Higham (2002) 交替投影 + Dykstra 修正:求 Frobenius 范数下最近的相关矩阵。"""
    Y = A.copy(); dS = np.zeros_like(A)
    for k in range(maxit):
        R = Y - dS
        X = nearest_psd(R)                 # 投影到半正定锥
        dS = X - R                         # Dykstra 修正量
        Y_new = X.copy(); np.fill_diagonal(Y_new, 1.0)   # 投影到"单位对角"仿射集
        if np.linalg.norm(Y_new - Y, 'fro') < tol * np.linalg.norm(Y, 'fro'):
            return Y_new, k + 1
        Y = Y_new
    return Y, maxit

# 压力测试:风控把若干相关系数手工改成"危机值",矩阵不再半正定
rng = np.random.default_rng(3)
F = rng.normal(size=(8, 2)); D = np.diag(rng.uniform(0.5, 1.0, 8))
S = F @ F.T + D
d = 1 / np.sqrt(np.diag(S)); C0 = S * np.outer(d, d)     # 一个正常的相关矩阵
C = C0.copy()
for (i, j, v) in [(0, 1, 0.95), (0, 2, 0.95), (1, 2, -0.30), (3, 4, -0.90), (3, 5, 0.90), (4, 5, 0.90)]:
    C[i, j] = C[j, i] = v
print("压力相关矩阵的最小特征值: %.4f" % np.linalg.eigvalsh(C)[0])

P = nearest_psd(C)
print("最近半正定矩阵: 距离 %.4f, 对角线范围 [%.3f, %.3f](已不是相关矩阵)"
      % (np.linalg.norm(C - P), P.diagonal().min(), P.diagonal().max()))
Q1 = clip_and_rescale(C)
Q2, it = nearest_corr(C)
for name, Q in [("截断+缩放", Q1), ("Higham 最近相关矩阵", Q2)]:
    print("%-18s 距离 %.4f  最小特征值 %.2e  对角线=1? %s"
          % (name, np.linalg.norm(C - Q), np.linalg.eigvalsh(Q)[0], np.allclose(np.diag(Q), 1)))
print("Higham 迭代次数:", it)
print("被改动的 6 个元素 修复前 → 修复后:")
for (i, j) in [(0, 1), (0, 2), (1, 2), (3, 4), (3, 5), (4, 5)]:
    print("  (%d,%d): %+.3f → %+.3f" % (i, j, C[i, j], Q2[i, j]))
print("未改动元素的最大变化: %.3f" % np.abs((Q2 - C)[C == C0]).max())

关键输出:

压力相关矩阵的最小特征值: -1.4161
最近半正定矩阵: 距离 1.4782, 对角线范围 [1.007, 1.404](已不是相关矩阵)
截断+缩放              距离 1.7837  最小特征值 -4.06e-16  对角线=1? True
Higham 最近相关矩阵      距离 1.7559  最小特征值 -1.67e-10  对角线=1? True
Higham 迭代次数: 28
被改动的 6 个元素 修复前 → 修复后:
  (0,1): +0.950 → +0.721
  (0,2): +0.950 → +0.560
  (1,2): -0.300 → -0.112
  (3,4): -0.900 → -0.335
  (3,5): +0.900 → +0.420
  (4,5): +0.900 → +0.394
未改动元素的最大变化: 0.372

读法:

  1. 手工设定的"0 与 1、0 与 2 高度正相关,1 与 2 却负相关"在几何上不可能,修复后三者被拉到一个自洽的结构。"3、4 强负相关,而 3 与 5、4 与 5 都强正相关"同样不可能,修复幅度更大。这本身就是有价值的风控信息:压力情景自相矛盾。
  2. 截断+缩放快且简单,但不是最近的(距离 1.78 > 1.76);Higham 方法给出 Frobenius 意义下的最近相关矩阵。两者差别在大型矩阵、只有少数元素出问题时会更明显。
  3. Higham 结果的最小特征值是 \(-1.7\times10^{-10}\),这是迭代停止容差造成的。下游要做 Cholesky 时,常再把特征值下限设为一个小正数(如 \(10^{-8}\))并重新归一化对角线。
  4. 未改动的元素也变了(最大变化 0.37):Frobenius 范数同等对待所有元素。若希望"可信的元素少动",可以用加权 Frobenius 范数(Higham 原文给出了 \(W\)-加权版本),或把某些元素固定,这时问题变成带约束的半定规划。
  5. 另一种常见修复是收缩:\(\hat C=(1-\delta)C+\delta I\)。由凸锥性质,只要 \(\delta\ge-\lambda_{\min}/(1-\lambda_{\min})\) 就能得到半正定矩阵,但它对所有相关系数一视同仁地打折。

实战 4:AR(1) 相关矩阵、VIF 与对角加载

import numpy as np
from scipy.linalg import toeplitz

# ---------- 1. AR(1) 相关矩阵 M(r,n) = [r^{|i-j|}](原书 7.2.P12–P13) ----------
r, n = 0.7, 6
M = toeplitz(r ** np.arange(n))
print("det M = %.6f,  (1-r^2)^(n-1) = %.6f" % (np.linalg.det(M), (1 - r**2) ** (n - 1)))
Minv = np.linalg.inv(M)
print("(1-r^2) M^{-1} =\n", np.round((1 - r**2) * Minv, 6) + 0.0)

# ---------- 2. 精度矩阵对角元 = 方差膨胀因子 VIF = 1/(1-R_i^2) ≥ 1 ----------
for i in [0, 2]:
    others = [j for j in range(n) if j != i]
    # 用相关矩阵算第 i 个变量对其余变量回归的总体 R^2
    b = np.linalg.solve(M[np.ix_(others, others)], M[others, i])
    R2 = M[i, others] @ b
    print("变量 %d: (M^{-1})_ii = %.4f,  1/(1-R^2) = %.4f" % (i, Minv[i, i], 1 / (1 - R2)))

# ---------- 3. Hadamard 不等式:det 是"去相关后剩下的体积" ----------
print("det M = %.4f ≤ 对角元乘积 = 1" % np.linalg.det(M))

# ---------- 4. 收缩 A + tI 单调降低条件数(原书 7.2.P16)----------
rng = np.random.default_rng(0)
T, p = 120, 80                                 # 样本短、资产多:样本协方差病态
R = rng.standard_normal((T, p)) @ np.linalg.cholesky(toeplitz(0.5 ** np.arange(p))).T
S = np.cov(R.T)
for t in [0, 0.01, 0.05, 0.2, 1.0]:
    print("t = %-5g  cond(S + tI) = %10.1f" % (t, np.linalg.cond(S + t * np.eye(p))))

关键输出:

det M = 0.034503,  (1-r^2)^(n-1) = 0.034503
(1-r^2) M^{-1} =
 [[ 1.   -0.7   0.    0.    0.    0.  ]
 [-0.7   1.49 -0.7   0.    0.    0.  ]
 [ 0.   -0.7   1.49 -0.7   0.    0.  ]
 [ 0.    0.   -0.7   1.49 -0.7   0.  ]
 [ 0.    0.    0.   -0.7   1.49 -0.7 ]
 [ 0.    0.    0.    0.   -0.7   1.  ]]
变量 0: (M^{-1})_ii = 1.9608,  1/(1-R^2) = 1.9608
变量 2: (M^{-1})_ii = 2.9216,  1/(1-R^2) = 2.9216
det M = 0.0345 ≤ 对角元乘积 = 1
t = 0      cond(S + tI) =      193.0
t = 0.01   cond(S + tI) =      140.0
t = 0.05   cond(S + tI) =       67.1
t = 0.2    cond(S + tI) =       23.3
t = 1      cond(S + tI) =        5.9

读法:

  1. 行列式公式与三对角逆(主对角 \(1,1+r^2,\dots,1+r^2,1\),次对角 \(-r\))精确成立。端点变量只有一个邻居,VIF \(=1/(1-r^2)=1.96\);中间变量有两个邻居,VIF \(=(1+r^2)/(1-r^2)=2.92\)。
  2. 精度矩阵的对角元就是 VIF,可以一次求逆得到所有因子的 VIF,不必逐个回归。因子库中 VIF 很大的因子,几乎能被其他因子线性表示,回归系数方差会被放大同样的倍数。
  3. 样本数 120、资产数 80 时样本协方差的条件数约 193,加上 \(tI\) 后单调下降。条件数越大,\(\Sigma^{-1}\mu\) 型的最优权重对 \(\mu\) 的估计误差越敏感;第 07b 章的 Kantorovich 不等式会把"条件数大"的几何后果说得更具体。

本章小结

半正定矩阵是"非负数"的矩阵版本:二次型 \(x^*Ax\ge0\)。它们来自 Hessian、协方差、矩序列、差分格式和核函数,量化里最重要的来源是协方差与相关矩阵,二次型就是组合方差。半正定性有一整套等价刻画——特征值非负、全部主子式非负、\(A=B^*B\)、存在 Cholesky 分解、是 Gram 矩阵——但"顺序主子式非负"不在其中。关键引理 \(x^*Ax=0\iff Ax=0\) 说明零方差组合与所有资产不相关,由此得到零对角元所在行列为零、行列包含性质和相关系数不超过 1。每个半正定矩阵有唯一的半正定 \(k\) 次方根,它是 \(A\) 的多项式;正定矩阵的任意两个"平方根因子"只差一个酉(正交)矩阵,这是因子旋转不定性的来源。Cholesky 分解 \(A=LL^*\) 是判定正定、生成相关随机数和证明 Hadamard 不等式的通用工具。把协方差矩阵看成收益向量的 Gram 矩阵,能直观解释为什么任意拼凑的"相关矩阵"可能不合法;修复办法是投影到半正定锥(截断负特征值)或求最近相关矩阵。

概念/公式 表达式 用途
半正定/正定 \(x^*Ax\ge0\) / \(>0\) 协方差合法性、凸性
特征值刻画 \(\lambda_i\ge0\) / \(>0\) 最常用的数值检验
Sylvester 判据 正定 ⇔ 顺序主子式全正;半正定需全部主子式 理论判据,注意误区
关键引理 \(x^*Ax=0\iff Ax=0\) 零方差组合与所有资产不相关
相关系数界 \(\vert a_{ij}\vert ^2\le a_{ii}a_{jj}\) \(\vert \rho\vert \le1\)
合同保持 \(C^*AC\succeq0\) 组合/因子协方差合法
平方根 \(A^{1/2}=U\Lambda^{1/2}U^*\),唯一、是 \(A\) 的多项式 白化、矩阵几何平均
Gram 分解 \(A=B^*B\),\(\operatorname{rank}A=\operatorname{rank}B\) 样本协方差的秩
Cholesky \(A=LL^*\),正定时唯一 模拟、判定正定、解方程
因子不唯一 \(C^*C=A\Rightarrow C=VA^{1/2}\) 因子旋转不定性
Gram 矩阵 \(x^*Gx=|\sum x_iv_i|^2\) 协方差的几何意义
Hadamard 不等式 \(\det A\le\prod a_{ii}\) 广义方差上界
AR(1) 相关矩阵 \(\det=(1-r^2)^{n-1}\),逆三对角 时间相关、期限结构
VIF \((C^{-1})_{ii}=1/(1-R_i^2)\ge1\) 共线性诊断
最近半正定矩阵 截断负特征值 修复协方差
最近相关矩阵 交替投影 + Dykstra 修复相关矩阵

练习

基础

  1. 判断下列矩阵是否半正定、是否正定:\(\begin{bmatrix}2&-1\\-1&2\end{bmatrix}\),\(\begin{bmatrix}1&2\\2&1\end{bmatrix}\),\(\begin{bmatrix}1&1&0\\1&1&0\\0&0&0\end{bmatrix}\)。 答案要点:第一个特征值 1、3,正定;第二个特征值 \(-1\)、3,不定;第三个特征值 0、0、2,半正定不正定。
  2. 证明:若 \(\Sigma\) 半正定且 \(\sigma_{11}=0\),则 \(\sigma_{1j}=0\) 对所有 \(j\) 成立。给出它在组合管理中的含义。 提示:\(2\times2\) 主子式 \(\sigma_{11}\sigma_{jj}-\sigma_{1j}^2\ge0\)。含义:零方差资产(现金)与任何资产协方差为零。
  3. 证明 \([\min\{i,j\}]_{i,j=1}^n=R^TR\),\(R\) 为全 1 上三角阵,从而它正定;说明这对应 Brown 运动"累加独立增量"的模拟方法。 提示:\((R^TR)_{ij}=\#\{k:k\le i,k\le j\}\)。\(R^T\) 就是 Cholesky 因子,\(W_{t_i}=\sum_{k\le i}\Delta W_k\)。
  4. 求 \(\begin{bmatrix}4&2\\2&4\end{bmatrix}\) 的 Cholesky 因子与半正定平方根,并验证二者满足 \(L=A^{1/2}Q\),\(Q\) 为正交阵。 答案要点:\(L=\begin{bmatrix}2&0\\1&\sqrt3\end{bmatrix}\);\(A^{1/2}=\frac12\begin{bmatrix}\sqrt6+\sqrt2&\sqrt6-\sqrt2\\\sqrt6-\sqrt2&\sqrt6+\sqrt2\end{bmatrix}\)(特征值 6、2)。
  5. 对角为 1 的 \(3\times3\) 对称矩阵,非对角元都等于 \(\rho\)。求 \(\rho\) 的取值范围使它是相关矩阵。推广到 \(n\times n\)。 答案要点:特征值 \(1+(n-1)\rho\) 和 \(1-\rho\)(\(n-1\) 重),故 \(-1/(n-1)\le\rho\le1\)。等相关系数不可能太负。
  6. 设 \(\Sigma\) 正定,\(w\) 为组合权重。证明 \(\sqrt{w^T\Sigma w}\) 是 \(w\) 的一个范数,并说明它就是 \(\|\Sigma^{1/2}w\|_2\)。 提示:Gram 分解;三角不等式由 \(\|\cdot\|_2\) 继承(参见 7.2.P32:\(\mathbf C^n\) 上内积 ⇔ 存在正定 \(G\) 使 \(\langle x,y\rangle=y^*Gx\))。

进阶

  1. 设 \(T<n\),\(R\) 为 \(T\times n\) 去均值收益矩阵。证明样本协方差 \(S=R^TR/(T-1)\) 至多秩 \(T-1\),并构造一个 \(w\ne0\) 使 \(w^TSw=0\)。 提示:去均值后 \(\mathbf 1^TR=0\),\(\operatorname{rank}R\le T-1\);取 \(w\in\operatorname{null}R\),由 7.2.7(b)。
  2. 证明:若 \(A\) 半正定,\(C\in M_n\),则 \(\operatorname{tr}(C^*AC)=0\) 蕴含 \(AC=0\)。 提示:\(C^*AC\) 半正定且迹为 0 ⇒ \(C^*AC=0\)(7.1.5)⇒ 对每列 \(c_j\),\(c_j^*Ac_j=0\) ⇒ \(Ac_j=0\)。
  3. (实战 3 的理论)证明交替投影的两个投影算子:(a) 到 \(\{X:x_{ii}=1\}\) 的 Frobenius 投影就是把对角线置 1;(b) 到半正定锥的投影是截断负特征值。为什么两者交替(不加 Dykstra 修正)一般得不到最近点? 提示:(a) 目标函数关于对角元可分;(b) 见正文证明。交替投影只保证收敛到交集中一点,Dykstra 修正把每次被"投影掉"的部分加回来,等价于求解对偶问题。
  4. 证明 \(f(t)=e^{-|t|}\) 是正定函数:先用 7.2.P12 证 \([r^{|i-j|}]\) 对 \(|r|<1\) 正定,再说明任意点组 \(t_1<\dots<t_n\) 上的 \([e^{-|t_i-t_j|}]\) 也正定。 提示:对一般点组,\(e^{-|t_i-t_j|}\) 是 OU 过程在 \(t_i\) 时刻的相关矩阵,也可以写成"逆为三对角"的形式;或用 Bochner:\(e^{-|t|}=\int e^{its}\frac{1}{\pi(1+s^2)}ds\)。

原书推荐习题

  • 7.1.P1–P4:\(|a_{ij}|^2\le a_{ii}a_{jj}\) 与相关矩阵;7.1.P7–P13:正定函数,构造合法协方差核;7.1.P18–P20:min 矩阵与 Brown 运动核;7.1.P28:广义 Schur 补。
  • 7.2.P3、P5:min 矩阵的 Cholesky 与 Hadamard 不等式;7.2.P12–P14:Markov 矩阵与 Gauss 矩阵;7.2.P16:\(\kappa(A+tI)\) 的单调性;7.2.P19:精度矩阵对角元与 VIF;7.2.P23:矩阵几何平均;7.2.P28–P29:相关矩阵的谱范围。

原书对照

本章小节 原书小节 书页 PDF 页
7.1 正定矩阵从哪里来 7.0 Introduction(7.0.1–7.0.5,含习题 7.0) 425–429 445–449
7.2 定义与基本性质 7.1 Definitions and properties(正文与习题 P1–P30) 429–438 449–458
7.3 等价刻画、平方根与 Cholesky 7.2 Characterizations and properties(正文与习题 P1–P36) 438–448 458–468
实战 3 最近相关矩阵 原书无此专题;理论依据为 7.1.3(凸锥)、7.2.1,推广见 7.4 节 — —

下一章(第 07b 章)把"半正定平方根"用到一般矩阵上:极分解 \(A=PU\) 和奇异值分解的一系列推论——最佳低秩逼近、Procrustes 旋转、酉不变范数,以及刻画病态程度的 Kantorovich 不等式。