张量篇 第 T2 章 一般基、指标记号与基变换
对应原书:Simmonds《A Brief on Tensor Analysis》第 2 版,第 II 章 General Bases and Tensor Notation(书 p.25–44,PDF p.38–57)。
这是张量篇里对量化学习者最有用的一章。它回答三个问题:基向量不正交、不等长时,向量怎样分解,点积怎样算;Einstein 求和约定(也就是
numpy.einsum)怎样用;换一组基时,各种分量按什么规律变。最后这个问题在量化里随处可见:换因子定义、换交易单元、换参数化,都是"换基"。
学习目标
读完本章,你应当能够:
- 理解一般(斜)基、Jacobian \(J=\det G\) 与倒易基 \(\mathbf g^i\cdot\mathbf g_j=\delta^i_j\),会用 \(G^{-1}\) 的行计算倒易基。
- 区分向量的屋顶(逆变)分量 \(v^i=\mathbf v\cdot\mathbf g^i\) 与地窖(协变)分量 \(v_i=\mathbf v\cdot\mathbf g_i\),熟练使用 Einstein 求和约定和 Kronecker delta,并能把任意指标表达式翻译成
numpy.einsum。 - 掌握度量张量 \(g_{ij}=\mathbf g_i\cdot\mathbf g_j\) 及其逆 \(g^{ij}\),会用它们升降指标。
- 知道 2 阶张量在一般基下有四组分量,并知道"对称张量的混合分量矩阵可以不对称"。
- 掌握基变换规律:下标(协变)分量乘 \(A\),上标(逆变)分量乘 \(A^{-1}\);并把它对应到量化中的因子旋转(载荷 \(B\to BA\)、因子协方差 \(F\to A^{-1}FA^{-T}\))和换交易单元(\(\Sigma\to A^T\Sigma A\))。
- 理解"多元回归系数 = 屋顶分量、与因子的协方差 = 地窖分量、纯因子组合 = 倒易基"这一几何解释。
读前导读
先说清楚:仍然是选读,但这一章比 T1 值得读
张量篇整体对量化是选读,这一点不变:原书面向力学,T2.5 的置换符号、叉积,T2.8 的 Rodrigues 转动公式等,在量化工作中用不到。但这一章里有四处想法,确实能帮你把量化里几件容易混淆的事想清楚:
- 多元回归系数和"与因子的协方差"是同一个向量的两套坐标(T2.3.3、T2.4 的量化翻译)。你在 CFA 二级可能困惑过:为什么股票对市场单独回归的 beta,和放进多因子模型后市场因子的系数不一样?本章给出几何答案:因子相关时,"平行投影"和"垂直投影"不同。
- 纯因子组合就是倒易基(T2.3.2、实战 2 第 2 部分)。Barra 类风险模型里"对本因子暴露为 1、对其他因子暴露为 0"的组合,其构造公式 \(B(B^TB)^{-1}\) 来自这里。
- 换基时谁跟着 \(A\) 变、谁跟着 \(A^{-1}\) 变(T2.7 与其后的量化翻译框)。换交易单元、换因子定义、换计价单位时,收益/暴露/价格是一类,持仓/因子收益/回归系数是另一类,协方差按 \(A^T\Sigma A\) 变。记住这条规则能省掉很多推导错误。
- einsum 对照表(T2.2.2)。写面板数据、一批协方差矩阵的运算时非常实用。
可以跳过或略读的:T2.5 全节、T2.6 的例 2.6(四组分量的具体数字)、T2.8 中 Rodrigues 公式、反射张量的显式公式与 \(\epsilon\)–\(\delta\) 应用、实战 1(只是复核原书例题)。
这一章在解决什么问题
上一章的基是标准正交的(三条互相垂直的单位轴),那时"分量"只有一种。现实中的基往往是斜的:市场因子和规模因子相关,行业组合之间有重叠。一旦基向量不垂直,"向量在某方向上的分量"就有两种合理的理解:一种是"用这几个基向量拼出 \(\mathbf v\) 需要各多少份"(屋顶分量,类似多元回归系数),另一种是"\(\mathbf v\) 与每个基向量的点积"(地窖分量,类似与各因子的协方差)。本章讲清这两套分量是什么、怎么互相换算(度量张量 = 因子协方差矩阵)、以及换一组基时各自怎么变。
需要先想起来的数学
1. 矩阵求逆与解线性方程组。 \(G\mathbf x=\mathbf v\) 的解 \(\mathbf x=G^{-1}\mathbf v\)。\(G^{-1}G=I\) 意味着 \(G^{-1}\) 的第 \(i\) 行与 \(G\) 的第 \(j\) 列点积为 \(\delta_{ij}\)。例:\(G=\begin{bmatrix}1&1\\0&1\end{bmatrix}\),\(G^{-1}=\begin{bmatrix}1&-1\\0&1\end{bmatrix}\)。见 第 00 册第 06 章 线性代数速成。
2. 转置的运算规则。 \((AB)^T=B^TA^T\),\((A^{-1})^T=(A^T)^{-1}\),记作 \(A^{-T}\)。本章的变换公式 \(A^T\Sigma A\)、\(A^{-1}FA^{-T}\) 都要用到。
3. 相似与合同。 \(A^{-1}TA\) 叫相似变换,特征值不变;\(A^TTA\) 叫合同变换,只有 \(A\) 正交时特征值才不变。见 第 00 册第 06 章。
4. 多元回归的正规方程。 \(\boldsymbol\beta=(X^TX)^{-1}X^T\mathbf y\),用协方差写就是 \(\boldsymbol\beta=F^{-1}\mathbf c\),\(F\) 是因子协方差矩阵,\(\mathbf c\) 是 \(y\) 与各因子的协方差。CFA 二级多元回归的内容。
本章符号速查(最重要的一条先说)。 上标是指标,不是幂次:\(v^2\) 是"第 2 个屋顶分量",不是 \(v\) 的平方;需要平方时会写成 \((v^2)^2\)。\(\delta^i_j\) 是 Kronecker delta(\(i=j\) 时为 1,否则为 0,即单位矩阵的元素)。\(A^i_j\) 中上标是行号、下标是列号。\(g_{ij}\) 是度量张量(基向量两两点积组成的矩阵),\(g^{ij}\) 是它的逆矩阵的元素。\(\tilde{\ }\)(波浪号)标记新基下的量。\(T^i_{\cdot j}\) 中的圆点只是占位,提醒"上标是第一个指标"。\(J=\det G\) 是 Jacobian。\(\epsilon_{ijk}\) 是置换符号,只在 T2.5 出现。
怎么读这一章
建议路线:T2.1(看懂例 2.1 和"平行投影"一句)→ T2.2(重点是求和规则和 einsum 表)→ T2.3(倒易基、两套分量)→ T2.4 及其量化翻译框(本章最重要的一段)→ 跳过 T2.5 → T2.6.2 只读量化翻译框 → T2.7 全部,尤其是"谁协变谁逆变"的量化翻译框 → 实战 2。
T2.1 一般基与 Jacobian
T2.1.1 为什么要用一般基
力学定律可以写成与坐标无关的形式,但要求解,多数时候必须写成分量。标准笛卡尔基最简单,可问题的几何(尤其是边界条件)可能要求别的基:研究平行六面体形物体的温度分布,自然选沿三条棱的向量作基。张量分析的目标之一,就是容纳任意的基,同时让点积这类不变量的计算公式保持和笛卡尔情形一样简单。
量化里的类比更直接:因子收益彼此相关,因子载荷向量彼此不正交;你常常需要在"单只股票""行业组合""风格因子组合"之间来回切换。这些都是非正交的基。
T2.1.2 一般基下的分解
设 \(\{\mathbf g_1,\mathbf g_2,\mathbf g_3\}\) 为任意固定的、不共面的向量。任一向量可唯一表示为
基向量既不必是单位长,也不必互相垂直。 注意分量写成上标。几何上(二维):过 \(\mathbf v\) 的头作平行于 \(\mathbf g_2\) 的直线,与 \(\mathbf g_1\) 所在直线交于 \(P\),则 \(\overline{0P}=v^1\mathbf g_1\)。这是平行投影分解,不是垂直投影。记住这一点,后面"多元回归系数"的几何就清楚了。
例 2.1(本章后续例题都用这组基) \(\mathbf g_1\sim(1,-1,2)\),\(\mathbf g_2\sim(0,1,1)\),\(\mathbf g_3\sim(-1,-2,1)\),\(\mathbf v\sim(3,3,6)\)。比较笛卡尔分量得方程组
解得 \((v^1,v^2,v^3)=(2,3,-1)\)。
白话解释:用二维的小例子看"平行投影"和"垂直投影"的区别。基 \(\mathbf g_1\sim(1,0)\),\(\mathbf g_2\sim(1,1)\),两者夹角 45°。\(\mathbf v\sim(2,1)\)。 平行投影(屋顶分量):解 \(v^1(1,0)+v^2(1,1)=(2,1)\),得 \(v^2=1\)、\(v^1=1\)。意思是"1 份 \(\mathbf g_1\) 加 1 份 \(\mathbf g_2\) 正好拼出 \(\mathbf v\)"。 垂直投影:\(\mathbf v\) 在 \(\mathbf g_1\) 方向上的垂直投影长度是 \(\mathbf v\cdot\mathbf g_1/|\mathbf g_1|^2=2\),不是 1。差别在于 \(\mathbf g_2\) 本身也有 \(\mathbf g_1\) 方向的成分,平行投影把这部分算在 \(\mathbf g_2\) 头上,垂直投影则全部算给 \(\mathbf g_1\)。 金融直觉:把 \(\mathbf g_1\) 看成市场因子、\(\mathbf g_2\) 看成与市场相关的规模因子。多元回归给的是平行投影的系数(各因子"各自"的贡献),单独对市场回归给的是垂直投影(市场把与之相关的规模效应也一起吸收了)。这就是实战 2 第 1 部分中单变量 beta 偏大的原因。
T2.1.3 Jacobian
把各 \(\mathbf g_j\) 的笛卡尔分量排成列,得 \(n\times n\) 矩阵 \(G=[\mathbf g_1,\mathbf g_2,\dots]\)。\(\{\mathbf g_j\}\) 是基当且仅当 \(\det G\ne0\)。\(G\) 称为这组向量的 Jacobian 矩阵,\(J\equiv\det G\) 称为 Jacobian。这个名字在第 T3 章 \(\mathbf g_i\) 的分量是偏导数时会显得更自然。
T2.2 求和约定与指标记号
T2.2.1 Einstein 求和约定
(2.1) 中指标 \(i\) 重复出现,于是省去求和号:
重复的指标叫哑指标(dummy index),可以随意换名:\(v^i\mathbf g_i=v^j\mathbf g_j\)。只出现一次的指标叫自由指标(free index),它在等式两边必须一致,表示"对每个取值都成立"。
重要附加条件:只有一个在"屋顶"(上标)、一个在"地窖"(下标)的重复指标才求和。 例如 \(v^iv_i=v^1v_1+v^2v_2+v^3v_3\),而 \(v^iv^i\) 不求和。作者解释:两个同在上(或同在下)的重复指标,出现在既不是不变量、也不是不变量分量的量里。唯一的例外是习题 2.21 的笛卡尔张量记号:当基是标准正交基时 \(\mathbf g^i=\mathbf g_i\),上下标无区别,全部写成下标并对任何重复指标求和。
白话解释:读指标式的三步法。第一步,找出现两次(一上一下)的字母,它们是要求和的哑指标。第二步,找只出现一次的字母,它们是自由指标,结果就是以它们为下标的数组。第三步,把求和写出来。 例:\(T^i_{\cdot j}v^j\)。\(j\) 出现两次,求和;\(i\) 只出现一次,结果是一个向量 \(w^i\)。写开就是 \(w^1=T^1_{\cdot1}v^1+T^1_{\cdot2}v^2+T^1_{\cdot3}v^3\),\(w^2\)、\(w^3\) 同理。这正是"矩阵乘向量"。 再例:组合方差 \(\sigma^2=w^i\Sigma_{ij}w^j\)。\(i,j\) 都出现两次,都求和,没有自由指标,结果是一个数。熟悉以后,一行指标式就能代替"先转置再相乘"的一串矩阵操作。
T2.2.2 指标记号与 numpy.einsum
np.einsum 实现的正是"笛卡尔张量记号"版本的求和约定:下标字符串里重复出现、且不出现在 -> 右边的字母被求和。对照表:
| 指标表达式 | einsum 写法 | 含义 |
|---|---|---|
| \(u^iv_i\) | einsum('i,i->', u, v) |
点积 |
| \(T^i_{\cdot j}v^j\) | einsum('ij,j->i', T, v) |
张量作用于向量 |
| \(u^iv^j\) | einsum('i,j->ij', u, v) |
并矢(外积) |
| \(T^i_{\cdot i}\) | einsum('ii->', T) |
迹(缩并) |
| \(A^k_iA^p_jT_{kp}\) | einsum('ki,pj,kp->ij', A, A, T) |
2 阶张量的基变换 |
| \(\epsilon_{ijk}u^iv^j\) | einsum('ijk,i,j->k', eps, u, v) |
叉积的地窖分量 |
| \(\Sigma_{t}x_{ti}x_{tj}\) | einsum('ti,tj->ij', X, X) |
样本二阶矩 |
有两点要注意。第一,einsum 不区分上下标,它只认字母。上下位置的正确性要靠你自己维护:写代码前先把指标式写对(每个下标对应一个 \(A\)、每个上标对应一个 \(A^{-1}\),求和必须一上一下),再机械翻译。第二,指标记号相对矩阵记号的好处是乘法次序无关:\((A^{-1})^i_j\tilde{\mathbf g}_i=\tilde{\mathbf g}_i(A^{-1})^i_j\),但矩阵乘法 \(\tilde GA^{-1}\ne A^{-1}\tilde G\)(原书 p.36 脚注)。einsum 继承了这个好处:操作数的顺序随意,只要下标对得上。在处理 3 阶以上数组(如面板数据 [时间, 资产, 特征]、一批协方差矩阵 [日期, N, N])时,这比反复 transpose、reshape 清楚得多。
T2.3 倒易基与两套分量
T2.3.1 点积在一般基下为什么麻烦
设 \(\mathbf u=u^i\mathbf g_i\),\(\mathbf v=v^j\mathbf g_j\)(注意必须给其中一个换哑指标名,否则会写出错误的 \(u^iv^i\mathbf g_i\cdot\mathbf g_i\))。于是
展开是 9 项。原因是 \(\mathbf g_i\cdot\mathbf g_j\) 不是 \(\delta_{ij}\)。
T2.3.2 倒易基
想让点积重新变成"对应相乘求和",就把 \(\mathbf v\) 用另一组基 \(\{\mathbf g^j\}\) 展开,并要求
\(\delta^i_j\) 是 Kronecker delta,\(\{\mathbf g^i\}\) 称为倒易基(reciprocal basis)。几何上,\(\mathbf g^1\) 垂直于 \(\mathbf g_2,\mathbf g_3\) 张成的平面,长度调整到 \(\mathbf g^1\cdot\mathbf g_1=1\)。
代数构造(任意维、可编程):\(G^{-1}G=I\) 正是 (2.4)。所以把 \(G^{-1}\) 的第 \(i\) 行看作 \(\mathbf g^i\) 的笛卡尔分量即可:\(G^{-1}=[\mathbf g^1,\mathbf g^2,\dots]^T\)。
推导拆解:矩阵乘法 \((G^{-1}G)_{ij}\) 等于"\(G^{-1}\) 的第 \(i\) 行"与"\(G\) 的第 \(j\) 列"的点积。\(G\) 的第 \(j\) 列就是 \(\mathbf g_j\)。所以 \(G^{-1}G=I\) 逐元素写出来就是"\(G^{-1}\) 的第 \(i\) 行 \(\cdot\,\mathbf g_j=\delta_{ij}\)",与 (2.4) 一字不差。上面二维例子里 \(G=\begin{bmatrix}1&1\\0&1\end{bmatrix}\),\(G^{-1}=\begin{bmatrix}1&-1\\0&1\end{bmatrix}\),倒易基 \(\mathbf g^1\sim(1,-1)\)、\(\mathbf g^2\sim(0,1)\)。可以验证 \(\mathbf g^1\) 垂直于 \(\mathbf g_2=(1,1)\),\(\mathbf g^2\) 垂直于 \(\mathbf g_1=(1,0)\)。 金融直觉:把 \(\mathbf g_j\) 看成 \(N\) 只股票对第 \(j\) 个因子的暴露向量(载荷矩阵 \(B\) 的第 \(j\) 列)。"倒易"条件 \(\mathbf g^k\cdot\mathbf g_j=\delta^k_j\) 翻译过来是:组合 \(\mathbf g^k\) 对因子 \(k\) 的暴露为 1,对其他因子的暴露为 0。这就是纯因子组合。\(N>K\) 时 \(B\) 不是方阵,没有 \(B^{-1}\),满足条件的组合有无穷多个,其中长度最小的一组是 \(B(B^TB)^{-1}\) 的各列,即实战 2 第 2 部分的构造。
例 2.2 对例 2.1 的基作行化简 \([G\,|\,I]\to[I\,|\,G^{-1}]\),得
验证:\(\mathbf g^1\cdot\mathbf g_1=\frac16(3+1+2)=1\)。
T2.3.3 屋顶分量与地窖分量
任一向量也可以用倒易基表示:\(\mathbf v=v_i\mathbf g^i\)(式 2.5)。于是向量有两套分量:
作者故意不用传统名称,称 \(v^i\) 为屋顶分量(roof components)、\(\mathbf g_i\) 为地窖基向量(cellar base vectors),\(v_i\) 为地窖分量、\(\mathbf g^i\) 为屋顶基向量。传统名称是:\(v^i\) 为逆变分量(contravariant),\(v_i\) 为协变分量(covariant),名称来源见 T2.6。作者认为传统名字别扭难记,本教材两套名称并用。还有个记忆法:矩阵 \(A^i_j\) 中上标是行(Row ↔ Roof),下标是列(Column ↔ Cellar)。
(2.7) 的指标推导值得逐行理解:
最后一步固定自由指标 \(j\)(比如 \(j=2\)),对 \(i\) 求和:\(v^1\delta^2_1+v^2\delta^2_2+v^3\delta^2_3=v^2\)。Kronecker delta 是"替换算子":\(v^i\delta^j_i\) 把 \(v\) 的指标 \(i\) 换成 \(j\)。
例 2.3 例 2.1 中 \(\mathbf v\) 的地窖分量:\(v_1=\mathbf v\cdot\mathbf g_1=3-3+12=12\),\(v_2=\mathbf v\cdot\mathbf g_2=0+3+6=9\),\(v_3=\mathbf v\cdot\mathbf g_3=-3-6+6=-3\)。对照屋顶分量 \((2,3,-1)\),两套分量完全不同。
T2.3.4 点积的化简
令 \(\mathbf u=u^i\mathbf g_i\),\(\mathbf v=v_j\mathbf g^j\):
要点:一个用屋顶分量、一个用地窖分量,点积就是对应分量相乘再求和。
例 2.4 \(\mathbf u=2\mathbf g_1-\mathbf g_2+4\mathbf g_3\)(已知屋顶分量),\(\mathbf w=-3\mathbf g^1+2\mathbf g^2-2\mathbf g^3\)(已知地窖分量),\(\mathbf v\) 同例 2.1。\(\mathbf u\cdot\mathbf v=u^iv_i=24-9-12=3\);\(\mathbf w\cdot\mathbf v=w_iv^i=-6+6+2=2\);\(\mathbf u\cdot\mathbf w=u^iw_i=-6-2-8=-16\)。
T2.4 度量张量与升降指标
原书把这部分放在习题 2.8–2.10,但它是全书的枢纽,这里单独讲。
定义度量张量(metric tensor)的分量
矩阵形式 \([g_{ij}]=G^TG\)(Gram 矩阵),并且
它们正是单位张量 \(\mathbf 1\) 的地窖、屋顶分量:\(\mathbf 1_{ij}=g_{ij}\),\(\mathbf 1^{ij}=g^{ij}\),而两组混合分量都是 \(\delta^i_j\),所以 \(\mathbf 1=\mathbf g^i\mathbf g_i=\mathbf g_i\mathbf g^i\)。
升降指标(raising and lowering indices,习题 2.9):
乘 \(g^{ik}\) 并对 \(k\) 求和就把指标"升"起来,乘 \(g_{ik}\) 就"降"下去。点积可以写成只用一套分量的形式:\(\mathbf u\cdot\mathbf v=g_{ij}u^iv^j=g^{ij}u_iv_j\)。
量化翻译。 把"去均值的随机变量"看成向量、协方差看成点积,那么一组因子 \(f_1,\dots,f_K\) 就是一组(一般不正交的)基,度量 \(g_{ij}\) 就是因子协方差矩阵。一只股票的收益 \(y\) 投影到因子张成的空间后:地窖分量 \(y_i=\operatorname{Cov}(y,f_i)\);屋顶分量 \(y^i=g^{ij}y_j\) 恰好是多元回归系数(正规方程 \(\beta=F^{-1}c\) 就是升指标)。单变量 beta \(y_i/g_{ii}\) 和多元 beta \(y^i\) 只在因子不相关时一致,这就是"平行投影"与"垂直投影"的区别。马氏距离 \(g_{ij}u^iu^j\) 则是这个度量下的长度平方。
推导拆解:用两个因子的数字走一遍。设两个因子方差都是 1、相关系数 0.6,度量 \([g_{ij}]=\begin{bmatrix}1&0.6\\0.6&1\end{bmatrix}\)。股票的真实多元系数 \((\beta^1,\beta^2)=(1,0.5)\)(屋顶分量)。 降指标得地窖分量:\(y_i=g_{ij}\beta^j\),\(y_1=1\times1+0.6\times0.5=1.3\),\(y_2=0.6\times1+1\times0.5=1.1\)。这就是股票与两个因子的协方差。 单变量 beta 是 \(y_i/g_{ii}=(1.3,1.1)\),与真实的 \((1,0.5)\) 差别很大。反过来,从协方差 \((1.3,1.1)\) 出发,升指标 \(\beta^i=g^{ij}y_j\)(即解正规方程 \([g_{ij}]\boldsymbol\beta=\mathbf y\))就能恢复 \((1,0.5)\)。 一句话:协方差是地窖分量,回归系数是屋顶分量,二者之间隔着一个因子协方差矩阵。因子不相关时度量是对角的,两者只差一个缩放,单变量和多元 beta 才一致。
T2.5 置换符号与一般基下的叉积(简要)
一般基下叉积的地窖分量为
由三重积与行列式的关系,
它们是置换张量的分量(习题 2.13)。笛卡尔基下 \(J=1\),就是 Levi-Civita 符号。核心恒等式是 \(\epsilon\)–\(\delta\) 恒等式:
例 2.5 \(\mathbf u=2\mathbf g_1-\mathbf g_2+4\mathbf g_3\),\(\mathbf v=2\mathbf g_1+3\mathbf g_2-\mathbf g_3\),\(J=6\)。\((\mathbf u\times\mathbf v)_1=J(u^2v^3-u^3v^2)=6[(-1)(-1)-4\cdot3]=-66\),同理 \((\mathbf u\times\mathbf v)_2=60\),\((\mathbf u\times\mathbf v)_3=48\)。
这部分对量化的直接意义在于两件事:其一,\(\epsilon\) 记号给出了行列式的指标表达,习题 2.28 由此推出 Cayley–Hamilton 定理(见 T2.8);其二,它是练习指标运算的好材料。置换张量本身在三维之外没有金融应用。
T2.6 2 阶张量的四组分量
T2.6.1 定义
已知 \(\mathbf T\) 对基向量的作用 \(\mathbf T\mathbf g_j\),把它用倒易基展开得 \(\mathbf T\mathbf g_j=T_{ij}\mathbf g^i\),系数
称为地窖分量。和第 T1 章完全相同的推导给出
(原书公式编号从 (2.23) 直接跳到 (2.25),没有 (2.24)。)交换屋顶、地窖的角色,再加上两种混合,共四组:
| 分量 | 定义 | 对应的并矢基 |
|---|---|---|
| 地窖 \(T_{ij}\) | \(\mathbf g_i\cdot\mathbf T\mathbf g_j\) | \(\mathbf T=T_{ij}\mathbf g^i\mathbf g^j\) |
| 屋顶 \(T^{ij}\) | \(\mathbf g^i\cdot\mathbf T\mathbf g^j\) | \(\mathbf T=T^{ij}\mathbf g_i\mathbf g_j\) |
| 混合 \(T^i_{\cdot j}\) | \(\mathbf g^i\cdot\mathbf T\mathbf g_j\) | \(\mathbf T=T^i_{\cdot j}\mathbf g_i\mathbf g^j\) |
| 混合 \(T_j^{\cdot i}\) | \(\mathbf g_j\cdot\mathbf T\mathbf g^i\) | \(\mathbf T=T_j^{\cdot i}\mathbf g^j\mathbf g_i\) |
圆点用来标明指标的先后次序,因为一般 \(T^i_{\cdot j}\ne T_j^{\cdot i}\)。
T2.6.2 对称张量的陷阱
若 \(\mathbf T=\mathbf T^T\),则 \(T_{ij}=T_{ji}\),\(T^{ij}=T^{ji}\),\(T^i_{\cdot j}=T_j^{\cdot i}\)。但混合分量矩阵 \([T^i_{\cdot j}]\) 本身一般不对称(习题 2.23)。原因是 \(T^i_{\cdot j}=g^{ik}T_{kj}\),对称矩阵左乘一个对称矩阵,结果一般不对称。
量化翻译。 协方差 \(\Sigma\) 对称,但 \(\Sigma^{-1}\Sigma_2\)、\(F^{-1}C\) 这类"混合"矩阵一般不对称。所以求广义特征值问题 \(\Sigma_2\mathbf x=\lambda\Sigma_1\mathbf x\) 时应该调用
scipy.linalg.eigh(S2, S1),而不是对 \(\Sigma_1^{-1}\Sigma_2\) 用对称特征求解器。
例 2.6 把例 1.4 的张量 \(\mathbf T\)(\(\mathbf T\mathbf v\sim(-2v_x+3v_z,-v_z,v_x+2v_y)\))放到例 2.1 的基下。\(\mathbf T\mathbf g_1\sim(4,-2,-1)\),\(\mathbf T\mathbf g_2\sim(3,-1,2)\),\(\mathbf T\mathbf g_3\sim(5,-1,-5)\),于是
矩阵按"屋顶指标 = 行、地窖指标 = 列"排列,所以 \([T_j^{\cdot i}]\) 的第 \(i\) 行第 \(j\) 列是 \(T_j^{\cdot i}\)。量化实战 1 会用 einsum 逐一复核这四个矩阵。
T2.7 基变换
T2.7.1 基与倒易基的变换
在固定的空间里,向量和张量对表示它们的基"一无所知",是几何不变量;换基时变的只是分量。设新基是旧基的已知线性组合:
因为两者都是基,\(\det A\ne0\),于是 \(\mathbf g_j=(A^{-1})^i_j\tilde{\mathbf g}_i\)。对倒易基,\(\tilde G^{-1}=A^{-1}G^{-1}\),即
T2.7.2 向量分量的变换
地窖分量和基向量按同一个矩阵 \(A\) 变换,所以叫"协变"(co-variant);屋顶分量按逆矩阵 \(A^{-1}\) 变换,所以叫"逆变"(contra-variant)。 二者的乘积 \(u^iv_i\) 中 \(A\) 与 \(A^{-1}\) 相互抵消,点积不变。
金融直觉:最简单的一维换基就是换交易单位。原来按"股"计,现在按"手"计(1 手 = 100 股),新基向量是旧基向量的 100 倍,\(A=100\)。 每手的价格 = 每股价格 × 100,跟基向量一起放大,是协变的(地窖分量,价格、收益、暴露都属于这一类)。 持有的手数 = 股数 ÷ 100,按 \(A^{-1}\) 缩小,是逆变的(屋顶分量,持仓、数量属于这一类)。 市值 = 价格 × 数量,100 与 1/100 抵消,不变。这就是 \(u^iv_i\) 不变的全部道理。多维时 \(A\) 是矩阵,"放大 100 倍"变成"做一个线性组合","除以 100"变成"乘 \(A^{-1}\)"。
T2.7.3 2 阶张量分量的变换
把 (2.37) 中的基向量逐个替换,得
规律一句话:每个下标贡献一个 \(A\),每个上标贡献一个 \(A^{-1}\)。 写成矩阵:
第一种叫合同变换(congruence),第三种叫相似变换(similarity)。由此立即看出:只有混合分量的特征值是基变换下的不变量;地窖或屋顶分量矩阵的特征值在非正交换基下会变。
推导拆解:\((2.38)_1\) 怎么来的?按定义 \(\tilde T_{ij}=\tilde{\mathbf g}_i\cdot\mathbf T\tilde{\mathbf g}_j\)。代入 \(\tilde{\mathbf g}_i=A^k_i\mathbf g_k\)、\(\tilde{\mathbf g}_j=A^p_j\mathbf g_p\);\(A^k_i\) 和 \(A^p_j\) 都是数,由点积和 \(\mathbf T\) 的线性可以提到外面:\(\tilde T_{ij}=A^k_iA^p_j\,(\mathbf g_k\cdot\mathbf T\mathbf g_p)=A^k_iA^p_jT_{kp}\)。写成矩阵,\(A^k_i\) 对 \(k\) 求和相当于左乘 \(A^T\),\(A^p_j\) 对 \(p\) 求和相当于右乘 \(A\),即 \(A^T[T_{kp}]A\)。其他三式只是把屋顶基的变换 (2.33) 代进去,每个上标换成一个 \(A^{-1}\)。 为什么合同变换会改变特征值?举例:\(\Sigma=\operatorname{diag}(1,4)\)(两只资产,波动率 1 和 2),把资产 1 的交易单位放大一倍,\(A=\operatorname{diag}(2,1)\),\(A^T\Sigma A=\operatorname{diag}(4,4)\)。特征值从 \(\{1,4\}\) 变成 \(\{4,4\}\),"主成分"也从"资产 2 方向"变成"任意方向"。风险本身没变,变的只是记账单位。这正是量化翻译框里"PCA 依赖度量"的含义:对收益协方差和对标准化后的相关矩阵做 PCA,结论可以不同。
传统教科书把"按 (2.38) 变换的 \(n^2\) 个数"当作 2 阶张量的定义。本书中它是推论。第 T3 章取 \(A^i_j=\partial u^i/\partial\tilde u^j\),它就成为全书唯一加方框的公式。
例 2.7 \(A=\begin{bmatrix}1&2&1\\2&1&0\\-1&0&1\end{bmatrix}\),行化简得 \(A^{-1}=\begin{bmatrix}-\frac12&1&\frac12\\1&-1&-1\\-\frac12&1&\frac32\end{bmatrix}\)。由 \((2.36)_2\),对 \((v^1,v^2,v^3)=(2,3,-1)\):\(\tilde v^1=-1+3-\frac12=\frac32\),\(\tilde v^2=2-3+1=0\),\(\tilde v^3=-1+3-\frac32=\frac12\)。
例 2.8 用例 2.7 的 \(A\) 和例 2.6 的 \(\mathbf T\),求 \(\tilde T_{21}\) 与 \(\tilde T_2^{\cdot3}\)。由 \((2.38)_1\),代入 \(A^1_2=2,A^2_2=1,A^3_2=0\) 与 \(A^1_1=1,A^2_1=2,A^3_1=-1\):
由 \((2.38)_3\):\(\tilde T_2^{\cdot3}=A^k_2(A^{-1})^3_pT_k^{\cdot p}=2[(-\frac12)(0)+(1)(4)+(\frac32)(0)]+1[(-\frac12)(0)+(1)(0)+(\frac32)(-1)]=\frac{13}2\)。
量化翻译:谁协变,谁逆变。 设新交易单元是旧资产的组合,\(P\) 的第 \(j\) 列是新单元 \(j\) 在旧资产上的权重(相当于 \(A\))。那么:
- 新单元的收益是 \(\tilde{\mathbf r}=P^T\mathbf r\)(跟基一起变,协变);
- 同一个组合在新单元下的持仓满足 \(\mathbf w=P\tilde{\mathbf w}\),即 \(\tilde{\mathbf w}=P^{-1}\mathbf w\)(逆变);
- 收益协方差 \(\tilde\Sigma=P^T\Sigma P\)(两个下标,合同变换);
- 组合方差 \(\mathbf w^T\Sigma\mathbf w\) 与组合收益 \(\mathbf w\cdot\mathbf r\) 不变。
因子模型里同样如此:把因子重新定义为旧因子的线性组合 \(A\),载荷/暴露按 \(A\) 变(\(B\to BA\),暴露 \(\mathbf x\to A^T\mathbf x\)),因子收益按 \(A^{-1}\) 变(\(\mathbf f\to A^{-1}\mathbf f\)),因子协方差按两个上标的规律变(\(F\to A^{-1}FA^{-T}\)),系统性协方差 \(BFB^T\) 和组合的因子风险不变。
推论一:PCA 依赖于"用哪个度量"。对协方差做 PCA 隐含使用欧氏度量 \(\delta_{ij}\),在非正交换基(包括对各资产重新缩放单位)下特征值和特征向量都会变;对相关矩阵做 PCA 结果不同,就是这个原因。推论二:广义特征值(\(\Sigma_1^{-1}\Sigma_2\) 的特征值,即混合分量)在任何非奇异换基下都不变,所以"两个协方差矩阵相差多少"应该用它来衡量(第 T4 章的 SPD 流形距离正是基于此)。
T2.8 习题中的重要结论
原书第 II 章 28 道习题中,以下结论值得掌握:
- 基变换张量(习题 2.15):任一基变换 \(\tilde{\mathbf g}_j=A^i_j\mathbf g_i\) 都可以由一个非奇异张量 \(\mathbf B\) 实现:\(\tilde{\mathbf g}_j=\mathbf B\mathbf g_j\),且 \(B^i_{\cdot j}=A^i_j\),\(\tilde{\mathbf g}^j=(\mathbf B^{-1})^T\mathbf g^j\)。
- 正交张量(习题 2.16):\(\mathbf Q^T\mathbf Q=\mathbf 1\),\(\det Q=\pm1\)(\(+1\) 时称转子 rotator)。正交换基下 \(g_{ij}\)、\(g^{ij}\) 不变,所以协变与逆变的区别消失,这就是为什么只用正交矩阵时"不需要操心上下标"。
- 反射张量(习题 2.17):\(\mathbf H=\mathbf 1-2\bar{\mathbf n}\bar{\mathbf n}\),即 Householder 变换,\(\mathbf H^2=\mathbf 1\),\(\det H=-1\);把单位向量 \(\mathbf u\) 映到 \(\mathbf v\) 的反射为 \(\mathbf H=\mathbf 1+\dfrac{\mathbf{uv}+\mathbf{vu}-\mathbf{uu}-\mathbf{vv}}{1-\mathbf u\cdot\mathbf v}\)。它是 QR 分解和最小二乘数值求解的基本工具(见第 01 册第 02a 章)。
- Rodrigues 公式(习题 2.18):绕单位轴 \(\mathbf e\) 转 \(\theta\) 的转子 \(\mathbf R=(\cos\theta)\mathbf 1+(1-\cos\theta)\mathbf{ee}+(\sin\theta)\mathbf e\times\);指数表示(习题 2.25)\(\mathbf R=e^{\theta\mathbf e\times}\)。
- 极分解(习题 2.27):非奇异 \(\mathbf T=\mathbf V\cdot\mathbf R\),\(\mathbf V=(\mathbf T\mathbf T^T)^{1/2}\) 正定,\(\mathbf R\) 为转子。量化里矩阵平方根 \(\Sigma^{1/2}\) 用于白化和模拟相关收益。
- Cayley–Hamilton 定理(习题 2.28):由 \(\epsilon^{ijk}\epsilon_{pqr}\det A=\det[A^\cdot_\cdot]\) 型恒等式缩并得
- \(\epsilon\)–\(\delta\) 的应用(习题 2.7、2.21):用 (2.18) 一行证明向量三重积公式与 \(|\mathbf u\times\mathbf v|^2=|\mathbf u|^2|\mathbf v|^2-(\mathbf u\cdot\mathbf v)^2\)。
量化实战
实战 1:用 einsum 复核本章全部例题
这段代码把例 2.1–2.8 的计算都写成指标表达式的直译。重点看例 2.6 的四组分量:'ip,pq,jq->ij' 就是 \((\mathbf g_i)_p\,T_{pq}\,(\mathbf g_j)_q\)。
import numpy as np
from fractions import Fraction
np.set_printoptions(precision=4, suppress=True)
def frac(M, den): # 把矩阵乘以 den 后取整显示,便于和原书分数对照
return np.round(M * den).astype(int)
# 例 2.1:一般基(G 的列 = 地窖基向量 g_j 的笛卡尔分量)
G = np.array([[1, 0, -1],
[-1, 1, -2],
[2, 1, 1]], dtype=float)
Ginv = np.linalg.inv(G) # 行 = 屋顶(倒易)基向量 g^i
print("J = det G =", round(np.linalg.det(G), 6))
print("6*G^{-1} =\n", frac(Ginv, 6)) # 例 2.2
print("g^i . g_j = delta:", np.allclose(np.einsum('ik,kj->ij', Ginv, G), np.eye(3)))
v = np.array([3, 3, 6.])
v_roof = Ginv @ v # v^i = g^i . v (2.7)
v_cell = G.T @ v # v_i = g_i . v (2.6)
print("屋顶分量 v^i =", v_roof, " 地窖分量 v_i =", v_cell) # 例 2.1, 2.3
# 例 2.4:一个用屋顶、一个用地窖,点积就是对应相乘求和
u_roof = np.array([2, -1, 4.]); w_cell = np.array([-3, 2, -2.])
print("u.v =", np.einsum('i,i->', u_roof, v_cell),
" w.v =", np.einsum('i,i->', w_cell, v_roof),
" u.w =", np.einsum('i,i->', u_roof, w_cell))
# 度量 g_ij = g_i.g_j,升指标 v^i = g^{ij} v_j(习题 2.8–2.10)
g_lo = G.T @ G; g_up = np.linalg.inv(g_lo)
print("det g_ij = J^2:", np.isclose(np.linalg.det(g_lo), np.linalg.det(G)**2),
" 升指标:", np.einsum('ij,j->i', g_up, v_cell))
# 例 2.6:例 1.4 的张量在该基下的四组分量
T = np.array([[-2, 0, 3], [0, 0, -1], [1, 2, 0.]])
g_lo_vecs, g_up_vecs = G.T, Ginv # 每一行是一个基向量
T_ll = np.einsum('ip,pq,jq->ij', g_lo_vecs, T, g_lo_vecs) # T_ij = g_i.T g_j
T_ul = np.einsum('ip,pq,jq->ij', g_up_vecs, T, g_lo_vecs) # T^i_.j = g^i.T g_j
T_lu = np.einsum('jp,pq,iq->ij', g_lo_vecs, T, g_up_vecs) # [T_j^.i],第 i 行第 j 列
T_uu = np.einsum('ip,pq,jq->ij', g_up_vecs, T, g_up_vecs) # T^ij = g^i.T g^j
print("T_ij =\n", frac(T_ll, 1))
print("6*T^i_j =\n", frac(T_ul, 6))
print("[T_j^i] =\n", frac(T_lu, 1))
print("36*T^ij =\n", frac(T_uu, 36))
# 例 2.7–2.8:基变换 g~_j = A^i_j g_i
A = np.array([[1, 2, 1], [2, 1, 0], [-1, 0, 1.]])
Ainv = np.linalg.inv(A)
print("2*A^{-1} =\n", frac(Ainv, 2))
print("v~^i = (A^-1)^i_j v^j =", np.einsum('ij,j->i', Ainv, v_roof))
Tt_ll = np.einsum('ki,pj,kp->ij', A, A, T_ll) # T~_ij = A^k_i A^p_j T_kp
Tt_lu = np.einsum('kj,ip,pk->ij', A, Ainv, T_lu) # [T~_j^i] 第 i 行第 j 列
print("T~_21 =", Tt_ll[1, 0], " T~_2^3 =", Fraction(Tt_lu[2, 1]).limit_denominator(100))
# 交叉检验:直接用新基 G~ = G A 重新计算
Gt = G @ A
print("直接计算 T~_21 =", Gt[:, 1] @ T @ Gt[:, 0])
关键输出(与原书例 2.1–2.8 完全一致):
J = det G = 6.0
6*G^{-1} =
[[ 3 -1 1]
[-3 3 3]
[-3 -1 1]]
g^i . g_j = delta: True
屋顶分量 v^i = [ 2. 3. -1.] 地窖分量 v_i = [12. 9. -3.]
u.v = 3.0 w.v = 2.000000000000001 u.w = -16.0
det g_ij = J^2: True 升指标: [ 2. 3. -1.]
T_ij =
[[ 4 8 -4]
[-3 1 -6]
[-1 1 -8]]
6*T^i_j =
[[ 13 12 11]
[-21 -6 -33]
[-11 -6 -19]]
[T_j^i] =
[[ 0 0 1]
[ 4 0 -1]
[ 0 -1 -2]]
36*T^ij =
[[ -7 51 23]
[ 9 -45 -45]
[ 11 -39 -31]]
2*A^{-1} =
[[-1 2 1]
[ 2 -2 -2]
[-1 2 3]]
v~^i = (A^-1)^i_j v^j = [1.5 0. 0.5]
T~_21 = 53.0 T~_2^3 = 13/2
直接计算 T~_21 = 53.0
实战 2:回归、纯因子组合、因子旋转与换交易单元
这段代码把 T2.4 和 T2.7 的"量化翻译"逐条落实。
import numpy as np
np.set_printoptions(precision=4, suppress=True)
rng = np.random.default_rng(7)
# ===== 1. 时间序列回归:相关因子 = 斜基,回归 beta = 屋顶分量,协方差 = 地窖分量 =====
T_ = 2000
mkt = rng.normal(0, 0.010, T_)
size = 0.6 * mkt + rng.normal(0, 0.006, T_) # 规模因子与市场相关
F = np.column_stack([mkt, size]) # 两个“基向量”(去均值后的随机变量)
y = 1.1 * mkt + 0.5 * size + rng.normal(0, 0.008, T_)
Fc, yc = F - F.mean(0), y - y.mean()
g_lo = np.einsum('ti,tj->ij', Fc, Fc) / (T_ - 1) # 度量 g_ij = Cov(f_i, f_j)
y_cell = np.einsum('ti,t->i', Fc, yc) / (T_ - 1) # 地窖分量 y_i = Cov(y, f_i)
y_roof = np.linalg.solve(g_lo, y_cell) # 升指标 y^i = g^{ij} y_j
print("因子相关系数:", round(g_lo[0, 1] / np.sqrt(g_lo[0, 0] * g_lo[1, 1]), 3))
print("多元回归 beta(屋顶分量):", y_roof)
print("lstsq 结果 :", np.linalg.lstsq(Fc, yc, rcond=None)[0])
print("单变量 beta = y_i/g_ii :", y_cell / np.diag(g_lo)) # 两者不同,因为基不正交
# ===== 2. 截面:载荷列 = 地窖基,纯因子组合 = 倒易基 =====
N, K = 8, 3
B = np.column_stack([np.ones(N), rng.normal(size=N), rng.normal(size=N)]) # 市场/价值/动量暴露
W_pure = B @ np.linalg.inv(B.T @ B) # 第 k 列 = 第 k 个纯因子组合 g^k
print("纯因子组合的暴露 B^T W = I:", np.allclose(B.T @ W_pure, np.eye(K)))
r = B @ np.array([0.01, 0.003, -0.002]) + rng.normal(0, 0.001, N)
print("截面回归因子收益 = 纯因子组合收益:", W_pure.T @ r)
# ===== 3. 因子旋转:载荷 B -> BA(协变),因子收益 f -> A^{-1} f(逆变)=====
Fcov = np.array([[0.04, 0.01, 0.0], [0.01, 0.02, 0.005], [0.0, 0.005, 0.03]])
A = np.array([[1, 0, 0], [-0.5, 1, 0], [0.2, 0.3, 1.]]) # 任意非奇异“换因子定义”
Ainv = np.linalg.inv(A)
B_new = np.einsum('nk,kj->nj', B, A) # g~_j = A^k_j g_k
F_new = np.einsum('ik,jl,kl->ij', Ainv, Ainv, Fcov) # 屋顶-屋顶:A^{-1} F A^{-T}
print("系统性协方差 B F B^T 不变:", np.allclose(B @ Fcov @ B.T, B_new @ F_new @ B_new.T))
w = rng.dirichlet(np.ones(N))
x, x_new = B.T @ w, B_new.T @ w # 组合暴露(地窖分量)
print("暴露按 A^T 变换:", np.allclose(x_new, A.T @ x),
" 因子风险不变:", np.isclose(x @ Fcov @ x, x_new @ F_new @ x_new))
# ===== 4. 换交易单元:收益协变、持仓逆变、协方差按 A^T Sigma A =====
Sigma = B @ Fcov @ B.T + np.diag(rng.uniform(0.01, 0.03, N))
P = np.eye(N); P[0, 1:] = -1.0 # P 的第 j 列 = 新单元 j:j>=1 为“资产 j 多、资产 0 空”的价差,单元 0 = 资产 0
w_units = np.linalg.solve(P, w) # 用新单元表达同一组合:w = P w~
Sigma_units = P.T @ Sigma @ P # 新单元收益 r~ = P^T r 的协方差
print("组合方差不变:", np.isclose(w @ Sigma @ w, w_units @ Sigma_units @ w_units))
print("新单元持仓 w~:", w_units)
print("w~_0 = 原组合总权重:", np.isclose(w_units[0], w.sum()), "; w~_j = w_j (j>=1):", np.allclose(w_units[1:], w[1:]))
关键输出:
因子相关系数: 0.705
多元回归 beta(屋顶分量): [1.1073 0.5119]
lstsq 结果 : [1.1073 0.5119]
单变量 beta = y_i/g_ii : [1.4168 1.4225]
纯因子组合的暴露 B^T W = I: True
截面回归因子收益 = 纯因子组合收益: [ 0.0107 0.0031 -0.0017]
系统性协方差 B F B^T 不变: True
暴露按 A^T 变换: True 因子风险不变: True
组合方差不变: True
新单元持仓 w~: [1. 0.044 0.0983 0.0262 0.2364 0.1965 0.1349 0.1851]
w~_0 = 原组合总权重: True ; w~_j = w_j (j>=1): True
解读:
- 两个因子相关系数约 0.7。真实系数是 \((1.1,0.5)\),多元回归(屋顶分量)准确恢复了它;单变量 beta(地窖分量除以 \(g_{ii}\))是 \((1.42,1.42)\),把另一个因子的作用也算了进来。这就是"单因子 beta 与多因子 beta 不同"的几何原因:平行投影与垂直投影不同。
- 截面回归 \(\hat{\mathbf f}=(B^TB)^{-1}B^T\mathbf r\) 的每个分量,都等于一个"纯因子组合"的收益。纯因子组合 \(B(B^TB)^{-1}\) 的列满足 \(\mathbf g^k\cdot\mathbf g_j=\delta^k_j\):对自己的因子暴露为 1,对其他因子暴露为 0。它就是载荷基的倒易基。(这里用的是等权最小二乘;用 WLS 时把度量换成 \(W\),倒易基变为 \(WB(B^TWB)^{-1}\)。)
- 因子旋转后,载荷、暴露、因子收益、因子协方差各自按协变或逆变规律变化,但所有"可观测的风险量"都不变。风险模型供应商改因子定义(例如把"市场"与"Beta 风格"正交化)时,你的组合风险不应变,可以用这个性质做回归测试。
- 换成"资产 0 + 价差"的交易单元后,单元 0 的持仓等于原组合总权重,其余单元持仓等于原权重;协方差按 \(P^T\Sigma P\) 变,组合方差不变。
本章小结
一般基不必正交、不必等长,只要 \(J=\det G\ne0\)。倒易基由 \(\mathbf g^i\cdot\mathbf g_j=\delta^i_j\) 定义,计算上就是 \(G^{-1}\) 的各行。于是每个向量有两套分量:屋顶(逆变)分量 \(v^i=\mathbf v\cdot\mathbf g^i\) 是平行投影的系数,地窖(协变)分量 \(v_i=\mathbf v\cdot\mathbf g_i\) 是与基向量的点积;一上一下相乘求和就是点积。度量 \(g_{ij}\) 及其逆 \(g^{ij}\) 负责在两套分量之间升降指标。2 阶张量有四组分量,对称张量的混合分量矩阵一般不对称。换基 \(\tilde{\mathbf g}_j=A^i_j\mathbf g_i\) 时,每个下标带一个 \(A\),每个上标带一个 \(A^{-1}\)。在量化里:收益、暴露、梯度是协变的,持仓、因子收益、回归系数是逆变的;协方差(两个下标)按 \(A^T\Sigma A\) 变;纯因子组合是载荷的倒易基;einsum 是这一切的实现语言,但上下标的正确性要靠自己维护。
| 概念 | 公式 | 量化对应 |
|---|---|---|
| 一般基、Jacobian | \(\mathbf v=v^i\mathbf g_i\),\(J=\det G\ne0\) | 相关因子、非正交交易单元 |
| 倒易基 | \(\mathbf g^i\cdot\mathbf g_j=\delta^i_j\),\(\mathbf g^i\) = \(G^{-1}\) 第 \(i\) 行 | 纯因子组合 \(B(B^TB)^{-1}\) |
| 屋顶(逆变)分量 | \(v^i=\mathbf v\cdot\mathbf g^i\) | 多元回归系数、持仓 |
| 地窖(协变)分量 | \(v_i=\mathbf v\cdot\mathbf g_i\) | 与因子的协方差、暴露 |
| 点积 | \(\mathbf u\cdot\mathbf v=u^iv_i=g_{ij}u^iv^j\) | einsum('i,i->')、马氏距离 |
| 度量 | \(g_{ij}=\mathbf g_i\cdot\mathbf g_j=G^TG\),\(\det g=J^2\) | 因子协方差、Gram 矩阵 |
| 升降指标 | \(v^i=g^{ij}v_j\) | 正规方程 \(\beta=F^{-1}c\) |
| 四组分量 | \(T_{ij},T^{ij},T^i_{\cdot j},T_j^{\cdot i}\) | 混合分量 ↔ \(\Sigma_1^{-1}\Sigma_2\) |
| 基变换 | \(\tilde v_j=A^i_jv_i\),\(\tilde v^i=(A^{-1})^i_jv^j\) | 暴露 \(A^T\mathbf x\),因子收益 \(A^{-1}\mathbf f\) |
| 张量变换 | \([\tilde T_{ij}]=A^TTA\),\([\tilde T^i_{\cdot j}]=A^{-1}TA\) | \(\Sigma\to P^T\Sigma P\),\(F\to A^{-1}FA^{-T}\) |
| \(\epsilon\)–\(\delta\) | \(\epsilon^{ijk}\epsilon_{pqk}=\delta^i_p\delta^j_q-\delta^i_q\delta^j_p\) | 指标运算练习 |
| Cayley–Hamilton | \(A^3-(\operatorname{tr}A)A^2+\cdots-(\det A)I=0\) | 矩阵函数 |
练习
基础
- \(\mathbf g_1\sim(-1,0,0)\),\(\mathbf g_2\sim(1,1,0)\),\(\mathbf g_3\sim(1,1,1)\),\(\mathbf v\sim(1,2,3)\)。求倒易基、\(\mathbf v\) 的屋顶与地窖分量、度量 \([g_{ij}]\)。(原书习题 2.2) 答案要点:\(J=-1\)(左手系,但仍是基);\(\mathbf g^1\sim(-1,1,0)\),\(\mathbf g^2\sim(0,1,-1)\),\(\mathbf g^3\sim(0,0,1)\);\(v^i=(1,-1,3)\),\(v_i=(-1,3,6)\);\([g_{ij}]=\begin{bmatrix}1&-1&-1\\-1&2&2\\-1&2&3\end{bmatrix}\)。可验证 \(v^iv_i=-1-3+18=14=|\mathbf v|^2\)。
- 化简:\(\delta^i_jv_iu^j\),\(\delta^2_j\delta^j_kv^k\),\(\delta^3_j\delta^j_1\)。(原书习题 2.3) 答案要点:\(u^iv_i\);\(v^2\);\(0\)。
- 写出下列表达式的
einsum下标串:(a) \(\tilde T^{ij}=(A^{-1})^i_k(A^{-1})^j_pT^{kp}\);(b) 一批协方差矩阵S[t, i, j]对固定权重w[i]的组合方差序列;(c) 面板因子暴露X[t, n, k]与因子收益f[t, k]得到的系统性收益[t, n]。 答案要点:(a)'ik,jp,kp->ij';(b)'i,tij,j->t';(c)'tnk,tk->tn'。 - 证明 \([g_{ij}]=G^TG\)、\(\det[g_{ij}]=J^2\),以及 \([g^{ij}]=[g_{ij}]^{-1}\)。(原书习题 2.10) 提示:\(g^{ij}=\mathbf g^i\cdot\mathbf g^j\) 对应 \(G^{-1}G^{-T}=(G^TG)^{-1}\)。
- 二维张量 \(\mathbf T\mathbf v\sim(v_x-v_y,\ v_x)\),斜基 \(\mathbf g_1\sim(1,0)\),\(\mathbf g_2\sim(1,1)\)。求 \(\mathbf T\) 的对称部分 \(\mathbf S\),以及 \(\mathbf S\) 的地窖分量矩阵和混合分量矩阵 \([S^i_{\cdot j}]\),说明后者不对称。(原书习题 2.23) 答案要点:\(\mathbf S\sim\begin{bmatrix}1&0\\0&0\end{bmatrix}\);\(\mathbf g^1\sim(1,-1)\),\(\mathbf g^2\sim(0,1)\);\([S_{ij}]=\begin{bmatrix}1&1\\1&1\end{bmatrix}\)(对称),\([S^i_{\cdot j}]=\begin{bmatrix}1&1\\0&0\end{bmatrix}\)(不对称)。
进阶
- 用 (2.18) 证明 \((\mathbf u\times\mathbf v)\times\mathbf w=(\mathbf u\cdot\mathbf w)\mathbf v-(\mathbf v\cdot\mathbf w)\mathbf u\),并证明 \(\epsilon^{ijk}\epsilon_{pjk}=2\delta^i_p\)。(原书习题 2.6–2.7) 提示:笛卡尔记号下 \([(\mathbf u\times\mathbf v)\times\mathbf w]_i=\epsilon_{ijk}\epsilon_{jpq}u_pv_qw_k\),循环置换后用 (2.18)。
- 证明正交换基 \(\tilde{\mathbf g}_j=\mathbf Q\mathbf g_j\) 下 \(g_{ij}\) 不变,并由此解释"只用正交矩阵做换基时,协变与逆变分量按同样规律变换"。(原书习题 2.16) 提示:\(\tilde g_{ij}=\mathbf Q\mathbf g_i\cdot\mathbf Q\mathbf g_j=\mathbf g_i\cdot\mathbf Q^T\mathbf Q\mathbf g_j\);若初始基标准正交,\(A\) 为正交矩阵,\(A^{-1}=A^T\)。
- 设两个协方差估计 \(\Sigma_1,\Sigma_2\)(\(N\times N\) 正定)。证明对任意非奇异 \(P\),\(\Sigma_1^{-1}\Sigma_2\) 与 \((P^T\Sigma_1P)^{-1}(P^T\Sigma_2P)\) 相似,因而特征值相同;但 \(\Sigma_2\) 与 \(P^T\Sigma_2P\) 的特征值一般不同。 提示:\((P^T\Sigma_1P)^{-1}P^T\Sigma_2P=P^{-1}(\Sigma_1^{-1}\Sigma_2)P\)。
- 加权截面回归用度量 \(W\)(对角正定):\(\hat{\mathbf f}=(B^TWB)^{-1}B^TW\mathbf r\)。指出此时的"倒易基"(纯因子组合)并验证其暴露矩阵为单位阵。 答案要点:\(\Omega=WB(B^TWB)^{-1}\),\(B^T\Omega=I\),\(\hat{\mathbf f}=\Omega^T\mathbf r\)。
- 由 Cayley–Hamilton 定理 (2.50),对 \(3\times3\) 非奇异矩阵写出 \(A^{-1}\) 用 \(A^2\)、\(A\)、\(I\) 表示的公式,并用 numpy 对随机矩阵验证。(原书习题 2.28) 答案要点:\(A^{-1}=\frac1{\det A}\left[A^2-(\operatorname{tr}A)A+\tfrac12((\operatorname{tr}A)^2-\operatorname{tr}A^2)I\right]\)。
原书推荐习题
- 2.2、2.8、2.9、2.10:倒易基、度量张量、升降指标、\(\det g=J^2\),最核心的计算训练。
- 2.5–2.7:\(\epsilon\)–\(\delta\) 恒等式与三重积,指标运算基本功。
- 2.15–2.17:基变换张量、正交张量、Householder 反射。
- 2.23:对称张量的混合分量矩阵可不对称,纠正常见误区。
- 2.25、2.27、2.28:矩阵指数、极分解、Cayley–Hamilton。
原书对照
| 本章小节 | 原书小节 | 书页 | PDF 页 |
|---|---|---|---|
| T2.1 一般基与 Jacobian | 2.0 动机;2.1 General Bases;2.2 The Jacobian of a Basis Is Nonzero | 25–27 | 38–40 |
| T2.2 求和约定 | 2.3 The Summation Convention | 27–28 | 40–41 |
| T2.3 倒易基与两套分量 | 2.4 Dot Product in a General Basis;2.5 Reciprocal Base Vectors;2.6 Roof and Cellar Components;2.7 Simplification of the Dot Product | 28–32 | 41–45 |
| T2.4 度量与升降指标 | 习题 2.8–2.10 | 39–40 | 52–53 |
| T2.5 置换符号与叉积 | 2.8 Computing the Cross Product in a General Basis | 32–34 | 45–47 |
| T2.6 四组分量 | 2.9 A Second Order Tensor Has Four Sets of Components | 34–36 | 47–49 |
| T2.7 基变换 | 2.10 Change of Basis | 36–38 | 49–51 |
| T2.8 习题结论 | 2.11 Exercises(共 28 题) | 38–44 | 51–57 |
页码换算:第 I–III 章原书第 \(p\) 页 = PDF 第 \(p+13\) 页。习题 2.8–2.10 的具体页码按习题区顺序估计,查阅时以 PDF p.51–57 范围为准。原书编号缺 (2.24)。