从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——线性代数与矩阵运算 | 矩阵基础

从基础到实战的量化交易全流程学习:1.3 数学与统计学基础------线性代数与矩阵运算 | 矩阵基础


第二部分:线性代数与矩阵运算

第1节:矩阵基础:矩阵运算(加减乘逆)、转置、行列式与秩


一、矩阵基础:用"表格"组织金融数据

矩阵是由数字组成的矩形阵列,形如 A = ( a 11 a 12 ... a 1 n a 21 a 22 ... a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ... a m n ) \mathbf{A} = \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{pmatrix} A= a11a21⋮am1a12a22⋮am2......⋱...a1na2n⋮amn ,在量化交易中,它是处理多维度数据的核心工具。

1. 矩阵的基本运算

运算类型 定义与公式 量化交易场景举例
加法/减法 同型矩阵对应元素相加减: C = A ± B \mathbf{C} = \mathbf{A} \pm \mathbf{B} C=A±B, c i j = a i j ± b i j c_{ij} = a_{ij} \pm b_{ij} cij=aij±bij 不同时间的因子暴露矩阵相加减(如月度调仓)
数乘 常数 k k k 乘以矩阵所有元素: C = k A \mathbf{C} = k\mathbf{A} C=kA, c i j = k ⋅ a i j c_{ij} = k \cdot a_{ij} cij=k⋅aij 因子权重缩放(如对高风险因子加权系数调整)
乘法 矩阵 A m × p \mathbf{A}{m \times p} Am×p 与 B p × n \mathbf{B}{p \times n} Bp×n 相乘: C m × n \mathbf{C}{m \times n} Cm×n, c i j = ∑ k = 1 p a i k b k j c{ij} = \sum_{k=1}^p a_{ik}b_{kj} cij=∑k=1paikbkj 计算因子加权收益(因子暴露×因子收益率)
转置 行列互换: A T \mathbf{A}^T AT, a i j T = a j i a^T_{ij} = a_{ji} aijT=aji 转换数据维度(如将因子截面数据转为时间序列)
逆矩阵 若 A \mathbf{A} A 为方阵且可逆,满足 A A − 1 = A − 1 A = I \mathbf{A}\mathbf{A}^{-1} = \mathbf{A}^{-1}\mathbf{A} = \mathbf{I} AA−1=A−1A=I(单位矩阵) 求解线性方程组(如多因子模型回归系数)

2. 关键性质与注意事项

  • 乘法不满足交换律 : A B ≠ B A \mathbf{A}\mathbf{B} \neq \mathbf{B}\mathbf{A} AB=BA(除非特殊情况)。
  • 逆矩阵存在条件 :矩阵必须为方阵且行列式 det ⁡ ( A ) ≠ 0 \det(\mathbf{A}) \neq 0 det(A)=0(满秩矩阵)。
  • 秩(Rank) :矩阵中线性无关的行/列数,反映数据的"有效维度"。
    • 若秩为 r r r,则数据可压缩到 r r r 维空间(PCA降维的理论基础)。

二、矩阵运算在多因子模型中的核心应用

多因子模型假设资产收益率由多个因子(如市值、PE、动量)共同驱动,矩阵运算贯穿数据处理全流程。

1. 因子数据组织:用矩阵表示"暴露"与"收益"

  • 因子暴露矩阵(Exposure Matrix)
    • 行:资产(如100只股票),列:因子(如3个因子:市值、PE、动量)。
    • 示例:
      X = ( x 11 x 12 x 13 x 21 x 22 x 23 ⋮ ⋮ ⋮ x 100 , 1 x 100 , 2 x 100 , 3 ) ( 维度:100×3 ) \mathbf{X} = \begin{pmatrix} x_{11} & x_{12} & x_{13} \\ % 股票1的3个因子暴露 x_{21} & x_{22} & x_{23} \\ % 股票2的因子暴露 \vdots & \vdots & \vdots \\ x_{100,1} & x_{100,2} & x_{100,3} \end{pmatrix} \quad (\text{维度:100×3}) X= x11x21⋮x100,1x12x22⋮x100,2x13x23⋮x100,3 (维度:100×3)
  • 因子收益率向量(Factor Returns)
    • f = ( f 1 f 2 f 3 ) \mathbf{f} = \begin{pmatrix} f_1 \\ f_2 \\ f_3 \end{pmatrix} f= f1f2f3 (3个因子的收益率)。
  • 资产收益率计算
    • 资产收益率 r = X f + e \mathbf{r} = \mathbf{X}\mathbf{f} + \mathbf{e} r=Xf+e( e \mathbf{e} e 为残差向量)。

2. 矩阵乘法:快速计算"因子加权收益"

假设某投资组合对3个因子的权重为 w = ( w 1 w 2 w 3 ) \mathbf{w} = \begin{pmatrix} w_1 \\ w_2 \\ w_3 \end{pmatrix} w= w1w2w3 ,则组合收益为:
组合收益 = w T f = w 1 f 1 + w 2 f 2 + w 3 f 3 \text{组合收益} = \mathbf{w}^T \mathbf{f} = w_1f_1 + w_2f_2 + w_3f_3 组合收益=wTf=w1f1+w2f2+w3f3

  • 向量化优势:避免循环,直接通过矩阵乘法批量计算所有资产/组合的收益,提升计算效率(尤其在Python中用NumPy优化)。

3. 逆矩阵与线性方程组:求解因子系数(最小二乘法)

多因子模型通过回归求因子系数 β \mathbf{\beta} β,使资产收益率 r \mathbf{r} r 与因子暴露 X \mathbf{X} X 的残差最小:
β = ( X T X ) − 1 X T r \mathbf{\beta} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{r} β=(XTX)−1XTr

  • 步骤解析
    1. 计算 X T X \mathbf{X}^T \mathbf{X} XTX(因子暴露的协方差矩阵)。
    2. 求逆矩阵 ( X T X ) − 1 (\mathbf{X}^T \mathbf{X})^{-1} (XTX)−1(需确保矩阵可逆,即因子间无严格共线性)。
    3. 计算 X T r \mathbf{X}^T \mathbf{r} XTr(因子与收益率的协方差向量)。
    4. 得到因子系数 β \mathbf{\beta} β(反映因子对收益的贡献)。

三、Python实战:用NumPy实现矩阵运算

python 复制代码
import numpy as np

# 1. 创建因子暴露矩阵(5只股票,2个因子:市值、PE)
X = np.array([
    [100, 15],    # 股票1:市值100亿,PE15
    [200, 20],    # 股票2
    [50, 12],     # 股票3
    [300, 25],    # 股票4
    [150, 18]     # 股票5
])

# 2. 因子收益率向量(市值因子涨5%,PE因子跌2%)
f = np.array([0.05, -0.02])

# 3. 计算资产收益率:r = X * f(矩阵乘法)
r = np.dot(X, f)
print("资产收益率:", r)
# 输出:[100*0.05 + 15*(-0.02), 200*0.05 + 20*(-0.02), ...] = [4.7, 9.6, 2.2, 14.5, 7.2]

# 4. 逆矩阵应用:假设已知r和X,求解因子系数β(最小二乘法)
# 构造带截距项的X(添加全1列)
X_with_intercept = np.hstack((np.ones((5, 1)), X))  # 维度5×3(截距+2因子)
r = np.array([4.7, 9.6, 2.2, 14.5, 7.2])
beta = np.linalg.inv(X_with_intercept.T @ X_with_intercept) @ X_with_intercept.T @ r
print("因子系数β(含截距项):", beta)
# 输出:[截距项, 市值因子系数, PE因子系数],反映各因子对收益的贡献

四、行列式与秩:判断数据有效性

  • 行列式(Determinant)

    • 物理意义:方阵对应的线性变换的"体积缩放因子", det ⁡ ( A ) = 0 \det(\mathbf{A})=0 det(A)=0 表示矩阵不可逆(行/列线性相关)。
    • 量化应用:检验因子协方差矩阵是否可逆(避免多重共线性)。
  • 秩(Rank)

    • 若因子暴露矩阵 X \mathbf{X} X 的秩为2(低于列数3),说明3个因子中存在冗余(如市值与股价高度相关),需用PCA降维。

本节总结

  • 矩阵是多因子模型的"数据骨架":从因子暴露到收益计算,从回归分析到风险建模,矩阵运算贯穿始终。
  • 向量化计算提升效率:利用NumPy的矩阵操作,避免Python循环,大幅加速数据处理(尤其在处理万级资产×百级因子时)。
相关推荐
da-peng-song14 分钟前
ArcGIS arcpy代码工具——根据属性结构表创建shape图层
javascript·python·arcgis
滚雪球~28 分钟前
小市值策略复现(A股选股框架回测系统)
python·量化·策略
一只码代码的章鱼40 分钟前
学习笔记(算法学习+Maven)
笔记·学习·算法
冰茶_1 小时前
WPF TextBlock控件性能优化指南
学习·性能优化·wpf·控件
flying robot1 小时前
小结:PKI(Public Key Infrastructure,公钥基础设施)
笔记
RockLiu@8051 小时前
探索PyTorch中的空间与通道双重注意力机制:实现concise的scSE模块
人工智能·pytorch·python
keep intensify1 小时前
数据结构---单链表的增删查改
c语言·数据结构·c++·经验分享·学习·算法·分享
huangyuchi.1 小时前
【C++11】类的新功能
开发语言·笔记·c++11·delete·移动构造·移动赋值·deflut
2501_915373882 小时前
怎样学习Electron
javascript·学习·electron