向量与矩阵
向量是一列数字;矩阵是一张数字表格。线性代数是多因子模型、投资组合优化和机器学习的语言。
向量:有序的数字列表
向量是量化金融中最简单的数据结构。它是有序的数字集合——仅此而已。
想象一个包含五只资产的投资组合。预期收益率向量(以每月百分比表示)可能如下:
每个条目对应一只资产。顺序很重要——资产 3 的预期收益率是 3.2,而非 0.8。
几何视角
向量也有几何生命。二维向量如 可以画成一条从原点出发、终点在坐标平面 (3, 4) 点的箭头。向量的范数(或长度)是从原点到其尖端的距离:
对于 ,范数为 。这就是毕达哥拉斯定理的应用。
在一个包含 500 个资产的投资组合中,每个资产都有自己的维度。你在一个 500 维空间中工作,这无法可视化,但代数保持不变。
向量运算
向量支持三种基本运算。
加法将对应条目相加:。
标量乘法将每个条目乘以一个常数:。
点积(内积)将向量按条目相乘后求和:
和 的点积为 。
点积引出了最有用的概念之一:正交性。当两个向量的点积为零时,它们是正交的。几何上,它们相互垂直——指向完全独立的方向。在统计中,当你想确认一个变量提供了另一个变量无法提供的独立信息时,这很重要。
矩阵:转换数据的表格
矩阵是一个由行和列组成的矩形数字表格。如果向量是单列数据,矩阵就是并排的多列。
具有 行和 列的矩阵称为 矩阵。第 行第 列的条目写作 。
量化金融中经常出现两种矩阵:
收益率矩阵 ,大小为 ,包含 个资产在 个时期的收益率。第 行包含所有资产在第 天的收益率;第 列包含资产 在所有天的收益率。
协方差矩阵 ,大小为 ,对角线上是每个资产的方差,对角线外是每对资产之间的协方差。它总是对称的————因为协方差是对称的。
转置
转置运算交换行和列。如果 是 ,则 是 。第一行变成第一列。
在 Python 中使用 NumPy:
import numpy as np
A = np.array([[1, 4],
[2, 5],
[3, 6]])
print(A.shape) # (3, 2)
print(A.T.shape) # (2, 3)
提示词
用 numpy 写一个 3×2 矩阵,用 .shape 和 .T.shape 演示转置。
矩阵运算
矩阵像向量一样按条目进行加法和标量乘法。有趣的运算是矩阵乘法,它将两个矩阵组合起来。
要将 (大小 )乘以 (大小 ),你计算每个条目 作为 的第 行与 的第 列的点积:
结果矩阵的大小为 。注意内维度必须匹配—— 的列数必须等于 的行数。
import numpy as np
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
# 矩阵乘法
C = A @ B # 或 np.matmul(A, B)
print(C)
# [[19 22]
# [43 50]]
提示词
用 numpy 演示两个 2×2 矩阵相乘,打印结果矩阵。
点积作为矩阵乘法
一个关键洞察:两个向量的点积与行向量乘以列向量是相同的。这是投资组合收益率计算的基础。
给定权重向量 (每个资产中的资本比例)和收益率向量 :
投资组合收益率是单个资产收益率的加权和——一个简单的点积。
import numpy as np
# 五只资产:预期月收益率
expected_returns = np.array([2.1, 1.4, 3.2, 0.8, 1.9]) # 百分比
# 投资组合权重(必须总和为 1)
weights = np.array([0.30, 0.20, 0.25, 0.10, 0.15])
# 投资组合收益率 = 权重与收益率的点积
portfolio_return = weights @ expected_returns
print(f"预期投资组合收益率: {portfolio_return:.2f}%")
提示词
用 numpy 演示点积计算组合收益率:权重向量乘预期收益率向量。
这个简单运算——一个点积——是投资组合收益率计算的核心。每当你看到一个投资组合的预期收益率时,某个地方就是一个权重向量正在与收益率向量做点积。
参考文献
Strang, Introduction to Linear Algebra, 5th edition, Wellesley-Cambridge Press, Chapters 1–2. ISBN: 978-0980232776.
Lax, Linear Algebra and Its Applications, 2nd edition, Wiley, Chapter 1. ISBN: 978-0471751564.