量化交易中文教材

第 14 章 多元模型

本章对应 Wasserman 原书第 14 章。原书这一章很短(8 页),只是把后面几章要用的两个多元分布——多元正态与多项分布——集中回顾一遍,并给出相关系数的区间估计。但对量化交易来说,这一章的分量远超篇幅:组合方差 \(w^T\Sigma w\)、相关资产的蒙特卡洛模拟、马氏距离、相关系数的显著性,几乎每天都在用。本章在讲清原书内容的基础上,把这些联系逐一点明。矩阵知识(正定矩阵、平方根矩阵、Cholesky 分解)的系统讲解见第 01 册;多元正态的概率性质见第 02 册。

学习目标

  1. 会计算随机向量线性变换的均值与协方差:\(\mathbb E(AX)=A\mu\),\(\mathbb V(AX)=A\Sigma A^T\),并用于组合风险。
  2. 会估计样本均值向量与样本协方差矩阵,知道多元正态最大似然估计的协方差矩阵除以 \(n\)。
  3. 掌握多元正态的四条基本性质,会用 \(\mu+\Sigma^{1/2}Z\)(或 Cholesky 因子)模拟相关正态向量,知道马氏距离服从 \(\chi^2_k\)。
  4. 会用 Fisher \(z\) 变换构造相关系数的置信区间,知道它在厚尾数据下的局限。
  5. 会写出多项分布的均值、协方差与最大似然估计,理解各分量为何负相关。

读前导读

这一章在解决什么问题

前面各章大多处理一个变量;这一章处理"一组变量一起变化"。你对它的应用层面其实很熟:CFA 里的组合方差 \(\sigma_p^2=\sum_i\sum_jw_iw_j\sigma_{ij}\),写成矩阵就是 \(w^T\Sigma w\);参数法 VaR 依赖"正态资产的组合仍是正态";因子模型的协方差 \(B\Sigma_FB^T+D\)。本章把这些背后的统一规则讲清楚:随机向量做线性变换时,均值和协方差怎么变;多元正态有哪些好性质;怎么从数据估计均值向量和协方差矩阵;相关系数的置信区间怎么构造;以及计数数据(涨/平/跌天数)用的多项分布。

本章篇幅短,但都是后面章节和实际工作中的基础工具。最值得带走的三件事:\(\mathbb V(AX)=A\Sigma A^T\);用 Cholesky 因子模拟相关资产收益;正态假设下的公式(Fisher 区间、马氏距离的 \(\chi^2\) 阈值)在厚尾金融数据上会明显失准。

需要先想起来的数学

1. 矩阵乘法与转置的规则。 \((AB)^T=B^TA^T\);一个行向量乘列向量得标量(内积)\(x^Ty\),列向量乘行向量得矩阵(外积)\(xy^T\)。例:\(x=(1,2)^T\),\(x^Tx=5\),\(xx^T=\begin{pmatrix}1&2\\2&4\end{pmatrix}\)。协方差矩阵就是外积 \((X-\mu)(X-\mu)^T\) 的期望。参见 第 00 册第 06 章 线性代数速成。

2. 行列式 \(|A|\)。 方阵的一个数,衡量矩阵把"体积"放大多少倍。\(2\times2\) 时 \(\left|\begin{smallmatrix}a&b\\c&d\end{smallmatrix}\right|=ad-bc\)。对协方差矩阵,行列式越小,数据越"挤"在某个低维方向上(变量越相关)。例:两个方差为 1、相关 \(\rho\) 的变量,\(|\Sigma|=1-\rho^2\),\(\rho\to1\) 时趋于 0,矩阵不可逆。

3. 正定矩阵与 Cholesky 分解。 正定(定义见 14.1 节)是"矩阵版的正数"。对称正定矩阵可以分解成 \(LL^T\),\(L\) 是下三角矩阵,相当于"矩阵的平方根"。例:\(\begin{pmatrix}4&2\\2&5\end{pmatrix}=\begin{pmatrix}2&0\\1&2\end{pmatrix}\begin{pmatrix}2&1\\0&2\end{pmatrix}\)。参见第 06 章"正定矩阵、协方差矩阵"一节。

4. Delta 方法。 若 \(\hat\rho\) 近似正态、方差为 \(v\),则 \(f(\hat\rho)\) 近似正态、方差为 \(f'(\rho)^2v\)。这就是"久期 × 收益率波动 ≈ 价格波动"的统计版。参见第 05 章与 第 00 册第 02 章 导数与泰勒展开。

5. 拉格朗日乘子。 带约束的最大化(如 \(\sum p_j=1\)):把约束乘一个系数 \(\lambda\) 加进目标,再对所有变量求偏导令为 0。Markowitz 最小方差组合(约束权重之和为 1)用的就是它。参见 第 00 册第 05 章 多元微积分与优化。

符号补充:\(\text{artanh}\) 是 \(\tanh\) 的反函数;\(\chi^2_k\) 是 \(k\) 个独立标准正态平方之和的分布,均值为 \(k\)。

怎么读这一章

核心必读:14.2(定理 14.1 及其量化含义)、14.3(Fisher \(z\) 区间)、14.4 的定理 14.2 四条性质,以及 14.6 实战的五条"读法"。定理 14.3 的证明用到矩阵求导,第一次可以只记结论(MLE 是样本均值和除以 \(n\) 的样本协方差)。14.5 多项分布为第 15 章做准备,记住"各分量负相关"及其原因即可。


14.1 线性代数记号回顾

原书用到的记号:\(x^Ty=\sum_jx_jy_j\) 为内积;\(|A|\) 为行列式;\(A^T\) 为转置;\(A^{-1}\) 为逆;\(I\) 为单位矩阵;\(\text{tr}(A)\) 为迹(对角元之和)。迹有三条常用性质:

\[\text{tr}(AB)=\text{tr}(BA),\qquad\text{tr}(A+B)=\text{tr}(A)+\text{tr}(B),\qquad\text{tr}(a)=a\ (a\text{ 为标量}).\]
第三条看似平凡,却是推导多元正态似然的关键技巧:把一个二次型 \(x^TAx\) 写成 \(\text{tr}(x^TAx)=\text{tr}(Axx^T)\),就能把"一堆二次型之和"转化为"矩阵乘以样本协方差的迹"。

白话解释:二次型 \(x^TAx\) 是一个数,等于 \(\sum_{j,l}A_{jl}x_jx_l\)。\(Axx^T\) 是一个矩阵,它的对角元之和也恰好是 \(\sum_{j,l}A_{jl}x_lx_j\),所以两者相等。好处是:对很多个 \(x_i\) 求和时,\(\sum_i\text{tr}(Ax_ix_i^T)=\text{tr}(A\sum_ix_ix_i^T)\),\(A\) 被提到了求和外面,剩下的 \(\sum_ix_ix_i^T\) 正是(未除以 \(n\) 的)样本协方差。小例子:\(A=\text{diag}(1,2)\),\(x=(1,3)^T\),\(x^TAx=1+18=19\);\(Axx^T=\begin{pmatrix}1&3\\6&18\end{pmatrix}\),迹 \(=19\)。

若对所有非零向量 \(x\) 有 \(x^T\Sigma x>0\),称 \(\Sigma\) 正定(positive definite)。

金融直觉:把 \(x\) 看成组合权重,\(x^T\Sigma x\) 就是组合方差。"正定"即"任何非零组合(包括多空组合)的方差都大于 0",也就是不存在无风险的资产组合。若协方差矩阵只是半正定(某个组合方差恰为 0),说明有资产可以被其他资产完全复制,矩阵不可逆,均值-方差优化会出问题。用插值、手工调整或不同长度数据拼出来的相关矩阵,有时甚至会出现"负方差组合",即矩阵不是半正定的,这是风险系统里必须检查的错误。 对称正定矩阵 \(A\) 存在唯一的对称正定平方根矩阵 \(A^{1/2}\),满足:(1) \(A^{1/2}\) 对称;(2) \(A=A^{1/2}A^{1/2}\);(3) \(A^{1/2}A^{-1/2}=A^{-1/2}A^{1/2}=I\),其中 \(A^{-1/2}=(A^{1/2})^{-1}\)。

实践中,常用 Cholesky 分解 \(A=LL^T\)(\(L\) 为下三角矩阵)代替对称平方根:它计算更快、数值更稳定,而且在模拟和白化中起同样的作用。


14.2 随机向量

随机向量 \(X=(X_1,\dots,X_k)^T\) 的均值为

\[\mu=\mathbb E(X)=(\mu_1,\dots,\mu_k)^T.\tag{14.1}\]
协方差矩阵(covariance matrix,也称方差矩阵或方差–协方差矩阵)\(\Sigma=\mathbb V(X)\) 的第 \((i,j)\) 元为 \(\text{Cov}(X_i,X_j)\),对角元为 \(\mathbb V(X_i)\):
\[\Sigma=\begin{pmatrix}\mathbb V(X_1)&\text{Cov}(X_1,X_2)&\cdots&\text{Cov}(X_1,X_k)\\\vdots&\ddots&&\vdots\\\text{Cov}(X_k,X_1)&\cdots&&\mathbb V(X_k)\end{pmatrix}.\tag{14.2}\]
它的逆 \(\Sigma^{-1}\) 称为精度矩阵(precision matrix)。精度矩阵在第 17–18 章(图模型)中有直接含义:多元正态下,\(\Sigma^{-1}\) 的第 \((i,j)\) 元为零当且仅当 \(X_i\) 与 \(X_j\) 在给定其余变量时条件独立。

定理 14.1。 设 \(a\) 为 \(k\) 维常数向量,\(A\) 为有 \(k\) 列的常数矩阵,则

\[\mathbb E(a^TX)=a^T\mu,\qquad\mathbb V(a^TX)=a^T\Sigma a;\]
\[\mathbb E(AX)=A\mu,\qquad\mathbb V(AX)=A\Sigma A^T.\]

证明要点。 由期望的线性性,\(\mathbb E(AX)=A\mu\)。于是 \(AX-A\mu=A(X-\mu)\),

\[\mathbb V(AX)=\mathbb E\big[A(X-\mu)(X-\mu)^TA^T\big]=A\,\mathbb E\big[(X-\mu)(X-\mu)^T\big]A^T=A\Sigma A^T.\]

推导拆解:

  1. 协方差矩阵的定义是 \(\mathbb V(Y)=\mathbb E[(Y-\mathbb EY)(Y-\mathbb EY)^T]\)(外积的期望,第 \((i,j)\) 元正是 \(\text{Cov}(Y_i,Y_j)\))。取 \(Y=AX\),\(Y-\mathbb EY=A(X-\mu)\)。
  2. 转置规则:\([A(X-\mu)]^T=(X-\mu)^TA^T\),得到第一个等号。
  3. 第二个等号:\(A\) 是常数矩阵,期望是线性运算,可以把左右两侧的常数矩阵提出来,就像 \(\mathbb E(cX)=c\,\mathbb EX\)。
  4. 验证与 CFA 公式一致:两资产时 \(A=w^T=(w_1,w_2)\),\(w^T\Sigma w=w_1^2\sigma_1^2+2w_1w_2\sigma_{12}+w_2^2\sigma_2^2\)。

量化含义。 设 \(X\) 是 \(k\) 个资产的收益向量,\(w\) 是组合权重,组合收益为 \(w^TX\),于是

\[\text{组合期望收益}=w^T\mu,\qquad\text{组合方差}=w^T\Sigma w.\]
这就是 Markowitz 均值–方差理论的全部概率基础。\(\mathbb V(AX)=A\Sigma A^T\) 的矩阵形式则对应多个组合(\(A\) 的每一行是一个组合)之间的协方差,以及因子模型中"资产协方差 = 暴露 × 因子协方差 × 暴露转置 + 特质方差"的结构 \(B\Sigma_FB^T+D\)。

样本估计。 对样本 \(X_1,\dots,X_n\)(每个 \(X_i=(X_{1i},\dots,X_{ki})^T\)),样本均值向量为 \(\bar X=(\bar X_1,\dots,\bar X_k)^T\),\(\bar X_j=n^{-1}\sum_iX_{ji}\);样本协方差矩阵 \(S=(s_{jl})\) 的元素为

\[s_{jl}=\frac1{n-1}\sum_{i=1}^n(X_{ji}-\bar X_j)(X_{li}-\bar X_l).\tag{14.4}\]
它们是无偏的:\(\mathbb E(\bar X)=\mu\),\(\mathbb E(S)=\Sigma\)。

样本协方差矩阵有一个原书没有展开、但量化中极为关键的问题:它有 \(k(k+1)/2\) 个参数。500 只股票就有 125,250 个参数,而几年的日频数据只有一千多个观测。当 \(k\) 接近或超过 \(n\) 时,\(S\) 奇异或严重病态,\(S^{-1}\) 的误差被极度放大,直接代入均值–方差优化会得到极端而不稳定的权重。实务中用收缩估计(shrinkage)、因子模型或稀疏精度矩阵来解决,见第 06 册、第 11 册,以及第 17–18 章末的高斯图模型。


14.3 相关系数的估计与区间

两个变量的相关系数为

\[\rho=\frac{\mathbb E\big((X_1-\mu_1)(X_2-\mu_2)\big)}{\sigma_1\sigma_2},\tag{14.5}\]
其中 \(\sigma_j^2=\mathbb V(X_{ji})\)。其非参数插入估计是样本相关系数:
\[\hat\rho=\frac{\sum_i(X_{1i}-\bar X_1)(X_{2i}-\bar X_2)}{(n-1)s_1s_2},\tag{14.6}\]
\(s_j^2=\frac1{n-1}\sum_i(X_{ji}-\bar X_j)^2\)。(严格的插入估计分母用 \(n\),但分子分母同时变化,\(\hat\rho\) 不受影响。)

为什么不直接用 Delta 方法? 可以用 Delta 方法求 \(\hat\rho\) 的标准误再构造 Wald 区间,但效果不好:\(\hat\rho\) 被限制在 \([-1,1]\) 内,当 \(|\rho|\) 接近 1 时其抽样分布高度偏斜,而且方差依赖于 \(\rho\) 本身(正态下约为 \((1-\rho^2)^2/n\))。更好的办法是先做变换,让分布更接近正态、方差不再依赖参数,在变换后的尺度上构造区间,再变换回来。这类变换称为方差稳定变换(variance-stabilizing transformation)。

Fisher \(z\) 变换。

\[\theta=f(\rho)=\frac12\big(\log(1+\rho)-\log(1-\rho)\big)=\text{artanh}(\rho),\qquad f^{-1}(z)=\frac{e^{2z}-1}{e^{2z}+1}=\tanh(z).\]
在二元正态下,\(f(\hat\rho)\) 近似服从正态,方差约为 \(1/(n-3)\),与 \(\rho\) 无关。

推导拆解(为什么恰好是 artanh):

  1. 正态下 \(\mathbb V(\hat\rho)\approx(1-\rho^2)^2/n\),依赖 \(\rho\)。
  2. 想找一个 \(f\),使 Delta 方法下 \(\mathbb V(f(\hat\rho))\approx f'(\rho)^2(1-\rho^2)^2/n\) 不依赖 \(\rho\)。令 \(f'(\rho)=\frac1{1-\rho^2}\) 即可,此时方差 \(\approx1/n\)。
  3. 对 \(\frac1{1-\rho^2}=\frac12\big(\frac1{1+\rho}+\frac1{1-\rho}\big)\) 积分,得 \(\frac12[\log(1+\rho)-\log(1-\rho)]\),正是 Fisher 变换。
  4. \(1/(n-3)\) 而不是 \(1/n\) 是更精细的小样本修正,大样本时两者无差别。 直观上,\(\rho\) 靠近 \(\pm1\) 时 \(\hat\rho\) 被边界"挤住",波动变小且分布偏斜;artanh 在靠近 \(\pm1\) 处把尺度大幅拉伸,抵消了这种挤压,使区间在变换后的尺度上对称。

相关系数的近似置信区间(Fisher 法):

  1. 计算 \(\hat\theta=f(\hat\rho)=\frac12\big(\log(1+\hat\rho)-\log(1-\hat\rho)\big)\);
  2. 近似标准误 \(\widehat{\text{se}}(\hat\theta)=1/\sqrt{n-3}\);
  3. \(\theta\) 的 \(1-\alpha\) 置信区间为 \((a,b)=\big(\hat\theta-z_{\alpha/2}/\sqrt{n-3},\ \hat\theta+z_{\alpha/2}/\sqrt{n-3}\big)\);
  4. 逆变换得 \(\rho\) 的置信区间:
    \[\left(\frac{e^{2a}-1}{e^{2a}+1},\ \frac{e^{2b}-1}{e^{2b}+1}\right).\]

另一种方法是 bootstrap(第 08 章)。两者的比较是原书习题 5–6 的内容,本章量化实战会给出结果,结论对金融数据很重要:Fisher 法依赖二元正态,厚尾下覆盖率会严重不足。


14.4 多元正态分布

\(X\sim N(\mu,\Sigma)\) 的密度为

\[f(x;\mu,\Sigma)=\frac1{(2\pi)^{k/2}|\Sigma|^{1/2}}\exp\Big\{-\frac12(x-\mu)^T\Sigma^{-1}(x-\mu)\Big\},\tag{14.7}\]
其中 \(\mu\) 为 \(k\) 维向量,\(\Sigma\) 为 \(k\times k\) 对称正定矩阵,\(\mathbb EX=\mu\),\(\mathbb V(X)=\Sigma\)。

白话解释:对照一元正态密度 \(\frac1{\sqrt{2\pi}\sigma}\exp\{-\frac{(x-\mu)^2}{2\sigma^2}\}\),逐项替换:\((x-\mu)^2/\sigma^2\) 换成 \((x-\mu)^T\Sigma^{-1}(x-\mu)\)("除以方差"换成"乘以协方差矩阵的逆");\(\sigma\) 换成 \(|\Sigma|^{1/2}\);\(\sqrt{2\pi}\) 每多一维多乘一个,共 \((2\pi)^{k/2}\)。当 \(\Sigma\) 是对角阵(各分量不相关)时,指数里的二次型变成 \(\sum_j(x_j-\mu_j)^2/\sigma_j^2\),密度恰好拆成 \(k\) 个一元正态密度的乘积,即各分量独立。这也说明了多元正态特有的一点:不相关就等于独立。

定理 14.2。

  1. 若 \(Z\sim N(0,I)\),\(X=\mu+\Sigma^{1/2}Z\),则 \(X\sim N(\mu,\Sigma)\);
  2. 若 \(X\sim N(\mu,\Sigma)\),则 \(\Sigma^{-1/2}(X-\mu)\sim N(0,I)\);
  3. 若 \(X\sim N(\mu,\Sigma)\),\(a\) 为向量,则 \(a^TX\sim N(a^T\mu,a^T\Sigma a)\);
  4. 令 \(V=(X-\mu)^T\Sigma^{-1}(X-\mu)\),则 \(V\sim\chi^2_k\)。

逐条看它们的意义:

  • 第 1 条是模拟相关正态向量的方法:先生成独立标准正态,再左乘平方根矩阵、加上均值。由定理 14.1,\(\mathbb V(\Sigma^{1/2}Z)=\Sigma^{1/2}I\Sigma^{1/2}=\Sigma\)。用 Cholesky 因子 \(L\) 代替 \(\Sigma^{1/2}\) 同样成立,因为 \(LIL^T=\Sigma\)。
  • 第 2 条是白化(whitening):把相关的向量变成互相独立、方差为 1 的向量。它是第 1 条的逆运算。
  • 第 3 条说多元正态的任何线性组合都是正态的——组合收益在正态模型下仍是正态,这让参数法 VaR 只需算 \(w^T\mu\) 和 \(w^T\Sigma w\)。
  • 第 4 条:由第 2 条,\(\Sigma^{-1/2}(X-\mu)=Z\sim N(0,I)\),所以 \(V=Z^TZ=\sum Z_j^2\sim\chi^2_k\)。\(\sqrt V\) 称为马氏距离(Mahalanobis distance),它是"考虑了相关结构的标准化距离"。用它可以判断一个多维观测是否异常:\(V>\chi^2_{k,\alpha}\) 的观测在正态模型下只应以概率 \(\alpha\) 出现。

金融直觉:马氏距离比"各资产各自的 z 值"多看了一样东西:相关性。设股票和债券通常负相关。某天股票跌 1.5 个标准差、债券涨 1.5 个标准差,这与历史相关结构一致,马氏距离不大。另一天股票和债券同时跌 1.5 个标准差,单看每个资产都不算极端,但这种"股债双杀"违背了平时的相关结构,马氏距离会很大。数值例子:两资产方差为 1、相关 \(-0.5\),\(\Sigma^{-1}=\frac1{0.75}\begin{pmatrix}1&0.5\\0.5&1\end{pmatrix}\)。\(x=(-1.5,1.5)\) 时 \(V=\frac{2.25+2.25-2.25}{0.75}=3\);\(x=(-1.5,-1.5)\) 时 \(V=\frac{2.25+2.25+2.25}{0.75}=9\),后者超过 \(\chi^2_{2}\) 的 99% 分位数 9.21 的边缘。湍流指数捕捉的正是这种"相关结构被打破"的日子。

定理 14.3(多元正态的最大似然估计)。 设 \(X_1,\dots,X_n\sim N(\mu,\Sigma)\) 独立同分布,去掉与参数无关的常数后,对数似然为

\[\ell(\mu,\Sigma)=-\frac n2(\bar X-\mu)^T\Sigma^{-1}(\bar X-\mu)-\frac n2\text{tr}(\Sigma^{-1}\tilde S)-\frac n2\log|\Sigma|,\]
其中 \(\tilde S=\frac1n\sum_i(X_i-\bar X)(X_i-\bar X)^T\)(除以 \(n\) 的样本协方差)。最大似然估计为
\[\hat\mu=\bar X,\qquad\hat\Sigma=\frac{n-1}{n}S.\tag{14.8}\]

证明(原书附录 14.6)。 完整对数似然为

\[\ell=-\frac{kn}2\log(2\pi)-\frac n2\log|\Sigma|-\frac12\sum_i(X_i-\mu)^T\Sigma^{-1}(X_i-\mu).\]
在 \(X_i-\mu=(X_i-\bar X)+(\bar X-\mu)\) 中展开,交叉项因 \(\sum_i(X_i-\bar X)=0\) 消失:
\[\sum_i(X_i-\mu)^T\Sigma^{-1}(X_i-\mu)=\sum_i(X_i-\bar X)^T\Sigma^{-1}(X_i-\bar X)+n(\bar X-\mu)^T\Sigma^{-1}(\bar X-\mu).\]
再用"标量等于它的迹"和迹的轮换性:
\[\sum_i(X_i-\bar X)^T\Sigma^{-1}(X_i-\bar X)=\text{tr}\Big[\Sigma^{-1}\sum_i(X_i-\bar X)(X_i-\bar X)^T\Big]=n\,\text{tr}(\Sigma^{-1}\tilde S).\]
于是得到定理中的形式。对 \(\mu\):第一项是非正的二次型,在 \(\mu=\bar X\) 时取最大值 0。对 \(\Sigma\):最大化 \(-\text{tr}(\Sigma^{-1}\tilde S)-\log|\Sigma|\),可以证明(对 \(\Sigma^{-1}\) 求导,用 \(\partial\log|A|/\partial A=A^{-1}\))最大值在 \(\Sigma=\tilde S\) 处取得。\(\square\)

推导拆解(先看一维,再看矩阵):

  1. 一维时 \(\Sigma=\sigma^2\),\(\tilde S=s^2\),要最大化 \(g(\sigma^2)=-s^2/\sigma^2-\log\sigma^2\)。令 \(v=1/\sigma^2\),\(g=-s^2v+\log v\),对 \(v\) 求导:\(-s^2+1/v=0\),得 \(\sigma^2=s^2\)。两项在拉扯:\(-s^2/\sigma^2\) 希望 \(\sigma^2\) 大(不惊讶于数据的离散),\(-\log\sigma^2\) 希望 \(\sigma^2\) 小(密度不要摊得太平),平衡点恰好是样本方差。
  2. 矩阵版同理:令 \(K=\Sigma^{-1}\),目标是 \(-\text{tr}(K\tilde S)+\log|K|\)(因 \(\log|\Sigma|=-\log|K|\))。对 \(K\) 求导:\(\partial\,\text{tr}(K\tilde S)/\partial K=\tilde S\),\(\partial\log|K|/\partial K=K^{-1}\)。令 \(-\tilde S+K^{-1}=0\),得 \(\Sigma=K^{-1}=\tilde S\)。
  3. 对 \(\mu\) 的那一步:\(\Sigma^{-1}\) 正定,所以 \((\bar X-\mu)^T\Sigma^{-1}(\bar X-\mu)\ge0\),前面又有负号,最大值 0 在 \(\mu=\bar X\) 处取得,且与 \(\Sigma\) 取什么无关。

与一元情形一样,最大似然估计的协方差除以 \(n\),是有偏的;无偏估计 \(S\) 除以 \(n-1\)。对 \(n\) 较大的金融样本,二者差别可忽略。


14.5 多项分布

多项分布是二项分布的多类推广。一个袋子里有 \(k\) 种颜色的球,颜色 \(j\) 的比例为 \(p_j\)(\(p_j\ge0\),\(\sum p_j=1\))。有放回地抽 \(n\) 次,记 \(X_j\) 为抽到颜色 \(j\) 的次数,则 \(X=(X_1,\dots,X_k)\sim\text{Multinomial}(n,p)\)。

定理 14.4。 若 \(X\sim\text{Multinomial}(n,p)\),则每个边际 \(X_j\sim\text{Binomial}(n,p_j)\),且

\[\mathbb E(X)=\begin{pmatrix}np_1\\\vdots\\np_k\end{pmatrix},\qquad \mathbb V(X)=\begin{pmatrix}np_1(1-p_1)&-np_1p_2&\cdots&-np_1p_k\\-np_1p_2&np_2(1-p_2)&\cdots&-np_2p_k\\\vdots&&\ddots&\vdots\\-np_1p_k&-np_2p_k&\cdots&np_k(1-p_k)\end{pmatrix}.\]

协方差的证明。 \(X_i+X_j\) 是"抽到颜色 \(i\) 或 \(j\)"的次数,服从 \(\text{Binomial}(n,p_i+p_j)\),所以 \(\mathbb V(X_i+X_j)=n(p_i+p_j)(1-p_i-p_j)\)。另一方面

\[\mathbb V(X_i+X_j)=np_i(1-p_i)+np_j(1-p_j)+2\,\text{Cov}(X_i,X_j).\]
两式联立,解得 \(\text{Cov}(X_i,X_j)=-np_ip_j\)。

各分量负相关的直觉很简单:总数 \(n\) 固定,某一类多了,其他类就得少。注意 \(\mathbb V(X)\) 是奇异的(每行之和为零),因为 \(\sum X_j=n\) 是常数。

定理 14.5。 \(p\) 的最大似然估计为 \(\hat p=X/n=(X_1/n,\dots,X_k/n)\)。

证明。 对数似然 \(\ell(p)=\sum_jX_j\log p_j\),约束 \(\sum_jp_j=1\)。用 Lagrange 乘子,最大化 \(A(p)=\sum_jX_j\log p_j+\lambda(\sum_jp_j-1)\)。令 \(\partial A/\partial p_j=X_j/p_j+\lambda=0\),得 \(\hat p_j=-X_j/\lambda\);由 \(\sum\hat p_j=1\) 得 \(\lambda=-n\),故 \(\hat p_j=X_j/n\)。\(\square\)

估计的变异性。 直接计算:\(\mathbb V(\hat p)=n^{-2}\mathbb V(X)=\frac1n\Sigma\),其中 \(\Sigma\) 的对角元为 \(p_j(1-p_j)\),非对角元为 \(-p_ip_j\)。也可以用 Fisher 信息计算(原书习题 2),在本例中两种方法结果相同。

定理 14.6。 \(\sqrt n(\hat p-p)\rightsquigarrow N(0,\Sigma)\)。

多项分布是第 15 章(列联表的独立性检验)和第 19 章(对数线性模型)的基础:一张 \(I\times J\) 列联表的计数向量就服从多项分布。


14.6 量化实战

本节用一个脚本演示四件事:用 Cholesky 因子模拟相关资产收益并验证组合方差公式;比较相关系数的 Fisher 区间与 bootstrap 区间在正态和厚尾数据下的覆盖率;检验马氏距离"湍流指数"的 \(\chi^2\) 阈值在厚尾下是否可靠;用多项分布处理涨/平/跌天数。

import numpy as np
from scipy import stats

rng = np.random.default_rng(14)

# ---------- 1) 用 Cholesky 模拟相关资产收益,验证 V(a'X)=a' Σ a ----------
vol = np.array([0.20, 0.25, 0.15, 0.30]) / np.sqrt(252)            # 日波动
C = np.array([[1, .6, .3, .5], [.6, 1, .2, .4], [.3, .2, 1, .1], [.5, .4, .1, 1]])
Sigma = np.outer(vol, vol) * C
mu = np.full(4, 0.0003)
Lc = np.linalg.cholesky(Sigma)                                       # Σ = L L'
R = mu + rng.standard_normal((100_000, 4)) @ Lc.T                    # X = μ + L Z
w = np.array([0.4, 0.3, 0.2, 0.1])
print(f"组合日波动: 理论 sqrt(w'Σw)={np.sqrt(w @ Sigma @ w):.5f}, 模拟 {np.std(R @ w):.5f}")
S = np.cov(R[:250].T)                                                # 一年样本的协方差
print(f"一年样本估计的组合波动 {np.sqrt(w @ S @ w):.5f};最小方差权重 Σ^-1 1 / 1'Σ^-1 1:")
for name, M in [("真 Σ", Sigma), ("样本 S", S)]:
    x = np.linalg.solve(M, np.ones(4)); print(f"  {name}: {np.round(x / x.sum(), 3)}")

# ---------- 2) 相关系数的 Fisher z 区间与 bootstrap 区间:覆盖率比较 ----------
def fisher_ci(x, y, z=1.96):
    r = np.corrcoef(x, y)[0, 1]; th = np.arctanh(r); h = z / np.sqrt(len(x) - 3)
    return np.tanh(th - h), np.tanh(th + h)

def boot_ci(x, y, B=500):
    n = len(x); idx = rng.integers(0, n, (B, n))
    xb, yb = x[idx], y[idx]
    xb = xb - xb.mean(1, keepdims=True); yb = yb - yb.mean(1, keepdims=True)
    rb = (xb * yb).sum(1) / np.sqrt((xb**2).sum(1) * (yb**2).sum(1))
    return np.quantile(rb, [0.025, 0.975])

rho, n, reps = 0.5, 60, 1000                                         # 5 年月度数据
for dist in ("normal", "t3"):
    hit_f = hit_b = 0
    for _ in range(reps):
        Z = rng.standard_normal((n, 2))
        if dist == "t3":                                             # 多元 t(3):共同的随机尺度造成厚尾
            Z = Z / np.sqrt(rng.chisquare(3, (n, 1)) / 3)
        x = Z[:, 0]; y = rho * Z[:, 0] + np.sqrt(1 - rho**2) * Z[:, 1]
        lo, hi = fisher_ci(x, y); hit_f += lo < rho < hi
        lo, hi = boot_ci(x, y); hit_b += lo < rho < hi
    print(f"{dist:>6s}: Fisher z 95%CI 覆盖率 {hit_f/reps:.3f},bootstrap 百分位 95%CI 覆盖率 {hit_b/reps:.3f}")

# ---------- 3) 马氏距离与"湍流指数":正态下 ~ χ²_k ----------
k = 4
D_norm = np.einsum("ij,jk,ik->i", R - mu, np.linalg.inv(Sigma), R - mu)
T = rng.standard_t(4, (100_000, k)) * np.sqrt(2 / 4)                 # 方差为 1 的 t(4),各分量独立
R_t = mu + T @ Lc.T
D_t = np.einsum("ij,jk,ik->i", R_t - mu, np.linalg.inv(Sigma), R_t - mu)
q99 = stats.chi2.ppf(0.99, k)
print(f"χ²_4 的 99% 分位数 {q99:.2f};超过比例:正态 {np.mean(D_norm > q99):.4f},厚尾 t(4) {np.mean(D_t > q99):.4f}")

# ---------- 4) 多项分布:涨/平/跌天数的 MLE 与协方差 ----------
counts = np.array([128, 31, 91])                                     # 250 天:涨、平(|r|<0.1%)、跌
p_hat = counts / counts.sum()
V = (np.diag(p_hat) - np.outer(p_hat, p_hat)) / counts.sum()         # V(p_hat) = Σ/n
se_diff = np.sqrt(V[0, 0] + V[2, 2] - 2 * V[0, 2])
print(f"p_hat={p_hat.round(3)};p_涨-p_跌 = {p_hat[0]-p_hat[2]:.3f} ± {1.96*se_diff:.3f}")

关键输出:

组合日波动: 理论 sqrt(w'Σw)=0.01049, 模拟 0.01050
一年样本估计的组合波动 0.00981;最小方差权重 Σ^-1 1 / 1'Σ^-1 1:
  真 Σ: [0.168 0.083 0.671 0.078]
  样本 S: [0.144 0.112 0.645 0.1  ]
normal: Fisher z 95%CI 覆盖率 0.950,bootstrap 百分位 95%CI 覆盖率 0.936
    t3: Fisher z 95%CI 覆盖率 0.705,bootstrap 百分位 95%CI 覆盖率 0.917
χ²_4 的 99% 分位数 13.28;超过比例:正态 0.0101,厚尾 t(4) 0.0397
p_hat=[0.512 0.124 0.364];p_涨-p_跌 = 0.148 ± 0.115

读法。

  1. 模拟与组合方差。 用 \(\mu+LZ\) 生成的 10 万天收益,组合波动与 \(\sqrt{w^T\Sigma w}\) 的理论值一致到小数点后四位。这正是 VaR 蒙特卡洛、情景生成、期权组合定价中生成相关冲击的标准做法(第 08 册的多资产期权定价会用到)。
  2. 估计误差进入优化。 只用一年(250 天)样本估计协方差,最小方差组合 \(w\propto\Sigma^{-1}\mathbf 1\) 的权重已经偏离真值 2–3 个百分点;资产数从 4 增加到几百时,偏差会大到不可用。均值–方差优化对 \(\Sigma^{-1}\) 的误差极其敏感,这是收缩估计和因子模型存在的原因。
  3. Fisher 区间在厚尾下失效。 二元正态数据上 Fisher 区间的覆盖率恰为 95%;换成多元 \(t(3)\)(相关系数仍为 0.5)后跌到 70.5%,而 bootstrap 仍有 91.7%。原因是 \(1/\sqrt{n-3}\) 这个标准误是在正态假设下推出的,厚尾数据中 \(\hat\rho\) 的抽样波动大得多。月度收益的厚尾程度虽不如日度,但在危机期附近同样明显。判断两个资产或因子的相关性是否显著变化时,金融数据上应优先用 bootstrap(时间序列还需用分块 bootstrap)。这一点对应原书习题 5–6。
  4. 马氏距离阈值在厚尾下低估极端事件。 正态数据中超过 \(\chi^2_{4,0.99}\) 阈值的比例为 1.01%,与理论一致;厚尾的 \(t(4)\) 数据中是 3.97%,接近四倍。Kritzman 等人提出的"金融湍流指数"(financial turbulence)就是收益向量的马氏距离;用它监控市场状态时,阈值应该用历史经验分位数,而不是 \(\chi^2\) 分位数。
  5. 多项分布。 250 天中涨 128、平 31、跌 91,上涨与下跌概率之差为 \(0.148\pm0.115\)。计算差的方差时必须用到负协方差 \(-p_1p_3/n\):\(\mathbb V(\hat p_1-\hat p_3)=[p_1(1-p_1)+p_3(1-p_3)+2p_1p_3]/n\)。若误以为两者独立而漏掉这一项,标准误会被低估。当然,日收益的涨跌存在序列相关和波动聚集,多项分布"每天独立抽样"的假设只是近似。

本章小结

随机向量的线性变换满足 \(\mathbb E(AX)=A\mu\)、\(\mathbb V(AX)=A\Sigma A^T\),组合方差 \(w^T\Sigma w\) 是它的特例。多元正态由均值向量和协方差矩阵完全决定:任意线性组合仍为正态;可以用 \(\mu+\Sigma^{1/2}Z\)(或 Cholesky 因子)模拟;可以用 \(\Sigma^{-1/2}\) 白化;马氏距离平方服从 \(\chi^2_k\)。其最大似然估计为样本均值和除以 \(n\) 的样本协方差。相关系数的区间估计宜在 Fisher \(z\) 尺度上进行,标准误为 \(1/\sqrt{n-3}\),但这依赖正态假设,厚尾数据应改用 bootstrap。多项分布描述分类计数,各分量负相关,最大似然估计是样本比例,渐近正态。

概念 公式 / 结论
线性变换 \(\mathbb E(AX)=A\mu\),\(\mathbb V(AX)=A\Sigma A^T\);组合方差 \(w^T\Sigma w\)
样本协方差 \(s_{jl}=\frac1{n-1}\sum(X_{ji}-\bar X_j)(X_{li}-\bar X_l)\),无偏
多元正态密度 \((2\pi)^{-k/2}\lvert\Sigma\rvert^{-1/2}\exp\{-\frac12(x-\mu)^T\Sigma^{-1}(x-\mu)\}\)
模拟 / 白化 \(X=\mu+\Sigma^{1/2}Z\);\(\Sigma^{-1/2}(X-\mu)\sim N(0,I)\)
马氏距离 \((X-\mu)^T\Sigma^{-1}(X-\mu)\sim\chi^2_k\)
多元正态 MLE \(\hat\mu=\bar X\),\(\hat\Sigma=\frac{n-1}nS\)
Fisher \(z\) \(\hat\theta=\text{artanh}(\hat\rho)\),\(\widehat{\text{se}}=1/\sqrt{n-3}\),区间端点取 \(\tanh\)
多项分布 \(\mathbb EX_j=np_j\),\(\mathbb VX_j=np_j(1-p_j)\),\(\text{Cov}(X_i,X_j)=-np_ip_j\)
多项 MLE \(\hat p=X/n\),\(\sqrt n(\hat p-p)\rightsquigarrow N(0,\Sigma)\)

练习

基础

  1. 证明定理 14.1。(原书习题 1。)
  2. 两资产年化波动分别为 20% 与 30%,相关系数 0.4,等权组合的年化波动是多少?若相关系数为 −0.4 呢?(答案:\(\sqrt{0.25\cdot0.04+0.25\cdot0.09+2\cdot0.25\cdot0.4\cdot0.06}\approx21.1\%\);相关为 −0.4 时约 14.3%。)
  3. 两个因子 60 个月收益的样本相关系数为 0.30。用 Fisher 法求 \(\rho\) 的 95% 置信区间,并判断是否显著不为零。(提示:\(\hat\theta=0.3095\),半宽 \(1.96/\sqrt{57}=0.2596\),区间约 \((0.05,0.51)\),不含 0。)
  4. 证明多项分布中 \(\text{Cov}(X_i,X_j)=-np_ip_j\),并说明为什么 \(\mathbb V(X)\) 是奇异矩阵。
  5. 已知 \(Z\sim N(0,I_2)\),构造一个 \(2\times2\) 下三角矩阵 \(L\),使 \(X=LZ\) 的两个分量方差均为 1、相关系数为 \(\rho\)。(答案:\(L=\begin{pmatrix}1&0\\\rho&\sqrt{1-\rho^2}\end{pmatrix}\)。)

进阶

  1. 求多项分布 MLE 的 Fisher 信息矩阵(只对 \(p_1,\dots,p_{k-1}\) 参数化,\(p_k=1-\sum_{j<k}p_j\)),并验证其逆等于 \(\Sigma\) 的左上 \((k-1)\times(k-1)\) 块。(原书习题 2。)
  2. 修改 14.6 节第 2 部分:令 \(\rho=0.9\)、\(n=30\),比较 Fisher 区间、bootstrap 区间与 Delta 方法 Wald 区间(\(\hat\rho\pm1.96(1-\hat\rho^2)/\sqrt n\))的覆盖率与平均宽度。(原书习题 5–6 的扩展。)
  3. 证明定理 14.2 第 4 条,并说明当 \(\Sigma\) 用样本估计 \(S\) 代替时,\(V\) 的分布会有什么变化(提示:Hotelling \(T^2\),小样本时尾部更厚)。
  4. 资产数 \(k=100\),样本量 \(n=120\)。模拟真协方差为单位阵的数据,计算样本协方差矩阵的特征值范围,并解释为什么 \(S^{-1}\) 不适合直接用于组合优化。(提示:Marchenko–Pastur 分布,特征值大致分布在 \((1\pm\sqrt{k/n})^2\) 之间。)

原书推荐习题:第 14 章 2(多项分布 Fisher 信息)、4(用平方根矩阵或 Cholesky 生成多元正态)、5–6(相关系数的 Fisher 区间与 bootstrap 区间比较,必做)。


原书对照

本章内容 原书章节 PDF 页码
线性代数记号 第 14 章引言 p.239
随机向量、定理 14.1、样本协方差 14.1 p.240–241
相关系数估计、Fisher \(z\) 区间 14.2 p.241–242
多元正态、定理 14.2–14.3 14.3 p.242–243
多项分布、定理 14.4–14.6 14.4 p.243–245
文献评注、附录(定理 14.3 证明) 14.5–14.6 p.245–246
习题 14.7 p.246