第 07 章 概率中的分析工具
一句话概括本章:概率论的推导,八成是在用几条固定的"算账规则"。 你在 CFA 里已经会算均值、方差、相关系数,也会查正态分布表。但读到教材里的推导时,常常卡在"这一步为什么能把求和号挪到外面""为什么期望和极限能交换""\(o(\Delta t)\) 为什么可以扔掉"这类地方。本章把这些规则单独拿出来讲清楚:求和记号、积分与求和的交换、期望和方差的运算、矩母函数、条件期望、大 O 小 o、四个常用不等式,以及两种收敛。
本章不重新讲概率论(那是第 02 册的任务),只讲读推导时反复用到的工具。每个工具都配金融例子和数值验证。
学习目标
读完本章,你应该能够:
- 熟练读写 \(\sum\)、\(\prod\) 和双重求和,会交换求和顺序,会处理 \(\sum_{i<j}\) 这类三角区域。
- 知道"期望与求和、积分、极限交换"什么时候总是成立、什么时候需要条件,并能举出一个交换失败的金融例子(加倍下注策略)。
- 不靠记忆、靠推导写出 \(\operatorname{Var}(aX+bY)\)、\(\operatorname{Var}(\sum X_i)\)、样本方差为何除以 \(n-1\)。
- 理解矩、偏度、峰度和矩母函数,会用矩母函数求对数正态的均值 \(e^{\mu+\sigma^2/2}\)。
- 把条件期望理解成"给定信息下的最佳预测",会用塔性质和全方差公式。
- 读懂 \(O(\cdot)\) 与 \(o(\cdot)\),知道伊藤引理里为什么 \((\Delta t)^2\)、\(\Delta t\,\Delta W\) 可以忽略。
- 会用 Jensen、Markov、Chebyshev、Cauchy–Schwarz 四个不等式,并说出它们各自的金融含义。
- 区分依概率收敛和依分布收敛,并理解大数定律、中心极限定理在回测里的实际含义。
7.1 求和记号与双重求和
7.1.1 求和号 \(\sum\) 的读法与规则
先看金融例子。一只 3 年期债券每年付息 5,第 3 年还本 100,贴现率 4%。价格是
\(\sum_{t=1}^{3}\) 读作"\(t\) 从 1 到 3 求和"。\(t\) 叫求和指标,它只在求和号内部有意义,换成别的字母(\(s\)、\(k\))结果不变,所以也叫"哑指标"。
三条基本规则,依据都是加法的交换律、结合律和分配律:
- 常数可以提出来:\(\sum_{i=1}^n c\,a_i=c\sum_{i=1}^n a_i\)。
- 和可以拆开:\(\sum_{i=1}^n(a_i+b_i)=\sum a_i+\sum b_i\)。
- 常数求和要乘项数:\(\sum_{i=1}^n c=nc\)。这一条最容易忘。
数值例子:\(\sum_{i=1}^{4}(2i+1)=2\sum_{i=1}^4 i+\sum_{i=1}^4 1=2\times10+4=24\)。逐项验证:\(3+5+7+9=24\)。
指标平移:\(\sum_{t=1}^{n}a_{t-1}=\sum_{s=0}^{n-1}a_s\),令 \(s=t-1\) 即可。时间序列里把"滞后一期"写来写去,靠的就是它。
7.1.2 连乘号 \(\prod\) 与对数
累计收益是连乘:
例子:三个月收益 10%、−5%、3%,累计 \(1.10\times0.95\times1.03=1.07635\),即 7.635%。
取对数把连乘变成求和:\(\ln\prod_t(1+r_t)=\sum_t\ln(1+r_t)\)。数值:\(\ln1.10+\ln0.95+\ln1.03=0.09531-0.05129+0.02956=0.07358\),\(e^{0.07358}=1.07635\)。这就是量化里偏爱对数收益的原因:多期对数收益直接相加,求和的所有工具(期望线性性、方差相加、中心极限定理)都能直接用上。
7.1.3 双重求和与交换顺序
一张 \(m\times n\) 的数表 \(a_{ij}\),全部加起来可以先按行加再加总,也可以先按列加再加总:
金融例子:3 个账户 4 个月的盈亏,"先算每个账户的总盈亏再加"和"先算每个月的总盈亏再加",答案当然一样。有限项求和,顺序随便换。
如果求和区域是三角形,换序时要重写上下限。例如"\(j\) 从 1 到 \(i\)"的下三角:
方法是画出 \((i,j)\) 的格点区域:条件是 \(1\le j\le i\le n\)。先固定 \(j\),\(i\) 的范围就是 \(j\) 到 \(n\)。
数值验证(\(n=3\),\(a_{ij}=ij\))。左边:\(i=1\) 时 \(1\);\(i=2\) 时 \(2+4=6\);\(i=3\) 时 \(3+6+9=18\);合计 25。右边:\(j=1\) 时 \(1+2+3=6\);\(j=2\) 时 \(4+6=10\);\(j=3\) 时 \(9\);合计 25。
7.1.4 平方和展开:组合方差的双重求和
一个反复出现的恒等式:
推导:
- 把平方写成两个和相乘,\((\sum_ix_i)(\sum_jx_j)\)。第二个和换一个哑指标 \(j\),避免和 \(i\) 混淆。
- 展开乘积,每个 \(x_i\) 乘每个 \(x_j\),得到 \(n^2\) 项的双重求和。
- 把 \(n^2\) 项分成三块:对角线 \(i=j\)(\(n\) 项),上三角 \(i<j\),下三角 \(i>j\)。由于 \(x_ix_j=x_jx_i\),上下三角相等,于是得到"对角 \(+2\times\) 上三角"。
数值:\(x=(1,2,3,4)\),\((\sum x)^2=100\);对角 \(1+4+9+16=30\);上三角 \(1\cdot2+1\cdot3+1\cdot4+2\cdot3+2\cdot4+3\cdot4=35\);\(30+2\times35=100\)。
把 \(x_i\) 换成 \(w_ir_i\) 并取期望,就得到组合方差的结构:\(n\) 个方差项加上 \(n(n-1)/2\) 对协方差项各算两次。第 06 章的 \(w^\top\Sigma w\) 就是这个双重求和的矩阵写法。
import numpy as np
# 一个 3×4 的数表 a[i, j]:比如 3 个账户在 4 个月的盈亏(万元)
a = np.array([[ 2.0, -1.0, 3.0, 0.5],
[ 1.0, 4.0, -2.0, 1.5],
[-0.5, 2.0, 1.0, 3.0]])
row_first = sum(sum(a[i, j] for j in range(4)) for i in range(3))
col_first = sum(sum(a[i, j] for i in range(3)) for j in range(4))
print("先按行再按列:", row_first, " 先按列再按行:", col_first)
# 双重求和的三角区域:sum_{i<j} 与全和的关系
x = np.array([1.0, 2.0, 3.0, 4.0])
full = sum(x[i] * x[j] for i in range(4) for j in range(4))
upper = sum(x[i] * x[j] for i in range(4) for j in range(i + 1, 4))
diag = sum(x[i] ** 2 for i in range(4))
print("(Σx)^2 =", x.sum() ** 2, " 全部 i,j =", full, " 对角 + 2×上三角 =", diag + 2 * upper)
输出:
先按行再按列: 14.5 先按列再按行: 14.5
(Σx)^2 = 100.0 全部 i,j = 100.0 对角 + 2×上三角 = 100.0
7.2 积分、求和与极限的交换
7.2.1 为什么要关心"交换"
概率论推导中最常见的一步是把期望 \(\mathbb E\) 挪进或挪出某个运算:
- \(\mathbb E[\sum_iX_i]=\sum_i\mathbb E[X_i]\):期望和求和交换。
- \(\frac{d}{dt}\mathbb E[e^{tX}]=\mathbb E[Xe^{tX}]\):期望和求导交换(矩母函数要用)。
- \(\lim_n\mathbb E[X_n]=\mathbb E[\lim_nX_n]\):期望和极限交换。
期望本质上是求和(离散)或积分(连续),所以这些都是"求和/积分与另一个运算交换"的问题。
7.2.2 有限项:永远可以
有限个随机变量,只要各自期望存在,\(\mathbb E[\sum_{i=1}^nX_i]=\sum_{i=1}^n\mathbb E[X_i]\) 总是成立,不需要独立,也不需要任何别的条件。原因就是 7.1.3 节:有限项求和可以随便换顺序,而积分对有限和是线性的。
7.2.3 无穷项和极限:需要条件
无穷求和、极限、求导与期望交换,一般不能随便做。教材里看到"由控制收敛定理""由 Fubini 定理",指的就是在检查交换条件。需要记住的只有两个充分条件:
- 非负条件(Tonelli 定理 / 单调收敛定理):如果各项都非负,求和与期望(或二重积分的两个积分)总能交换,结果可以是 \(+\infty\)。
- 绝对可积条件(Fubini 定理 / 控制收敛定理):如果绝对值的总和(或积分)有限,或者整个序列被一个期望有限的随机变量 \(Y\) 控制住(\(|X_n|\le Y\),\(\mathbb E Y<\infty\)),交换就成立。
白话:没有"跑到无穷远去的质量",就可以交换。
7.2.4 交换失败的金融例子:加倍下注
公平的抛硬币游戏,赢一次得 1 元。策略:第一局押 1 元,输了就把下一局的押注翻倍,直到赢一次为止。
- 如果第 \(k\) 局才第一次赢,之前输了 \(1+2+\cdots+2^{k-2}=2^{k-1}-1\),这一局赢 \(2^{k-1}\),净赚恰好 1 元。
- 只要硬币总会出现正面(概率为 1),这个策略必然净赚 1 元。
但每一局都是公平的,期望收益为 0。哪里出了问题?看最多玩 \(N\) 局的版本。记 \(X_N\) 为玩到第一次赢或第 \(N\) 局为止的净收益:
- 前 \(N\) 局里赢过一次(概率 \(1-2^{-N}\)):净赚 1。
- \(N\) 局全输(概率 \(2^{-N}\)):净亏 \(2^N-1\)。
每个 \(N\) 都有 \(\mathbb E[X_N]=0\),所以 \(\lim_N\mathbb E[X_N]=0\)。但 \(X_N\to1\)(概率为 1),所以 \(\mathbb E[\lim_NX_N]=1\)。两者不相等,极限和期望不能交换。
失败的原因正是 7.2.3 节说的"质量跑到无穷远":小概率 \(2^{-N}\) 乘上巨大亏损 \(2^N-1\),始终贡献 \(-1\) 的期望,而这个亏损没有任何有限上界去"控制"它。\(N=10\) 时,你有 \(1023/1024\) 的概率赚 1 元,有 \(1/1024\) 的概率亏 1023 元。
金融教训:许多"几乎稳赚"的策略(卖出深度虚值期权、马丁格尔加仓)都是这个结构。回测期内没遇到那个小概率事件,看起来每次都赚;但期望可能是零甚至为负。第 08 册第 28 章讲鞅与测度时,会正式处理"允许无限加倍就能凭空套利"的问题,那里对交易策略施加的可积性条件,本质上就是这里的控制条件。
7.3 期望的线性性
7.3.1 结论与推导
期望是线性的:对任意随机变量 \(X,Y\)(期望存在)和常数 \(a,b,c\),
不需要 \(X\) 与 \(Y\) 独立。 这一点常被忽略。
离散情形的推导。设 \((X,Y)\) 取值 \((x_i,y_j)\) 的联合概率为 \(p_{ij}\):
- 期望定义:\(\mathbb E[aX+bY]=\sum_i\sum_j(ax_i+by_j)p_{ij}\)。
- 拆开(7.1.1 节规则 2):\(=a\sum_i\sum_jx_ip_{ij}+b\sum_i\sum_jy_jp_{ij}\)。
- 第一项先对 \(j\) 求和,\(\sum_jp_{ij}=P(X=x_i)\) 是边际概率,得 \(a\sum_ix_iP(X=x_i)=a\,\mathbb E[X]\)。第二项交换求和顺序后同理。
整个推导只用到求和的线性和交换顺序,没有用到任何独立性。
7.3.2 金融例子
组合期望收益 \(\mathbb E[w^\top r]=w^\top\mathbb E[r]=w^\top\mu\),无论资产之间如何相关都成立。
数值:权重 0.7 和 0.3,日期望收益 5bp 和 3bp,组合期望收益 \(0.7\times5+0.3\times3=4.4\)bp。相关性只影响方差,不影响期望。
7.3.3 示性函数技巧
示性函数 \(\mathbf 1_A\) 在事件 \(A\) 发生时取 1,否则取 0。它的期望就是概率:\(\mathbb E[\mathbf 1_A]=P(A)\)。
例子:一个 100 只股票的组合,每只股票明天涨停的概率都是 3%。明天涨停股票数的期望是多少?
把涨停数写成 \(N=\sum_{i=1}^{100}\mathbf 1_{\{i\text{ 涨停}\}}\),由线性性 \(\mathbb E[N]=100\times0.03=3\)。
这个答案不受股票之间相关性的影响。如果它们高度相关(同一板块、同一题材),\(N\) 的分布会很分散:要么 0 只,要么一大片。但期望始终是 3。相关性只体现在 \(\operatorname{Var}(N)\) 里。
7.3.4 乘积的期望一般不能拆
\(\mathbb E[XY]=\mathbb E[X]\,\mathbb E[Y]\) 只在不相关时成立(独立是充分条件)。一般情况下
同理 \(\mathbb E[X^2]\ne(\mathbb E X)^2\),差额正是方差。非线性函数也不能直接穿过期望:\(\mathbb E[g(X)]\ne g(\mathbb E X)\)。二者的大小关系由 7.7 节的 Jensen 不等式给出。
7.4 方差与协方差的运算
7.4.1 定义与计算公式
第二个等号的推导:展开 \((X-\mu)^2=X^2-2\mu X+\mu^2\),用线性性,\(\mathbb E[X^2]-2\mu\,\mathbb E[X]+\mu^2=\mathbb E[X^2]-2\mu^2+\mu^2\)。
数值:某策略月收益以 0.6 概率为 +10%、0.4 概率为 −5%。
- \(\mathbb E X=0.06-0.02=0.04\)。
- \(\mathbb E[X^2]=0.6\times0.01+0.4\times0.0025=0.007\)。
- \(\operatorname{Var}X=0.007-0.0016=0.0054\),标准差 7.35%。
协方差同理:
\(\operatorname{Var}(X)=\operatorname{Cov}(X,X)\)。相关系数 \(\rho=\operatorname{Cov}(X,Y)/(\sigma_X\sigma_Y)\)。
7.4.2 运算规则
所有规则都可以从"协方差是双线性的"推出来:协方差对每个变量分别是线性的,常数平移不影响。
- \(\operatorname{Cov}(aX+b,\ cY+d)=ac\,\operatorname{Cov}(X,Y)\)。平移 \(b,d\) 被减均值抵消,倍数 \(a,c\) 提出来。
- \(\operatorname{Var}(aX+b)=a^2\operatorname{Var}(X)\)。注意是 \(a^2\),平移 \(b\) 消失。
- \(\operatorname{Cov}(\sum_ia_iX_i,\ \sum_jb_jY_j)=\sum_i\sum_ja_ib_j\operatorname{Cov}(X_i,Y_j)\)。
- 由第 3 条,\(\operatorname{Var}(\sum_iX_i)=\sum_i\sum_j\operatorname{Cov}(X_i,X_j)=\sum_i\operatorname{Var}(X_i)+2\sum_{i<j}\operatorname{Cov}(X_i,X_j)\)。这正是 7.1.4 节的平方和展开。
- 相关系数不受正倍数和平移影响:\(\rho(aX+b,\ cY+d)=\rho(X,Y)\),\(ac>0\)。
特例:\(\operatorname{Var}(aX+bY)=a^2\sigma_X^2+b^2\sigma_Y^2+2ab\operatorname{Cov}(X,Y)\),就是 CFA 的两资产组合方差公式。
7.4.3 独立同分布之和:\(\sqrt T\) 法则
若 \(X_1,\dots,X_n\) 两两不相关、方差都是 \(\sigma^2\),第 4 条中的协方差项全部为 0:
两个直接后果:
- 波动率年化:日对数收益不相关、日波动率 1%,一年 250 个交易日,年化波动率 \(1\%\times\sqrt{250}=15.81\%\)。如果日收益存在正自相关,协方差项为正,真实年化波动率会更大,\(\sqrt T\) 法则低估风险。
- 均值估计的精度:样本均值的标准误是 \(\sigma/\sqrt n\),误差只按 \(\sqrt n\) 的速度缩小。7.8 节会看到它在回测中意味着什么。
7.4.4 样本方差为什么除以 \(n-1\)
样本方差 \(s^2=\frac{1}{n-1}\sum_{i=1}^n(X_i-\bar X)^2\)。为什么不是除以 \(n\)?用上面的工具逐步算 \(\mathbb E[\sum(X_i-\bar X)^2]\),\(X_i\) 独立同分布,均值 \(\mu\)、方差 \(\sigma^2\):
- 代数恒等式:\(\sum_i(X_i-\bar X)^2=\sum_iX_i^2-n\bar X^2\)。(展开平方,用 \(\sum_iX_i=n\bar X\)。)
- 由 \(\operatorname{Var}=\mathbb E[X^2]-\mu^2\):\(\mathbb E[X_i^2]=\sigma^2+\mu^2\)。
- 同理,\(\mathbb E[\bar X^2]=\operatorname{Var}(\bar X)+\mu^2=\sigma^2/n+\mu^2\)(用 7.4.3 节)。
- 线性性:\(\mathbb E[\sum(X_i-\bar X)^2]=n(\sigma^2+\mu^2)-n(\sigma^2/n+\mu^2)=(n-1)\sigma^2\)。
所以除以 \(n-1\) 才能让期望等于 \(\sigma^2\)(无偏)。直观原因:用 \(\bar X\) 代替真实的 \(\mu\),样本"贴"得比真实均值更近,离差平方和偏小,损失了一个自由度。
下面用模拟验证线性性和方差规则。
import numpy as np
rng = np.random.default_rng(1)
n = 1_000_000
# 两只股票的日收益:X 与 Y 相关
z1, z2 = rng.standard_normal(n), rng.standard_normal(n)
X = 0.0005 + 0.01 * z1
Y = 0.0003 + 0.02 * (0.6 * z1 + 0.8 * z2) # corr(X, Y) = 0.6
a, b = 0.7, 0.3
P = a * X + b * Y
theory_var = a**2 * 0.01**2 + b**2 * 0.02**2 + 2 * a * b * 0.6 * 0.01 * 0.02
print("E[P] 模拟 =", P.mean().round(6), " 理论 a·E[X]+b·E[Y] =", round(a * 0.0005 + b * 0.0003, 6))
print("Var(P) 模拟 =", P.var().round(8), " 理论 =", round(theory_var, 8))
print("Cov(2X+1, 3Y) 模拟 =", np.cov(2 * X + 1, 3 * Y)[0, 1].round(7),
" 理论 6·Cov(X,Y) =", round(6 * 0.6 * 0.01 * 0.02, 7))
输出:
E[P] 模拟 = 0.000446 理论 a·E[X]+b·E[Y] = 0.00044
Var(P) 模拟 = 0.0001351 理论 = 0.0001354
Cov(2X+1, 3Y) 模拟 = 0.0007184 理论 6·Cov(X,Y) = 0.00072
构造方法说明:\(Y\) 中的 \(0.6z_1+0.8z_2\) 方差为 \(0.36+0.64=1\),与 \(z_1\) 的协方差为 0.6,所以 \(\rho(X,Y)=0.6\)。即使有一百万个样本,均值的模拟值仍有约 0.1bp 的偏差。这再次说明均值很难估准,方差和协方差则准得多。
7.5 矩与矩母函数
7.5.1 矩、偏度、峰度
- \(k\) 阶原点矩:\(\mathbb E[X^k]\)。
- \(k\) 阶中心矩:\(\mathbb E[(X-\mu)^k]\)。二阶中心矩就是方差。
- 偏度:\(\mathbb E[(X-\mu)^3]/\sigma^3\)。衡量不对称。股票指数收益通常负偏:大跌比大涨更常见、更剧烈。
- 峰度:\(\mathbb E[(X-\mu)^4]/\sigma^4\)。正态分布的峰度是 3。超额峰度 = 峰度 − 3。金融收益的峰度几乎总大于 3,称为"厚尾"。
注意软件的约定不同:scipy.stats.kurtosis 默认返回超额峰度(fisher=True),要得到原始峰度需传 fisher=False。
矩不一定存在。自由度为 \(\nu\) 的 \(t\) 分布只有阶数小于 \(\nu\) 的矩。\(t(3)\) 的方差存在,峰度却是无穷大;\(t(6)\) 的峰度是 \(3+6/(\nu-4)=6\),但 8 阶矩不存在,所以样本峰度收敛得很慢。
7.5.2 矩母函数的定义
矩母函数(moment generating function,MGF):
它是关于 \(t\) 的普通函数。之所以叫"矩母",是因为它的各阶导数在 \(t=0\) 处给出各阶矩:
推导思路:把 \(e^{tX}\) 做泰勒展开(第 02 章),\(e^{tX}=1+tX+\frac{t^2X^2}{2!}+\frac{t^3X^3}{3!}+\cdots\);对每一项取期望(这里用到无穷求和与期望交换,在 \(M_X\) 于 0 附近有限时成立,见 7.2.3 节),得
对比泰勒展开的系数,\(t^k/k!\) 前面的系数就是 \(M^{(k)}(0)\),也就是 \(\mathbb E[X^k]\)。
简单例子:伯努利变量 \(X\) 以概率 \(p\) 取 1、\(1-p\) 取 0。\(M(t)=(1-p)+pe^t\),\(M'(0)=p\),\(M''(0)=p\),所以 \(\operatorname{Var}X=p-p^2=p(1-p)\)。
7.5.3 正态分布的矩母函数
结论:\(X\sim N(\mu,\sigma^2)\) 时,\(M_X(t)=\exp(\mu t+\tfrac12\sigma^2t^2)\)。
推导(配方法,概率推导中最常用的积分技巧之一):
- 写出定义:\(M(t)=\int_{-\infty}^{\infty}e^{tx}\frac{1}{\sqrt{2\pi}\sigma}e^{-(x-\mu)^2/(2\sigma^2)}dx\)。
- 合并指数:\(tx-\frac{(x-\mu)^2}{2\sigma^2}\)。
- 对 \(x\) 配方:上式 \(=-\frac{(x-\mu-\sigma^2t)^2}{2\sigma^2}+\mu t+\frac12\sigma^2t^2\)。展开右边即可验证。
- 把与 \(x\) 无关的 \(e^{\mu t+\sigma^2t^2/2}\) 提到积分外,剩下的是 \(N(\mu+\sigma^2t,\sigma^2)\) 的密度在全实轴上的积分,等于 1。
7.5.4 金融应用:对数正态的均值
如果对数收益 \(X=\ln(S_T/S_0)\sim N(m,s^2)\),那么 \(S_T=S_0e^X\),其期望是 \(S_0M_X(1)\):
期望价格比"中位数价格" \(S_0e^m\) 高出因子 \(e^{s^2/2}\)。 这就是 Black–Scholes 模型里对数收益的漂移写成 \((\mu-\sigma^2/2)T\) 的原因:取 \(m=(\mu-\tfrac12\sigma^2)T\)、\(s^2=\sigma^2T\),代入得 \(\mathbb E[S_T]=S_0e^{\mu T}\),期望增长率恰好是 \(\mu\)。
数值:\(m=0.08\),\(s=0.20\),\(\mathbb E[e^X]=e^{0.08+0.02}=e^{0.1}=1.105171\)。
7.5.5 独立和的矩母函数是乘积
若 \(X,Y\) 独立,\(M_{X+Y}(t)=\mathbb E[e^{tX}e^{tY}]=\mathbb E[e^{tX}]\,\mathbb E[e^{tY}]=M_X(t)M_Y(t)\)。第二个等号用到了独立性(独立时乘积的期望等于期望的乘积)。
再加上一个事实:矩母函数在 0 附近存在时,它唯一决定分布。于是:两个独立正态之和的 MGF 是 \(\exp((\mu_1+\mu_2)t+\frac12(\sigma_1^2+\sigma_2^2)t^2)\),仍是正态的 MGF,所以独立正态之和仍是正态。日对数收益独立正态,则任意多日的对数收益也是正态,靠的就是这个论证。
局限:对数正态变量本身的 MGF 在任何 \(t>0\) 处都是无穷大,\(t\) 分布也一样,所以厚尾分布常改用特征函数 \(\mathbb E[e^{itX}]\),它总是存在。第 02 册第 07c 章和第 08 册的傅里叶定价方法会用到。
import numpy as np
from scipy import integrate, stats
mu, sigma = 0.08, 0.20
# 正态的矩母函数 M(t) = exp(mu t + sigma^2 t^2 / 2),用数值积分验证 t = 1
f = lambda x: np.exp(x) * stats.norm.pdf(x, mu, sigma)
num, _ = integrate.quad(f, mu - 12 * sigma, mu + 12 * sigma) # ±12σ 之外的贡献可忽略
print("数值积分 E[e^X] =", round(num, 6), " 公式 exp(mu + sigma^2/2) =", round(np.exp(mu + sigma**2 / 2), 6))
# 用矩母函数的导数求矩:数值微分 M'(0)、M''(0)
M = lambda t: np.exp(mu * t + 0.5 * sigma**2 * t**2)
h = 1e-4
m1 = (M(h) - M(-h)) / (2 * h)
m2 = (M(h) - 2 * M(0) + M(-h)) / h**2
print("M'(0) =", round(m1, 6), " 应为 mu =", mu)
print("M''(0) =", round(m2, 6), " 应为 sigma^2 + mu^2 =", round(sigma**2 + mu**2, 6))
# 样本的偏度与峰度:正态(理论峰度 3)vs t(6)(理论峰度 3 + 6/(6-4) = 6)
rng = np.random.default_rng(7)
for name, x in [("正态", rng.standard_normal(1_000_000)), ("t(6)", rng.standard_t(6, 1_000_000))]:
print(name, " 偏度 =", round(stats.skew(x), 3), " 峰度 =", round(stats.kurtosis(x, fisher=False), 3))
输出:
数值积分 E[e^X] = 1.105171 公式 exp(mu + sigma^2/2) = 1.105171
M'(0) = 0.08 应为 mu = 0.08
M''(0) = 0.0464 应为 sigma^2 + mu^2 = 0.0464
正态 偏度 = -0.001 峰度 = 2.999
t(6) 偏度 = -0.01 峰度 = 5.754
最后一行值得注意:一百万个样本,\(t(6)\) 的样本峰度仍只有 5.75,明显低于理论值 6。这是因为样本峰度的方差依赖 8 阶矩,而 \(t(6)\) 的 8 阶矩不存在。厚尾数据的高阶矩估计很不可靠。 实务中看到"样本峰度 = 5"时,真实峰度可能大得多。
7.6 条件期望
7.6.1 从金融例子开始
股票现价 100,每期以真实概率 0.6 上涨 10%、0.4 下跌 10%。两期后价格 \(S_2\) 的期望是多少?
先算"已知第一期结果后"的期望:
- 若 \(S_1=110\):\(\mathbb E[S_2\mid S_1=110]=0.6\times121+0.4\times99=72.6+39.6=112.2\)。
- 若 \(S_1=90\):\(\mathbb E[S_2\mid S_1=90]=0.6\times99+0.4\times81=59.4+32.4=91.8\)。
再对第一期的结果加权平均:\(\mathbb E[S_2]=0.6\times112.2+0.4\times91.8=67.32+36.72=104.04\)。
核对:每期期望增长 \(0.6\times1.1+0.4\times0.9=1.02\),两期 \(100\times1.02^2=104.04\)。一致。
这就是 CFA 二叉树"从后往前"倒推的数学本质:先在每个节点上算条件期望,再对上一层取期望。 期权定价时把真实概率换成风险中性概率,再贴现,就是同一个计算。
7.6.2 定义
给定 \(Y=y\) 的条件期望(离散情形):
它是 \(y\) 的函数,记作 \(g(y)\)。把 \(y\) 换成随机变量 \(Y\),\(\mathbb E[X\mid Y]=g(Y)\) 本身是一个随机变量:在 \(Y\) 揭晓之前,你不知道它取哪个值。上面的例子里,\(\mathbb E[S_2\mid S_1]\) 以 0.6 概率取 112.2、0.4 概率取 91.8。
更一般地,教材里常写 \(\mathbb E[X\mid\mathcal F_t]\),\(\mathcal F_t\) 表示"到时刻 \(t\) 为止的全部信息"。读法相同:给定截至 \(t\) 的信息,对 \(X\) 的最佳估计。
7.6.3 四条运算规则
- 塔性质(重期望公式):\(\mathbb E\big[\mathbb E[X\mid Y]\big]=\mathbb E[X]\)。白话:先分情况求平均,再对各种情况求平均,等于直接求平均。信息集嵌套时更一般的形式是 \(\mathbb E[\mathbb E[X\mid\mathcal F_t]\mid\mathcal F_s]=\mathbb E[X\mid\mathcal F_s]\),\(s<t\):粗信息下对细预测的预测,等于粗信息下的预测。
- 已知量可以提出:\(\mathbb E[h(Y)X\mid Y]=h(Y)\,\mathbb E[X\mid Y]\)。给定 \(Y\) 时,\(h(Y)\) 是已知常数。例子:今天的持仓 \(w_t\) 在今天已知,\(\mathbb E[w_tr_{t+1}\mid\mathcal F_t]=w_t\,\mathbb E[r_{t+1}\mid\mathcal F_t]\)。
- 独立则无用:若 \(X\) 与 \(Y\) 独立,\(\mathbb E[X\mid Y]=\mathbb E[X]\)。信息无关,预测不变。
- 线性性:\(\mathbb E[aX+bZ\mid Y]=a\,\mathbb E[X\mid Y]+b\,\mathbb E[Z\mid Y]\)。
鞅的定义就建立在条件期望上:若 \(\mathbb E[S_{t+1}\mid\mathcal F_t]=S_t\),称价格过程 \(S_t\) 是鞅,即"对明天最好的预测就是今天的价格"。上面的例子里 \(\mathbb E[S_1]=102\ne100\),所以在真实概率下 \(S_t\) 不是鞅;风险中性定价的核心,就是找一个概率使贴现后的价格变成鞅(第 08 册第 28 章)。
7.6.4 全方差公式
白话:总方差 = 各状态内部方差的平均 + 各状态均值之间的方差。 这和方差分析(ANOVA)的"组内 + 组间"是同一件事。
金融例子:市场以 0.6 概率处于牛市,个股月收益 \(N(2\%,5\%^2)\);以 0.4 概率处于熊市,个股月收益 \(N(-1\%,8\%^2)\)。
- 组内:\(\mathbb E[\operatorname{Var}(R\mid S)]=0.6\times0.0025+0.4\times0.0064=0.00406\)。
- 组间:\(\mathbb E[R\mid S]\) 取 0.02 或 −0.01,均值 0.008。两点分布的方差 \(=p(1-p)(a-b)^2=0.6\times0.4\times0.03^2=0.000216\)。
- 总方差 \(0.004276\),波动率 6.54%。
状态切换本身贡献了额外方差。这也是为什么即使每个状态内收益都是正态,混合起来的无条件分布却厚尾:第 06 册第 12b 章的 Markov 转换模型就基于这个结构。
import numpy as np
rng = np.random.default_rng(3)
n = 1_000_000
# 市场状态 S:牛市概率 0.6,熊市 0.4;个股收益 R 在两种状态下分布不同
bull = rng.random(n) < 0.6
R = np.where(bull, rng.normal(0.02, 0.05, n), rng.normal(-0.01, 0.08, n))
E_R_bull, E_R_bear = R[bull].mean(), R[~bull].mean()
print("E[R|牛] =", round(E_R_bull, 4), " E[R|熊] =", round(E_R_bear, 4))
print("塔性质 E[E[R|S]] =", round(0.6 * 0.02 + 0.4 * (-0.01), 4), " 直接 E[R] =", round(R.mean(), 4))
# 全方差公式:Var(R) = E[Var(R|S)] + Var(E[R|S])
within = 0.6 * 0.05**2 + 0.4 * 0.08**2
between = 0.6 * 0.4 * (0.02 - (-0.01))**2
print("E[Var(R|S)] =", round(within, 6), " Var(E[R|S]) =", round(between, 6),
" 合计 =", round(within + between, 6), " 模拟 Var(R) =", round(R.var(), 6))
输出:
E[R|牛] = 0.0199 E[R|熊] = -0.0103
塔性质 E[E[R|S]] = 0.008 直接 E[R] = 0.0078
E[Var(R|S)] = 0.00406 Var(E[R|S]) = 0.000216 合计 = 0.004276 模拟 Var(R) = 0.004278
7.6.5 条件期望是最佳预测
在所有只依赖 \(Y\) 的预测 \(h(Y)\) 中,\(\mathbb E[X\mid Y]\) 使均方误差 \(\mathbb E[(X-h(Y))^2]\) 最小。
推导要点:令 \(g(Y)=\mathbb E[X\mid Y]\),把误差拆成 \(X-h=(X-g)+(g-h)\)。平方展开后,交叉项 \(\mathbb E[(X-g)(g-h)]\) 为 0:先对 \(Y\) 取条件期望,\(g-h\) 是已知量可以提出(规则 2),而 \(\mathbb E[X-g\mid Y]=0\);再用塔性质。于是 \(\mathbb E[(X-h)^2]=\mathbb E[(X-g)^2]+\mathbb E[(g-h)^2]\ge\mathbb E[(X-g)^2]\)。
金融含义:回归、机器学习预测模型,本质上都在逼近条件期望 \(\mathbb E[r_{t+1}\mid\mathcal F_t]\)。线性回归是把 \(h\) 限制为线性函数时的最佳近似。
7.7 大 O 与小 o 记号
7.7.1 为什么需要它
推导中经常出现"这一项比那一项小得多,可以忽略"。大 O 和小 o 是把"小得多"说精确的记号。
7.7.2 定义(\(x\to0\) 情形)
- \(f(x)=O(g(x))\):当 \(x\to0\) 时,\(|f(x)/g(x)|\) 有界。白话:\(f\) 和 \(g\) 同阶或更小。
- \(f(x)=o(g(x))\):当 \(x\to0\) 时,\(f(x)/g(x)\to0\)。白话:\(f\) 比 \(g\) 小得多,可以忽略。
\(n\to\infty\) 时定义相同,只是极限过程换成 \(n\to\infty\)。
例子:
- \(\ln(1+x)=x+O(x^2)\):误差 \(\ln(1+x)-x\) 与 \(x^2\) 同阶(比值趋于 \(-\tfrac12\))。
- \(\ln(1+x)=x+o(x)\):误差比 \(x\) 本身小得多。
- 更精确的写法:\(\ln(1+x)=x-\tfrac12x^2+O(x^3)\)。这就是第 02 章泰勒展开的误差项。
"\(=\)"在这里是单向的约定写法,读作"属于"。\(x^2=O(x)\)(\(x\to0\) 时)正确,但不能反过来写 \(O(x)=x^2\)。
7.7.3 运算规则
- \(O(x^a)+O(x^b)=O(x^{\min(a,b)})\)(\(x\to0\),低次项占主导)。
- \(O(x^a)\cdot O(x^b)=O(x^{a+b})\)。
- \(c\cdot O(g)=O(g)\),常数被吸收。
- \(o(g)\subset O(g)\):可以忽略的东西一定是有界的。
7.7.4 三个金融场景
场景一:对数收益与简单收益。 日收益 \(r=1\%\) 时,\(\ln(1+r)=0.00995\),差 \(-0.00005\approx-r^2/2\)。说"日度上两者几乎相等",严格说法是"差为 \(O(r^2)\)"。月收益 10% 时差额约 0.47%,就不能忽略了。
场景二:伊藤引理。 布朗运动增量 \(\Delta W\sim N(0,\Delta t)\)。于是
- \(\mathbb E[(\Delta W)^2]=\Delta t\),\(\operatorname{Var}[(\Delta W)^2]=2(\Delta t)^2\)。单看一段,\((\Delta W)^2\) 是随机的;但把区间 \([0,T]\) 切成 \(n=T/\Delta t\) 段加总,各段独立,\(\sum(\Delta W)^2\) 的期望是 \(T\),方差是 \(n\cdot2(\Delta t)^2=2T\Delta t\to0\)。加总后随机性消失,\((\Delta W)^2\) 可以用确定的 \(\Delta t\) 代替,这就是"\((dW)^2=dt\)"。
- \(\Delta t\cdot\Delta W\) 的量级是 \(\Delta t\cdot\sqrt{\Delta t}=O((\Delta t)^{3/2})=o(\Delta t)\),\((\Delta t)^2=o(\Delta t)\)。加总 \(n=T/\Delta t\) 段后,这些项总和趋于 0,可以扔掉。
伊藤引理的推导就是:对 \(f(S_t)\) 做二阶泰勒展开,保留所有 \(O(\Delta t)\) 的项,扔掉所有 \(o(\Delta t)\) 的项。\((\Delta S)^2\) 中含 \((\Delta W)^2\),它是 \(O(\Delta t)\),必须保留,这就是伊藤公式多出二阶项的来源(第 08 册第 14 章)。
场景三:误差的收敛速度。 蒙特卡洛定价的误差是 \(O(n^{-1/2})\):路径数增加 100 倍,误差只缩小 10 倍。中心差分求导的误差是 \(O(h^2)\),向前差分是 \(O(h)\)。算法上,\(n\times n\) 矩阵求逆需要 \(O(n^3)\) 次运算:资产数翻倍,计算量变成 8 倍。第 09 册第 03 章系统讲算法里的渐近记号。
import numpy as np
x = np.array([0.1, 0.01, 0.001, 0.0001])
err = np.log1p(x) - x
print("x :", x)
print("ln(1+x)-x :", err)
print("误差 / x^2 :", (err / x**2).round(6)) # 趋于 -1/2:误差是 O(x^2)
print("误差 / x :", (err / x).round(6)) # 趋于 0:误差是 o(x)
输出:
x : [0.1 0.01 0.001 0.0001]
ln(1+x)-x : [-4.68982020e-03 -4.96691468e-05 -4.99666916e-07 -4.99966669e-09]
误差 / x^2 : [-0.468982 -0.496691 -0.499667 -0.499967]
误差 / x : [-4.6898e-02 -4.9670e-03 -5.0000e-04 -5.0000e-05]
读法:\(x\) 每缩小 10 倍,误差缩小 100 倍,误差与 \(x^2\) 的比值稳定在 \(-\tfrac12\) 附近,这就是 \(O(x^2)\);误差与 \(x\) 的比值趋于 0,这就是 \(o(x)\)。
7.8 常用不等式
7.8.1 Jensen 不等式
结论:若 \(f\) 是凸函数(碗口向上,第 02 章),则
凹函数则不等号反向。
直观证明:凸函数图像总在任何一条切线的上方。在点 \(\mu=\mathbb E X\) 处取切线 \(\ell(x)=f(\mu)+f'(\mu)(x-\mu)\),则对所有 \(x\) 有 \(f(x)\ge\ell(x)\)。两边取期望,线性性给出 \(\mathbb E[\ell(X)]=f(\mu)+f'(\mu)\cdot0=f(\mu)\),所以 \(\mathbb E[f(X)]\ge f(\mu)\)。
金融含义一:几何平均收益低于算术平均收益。 \(\ln\) 是凹函数,所以 \(\mathbb E[\ln(1+R)]\le\ln(1+\mathbb E R)\)。用二阶泰勒展开可得差额约为 \(\sigma^2/2\),叫"波动率拖累"。极端例子:先涨 50% 再跌 50%,算术平均 0,实际财富 \(1.5\times0.5=0.75\),每期几何平均 \(\sqrt{0.75}-1=-13.4\%\)。
金融含义二:期权有时间价值。 看涨期权收益 \(\max(S-K,0)\) 是 \(S\) 的凸函数。设 \(S_T\) 以各 0.5 的概率取 80 和 120,\(K=100\)。\(\mathbb E[\max(S_T-K,0)]=0.5\times20=10\),而 \(\max(\mathbb E S_T-K,0)=\max(100-100,0)=0\)。不确定性越大,凸收益的期望越高,这就是 vega 为正的数学根源。
金融含义三:对数效用与凯利准则。 最大化 \(\mathbb E[\ln W]\) 而不是 \(\ln\mathbb E[W]\),所以凯利仓位会因波动而打折。
7.8.2 Markov 不等式
结论:若 \(X\ge0\),对任意 \(a>0\),
证明(一行):\(X\ge a\,\mathbf 1_{\{X\ge a\}}\) 处处成立(\(X\ge a\) 时右边是 \(a\le X\),否则右边是 0)。两边取期望:\(\mathbb E X\ge a\,P(X\ge a)\)。
数值:日收益绝对值的均值是 0.8%,则 \(P(|R|\ge4\%)\le0.8/4=20\%\)。这个界非常宽松,但它不需要任何分布假设。
7.8.3 Chebyshev 不等式
结论:若方差 \(\sigma^2\) 有限,对任意 \(k>0\),
证明:对非负变量 \((X-\mu)^2\) 用 Markov 不等式,取 \(a=k^2\sigma^2\):\(P((X-\mu)^2\ge k^2\sigma^2)\le\sigma^2/(k^2\sigma^2)=1/k^2\)。
金融含义:不管分布多么厚尾,只要方差存在,偏离均值 3 个标准差以上的概率不超过 11.1%。 正态假设给出 0.27%,两者差 40 倍。真实收益介于两者之间。
7.8.4 Cauchy–Schwarz 不等式
结论:
对去均值变量应用,得 \(|\operatorname{Cov}(X,Y)|\le\sigma_X\sigma_Y\),即相关系数 \(|\rho|\le1\)。向量版本 \(|x^\top y|\le\|x\|\|y\|\) 在第 06 章出现过。
证明:对任意实数 \(t\),\(\mathbb E[(X-tY)^2]\ge0\)。展开得关于 \(t\) 的二次函数 \(\mathbb E[Y^2]t^2-2\,\mathbb E[XY]\,t+\mathbb E[X^2]\ge0\) 对所有 \(t\) 成立,所以判别式 \(\le0\):\(4(\mathbb E[XY])^2-4\,\mathbb E[X^2]\,\mathbb E[Y^2]\le0\)。
金融应用:资产定价中的 Hansen–Jagannathan 界(任何资产的夏普比率不超过随机贴现因子的波动率与均值之比)就是对 Cauchy–Schwarz 的直接应用;主动管理"基本法则" \(IR\approx IC\sqrt{\text{breadth}}\) 中信息系数满足 \(|IC|\le1\),依据也是它。
import numpy as np
from scipy import stats
rng = np.random.default_rng(11)
# 以 t(3) 分布的日收益为例(厚尾),尺度调成日波动率 1%
nu = 3
scale = 0.01 / np.sqrt(nu / (nu - 2))
R = scale * rng.standard_t(nu, 2_000_000)
sd = R.std()
for k in [2, 3, 4]:
actual = np.mean(np.abs(R - R.mean()) >= k * sd)
normal = 2 * stats.norm.sf(k)
print(f"k={k}: 实际 P(|R-μ|≥kσ) = {actual:.4f} 切比雪夫上界 1/k^2 = {1/k**2:.4f} 正态 = {normal:.4f}")
# Jensen:E[ln(1+R)] ≤ ln(1 + E[R])(月度收益,均值 1%,波动 6%)
m = rng.normal(0.01, 0.06, 2_000_000)
print("E[ln(1+R)] =", round(np.mean(np.log1p(m)), 6), " ln(1+E[R]) =", round(np.log1p(m.mean()), 6),
" 近似差 σ²/2 =", 0.06**2 / 2)
# Cauchy–Schwarz:|Cov(X,Y)| ≤ σ_X σ_Y
X = rng.standard_normal(10_000); Y = 0.3 * X + rng.standard_normal(10_000)
print("|Cov| =", round(abs(np.cov(X, Y)[0, 1]), 4), " σXσY =", round(X.std(ddof=1) * Y.std(ddof=1), 4))
输出:
k=2: 实际 P(|R-μ|≥kσ) = 0.0412 切比雪夫上界 1/k^2 = 0.2500 正态 = 0.0455
k=3: 实际 P(|R-μ|≥kσ) = 0.0141 切比雪夫上界 1/k^2 = 0.1111 正态 = 0.0027
k=4: 实际 P(|R-μ|≥kσ) = 0.0063 切比雪夫上界 1/k^2 = 0.0625 正态 = 0.0001
E[ln(1+R)] = 0.008157 ln(1+E[R]) = 0.009933 近似差 σ²/2 = 0.0018
|Cov| = 0.2959 σXσY = 1.0409
读法:厚尾的 \(t(3)\) 在 2 倍标准差处的尾部概率(4.1%)反而略低于正态(4.6%),但在 3 倍和 4 倍处分别是正态的 5 倍和 60 多倍。厚尾的意思不是"所有偏离都更多",而是"中间更集中、极端更多"。 所有实际概率都低于 Chebyshev 上界,上界保证成立但很保守。Jensen 部分的差额 0.00178,与近似值 \(\sigma^2/2=0.0018\) 吻合。
7.9 两种收敛:大数定律与中心极限定理
7.9.1 为什么要区分收敛方式
数列 \(a_n\to a\) 只有一种含义。随机变量序列 \(X_n\) "趋于" \(X\) 却有好几种含义,因为 \(X_n\) 本身是随机的。量化里最常用的是两种。
7.9.2 依概率收敛
定义:若对任意 \(\varepsilon>0\),
称 \(X_n\) 依概率收敛到 \(X\),记作 \(X_n\xrightarrow{p}X\)。
白话:给定任意容忍度 \(\varepsilon\),样本量足够大时,\(X_n\) 偏离 \(X\) 超过 \(\varepsilon\) 的可能性小到可以忽略。
弱大数定律:独立同分布、均值 \(\mu\)、方差 \(\sigma^2\) 有限时,\(\bar X_n\xrightarrow{p}\mu\)。证明只需一步 Chebyshev:
统计学里说估计量"一致"(consistent),就是指它依概率收敛到真值。
7.9.3 依分布收敛
定义:若 \(X_n\) 的分布函数 \(F_n(x)\) 在 \(X\) 的分布函数 \(F(x)\) 的每个连续点上都收敛到 \(F(x)\),称 \(X_n\) 依分布收敛到 \(X\),记作 \(X_n\xrightarrow{d}X\)。
白话:\(X_n\) 本身不一定靠近任何东西,但它的直方图形状越来越像 \(X\) 的分布。
中心极限定理:独立同分布、方差有限时,
两种收敛的关系:
- 依概率收敛 ⟹ 依分布收敛,反之一般不成立。
- 例外:依分布收敛到一个常数,等价于依概率收敛到它。
- 大数定律说 \(\bar X_n\) 收敛到一个点;中心极限定理说,把它和 \(\mu\) 的偏差放大 \(\sqrt n\) 倍后,形状稳定为正态。前者告诉你"会不会准",后者告诉你"误差多大、什么形状"。
一个常用推论(Slutsky 定理的特例):把中心极限定理中未知的 \(\sigma\) 换成一致估计 \(s\),极限分布仍是 \(N(0,1)\)。这就是大样本下 \(t\) 统计量可以用正态分布查表的依据。
7.9.4 金融含义:均值很难估准
日均收益 4bp、日波动 1%(年化收益约 10%、年化波动约 16%)。样本均值的标准误是 \(1\%/\sqrt n\):
import numpy as np
rng = np.random.default_rng(5)
mu, sigma = 0.0004, 0.01 # 日均收益 4bp,日波动 1%
for n in [20, 250, 2500, 25000]:
means = rng.normal(mu, sigma, size=(2000, n)).mean(axis=1) # 2000 条路径各自的样本均值
p_far = np.mean(np.abs(means - mu) > 0.0005) # 偏离真值超过 5bp 的比例
print(f"n={n:6d} 样本均值的标准差 = {means.std():.6f} 理论 σ/√n = {sigma/np.sqrt(n):.6f} P(|偏差|>5bp) = {p_far:.3f}")
输出:
n= 20 样本均值的标准差 = 0.002211 理论 σ/√n = 0.002236 P(|偏差|>5bp) = 0.817
n= 250 样本均值的标准差 = 0.000630 理论 σ/√n = 0.000632 P(|偏差|>5bp) = 0.429
n= 2500 样本均值的标准差 = 0.000200 理论 σ/√n = 0.000200 P(|偏差|>5bp) = 0.010
n= 25000 样本均值的标准差 = 0.000063 理论 σ/√n = 0.000063 P(|偏差|>5bp) = 0.000
一年数据(250 天)的样本均值,有 43% 的概率偏离真值 5bp 以上,而真值本身只有 4bp。大约要 10 年(2500 天)才能把偏离概率压到 1%。这就是大数定律"依概率收敛"的实际速度。
换成夏普比率的语言:年化夏普为 \(SR\) 的策略,\(T\) 年数据下均值的 \(t\) 统计量约为 \(SR\sqrt T\)。要达到 \(t=2\),需要 \(T=(2/SR)^2\) 年。\(SR=0.5\) 需要 16 年。这就是第 03 册第 10b 章、第 11 册第 06 章反复强调回测过拟合的统计根源。
7.9.5 中心极限定理对偏斜分布收敛很慢
中心极限定理只保证"最终"趋于正态,没说多快。对偏斜的收益,收敛可能非常慢。
例子:一个"卖保险"式的策略,每期以 0.9 概率赚 5.556%、0.1 概率亏 50%,期望为 0。我们看 \(n\) 期收益之和标准化后,左尾 5% 分位处的概率与正态差多少。
import numpy as np
from scipy import stats
rng = np.random.default_rng(8)
# 单期收益很偏:概率 0.1 亏 50%,概率 0.9 赚 5.556%(期望为 0)
p, down, up = 0.1, -0.5, 0.5 / 9
mu = p * down + (1 - p) * up
sd = np.sqrt(p * down**2 + (1 - p) * up**2 - mu**2)
for n in [1, 5, 30, 200, 2000]:
k = rng.binomial(n, p, 500_000) # n 期里出现大亏的次数
S = k * down + (n - k) * up # n 期收益之和
Z = (S - n * mu) / (sd * np.sqrt(n))
print(f"n={n:5d} P(Z≤-1.645) 模拟 = {np.mean(Z <= -1.645):.4f} 正态 = 0.0500 偏度 = {stats.skew(Z):+.3f}")
输出:
n= 1 P(Z≤-1.645) 模拟 = 0.1002 正态 = 0.0500 偏度 = -2.663
n= 5 P(Z≤-1.645) 模拟 = 0.0820 正态 = 0.0500 偏度 = -1.193
n= 30 P(Z≤-1.645) 模拟 = 0.0731 正态 = 0.0500 偏度 = -0.493
n= 200 P(Z≤-1.645) 模拟 = 0.0671 正态 = 0.0500 偏度 = -0.195
n= 2000 P(Z≤-1.645) 模拟 = 0.0484 正态 = 0.0500 偏度 = -0.059
代码里用了一个技巧:\(n\) 期中大亏的次数服从二项分布,所以直接抽次数,不必逐期模拟。读法:教科书常说"\(n\ge30\) 就可以用正态近似",但这里 \(n=30\) 时,正态 VaR 低估左尾概率近 50%(7.3% 对 5%)。偏度按 \(1/\sqrt n\) 衰减(单期偏度 −2.66,除以 \(\sqrt{30}\) 约为 −0.49,与模拟一致),要几千期才接近正态。对负偏策略,用正态近似算风险会系统性低估尾部。
本章小结
| 工具 | 公式 | 要点 |
|---|---|---|
| 求和规则 | \(\sum ca_i=c\sum a_i\);\(\sum_{i=1}^nc=nc\) | 哑指标可换名、可平移 |
| 连乘与对数 | \(\ln\prod(1+r_t)=\sum\ln(1+r_t)\) | 对数收益可加 |
| 双重求和换序 | \(\sum_{i=1}^n\sum_{j=1}^ia_{ij}=\sum_{j=1}^n\sum_{i=j}^na_{ij}\) | 画出指标区域再改上下限 |
| 平方和展开 | \((\sum x_i)^2=\sum x_i^2+2\sum_{i<j}x_ix_j\) | 组合方差的结构 |
| 交换条件 | 有限和总可换;无穷/极限需非负或被控制 | 反例:加倍下注 |
| 期望线性性 | \(\mathbb E[aX+bY+c]=a\mathbb EX+b\mathbb EY+c\) | 不需要独立 |
| 乘积期望 | \(\mathbb E[XY]=\mathbb EX\,\mathbb EY+\operatorname{Cov}(X,Y)\) | 不相关才能拆 |
| 方差 | \(\operatorname{Var}X=\mathbb E X^2-(\mathbb EX)^2\);\(\operatorname{Var}(aX+b)=a^2\operatorname{Var}X\) | |
| 和的方差 | \(\operatorname{Var}(\sum X_i)=\sum\operatorname{Var}X_i+2\sum_{i<j}\operatorname{Cov}\) | 不相关时 \(=n\sigma^2\),\(\sqrt T\) 法则 |
| 样本方差 | \(\mathbb E\big[\tfrac1{n-1}\sum(X_i-\bar X)^2\big]=\sigma^2\) | 损失一个自由度 |
| 矩母函数 | \(M(t)=\mathbb Ee^{tX}\),\(M^{(k)}(0)=\mathbb EX^k\) | 独立和的 MGF 相乘 |
| 正态 MGF | \(e^{\mu t+\sigma^2t^2/2}\) | 对数正态 \(\mathbb E[e^X]=e^{\mu+\sigma^2/2}\) |
| 塔性质 | \(\mathbb E[\mathbb E[X\mid Y]]=\mathbb EX\) | 二叉树倒推 |
| 全方差公式 | \(\operatorname{Var}X=\mathbb E[\operatorname{Var}(X\mid Y)]+\operatorname{Var}(\mathbb E[X\mid Y])\) | 组内 + 组间 |
| 大 O / 小 o | \(O\):比值有界;\(o\):比值趋于 0 | 伊藤:\((dW)^2=dt\),\(dt\,dW=o(dt)\) |
| Jensen | 凸 \(f\):\(f(\mathbb EX)\le\mathbb Ef(X)\) | 波动率拖累 \(\approx\sigma^2/2\);期权时间价值 |
| Markov | \(P(X\ge a)\le\mathbb EX/a\),\(X\ge0\) | 无分布假设 |
| Chebyshev | \(P(\lvert X-\mu\rvert\ge k\sigma)\le1/k^2\) | 3σ 以外 ≤ 11.1% |
| Cauchy–Schwarz | \((\mathbb E XY)^2\le\mathbb EX^2\,\mathbb EY^2\) | \(\lvert\rho\rvert\le1\) |
| 依概率收敛 | \(P(\lvert X_n-X\rvert>\varepsilon)\to0\) | 大数定律、一致性 |
| 依分布收敛 | \(F_n(x)\to F(x)\) | 中心极限定理;偏斜分布收敛慢 |
| 均值显著性 | \(t\approx SR\sqrt T\) | \(SR=0.5\) 需约 16 年 |
练习
1. 计算 \(\sum_{k=1}^{5}(3k-2)\),并说明用了哪些求和规则。
答案:\(3\sum k-\sum2=3\times15-2\times5=35\)。用了"常数提出"和"常数求和乘项数"。逐项:\(1+4+7+10+13=35\)。
2. 交换求和顺序:\(\sum_{i=1}^{n}\sum_{j=i}^{n}a_{ij}\)。
答案:区域是 \(1\le i\le j\le n\)。先固定 \(j\),\(i\) 从 1 到 \(j\):\(\sum_{j=1}^{n}\sum_{i=1}^{j}a_{ij}\)。
3. 某策略月收益以 0.3 概率为 +20%、0.5 概率为 0、0.2 概率为 −10%。求期望和标准差。
答案:\(\mathbb EX=0.06-0.02=0.04\);\(\mathbb EX^2=0.3\times0.04+0.2\times0.01=0.014\);\(\operatorname{Var}=0.014-0.0016=0.0124\);标准差 11.14%。
4. \(\sigma_X=0.1\),\(\sigma_Y=0.2\),\(\rho=0.5\)。求 \(\operatorname{Var}(2X-3Y+5)\)。
答案:\(4\times0.01+9\times0.04+2\times2\times(-3)\times0.5\times0.1\times0.2=0.04+0.36-0.12=0.28\)。常数 5 不影响方差。
5. 日波动率 1.2%,按 250 个交易日年化是多少?这个计算依赖什么假设?若日收益一阶自相关为 +0.1,结果偏高还是偏低?
答案:\(1.2\%\times\sqrt{250}=18.97\%\)。依赖日收益不相关且方差相同。正自相关使协方差项为正,真实年化方差更大,\(\sqrt T\) 法则会低估波动率。
6. 用矩母函数求伯努利变量(成功概率 \(p\))的均值和方差。
答案:\(M(t)=1-p+pe^t\),\(M'(t)=pe^t\),\(M''(t)=pe^t\)。\(\mathbb EX=M'(0)=p\),\(\mathbb EX^2=M''(0)=p\),\(\operatorname{Var}X=p-p^2=p(1-p)\)。
7. 在 Black–Scholes 模型下 \(\ln S_T\sim N\big(\ln S_0+(\mu-\tfrac12\sigma^2)T,\ \sigma^2T\big)\)。\(S_0=100\),\(\mu=8\%\),\(\sigma=20\%\),\(T=1\)。求 \(\mathbb E[S_T]\) 和 \(S_T\) 的中位数。
答案:由正态 MGF,\(\mathbb E[S_T]=\exp(\ln100+0.06+0.02)=100e^{0.08}=108.33\)。中位数是 \(e^{\text{均值}}=100e^{0.06}=106.18\)。期望高于中位数,差额来自 \(e^{\sigma^2T/2}\)。
8. 宏观景气的概率是 40%,景气时某公司的期望利润是 10 亿元,不景气时是 2 亿元。求无条件期望利润。若两种状态下利润的标准差都是 3 亿元,求利润的总方差。
答案:塔性质:\(0.4\times10+0.6\times2=5.2\) 亿元。全方差:组内 \(=9\),组间 \(=0.4\times0.6\times(10-2)^2=15.36\),总方差 \(24.36\),标准差约 4.94 亿元。
9. 判断真假(\(x\to0\)):(a) \(3x^2+x^3=O(x^2)\);(b) \(x=o(x^2)\);(c) \(e^x-1-x=o(x)\);(d) \(\ln(1+x)-x+\tfrac12x^2=O(x^3)\)。
答案:(a) 真,比值趋于 3。(b) 假,\(x/x^2\to\infty\)。(c) 真,\(e^x-1-x\approx x^2/2\),与 \(x\) 之比趋于 0。(d) 真,泰勒展开下一项是 \(x^3/3\)。
10. 某资产日收益标准差 2%,分布未知。用 Chebyshev 不等式给出单日偏离均值 6% 以上的概率上界。若假设正态,概率是多少?
答案:\(k=3\),上界 \(1/9=11.1\%\)。正态下为 \(2\times(1-\Phi(3))=0.27\%\)。
11. 一个资产两年收益分别为 +20% 和 −20%。求算术平均、几何平均,并与 Jensen 近似 \(\mu-\sigma^2/2\) 比较。
答案:算术平均 0。几何平均 \(\sqrt{1.2\times0.8}-1=\sqrt{0.96}-1=-2.02\%\)。近似:总体方差 \(\sigma^2=0.04\),\(0-0.02=-2\%\),非常接近。
12. 某策略回测年化夏普 0.8。大约需要几年数据,均值的 \(t\) 统计量才能达到 2?如果你同时测试了 20 个策略、只报告最好的一个,这个年数还够吗?
答案:\(T=(2/0.8)^2=6.25\) 年。不够:多个策略中挑最好的一个,即使真实夏普都为 0,最大的样本夏普也会明显偏离 0,需要做多重检验调整(第 03 册第 10b 章)。
在全书中用到的地方
- 第 02 册第 04a 章、第 07a 章:期望与方差的定义、期望的线性性、协方差运算、示性函数技巧。
- 第 02 册第 07b 章:条件期望、塔性质、全方差公式、条件期望作为最优预测。
- 第 02 册第 07c 章、第 08 章:矩母函数与多元正态;Markov、Chebyshev 不等式,大数定律与中心极限定理。
- 第 03 册第 06 章、第 09 章、第 10b 章:一致性、依概率与依分布收敛、渐近正态性;多重检验与策略过拟合。
- 第 05 册第 02 章、第 18 章:计量视角的概率复习;OLS 估计量的大样本理论(Slutsky 定理、\(O_p\) 记号)。
- 第 06 册第 01 章、第 12b 章:收益率的偏度、峰度与厚尾;Markov 转换模型的混合分布。
- 第 08 册第 14 章、第 15a 章、第 28 章:伊藤引理中的 \(o(\Delta t)\) 论证;对数正态均值 \(e^{\mu T}\);鞅、条件期望与风险中性测度。
- 第 08 册第 21b 章、第 03 册第 24a 章:蒙特卡洛误差 \(O(n^{-1/2})\) 与方差缩减。
- 第 09 册第 03 章:算法复杂度中的 \(O\)、\(\Theta\)、\(\Omega\) 记号。
- 第 11 册第 06 章、第 11 章:回测的统计显著性、夏普比率所需的样本长度、风险度量中的尾部概率。