第 05a 章 向量范数、内积与对偶
对应原书:Horn & Johnson《Matrix Analysis》第 2 版,第 5 章 Norms for Vectors and Matrices 的 5.0–5.5 节(书 p.313–340,PDF p.333–360)。第 5 章后半(矩阵范数、谱半径、条件数)见第 05b 章。
范数是"大小"和"距离"的度量。量化中处处是范数,只是常常不叫这个名字:总杠杆(gross exposure)是权重的 \(\ell_1\) 范数,单票仓位上限是 \(\ell_\infty\) 范数,岭回归惩罚是 \(\ell_2\) 范数,"前 10 大持仓占比"是一个 \(k\)-范数,组合波动率 \(\sqrt{w^T\Sigma w}\) 本身也是权重的范数。本章建立范数的公理、等价性和对偶理论。对偶范数是本章对量化最有用的概念:在稳健优化中,"收益估计误差在某个范数球内时的最坏损失"恰好等于权重的对偶范数。
学习目标
读完本章,你应当能够:
- 掌握范数、半范数、内积的公理,证明 Cauchy–Schwarz 不等式,知道平行四边形恒等式刻画了"来自内积的范数"。
- 熟悉 \(\ell_1,\ell_2,\ell_\infty,\ell_p\)、\(k\)-范数、\(\|Sx\|\) 型范数和 Frobenius 内积,并能把它们对应到组合约束。
- 理解有限维空间中所有范数等价,掌握 \(\ell_1,\ell_2,\ell_\infty\) 之间的最佳常数。
- 会计算对偶范数(\(\ell_p\) 与 \(\ell_q\)、\(\|Sx\|\) 与 \(\|S^{-*}y\|\)、\(k\)-范数),理解对偶定理 \(\|\cdot\|^{DD}=\|\cdot\|\),并用于稳健组合优化。
- 掌握单位球的几何刻画(紧、凸、均衡、0 为内点),知道绝对范数等价于单调范数。
- 会用特征值截断和交替投影修复非正定的相关矩阵。
读前导读
这一章在解决什么问题。 "范数"就是给向量量一个"大小"。你其实天天在用各种范数,只是没这么叫:组合的总杠杆 \(\sum|w_i|\)、单票上限 \(\max|w_i|\)、前十大持仓占比、跟踪误差、组合波动率 \(\sqrt{w^T\Sigma w}\)——都是给权重向量 \(w\) 量大小的不同尺子。本章先把"什么样的函数算一把合格的尺子"讲清楚(三条公理),然后回答两个问题:不同的尺子之间能换算吗(范数等价,换算系数和资产数 \(n\) 有关)?每把尺子有没有一把"配对的尺子"(对偶范数)?
对偶范数是本章对你最有用的概念。设想你对每只股票的预期收益估计都可能偏差 \(\pm1\%\),那么一个组合在最坏情况下会少赚多少?答案恰好是 \(1\%\times\sum|w_i|\)——"误差的 \(\ell_\infty\) 尺子"配对出"权重的 \(\ell_1\) 尺子"。如果误差的形状和协方差一样(椭球),最坏损失就正比于组合波动率。这给了稳健组合优化(robust optimization)一个干净的解释:你对估计误差的假设,直接决定了优化里该加什么惩罚项。本章最后还讲了一个立刻能用的技巧:成对删除缺失数据后算出的"相关矩阵"常常不是半正定的,怎样用最小的改动修复它。
需要先想起来的数学。
- 绝对值不等式:\(|a+b|\le|a|+|b|\)(三角不等式),\(\big||a|-|b|\big|\le|a-b|\)。范数就是把它推广到向量。例:\(a=3,b=-5\),\(|a+b|=2\le8\)。见 第 00 册第 01 章 函数极限与连续。
- 内积与 Cauchy–Schwarz:\(x^Ty=\sum x_iy_i\);\(|x^Ty|\le\|x\|_2\|y\|_2\)。统计版本就是 \(|\operatorname{Cov}(X,Y)|\le\sigma_X\sigma_Y\),即相关系数在 \([-1,1]\) 之间。见 第 00 册第 07 章 概率中的分析工具。
- max 与 sup:\(\max_{x\in S}f(x)\) 是 \(f\) 在集合 \(S\) 上取到的最大值;\(\sup\)(上确界)是"最小的上界",在本章的有限维紧集上与 \(\max\) 相同。见 第 00 册第 01 章。
- 凸集与凸函数:集合里任意两点的连线仍在集合里,叫凸集;范数都是凸函数,所以范数约束的优化问题是凸优化,局部最优就是全局最优。见 第 00 册第 05 章 多元微积分与优化。
- 紧集与连续函数的最值(Weierstrass 定理):有界闭集上的连续函数一定取到最大值和最小值。范数等价定理的证明只用这一条。
符号提示:\(\|x\|_p=(\sum|x_i|^p)^{1/p}\);\(\|\cdot\|^D\) 是对偶范数;\(\langle x,y\rangle\) 是内积;\(\operatorname{Re}\) 取实部(实数情形可以忽略);\(\mathbf F\) 表示实数域 \(\mathbf R\) 或复数域 \(\mathbf C\);\(x\perp y\) 表示正交;\(\operatorname{Co}(B)\) 是凸包(包含 \(B\) 的最小凸集),上划线表示取闭包。
怎么读这一章。 核心必读:5a.2.1–5a.2.2(公理与 Cauchy–Schwarz,以及"组合波动率是范数")、5a.3.1(常见范数表)、5a.3.3(最近半正定矩阵)、5a.5.1 的结论与常数表、5a.5.2(对偶范数与稳健优化,全章最重要),以及实战 1、2。第一遍可以跳过或只看结论:5a.2.3、5a.2.4 中的 Hlawka 不等式、5a.3.4(函数空间)、5a.4、5a.5.1 中定理 5.4.4 的证明、5a.5.3 的证明、5a.5.4、5a.6 中定理 5.5.8 与对偶定理 (b)(d) 的细节。
5a.1 为什么需要范数(5.0 节)
\(\mathbf R^2,\mathbf R^3\) 中最熟悉的"大小"是欧氏长度 \(\|x\|_2=(x^Tx)^{1/2}\)。原书用四个例子说明为什么需要更一般的度量:
- 收敛性(例 5.0.1):标量 \(|x|<1\) 时 \((1-x)^{-1}=1+x+x^2+\cdots\)。矩阵版本 \((I-A)^{-1}=I+A+A^2+\cdots\)(Neumann 级数)何时成立?答案是:只要 \(A\) 的某一个矩阵范数小于 1。\(e^A=\sum A^k/k!\) 等矩阵函数的收敛也靠范数分析。
- 精度(例 5.0.2):矩阵元素来自数据或此前计算,带有误差 \(A=A_0+E\)。我们关心 \((A_0+E)^{-1}-A_0^{-1}\) 有多大——这正是第 05b 章条件数要回答的问题。
- 界(例 5.0.3):特征值、奇异值的界,以及它们在扰动下变化量的界,常用范数表达(第 04a 章的 \(\|E\|_2\)、第 06 章的 Geršgorin 与 Bauer–Fike)。
- 连续性(例 5.0.4):\(f\) 在 \(x_0\) 连续的定义里,欧氏距离可以换成任何范数。
5a.2 范数与内积的公理(5.1 节)
5a.2.1 向量范数
定义 5.1.1 设 \(V\) 是 \(\mathbf F\)(\(\mathbf R\) 或 \(\mathbf C\))上的向量空间。函数 \(\|\cdot\|:V\to\mathbf R\) 称为范数(norm),若对所有 \(x,y\in V\)、\(c\in\mathbf F\):
- \(\|x\|\ge0\)(非负性);1a. \(\|x\|=0\iff x=0\)(正定性);
- \(\|cx\|=|c|\,\|x\|\)(齐次性);
- \(\|x+y\|\le\|x\|+\|y\|\)(三角不等式,即次可加性)。
白话解释:三条公理各管一件事,用组合波动率 \(\sigma(w)\) 对照着看最清楚。正定性:只有空仓的波动率为 0。齐次性:仓位放大 2 倍,波动率放大 2 倍;整体做空(\(c=-1\)),波动率不变(所以是 \(|c|\))。三角不等式:两个组合合并后的风险不超过各自风险之和,这就是分散化。VaR 一般不满足三角不等式(它不是次可加的),这正是 CFA 里提到"VaR 不是一致风险度量"的原因之一;而波动率、总杠杆、单票上限都满足。
只满足 1、2、3 的称为半范数(seminorm):非零向量的半范数可以为零。例如 \(|z^Tx|\)(对某个固定 \(z\))是半范数,零空间是 \(z^\perp\)。习题 5.1.P10 说明公理 1 可以由 2、3 推出:\(0=\|x-x\|\le2\|x\|\)。
引理 5.1.2(反向三角不等式)
由 \(y=x+(y-x)\) 与 \(x=y+(x-y)\) 两次用三角不等式即得。它说明范数是 1-Lipschitz 的连续函数。
量化中的半范数:因子暴露 \(|b^Tw|\)(只看组合在一个因子上的暴露)、跟踪误差 \(\sqrt{(w-w_b)^T\Sigma(w-w_b)}\) 在 \(\Sigma\) 奇异时,都是半范数:存在非零的组合调整使它们为零(对因子中性的调整、落在 \(\Sigma\) 零空间的调整)。
5a.2.2 内积与 Cauchy–Schwarz
定义 5.1.3 函数 \(\langle\cdot,\cdot\rangle:V\times V\to\mathbf F\) 称为内积(inner product),若:(1) \(\langle x,x\rangle\ge0\);(1a) \(\langle x,x\rangle=0\iff x=0\);(2) \(\langle x+y,z\rangle=\langle x,z\rangle+\langle y,z\rangle\);(3) \(\langle cx,y\rangle=c\langle x,y\rangle\);(4) \(\langle x,y\rangle=\overline{\langle y,x\rangle}\)。
标准例子是欧氏内积 \(\langle x,y\rangle=y^*x\)。加权版本 \(y^*Dx\)(\(D\) 对角)是内积当且仅当所有 \(d_i>0\);更一般地,\(y^*Ax\) 是内积当且仅当 \(A\) 正定。协方差就是一个内积:\(\langle w_1,w_2\rangle_\Sigma=w_2^T\Sigma w_1\) 是两个组合收益的协方差。
定理 5.1.4(Cauchy–Schwarz 不等式)
等号当且仅当 \(x,y\) 线性相关。
证明 设 \(y\ne0\),令 \(v=\langle y,y\rangle x-\langle x,y\rangle y\)。展开
因 \(\langle y,y\rangle>0\) 得不等式;等号当且仅当 \(v=0\),即 \(x,y\) 线性相关。\(\square\)
推导拆解:\(v\) 的选法其实就是"\(x\) 对 \(y\) 回归的残差"(乘了一个正常数 \(\langle y,y\rangle\)):\(x-\beta y\),\(\beta=\langle x,y\rangle/\langle y,y\rangle\) 是回归系数。残差的"方差"不可能为负,这就是整个证明。 用实数情形展开(记 \(a=\langle x,x\rangle\),\(b=\langle x,y\rangle\),\(c=\langle y,y\rangle\)):\(v=cx-by\), \(\langle v,v\rangle=c^2\langle x,x\rangle-2cb\langle x,y\rangle+b^2\langle y,y\rangle=c^2a-2cb^2+b^2c=c(ac-b^2)\)。 每一项都只用了内积的线性和对称性。\(c>0\),所以 \(ac-b^2\ge0\),即 \(b^2\le ac\)。 统计读法:由 \(\langle v,v\rangle=c^2\operatorname{Var}(\text{残差})\) 与上式相除,得 \(\sigma_X^2\sigma_Y^2-\operatorname{Cov}^2=\sigma_Y^2\cdot\operatorname{Var}(\text{残差})\ge0\)。残差为零(完全线性相关)时取等,即 \(|\rho|=1\)。
对协方差内积,Cauchy–Schwarz 就是"相关系数的绝对值不超过 1":\(|\operatorname{Cov}(r_1,r_2)|\le\sigma_1\sigma_2\)。
推论 5.1.7 \(\|x\|=\langle x,x\rangle^{1/2}\) 是范数,称为由内积导出的范数。三角不等式来自
组合波动率是范数:\(\sigma(w)=\sqrt{w^T\Sigma w}\) 是由协方差内积导出的范数(\(\Sigma\succ0\) 时)。三角不等式 \(\sigma(w_1+w_2)\le\sigma(w_1)+\sigma(w_2)\) 就是分散化原理:合并两个组合,风险不超过各自风险之和,等号当且仅当两者完全正相关(Cauchy–Schwarz 取等)。这也是"波动率是次可加风险度量"的数学根源。
半内积(定理 5.1.8):去掉 (1a) 后 Cauchy–Schwarz 仍成立,但证明不能除以 \(\langle y,y\rangle\),要考察实二次多项式 \(p(t)=\langle tx-e^{i\theta}y,tx-e^{i\theta}y\rangle\ge0\)。等号刻画会失效:\(A=\operatorname{diag}(1,0)\) 给出的半内积下,线性无关的 \([1,0]^T\) 与 \([1,1]^T\) 也能使等号成立。
5a.2.3 哪些范数来自内积
内积导出的范数满足平行四边形恒等式(习题 5.1.P4)
并可由极化恒等式(5.1.P6)还原内积:\(\operatorname{Re}\langle x,y\rangle=\tfrac14(\|x+y\|^2-\|x-y\|^2)\)。Jordan–von Neumann 定理(5.1.P12)说反之也成立:满足平行四边形恒等式的范数一定来自某个内积。\(\ell_1\) 和 \(\ell_\infty\) 不满足它(5.1.P5、P7),所以它们没有"夹角"和"正交"的概念,也就没有"正交投影"这种几何工具。
5a.2.4 习题 5.1 中的统计不等式
- 5.1.P9(投影):最小化 \(\|x-\alpha y\|\) 的 \(\alpha_0=\langle x,y\rangle/\|y\|^2\),残差 \(x-\alpha_0y\perp y\)。这是单变量 OLS 和 beta 的几何形式:\(\beta=\operatorname{Cov}(r,m)/\operatorname{Var}(m)\)。
- 5.1.P11(勾股定理):\(\|x+y\|^2=\|x\|^2+\|y\|^2\iff\operatorname{Re}\langle x,y\rangle=0\)——不相关收益的方差可加。
- 5.1.P14(Laguerre–Samuelson 不等式):实数 \(x_1,\dots,x_n\) 的均值 \(\mu\)、标准差 \(\sigma=\big(\frac1n\sum(x_i-\mu)^2\big)^{1/2}\),则
等号当且仅当其余 \(x_p\) 全相等。样本中任何一个点的标准化偏离都不超过 \(\sqrt{n-1}\)——这是一个确定性的上界,与分布无关。实务含义:在 \(n=20\) 的样本里用"偏离均值 5 倍标准差"判断异常值,其上界只有 \(\sqrt{19}\approx4.36\),这条规则永远不会触发;样本量小时 \(z\) 分数型的异常检测要格外小心(极端值会同时抬高 \(\sigma\),把自己"藏起来")。
- 5.1.P13(Hlawka 不等式):内积范数满足 \(\|x+y\|+\|x+z\|+\|y+z\|\le\|x+y+z\|+\|x\|+\|y\|+\|z\|\)。
5a.3 常见范数(5.2 节)
5a.3.1 \(\mathbf C^n\) 上的范数
| 名称 | 定义 | 量化中的对应 |
|---|---|---|
| \(\ell_1\)(和范数、Manhattan) | \(|x|_1=\sum\vert x_i\vert \) | 总杠杆、换手率 \(|w_t-w_{t-1}|_1\)、Lasso |
| \(\ell_2\)(欧氏) | \(|x|_2=(\sum\vert x_i\vert ^2)^{1/2}\) | 岭回归、"有效持仓数" \(1/|w|_2^2\) |
| \(\ell_\infty\)(最大范数) | \(|x|_\infty=\max\vert x_i\vert \) | 单票仓位上限 |
| \(\ell_p\),\(p\ge1\) | \((\sum\vert x_i\vert ^p)^{1/p}\) | |
| \(k\)-范数 | \(|x|_{[k]}=\) 最大的 \(k\) 个 \(\vert x_i\vert \) 之和 | 前 \(k\) 大持仓集中度 |
| \(|Sx|\)(\(S\) 列满秩) | \(|x|_S=|Sx|\) | 组合波动率 \(|\Sigma^{1/2}w|_2\)、马氏距离 |
几点说明:
- 欧氏范数酉不变:\(\|Ux\|_2=\|x\|_2\)。并且 \(\mathbf C^n\) 上的酉不变范数只有欧氏范数的正数倍(5.2.P6)。
- \(k\)-范数连接 \(\ell_\infty\) 与 \(\ell_1\):\(\|\cdot\|_\infty=\|\cdot\|_{[1]}\le\|\cdot\|_{[2]}\le\cdots\le\|\cdot\|_{[n]}=\|\cdot\|_1\)。它在原书第 7 章(Ky Fan \(k\)-范数,本册第 07b 章)的矩阵版本中很重要。
- \(0<p<1\) 时 \(\|x\|_p\) 不是范数(5.2.P1):\(\|e_1+e_2\|_p=2^{1/p}>2=\|e_1\|_p+\|e_2\|_p\)。它的"单位球"不凸。(稀疏优化里用的 \(\ell_p\),\(p<1\) 惩罚因此是非凸的。)
- \(\lim_{p\to\infty}\|x\|_p=\|x\|_\infty\)(5.2.P2)。
- \(\ell_p\) 与 \(k\)-范数都是绝对的(只依赖 \(|x_i|\))且置换不变的。
- \(\|Sx\|\) 型范数(5.2.6):\(S\) 列满秩时是范数,否则只是半范数。加权 \(\ell_p\) 范数 \((\sum w_i|x_i|^p)^{1/p}\) 就是 \(S=\operatorname{diag}(w_i^{1/p})\) 的情形(5.2.P4)。
5a.3.2 矩阵空间上的 Frobenius 内积
\(M_{m,n}\) 上定义 Frobenius 内积
它导出 Frobenius 范数 \(\|A\|_F=(\operatorname{tr}A^*A)^{1/2}\)(原书记作 \(\|A\|_2\),即把矩阵看成长向量的 \(\ell_2\) 范数)。
5a.3.3 最近的 Hermitian 与半正定矩阵(习题 5.2.P14)
这是本章对量化最直接有用的一个习题。
命题 设 \(A=H+iK\)(Toeplitz 分解,第 04a 章)。在 Frobenius 范数下:
- 离 \(A\) 最近的 Hermitian 矩阵是 \(H=\tfrac12(A+A^*)\);
- 离 \(A\) 最近的半正定矩阵是 \(H_+\),即把 \(H\) 的负特征值置零。
证明 (1) 对任意 Hermitian \(X\),\(\|A-X\|_F^2=\|H-X\|_F^2+\|K\|_F^2\)(Hermitian 与斜 Hermitian 在 Frobenius 内积下正交),在 \(X=H\) 时最小。(2) 写 \(H=U\Lambda U^*\),\(Y=U^*XU=[y_{ij}]\),由 Frobenius 范数的酉不变性
\(X\succeq0\) 要求 \(y_{ii}\ge0\)。最优选择是 \(Y\) 对角且 \(y_{ii}=\max(\lambda_i,0)\)。\(\square\)
推导拆解:两步各用了什么。 (1) 为什么 \(\|A-X\|_F^2\) 能拆成两项之和:\(A-X=(H-X)+iK\),前者 Hermitian,后者斜 Hermitian。对 Hermitian 的 \(P\) 和斜 Hermitian 的 \(Q\),Frobenius 内积 \(\operatorname{Re}\operatorname{tr}(Q^*P)=0\),即二者"互相垂直",于是勾股定理成立。实数情形就是"对称矩阵与反对称矩阵垂直":例如 \(\operatorname{tr}\big(\begin{bmatrix}0&1\\-1&0\end{bmatrix}^T\begin{bmatrix}a&b\\b&c\end{bmatrix}\big)=-b+b=0\)。 (2) 为什么最优 \(Y\) 是对角的:\(X\succeq0\) 只约束了 \(Y\) 的对角元(必须 \(\ge0\),因为 \(y_{ii}=u_i^*Xu_i\) 是半正定矩阵的二次型);非对角元只会让 \(\sum_{i\ne j}|y_{ij}|^2\) 变大,所以置零最好,而对角阵 \(\operatorname{diag}(\max(\lambda_i,0))\) 恰好也是半正定的,约束满足。对角元上则是一维问题:在 \(y\ge0\) 中找离 \(\lambda_i\) 最近的数,答案是 \(\max(\lambda_i,0)\)。 严格地说,"\(X\succeq0\) 要求 \(y_{ii}\ge0\)"只是必要条件;论证的逻辑是:先在这个更宽的集合上求出最优解,再验证这个最优解本身就是半正定的,所以它也是原问题的最优解。
量化含义:成对删除缺失值、异步交易、把不同来源的相关系数拼在一起,得到的"相关矩阵"常有负特征值,不能直接用于优化或模拟(Cholesky 分解失败)。截掉负特征值就是 Frobenius 意义下的最优修复,修复距离为 \(\sqrt{\sum_{\lambda_i<0}\lambda_i^2}\)。但截断后对角元不再是 1;若必须得到相关矩阵(半正定 + 单位对角),就要在两个凸集之间做交替投影,即 Higham(2002)的最近相关矩阵算法。截断特征值是该算法每一步的子问题。实战 2 演示两者。
5a.3.4 函数空间(了解)
\(C[a,b]\) 上有 \(L_1,L_2,L_p,L_\infty\) 范数,\(\langle f,g\rangle=\int_a^bf\bar g\) 是内积。习题 5.2.P9 由此推出 Grüss 不等式:若 \(\alpha\le f\le\beta\)、\(\gamma\le g\le\delta\),则
离散版本:两个有界随机变量的协方差不超过各自取值区间长度乘积的四分之一。
5a.4 用已知范数构造新范数(5.3 节)
两个范数之和、正数倍、最大值都是范数。它们是下面定理的特例:
定理 5.3.1 设 \(\|\cdot\|_{\alpha_1},\dots,\|\cdot\|_{\alpha_m}\) 是 \(V\) 上的范数,\(\|\cdot\|\) 是 \(\mathbf R^m\) 上的范数且在非负卦限上单调(\(0\le y\le z\) 逐分量 ⇒ \(\|y\|\le\|z\|\)),则
是 \(V\) 上的范数。
三角不等式的证明用到单调性:逐分量 \(\|x+y\|_{\alpha_i}\le\|x\|_{\alpha_i}+\|y\|_{\alpha_i}\),单调性保证外层范数保序。习题 5.3.P2 说明单调性不可去;两个范数的最小值一般不是范数(5.3.P1)。
量化含义:组合约束常是几个范数的组合,例如"杠杆 + 集中度"的混合惩罚 \(\lambda_1\|w\|_1+\lambda_2\|w\|_{[k]}\),或"最大偏离"\(\max\{\|w-w_b\|_\infty,\ \|w-w_b\|_1/10\}\)。定理 5.3.1 保证它们仍是范数,从而仍是凸函数,优化问题保持凸性。
5a.5 范数的分析性质(5.4 节)
5a.5.1 有限维中所有范数等价
不同范数各有用途:\(\ell_2\) 除原点外光滑,便于优化;\(\ell_1\) 在统计中给出比经典回归更稳健的估计;\(\ell_\infty\) 直接控制每个分量。实践中理论上最自然的范数和最容易计算的范数常常不同,所以需要知道它们之间的关系。
无穷维中会出问题(例 5.4.2):在 \(C[0,1]\) 上取峰高 \(k^{1/2}\)、底宽 \(1/k\) 的帐篷函数 \(f_k\),则 \(\|f_k\|_1=\tfrac12k^{-1/2}\to0\),\(\|f_k\|_2=1/\sqrt3\) 不变,\(\|f_k\|_\infty=k^{1/2}\to\infty\)。同一个序列在 \(L_1\) 下收敛、\(L_2\) 下有界不收敛、\(L_\infty\) 下发散。
有限维中这种怪现象不会出现:
定理 5.4.4 设 \(f_1,f_2\) 是有限维空间 \(V\) 上的实函数,都满足正定、齐次和(关于坐标的)连续性。则存在正常数 \(C_m,C_M\) 使
证明 取一组基,在坐标的欧氏单位球面 \(S\)(紧集)上考察连续函数 \(h=f_2/f_1\)(分母为正)。由 Weierstrass 定理,\(h\) 在 \(S\) 上取到正的最小值 \(C_m\) 和有限的最大值 \(C_M\);再用齐次性推广到全空间。\(\square\)
白话解释:定理说的是"任何两把尺子之间都有固定的换算范围"。证明的思路:由于齐次性,只需比较单位球面上的点(其他点都是球面上的点乘一个倍数,两把尺子同比例放大)。单位球面是有界闭集,连续函数 \(f_2/f_1\) 在上面一定有最大值和最小值,而且最小值大于 0(因为 \(f_2\) 在球面上处处为正)。这两个最值就是换算常数。 为什么无穷维会失败:无穷维空间的单位球面不再是紧集,比值的"最大值"可能根本不存在(会无限增大),上面的帐篷函数就是例子。 对量化的提醒:常数存在,但可能很大。\(n=3000\) 只股票时 \(\sqrt n\approx55\),\(\ell_1\) 与 \(\ell_2\) 的约束松紧可以差 55 倍。
满足这三条(不一定满足三角不等式)的函数称为预范数(pre-norm)。范数都是预范数(引理 5.4.3 保证连续性)。
推论 5.4.5–5.4.7(范数等价) 有限维实或复向量空间上任意两个范数等价:一个序列在一个范数下收敛,当且仅当在另一个范数下收敛。特别地,\(\mathbf C^n\) 中按任意范数收敛等价于逐分量收敛。由此推出:有限维空间完备(Cauchy 列必收敛,定理 5.4.10);任意范数的单位球是紧集(推论 5.4.8)。
最佳常数(习题 5.4.P3):\(\|x\|_\alpha\le C_{\alpha\beta}\|x\|_\beta\) 的最小常数
| \(\alpha\backslash\beta\) | \(1\) | \(2\) | \(\infty\) |
|---|---|---|---|
| \(1\) | 1 | \(\sqrt n\) | \(n\) |
| \(2\) | 1 | 1 | \(\sqrt n\) |
| \(\infty\) | 1 | 1 | 1 |
取等的向量是 \(e_1\) 或全 1 向量。一般地,\(1\le p_1<p_2\) 时
量化含义:\(\|w\|_1\le\sqrt n\|w\|_2\) 给出"有效持仓数" \(N_{\text{eff}}=1/\|w\|_2^2\) 的一个界:对多头组合(\(\|w\|_1=1\)),\(N_{\text{eff}}\le n\),等号当且仅当等权。常数与维数 \(n\) 有关,意味着在几千只股票的组合里,不同范数约束的"松紧程度"差异巨大:\(\|w\|_\infty\le1\%\) 与 \(\|w\|_2\le1\%\) 是完全不同的约束。
5a.5.2 对偶范数
定义 5.4.12 设 \(f\) 是 \(\mathbf F^n\) 上的预范数,它的**对偶范数(dual norm)**为
即使 \(f\) 本身不满足三角不等式,\(f^D\) 也满足(最大值的次可加性)——预范数的对偶总是范数。
白话解释:对偶范数回答的问题是:"给定一个收益向量 \(y\),在大小(用 \(f\) 量)不超过 1 的所有组合 \(x\) 中,最多能赚多少 \(y^*x\)?" 它衡量的是 \(y\) 在"\(f\) 预算"下能被利用到什么程度。 例:\(f=\ell_1\)(总杠杆不超过 1),\(y=(3\%,-5\%,1\%)\)。最好的做法是把全部杠杆押在绝对值最大的那只上(做空第二只),赚 \(5\%=\|y\|_\infty\)。所以 \(\ell_1\) 的对偶是 \(\ell_\infty\)。反过来,\(f=\ell_\infty\)(每只仓位不超过 1),最好的做法是每只都满仓、方向与收益同号,赚 \(3+5+1=9\%=\|y\|_1\),所以 \(\ell_\infty\) 的对偶是 \(\ell_1\)。 三种写法等价:第一种和第二种的区别只在取实部还是绝对值(可以乘一个 \(e^{i\theta}\) 把 \(y^*x\) 转成正实数,实数情形就是把 \(x\) 换成 \(-x\));第三种由齐次性把"\(f(x)=1\)"放松成任意非零 \(x\) 再除以 \(f(x)\)。
引理 5.4.13(广义 Cauchy–Schwarz) \(|y^*x|\le f(x)f^D(y)\)。
常见对偶:
- \(\ell_1\) 与 \(\ell_\infty\) 互为对偶(5.4.15a):\(|y^*x|\le\|x\|_1\|y\|_\infty\),在 \(x=e_i\)(\(|y_i|\) 最大)时取等。
- 欧氏范数自对偶:\(\|y\|_2^D=\|y\|_2\)。
- \(\ell_p\) 与 \(\ell_q\) 互为对偶(\(1/p+1/q=1\)):由 Hölder 不等式 \(|y^*x|\le\|x\|_p\|y\|_q\)。
- \(\|Sx\|\) 型范数(5.4.14):\(S\) 非奇异时
统计直觉:马氏范数 \(\|\Sigma^{-1/2}x\|_2\) 的对偶是 \(\|\Sigma^{1/2}y\|_2\)。
推导拆解:(5.4.14) 用一次换元就能得到。按定义 \(\|y\|_S^D=\max_{\|Sx\|=1}|y^*x|\)。令 \(u=Sx\)(\(S\) 非奇异,\(x=S^{-1}u\),\(u\) 取遍所有满足 \(\|u\|=1\) 的向量),则 \(y^*x=y^*S^{-1}u=(S^{-*}y)^*u\)。于是 \(\|y\|_S^D=\max_{\|u\|=1}|(S^{-*}y)^*u|=\|S^{-*}y\|^D\)。 套到马氏范数:\(S=\Sigma^{-1/2}\)(对称),\(S^{-*}=\Sigma^{1/2}\),原范数是 \(\ell_2\),其对偶仍是 \(\ell_2\),所以对偶是 \(\|\Sigma^{1/2}y\|_2=\sqrt{y^T\Sigma y}\)。这正是下面稳健优化中"椭球误差 → 波动率惩罚"的来源。
- \(k\)-范数的对偶(习题 5.4.P8):
定理 5.4.17(唯一自对偶的范数) \(\|\cdot\|=\|\cdot\|^D\) 当且仅当 \(\|\cdot\|=\|\cdot\|_2\)。
证明很短:令 \(N\) 自对偶,由广义 Cauchy–Schwarz,\(\|x\|_2^2=|x^*x|\le N(x)N^D(x)=N(x)^2\),所以 \(\|\cdot\|_2\le N\);对偶反序(引理 5.4.16)给出 \(N=N^D\le\|\cdot\|_2^D=\|\cdot\|_2\)。
量化含义:稳健优化中的最坏情形 = 对偶范数。设预期收益估计为 \(\hat\mu\),真实值 \(\mu=\hat\mu+\Delta\),误差落在不确定集 \(\{\Delta:\|\Delta\|\le\varepsilon\}\) 中。组合 \(w\) 的最坏预期收益是
\[\min_{\|\Delta\|\le\varepsilon}(\hat\mu+\Delta)^Tw=\hat\mu^Tw-\varepsilon\max_{\|\Delta\|\le1}\Delta^Tw=\hat\mu^Tw-\varepsilon\|w\|^D.\]于是稳健均值–方差问题 \(\max_w\ \hat\mu^Tw-\varepsilon\|w\|^D-\tfrac\gamma2w^T\Sigma w\) 中,不确定集的形状决定了惩罚项:
- 盒子集 \(\|\Delta\|_\infty\le\varepsilon\)(每只股票的预期收益各有 \(\pm\varepsilon\) 的误差)⟹ 惩罚 \(\varepsilon\|w\|_1\),即杠杆惩罚,倾向于稀疏组合;
- 球 \(\|\Delta\|_2\le\varepsilon\) ⟹ 惩罚 \(\varepsilon\|w\|_2\);
- 椭球 \(\|\Sigma^{-1/2}\Delta\|_2\le\varepsilon\)(误差与协方差同形,这是 \(\hat\mu\) 为样本均值时的自然置信域)⟹ 由 (5.4.14),惩罚 \(\varepsilon\|\Sigma^{1/2}w\|_2=\varepsilon\,\sigma(w)\),即惩罚组合波动率。
反过来,约束 \(\|w\|_{[k]}\le c\)(前 \(k\) 大持仓之和不超过 \(c\))的拉格朗日对偶中会出现 (5.4.22) 的 \(\max\{\|y\|_1/k,\|y\|_\infty\}\)。实战 1 用数值验证这些对偶关系。
推导拆解:最坏情形公式中的每个等号。 第 1 个等号:\((\hat\mu+\Delta)^Tw=\hat\mu^Tw+\Delta^Tw\),第一项与 \(\Delta\) 无关,只需最小化 \(\Delta^Tw\)。 第 2 个等号:令 \(\Delta=\varepsilon u\),\(\|u\|\le1\),则 \(\min\Delta^Tw=\varepsilon\min_{\|u\|\le1}u^Tw=-\varepsilon\max_{\|u\|\le1}u^Tw\)(单位球关于原点对称,把 \(u\) 换成 \(-u\) 即可把 min 变成 max)。 第 3 个等号:\(\max_{\|u\|\le1}u^Tw\) 按定义就是 \(\|w\|^D\)(球内的最大值在边界取到)。 数值例(盒子集):\(w=(0.6,-0.4)\),\(\varepsilon=1\%\)。最坏情况是多头那只的收益少 1%、空头那只的收益多 1%,损失 \(0.6\times1\%+0.4\times1\%=1\%=\varepsilon\|w\|_1\)。 直觉总结:你对误差越"不知道方向"(盒子:每只独立地可能偏),惩罚越像杠杆;误差越像"沿着风险方向偏"(椭球),惩罚越像波动率。
5a.5.3 单调范数与绝对范数
定义 5.4.18 范数称为单调的(monotone),若 \(|x|\le|y|\)(逐分量)⇒ \(\|x\|\le\|y\|\);称为绝对的(absolute),若 \(\|x\|=\||x|\|\)。
定理 5.4.19 (a) 绝对范数的对偶为 \(\|y\|^D=\max_{x\ne0}|y|^T|x|/\|x\|\);(b) 绝对范数的对偶仍是绝对且单调的;(c) 绝对 ⇔ 单调。
"绝对 ⇒ 单调"的证明用了一个凸组合技巧:把第 \(k\) 个分量缩小为 \(\alpha x_k\)(\(0\le\alpha\le1\))的向量写成
由三角不等式和绝对性,它的范数不超过 \(\|x\|\)。
量化中几乎所有仓位范数(\(\ell_p\)、\(k\)-范数、加权 \(\ell_p\))都是绝对的;组合波动率 \(\|\Sigma^{1/2}w\|_2\) 不是:把一只与其他资产负相关的股票的仓位缩小,组合风险可能反而上升(失去了对冲)。这就是"缩小仓位不一定降低风险"的范数论表述。
5a.5.4 其他习题要点
- 5.4.P11–P13(等距):保持范数的矩阵 \(\|Ax\|=\|x\|\) 构成一个群,特征值模为 1。\(p\ne2\) 时 \(\ell_p\) 范数的等距恰好是酉广义置换矩阵(每行每列一个模 1 的非零元)。所以 \(\ell_1\)、\(\ell_\infty\) 约束在"旋转"下不保持——在主成分坐标下的 \(\ell_1\) 约束与原始坐标下的 \(\ell_1\) 约束是不同的约束;只有 \(\ell_2\) 约束是旋转不变的。
- 5.4.P10:\(\|x\|_\alpha\le C\|x\|_\beta\) ⇒ \(\|x\|_\beta^D\le C\|x\|_\alpha^D\)(对偶反序)。
5a.6 单位球的几何与对偶定理(5.5 节)
5a.6.1 单位球决定范数
定义 5.5.1 单位球 \(B_{\|\cdot\|}=\{x:\|x\|\le1\}\)。由齐次性,单位球(实际上只需其边界)完全决定范数;\(\|x\|_\alpha\le\|x\|_\beta\) 对一切 \(x\) 成立当且仅当 \(B_\beta\subset B_\alpha\)。\(\mathbf R^2\) 中 \(\ell_1\) 单位球是菱形,\(\ell_2\) 是圆,\(\ell_\infty\) 是正方形,依次包含。单位球是多面体的范数称为多面体范数(\(\ell_1\)、\(\ell_\infty\) 是,\(1<p<\infty\) 的 \(\ell_p\) 不是)。
优化含义:多面体范数的约束可以写成线性约束,问题仍是 LP / QP;\(\ell_2\) 约束需要二阶锥规划(SOCP)。多面体单位球有"角",所以 \(\ell_1\) 约束的最优解常落在顶点上——这就是 \(\ell_1\) 产生稀疏解的几何原因。
定理 5.5.8(单位球的刻画) 有限维空间中集合 \(B\) 是某个范数的单位球,当且仅当 \(B\) (i) 紧、(ii) 凸、(iii) 均衡(\(x\in B\)、\(|\alpha|=1\) ⇒ \(\alpha x\in B\))、(iv) 以 0 为内点。
充分性的构造是 Minkowski 规范函数(gauge):\(\|x\|=\min\{1/t:t>0,\ tx\in B\}\),即沿射线方向以"到边界的距离"为单位度量 \(x\)。凸性给出三角不等式。
金融直觉:可以把单位球看成"风控允许的全部仓位集合",规范函数则回答:"当前仓位 \(x\) 用掉了风控额度的几倍?"把 \(x\) 按比例缩小,直到恰好碰到允许集合的边界,缩小的倍数的倒数就是 \(\|x\|\)。例:允许集合是"每只仓位不超过 10%"(正方形),\(x\) 中最大仓位是 25%,需要缩到 \(0.4\) 倍才合规,所以 \(\|x\|=1/0.4=2.5\),即用掉了 2.5 倍额度。四个条件对应风控集合的合理要求:有界(不能无限加仓)、凸(两个合规组合的混合仍合规)、对称(多空同等对待)、包含原点附近(小仓位总是合规)。
5a.6.2 对偶定理
定理 5.5.9(对偶定理) 设 \(f\) 是预范数,\(B=\{f\le1\}\),\(B''=\{f^{DD}\le1\}\)。则
- (a) \(f^{DD}\le f\),即 \(B\subset B''\);
- (b) \(B''=\overline{\operatorname{Co}(B)}\)(\(B\) 的闭凸包);
- (c) 若 \(f\) 是范数,则 \(f^{DD}=f\);
- (d) 若 \(f\) 是范数,对任意 \(x_0\) 存在 \(z\) 使 \(f^D(z)=1\) 且 \(f(x_0)=z^*x_0\)("支撑泛函",Hahn–Banach 型结论)。
(b) 的核心几何事实是:闭凸包等于所有包含它的闭半空间之交,而每个半空间 \(\{t:\operatorname{Re}t^*v\le1\}\) 对应对偶空间中的一个点。(c) 给出任意范数的拟线性化表示
即任何范数都是一族线性函数的最大值。这是"范数是凸函数"的另一种看法,也是第 05b 章诱导矩阵范数性质 5.6.2(d) 的基础。
白话解释:"取两次对偶回到原来"可以这样理解:第一次对偶把"仓位的尺子"变成"收益情景的尺子"(哪些情景算合理);第二次对偶再问"在所有合理情景下,这个仓位最多赚多少"——答案恰好又是仓位本来的大小。之所以要求 \(f\) 是范数(满足三角不等式,单位球是凸的),是因为线性函数只能"看到"集合的凸包:如果原来的单位球有凹进去的部分,那些凹陷会在两次对偶后被填平(定理 (b) 说的就是这个),只得到原函数的"凸化"。 为什么"一族线性函数的最大值"一定是凸函数:每个线性函数都是凸的,凸函数的逐点最大值仍是凸函数。这就是范数约束能放心放进凸优化的原因。习题 5.5.P8:\(f^{DD}\) 是一致不超过 \(f\) 的最大范数(预范数的"凸化")。
量化含义:(5.5.10) 把"度量大小"变成"最坏情形的线性收益"。例如 \(\|w\|_1=\max_{\|y\|_\infty\le1}y^Tw\):总杠杆等于"每只股票收益在 \(\pm1\) 之间任意取值时,组合可能的最大收益"。风险度量的对偶表示(如一致风险度量 = 一族情景下的最坏期望损失)是同一思想在概率测度空间上的推广。
推论 5.5.11:绝对范数是单调的(5.4.19(c) 的概念性证明:绝对范数的对偶是绝对的,再取一次对偶)。习题 5.5.P11 给出了"弱单调但不单调"的范数的单位球例子(一个六边形),说明这些概念确实不同。
量化实战
实战 1:组合波动率是范数、稳健优化的对偶、\(k\)-范数与几个不等式
import numpy as np
from scipy.optimize import linprog
rng = np.random.default_rng(5)
n = 8
G = rng.standard_normal((n, n)); Sigma = G @ G.T / n * 0.04 + 0.01 * np.eye(n)
Lc = np.linalg.cholesky(Sigma) # Σ = L Lᵀ,波动率 = ‖Lᵀ w‖₂
vol = lambda w: np.linalg.norm(Lc.T @ w)
# ---------- 1. 组合波动率是一个范数:三角不等式 = 分散化 ----------
w1, w2 = rng.normal(0, 1, n), rng.normal(0, 1, n)
print(f"σ(w1+w2) = {vol(w1 + w2):.4f} ≤ σ(w1)+σ(w2) = {vol(w1) + vol(w2):.4f}")
# ---------- 2. 对偶范数 = 不确定集下的最坏情形 ----------
w = rng.normal(0, 1, n); w /= np.abs(w).sum()
eps = 0.01
# (a) 盒子不确定集 ‖Δμ‖∞ ≤ ε:最坏损失 = ε‖w‖₁(ℓ∞ 的对偶是 ℓ1)
worst_box = eps * np.abs(w).sum()
dmu = -eps * np.sign(w) # 取到最坏的扰动
samples = rng.uniform(-eps, eps, (200000, n))
print(f"\n盒子集:理论最坏 {worst_box:.5f},构造的扰动 {-(dmu @ w):.5f},"
f"20 万个随机扰动的最坏 {-(samples @ w).min():.5f}")
# (b) 椭球不确定集 ‖L⁻¹Δμ‖₂ ≤ ε:最坏损失 = ε‖Lᵀw‖₂ = ε·σ(w)(公式 5.4.14)
z = rng.standard_normal((200000, n)); z = z / np.linalg.norm(z, axis=1, keepdims=True) * eps
print(f"椭球集:理论最坏 {eps * vol(w):.5f},20 万个边界随机点的最坏 {-((z @ Lc.T) @ w).min():.5f}")
# ---------- 3. k-范数(前 k 大持仓之和)与它的对偶 (5.4.22) ----------
def knorm(x, k):
return np.sort(np.abs(x))[::-1][:k].sum()
def dual_knorm_lp(y, k):
"""max yᵀx s.t. ‖x‖_[k] ≤ 1;变量 [x(n), u(n), s],|x_i| ≤ s + u_i, k s + Σu ≤ 1"""
m = len(y)
c = np.concatenate([-y, np.zeros(m), [0.0]])
I = np.eye(m)
A_ub = np.vstack([np.hstack([I, -I, -np.ones((m, 1))]),
np.hstack([-I, -I, -np.ones((m, 1))]),
np.concatenate([np.zeros(m), np.ones(m), [k]])[None, :]])
b_ub = np.concatenate([np.zeros(2 * m), [1.0]])
bounds = [(None, None)] * m + [(0, None)] * m + [(0, None)]
return -linprog(c, A_ub=A_ub, b_ub=b_ub, bounds=bounds).fun
y = rng.normal(0, 1, n)
for k in [1, 3, n]:
formula = max(np.abs(y).sum() / k, np.abs(y).max())
print(f"k={k}: LP 求得 ‖y‖_[k]^D = {dual_knorm_lp(y, k):.4f},公式 max(‖y‖₁/k, ‖y‖∞) = {formula:.4f}")
# ---------- 4. 范数等价常数:‖x‖₁ ≤ √n‖x‖₂ ≤ n‖x‖∞ ----------
X = rng.standard_normal((100000, n))
r12 = (np.abs(X).sum(1) / np.linalg.norm(X, axis=1)).max()
r2i = (np.linalg.norm(X, axis=1) / np.abs(X).max(1)).max()
print(f"\nmax ‖x‖₁/‖x‖₂ = {r12:.3f} ≤ √n = {np.sqrt(n):.3f};max ‖x‖₂/‖x‖∞ = {r2i:.3f} ≤ √n")
# ---------- 5. Laguerre–Samuelson:样本极值离均值不超过 σ√(n-1) ----------
x = np.r_[rng.normal(0, 1, 49), 25.0] # 49 个正常值 + 1 个极端值
z_max = np.abs(x - x.mean()).max() / x.std()
print(f"极端值的标准化偏离 {z_max:.2f},上界 √(n-1) = {np.sqrt(len(x) - 1):.2f}")
关键输出:
σ(w1+w2) = 0.9654 ≤ σ(w1)+σ(w2) = 1.0830
盒子集:理论最坏 0.01000,构造的扰动 0.01000,20 万个随机扰动的最坏 0.00825
椭球集:理论最坏 0.00066,20 万个边界随机点的最坏 0.00065
k=1: LP 求得 ‖y‖_[k]^D = 4.5014,公式 max(‖y‖₁/k, ‖y‖∞) = 4.5014
k=3: LP 求得 ‖y‖_[k]^D = 1.5005,公式 max(‖y‖₁/k, ‖y‖∞) = 1.5005
k=8: LP 求得 ‖y‖_[k]^D = 1.3012,公式 max(‖y‖₁/k, ‖y‖∞) = 1.3012
max ‖x‖₁/‖x‖₂ = 2.807 ≤ √n = 2.828;max ‖x‖₂/‖x‖∞ = 2.494 ≤ √n
极端值的标准化偏离 6.74,上界 √(n-1) = 7.00
读法:
- 波动率的三角不等式就是分散化效应:两个组合合并后的风险 0.965 小于风险之和 1.083。
- 盒子不确定集下,最坏扰动是"每只股票都往不利方向偏 \(\varepsilon\)",最坏损失 \(=\varepsilon\|w\|_1\)。20 万个随机扰动都达不到这个最坏值(最多 0.00825)——随机抽样严重低估最坏情形,对偶范数给出的是精确值。椭球情形的最坏值等于 \(\varepsilon\) 乘组合波动率,随机抽样(在 8 维中)接近它。
- \(k\)-范数的对偶公式 (5.4.22) 与线性规划的数值解完全一致。\(k=1\) 时对偶是 \(\ell_1\),\(k=n\) 时对偶是 \(\ell_\infty\)。
- 范数等价常数的上界在随机向量上逼近但不超过。
- 50 个样本中放入一个 25 倍标准差的"极端值",它的标准化偏离只有 6.74——被它自己抬高的 \(\sigma\) "吃掉"了,而且无论多极端都不会超过 \(\sqrt{49}=7\)。
实战 2:修复非正定的相关矩阵
场景:12 只股票,每只有 60% 的日子缺失数据(如停牌、不同上市时间),用 pandas 的成对删除计算相关矩阵。
import numpy as np
import pandas as pd
rng = np.random.default_rng(21)
# ---------- 构造"不合法"的相关矩阵:成对删除缺失数据 ----------
n, T = 12, 120
F = rng.standard_normal((T, 2))
X = F @ rng.normal(0.6, 0.3, (2, n)) + 0.6 * rng.standard_normal((T, n))
mask = rng.random((T, n)) < 0.6 # 60% 缺失,且各列缺失位置不同
df = pd.DataFrame(np.where(mask, np.nan, X))
C = df.corr(min_periods=5).to_numpy() # pandas 默认成对删除
lam = np.linalg.eigvalsh(C)
print("成对相关矩阵最小的 3 个特征值:", lam[:3].round(4))
# ---------- 1. Frobenius 最近半正定矩阵 = 截掉负特征值(原书 5.2.P14) ----------
def psd_part(A):
l, V = np.linalg.eigh((A + A.T) / 2)
return (V * np.maximum(l, 0)) @ V.T
P = psd_part(C)
print(f"\n‖C - C₊‖_F = {np.linalg.norm(C - P):.4f} = sqrt(Σ 负特征值²) = "
f"{np.sqrt((np.minimum(lam, 0)**2).sum()):.4f}")
# 与其他半正定候选比较:随机方向的小扰动后再投影,都不会更近
others = [np.linalg.norm(C - psd_part(P + 0.05 * (lambda E: E + E.T)(rng.standard_normal((n, n)))))
for _ in range(500)]
print(f"500 个其他半正定矩阵到 C 的最小距离 {min(others):.4f}(不小于 {np.linalg.norm(C - P):.4f})")
print("C₊ 的对角元范围:", P.diagonal().min().round(4), "~", P.diagonal().max().round(4), "(不再是 1)")
# ---------- 2. Higham 交替投影:最近的"相关矩阵"(半正定 + 单位对角) ----------
def nearest_corr(A, iters=200):
Y, dS = A.copy(), np.zeros_like(A)
for _ in range(iters):
R = Y - dS # Dykstra 修正
Xp = psd_part(R)
dS = Xp - R
Y = Xp.copy(); np.fill_diagonal(Y, 1.0) # 投影到单位对角集合
return Y
Cn = nearest_corr(C)
print(f"\nHigham 结果:最小特征值 {np.linalg.eigvalsh(Cn)[0]:.2e},对角元全为 1?"
f"{np.allclose(Cn.diagonal(), 1)},‖C - Ĉ‖_F = {np.linalg.norm(C - Cn):.4f}")
D = np.diag(1 / np.sqrt(P.diagonal()))
print(f"对比:截断后再缩放对角 D C₊ D 的距离 {np.linalg.norm(C - D @ P @ D):.4f}")
关键输出:
成对相关矩阵最小的 3 个特征值: [-0.3705 -0.0735 -0.0281]
‖C - C₊‖_F = 0.3788 = sqrt(Σ 负特征值²) = 0.3788
500 个其他半正定矩阵到 C 的最小距离 0.7411(不小于 0.3788)
C₊ 的对角元范围: 1.0036 ~ 1.0945 (不再是 1)
Higham 结果:最小特征值 3.10e-16,对角元全为 1?True,‖C - Ĉ‖_F = 0.4326
对比:截断后再缩放对角 D C₊ D 的距离 0.5026
读法:成对删除得到的"相关矩阵"有 3 个负特征值,最小的达到 \(-0.37\),直接做 Cholesky 会失败,若用于组合优化会出现"负方差"的组合。截掉负特征值是 Frobenius 意义下的最近半正定矩阵,距离恰为负特征值平方和的平方根,与理论一致;但它的对角元不再是 1。Higham 交替投影在"半正定锥"和"单位对角仿射集"之间来回投影(Dykstra 修正保证收敛到最近点),得到真正的相关矩阵,距离 0.433;常见的"截断后再把对角缩放回 1"更简单,但距离 0.503,离原矩阵更远。
本章小结
范数是满足正定、齐次、三角不等式的"大小"度量,内积导出的范数还满足平行四边形恒等式,并带来夹角和正交的概念;Cauchy–Schwarz 不等式是相关系数不超过 1 的抽象形式,组合波动率是协方差内积导出的范数,其三角不等式就是分散化。常用范数(\(\ell_1,\ell_2,\ell_\infty,\ell_p\)、\(k\)-范数、\(\|Sx\|\))分别对应杠杆、岭惩罚、仓位上限、集中度和波动率。有限维中所有范数等价,但等价常数依赖维数,大组合中不同范数约束的松紧差别很大。对偶范数 \(\|y\|^D=\max_{\|x\|=1}|y^*x|\) 是本章的核心:\(\ell_p\) 与 \(\ell_q\) 互为对偶,欧氏范数是唯一自对偶的范数,\(\|Sx\|\) 的对偶是 \(\|S^{-*}y\|^D\);对偶定理 \(\|\cdot\|^{DD}=\|\cdot\|\) 说明每个范数都是一族线性函数的最大值。在稳健优化中,收益误差落在某范数球内时的最坏损失恰好是权重的对偶范数。单位球由紧、凸、均衡、0 为内点四条性质刻画;绝对范数等价于单调范数。Frobenius 范数下最近的半正定矩阵是截掉负特征值,这是修复相关矩阵的理论基础。
| 概念 / 定理 | 公式 | 量化用途 |
|---|---|---|
| 范数公理 | 正定、齐次、\(|x+y|\le|x|+|y|\) | 风险次可加 |
| Cauchy–Schwarz | \(\vert \langle x,y\rangle\vert ^2\le\langle x,x\rangle\langle y,y\rangle\) | \(\vert \rho\vert \le1\) |
| 平行四边形恒等式 | \(|x+y|^2+|x-y|^2=2|x|^2+2|y|^2\) | 判断是否来自内积 |
| Laguerre–Samuelson | \(\vert x_j-\mu\vert \le\sigma\sqrt{n-1}\) | 小样本异常值检测 |
| 范数等价 | \(|x|_2\le|x|_1\le\sqrt n|x|_2\) 等 | 约束松紧比较 |
| 对偶范数 | \(|y|^D=\max_{|x|=1}\vert y^*x\vert \) | 最坏情形损失 |
| \(\ell_p\) 对偶 | \(|\cdot|_p^D=|\cdot|_q\),\(\frac1p+\frac1q=1\) | 盒子集 → \(\ell_1\) 惩罚 |
| \(|Sx|\) 的对偶 | \(|y|_S^D=|S^{-*}y|^D\) | 椭球集 → 波动率惩罚 |
| \(k\)-范数对偶 | \(\max\{|y|_1/k,|y|_\infty\}\) | 集中度约束 |
| 自对偶 | \(|\cdot|=|\cdot|^D\iff\ell_2\) | |
| 对偶定理 | \(|\cdot|^{DD}=|\cdot|\),\(f(x)=\max_{f^D(y)=1}\operatorname{Re}y^*x\) | 风险度量的对偶表示 |
| 单位球刻画 | 紧、凸、均衡、0 为内点 | \(\ell_1\) 稀疏性的几何 |
| 绝对 ⇔ 单调 | \(|x|=|\vert x\vert |\iff\) 单调 | 缩仓与降风险 |
| 最近半正定矩阵 | \(\arg\min_{X\succeq0}|A-X|_F=H_+\) | 相关矩阵修复 |
练习
基础
- 验证 \(\langle x,y\rangle_\Sigma=y^T\Sigma x\) 在 \(\Sigma\succ0\) 时是内积,并写出它的 Cauchy–Schwarz 不等式的统计含义。\(\Sigma\) 只是半正定时会怎样? 答案要点:\(|\operatorname{Cov}(w_1^Tr,w_2^Tr)|\le\sigma(w_1)\sigma(w_2)\);半正定时只是半内积,\(\sigma(w)\) 只是半范数。
- 证明 \(\|x\|_1\) 不满足平行四边形恒等式(取 \(x=e_1,y=e_2\)),从而不来自任何内积。 答案要点:左边 \(\tfrac12(4+4)=4\),右边 \(1+1=2\)。
- 多头组合 \(w\ge0\)、\(\sum w_i=1\),\(n=100\)。(a) \(\|w\|_2\) 的最小值和最大值是多少?(b) 若要求单票不超过 5%,前 10 大持仓之和最多多少? 答案要点:(a) \(1/\sqrt{100}=0.1\)(等权)到 1(全仓一只);(b) \(\|w\|_{[10]}\le10\times5\%=50\%\)。
- 求 \(\ell_3\) 范数的对偶范数;验证 \(\|(1,2,2)\|_3\cdot\|(1,1,1)\|_{3/2}\ge|1+2+2|\)。 答案要点:对偶是 \(\ell_{3/2}\);\(17^{1/3}\cdot3^{2/3}\approx2.571\times2.080\approx5.35\ge5\)。
- \(\mathbf R^2\) 上 \(f(x)=|x_1-x_2|+|x_2|\) 是不是范数?是否绝对?画出它的单位球。 答案要点:是范数(\(\|Sx\|_1\) 型,\(S=\begin{bmatrix}1&-1\\0&1\end{bmatrix}\) 非奇异);不绝对(\(f(1,1)=1\ne f(1,-1)=3\));单位球是平行四边形。
进阶
- 稳健组合:\(\hat\mu\) 的误差 \(\Delta\) 满足 \(\|\Delta\|_\infty\le\varepsilon\)。证明 \(\max_{w}\ \min_{\|\Delta\|_\infty\le\varepsilon}(\hat\mu+\Delta)^Tw-\tfrac\gamma2w^T\Sigma w\) 等价于带 \(\ell_1\) 惩罚的均值–方差问题。当 \(\varepsilon\ge\|\hat\mu\|_\infty\) 时最优解是什么? 提示:最坏情形为 \(\hat\mu^Tw-\varepsilon\|w\|_1\);\(\varepsilon\ge\|\hat\mu\|_\infty\) 时 \(\hat\mu^Tw-\varepsilon\|w\|_1\le0\),最优 \(w=0\)(不确定性太大,不交易)。
- 证明 Laguerre–Samuelson 不等式:不妨设 \(\mu=0\),对 \(x_j=-\sum_{i\ne j}x_i\) 用 Cauchy–Schwarz。 提示:\(x_j^2\le(n-1)\sum_{i\ne j}x_i^2=(n-1)(n\sigma^2-x_j^2)\),整理得 \(x_j^2\le(n-1)\sigma^2\)。
- 用对偶定理证明:对任何范数,\(\|x\|=\max\{|y^*x|:\|y\|^D\le1\}\)。用它写出 \(\ell_\infty\) 范数(单票仓位上限)的线性规划表示,并说明为什么 \(\ell_\infty\) 约束 \(\|w\|_\infty\le c\) 可以直接写成 \(2n\) 个线性约束,而 \(\ell_1\) 约束若不引入辅助变量需要 \(2^n\) 个线性约束(引入 \(u_i\ge|w_i|\) 后只需 \(2n+1\) 个)。
- 设 \(\Sigma\succ0\),证明组合波动率范数 \(\|\Sigma^{1/2}w\|_2\) 是绝对范数当且仅当 \(\Sigma\) 是对角阵。 提示:绝对性要求 \(w^T\Sigma w=|w|^T\Sigma|w|\) 对一切 \(w\) 成立,取 \(w=e_i-e_j\)。
- 编程:实现 Higham 最近相关矩阵算法的加权版本(权重矩阵 \(W=\operatorname{diag}(\text{各资产的样本量})\)),比较它与不加权版本的结果;样本多的资产的相关系数应被改动得更少。
原书推荐习题
- 5.1.P4、5.1.P6、5.1.P12:平行四边形恒等式、极化恒等式、Jordan–von Neumann 定理。
- 5.1.P14:Laguerre–Samuelson 不等式。
- 5.2.P9:Grüss 不等式;5.2.P14:最近的 Hermitian / 半正定矩阵(必做)。
- 5.4.P3:\(\ell_p\) 范数之间的最佳常数;5.4.P8、5.5.P10:\(k\)-范数的对偶;5.4.P13:\(\ell_p\) 等距是广义置换矩阵。
- 5.5.P8:\(f^{DD}\) 是预范数的凸化;5.5.P11:弱单调范数。
原书对照
| 本章小节 | 原书小节 | 书页 | PDF 页 |
|---|---|---|---|
| 5a.1 为什么需要范数 | 5.0 Introduction | 313–314 | 333–334 |
| 5a.2 范数与内积的公理 | 5.1 Definitions of norms and inner products(含习题) | 314–320 | 334–340 |
| 5a.3 常见范数 | 5.2 Examples of norms and inner products(含习题) | 320–324 | 340–344 |
| 5a.4 用已知范数构造新范数 | 5.3 Algebraic properties of norms | 324 | 344 |
| 5a.5 范数的分析性质 | 5.4 Analytic properties of norms(含习题) | 324–335 | 344–355 |
| 5a.6 单位球的几何与对偶定理 | 5.5 Duality and geometric properties of norms(含习题) | 335–340 | 355–360 |
延伸阅读:Householder《The Theory of Matrices in Numerical Analysis》(1964);对偶定理的关键思想来自 von Neumann(1937);稳健组合优化中不确定集与对偶范数的系统论述见 Ben-Tal、El Ghaoui、Nemirovski《Robust Optimization》。下一章(第 05b 章)把范数推广到矩阵上,加入次乘性,并用它研究谱半径、矩阵幂级数与条件数。