量化交易中文教材

第 09 章 Poisson 过程、Markov 链与熵

本章对应 Ross 原书第 9 章「概率论的其他专题」。原书这一章很短,只是对三个大课题的入门:Poisson 过程(随机事件在时间上的到达)、Markov 链(只依赖当前状态的随机演化)、熵(不确定性与信息的度量)。三者在量化中都有直接用途:订单到达与跳跃建模、市场状态与信用迁移、非线性信号评估。本章在忠实讲解原书内容的基础上,把量化最常用的几个性质讲得更完整一些。

学习目标

  1. 掌握 Poisson 过程的公理化定义,能推出 \(N(t)\sim\) Poisson\((\lambda t)\)、到达间隔 i.i.d. 指数、第 \(n\) 个事件时刻服从 Gamma 分布。
  2. 会用 Poisson 过程的稀疏化、条件均匀性等性质解决订单流类问题。
  3. 掌握离散时间 Markov 链的转移矩阵、Chapman–Kolmogorov 方程 \(\mathbf P^{(n)}=\mathbf P^n\),会求遍历链的平稳分布并理解其「长期时间占比」含义。
  4. 理解熵的公理化来源、联合熵、条件熵及「条件化不增加熵」,知道互信息是什么。
  5. 了解前缀码、Kraft 不等式、无噪声编码定理和信道容量的基本结论。

读前导读

这一章在解决什么问题。 前几章研究的都是一个或几个随机变量。本章第一次处理随机过程,也就是随时间演化的一串随机变量。你可以把它理解为一条随机的时间序列。

Poisson 过程描述「事件什么时候到达」:订单、成交、违约、新闻、价格跳跃。它只有一个参数:速率 \(\lambda\)(单位时间平均发生几次)。你在信用分析里见过的「违约强度 / hazard rate」就是这个 \(\lambda\):常数违约强度下,存活到 \(t\) 的概率是 \(e^{-\lambda t}\),这正是本章引理 1.1。

Markov 链描述「状态怎么切换」。你在 CFA 固定收益里见过信用评级迁移矩阵:今年 AA 的公司明年变成 A、BBB 或违约的概率表。这张表就是 Markov 链的转移矩阵。本章告诉你:\(n\) 年后的迁移概率是这个矩阵的 \(n\) 次方;长期看,各状态所占比例由一个方程组决定。

熵是衡量「不确定性有多大」的数。量化里主要用它的衍生品「互信息」:它和相关系数一样衡量两个变量的关联,但能抓住非线性关系。

需要先想起来的数学。

  • 小 o 记号 \(o(h)\)。 \(f(h)=o(h)\) 表示 \(h\to0\) 时 \(f(h)\) 比 \(h\) 小得多,\(f(h)/h\to0\)。例:\(h^2=o(h)\),因为 \(h^2/h=h\to0\);而 \(3h\) 不是 \(o(h)\)。直观上就是「一阶近似里可以忽略的高阶误差」。见 第 00 册第 07 章 概率中的分析工具。
  • 导数的定义与简单微分方程。 \(f'(t)=\lim_{h\to0}\frac{f(t+h)-f(t)}{h}\)。方程 \(P'(t)=-\lambda P(t)\)、\(P(0)=1\) 的解是 \(P(t)=e^{-\lambda t}\),就像连续复利贴现因子:\(\frac{d}{dt}e^{-rt}=-re^{-rt}\)。见 第 00 册第 02 章 导数与泰勒展开。
  • 分部积分。 \(\int u\,dv=uv-\int v\,du\)。只在定理 1.1 的证明中用到。见 第 00 册第 03 章 积分。
  • 矩阵乘法、矩阵幂、特征向量。 \((\mathbf{AB})_{ij}=\sum_kA_{ik}B_{kj}\),第 \(i\) 行与第 \(j\) 列对应相乘再相加。\(\boldsymbol\pi\mathbf P=\boldsymbol\pi\) 说明 \(\boldsymbol\pi\) 乘上 \(\mathbf P\) 后不变,这就是特征值为 1 的(左)特征向量。见 第 00 册第 06 章 线性代数速成。
  • 对数的换底。 \(\log_2x=\ln x/\ln2\),\(\log_2 8=3\)。熵用以 2 为底的对数,单位是比特。见 第 00 册第 04 章 级数与收敛。

怎么读这一章。 核心必读:9.1.1 定义、9.1.2 的引理 1.1 与命题 1.1、9.1.3 全部性质、9.2 全节(重点 9.2.2 和 9.2.3),9.3.2 的熵、条件熵与互信息,以及量化实战。定理 1.1 的分部积分证明、定理 3.1 的证明可以只看结论。9.4 编码理论是选读,与量化无直接关系,可以跳过。


9.1 Poisson 过程

9.1.1 定义

记号:若 \(\lim_{h\to0}f(h)/h=0\),称 \(f(h)\) 为 \(o(h)\),即比 \(h\) 更高阶的无穷小。

令 \(N(t)\) 为时间区间 \([0,t]\) 内发生的事件数。称 \(\{N(t),t\ge0\}\) 为速率(rate,强度)\(\lambda>0\) 的 Poisson 过程,如果:

  1. \(N(0)=0\);
  2. 独立增量(independent increments):不相交时间区间内的事件数相互独立;
  3. 平稳增量(stationary increments):区间内事件数的分布只依赖于区间长度;
  4. \(P\{N(h)=1\}=\lambda h+o(h)\);
  5. \(P\{N(h)\ge2\}=o(h)\)(事件一个一个地发生,不会同时到达)。

白话解释:五条公理逐条翻译。(2)独立增量:上午 10 点到 10 点 05 分来了多少单,不影响 10 点 05 分到 10 点 10 分来多少单。(3)平稳增量:任何 5 分钟窗口的规律都一样,不管是开盘还是午间(这一条在现实中常被违反,见 9.1.4 节)。(4)极短时间 \(h\) 内来一单的概率约为 \(\lambda h\),与时间长度成正比。(5)极短时间内来两单以上的概率可以忽略,事件不会「扎堆同时」发生。 数值感受:\(\lambda=3\) 单/秒,\(h=0.001\) 秒,来一单的概率约 0.003,来两单的概率约 \((0.003)^2/2\approx4.5\times10^{-6}\),比前者小三个数量级,这就是 \(o(h)\)。

第 04b 章(4.9 节)用二项分布的极限论证过 \(N(t)\sim\) Poisson\((\lambda t)\);这里给出另一条路线:先求到达间隔的分布,再由它推出计数的分布。

9.1.2 到达间隔与等待时间

引理 1.1 \(P\{N(t)=0\}=e^{-\lambda t}\)。

证明:记 \(P_0(t)=P\{N(t)=0\}\)。由独立增量与平稳增量,

\[P_0(t+h)=P_0(t)\,P\{N(t+h)-N(t)=0\}=P_0(t)\big[1-\lambda h+o(h)\big].\]
移项除以 \(h\) 并令 \(h\to0\),得 \(P_0'(t)=-\lambda P_0(t)\),又 \(P_0(0)=1\),所以 \(P_0(t)=e^{-\lambda t}\)。

推导拆解: (1)「\([0,t+h]\) 无事件」=「\([0,t]\) 无事件」且「\((t,t+h]\) 无事件」,两段不相交,由独立增量概率相乘;由平稳增量,后一段和 \([0,h]\) 同分布。 (2)\(P\{N(h)=0\}=1-P\{N(h)=1\}-P\{N(h)\ge2\}=1-\lambda h-o(h)+o(h)\),两个 \(o(h)\) 合并后仍记作 \(o(h)\)。 (3)移项:\(\frac{P_0(t+h)-P_0(t)}{h}=-\lambda P_0(t)+P_0(t)\frac{o(h)}{h}\)。令 \(h\to0\),左边是导数的定义,右边最后一项趋于 0。 (4)解方程:\(\frac{P_0'}{P_0}=-\lambda\),即 \((\ln P_0)'=-\lambda\),积分得 \(\ln P_0(t)=-\lambda t\)(常数由 \(P_0(0)=1\) 定为 0)。 金融直觉:这就是信用风险里的常数违约强度模型。违约强度 \(\lambda=2\%\)/年,5 年不违约(存活)的概率为 \(e^{-0.1}\approx90.5\%\)。它与连续复利贴现因子 \(e^{-rt}\) 形式相同;在简化的风险中性定价里,信用利差约等于 \(\lambda\times\) 违约损失率。

令 \(T_1\) 为第一个事件的时刻,\(T_n\) 为第 \(n-1\) 个与第 \(n\) 个事件之间的间隔(interarrival time)。\(P\{T_1>t\}=P\{N(t)=0\}=e^{-\lambda t}\);给定 \(T_1=s\),\(P\{T_2>t\mid T_1=s\}=P\{(s,s+t]\text{ 内无事件}\}=e^{-\lambda t}\)(独立平稳增量)。依此类推:

命题 1.1 \(T_1,T_2,\dots\) 是独立的指数随机变量,均值 \(1/\lambda\)。

第 \(n\) 个事件的发生时刻(等待时间,waiting time)\(S_n=\sum_{i=1}^nT_i\) 是 \(n\) 个独立指数之和,服从 Gamma\((n,\lambda)\):

\[f_{S_n}(x)=\lambda e^{-\lambda x}\frac{(\lambda x)^{n-1}}{(n-1)!},\quad x\ge0.\]

定理 1.1 \(P\{N(t)=n\}=e^{-\lambda t}\dfrac{(\lambda t)^n}{n!}\)。

证明的关键是计数与时刻之间的对偶关系

\[N(t)\ge n\iff S_n\le t,\]
(白话:「到 \(t\) 时刻为止至少来了 \(n\) 单」和「第 \(n\) 单在 \(t\) 时刻或之前到达」说的是同一件事。) 于是 \(P\{N(t)=n\}=P\{S_n\le t\}-P\{S_{n+1}\le t\}\)。对 \(P\{S_n\le t\}=\int_0^t\lambda e^{-\lambda x}\frac{(\lambda x)^{n-1}}{(n-1)!}dx\) 分部积分(\(u=e^{-\lambda x}\),\(dv=\lambda\frac{(\lambda x)^{n-1}}{(n-1)!}dx\)),得
\[P\{S_n\le t\}=e^{-\lambda t}\frac{(\lambda t)^n}{n!}+\int_0^t\lambda e^{-\lambda x}\frac{(\lambda x)^n}{n!}dx=e^{-\lambda t}\frac{(\lambda t)^n}{n!}+P\{S_{n+1}\le t\},\]
相减即得。

9.1.3 几个常用性质

以下性质分散在原书第 5 章(指数无记忆性)、第 7 章(例 7m 稀疏化)和本章习题(9.1、自测题 9.1–9.2)中,汇总如下:

  • 无记忆性:指数间隔意味着「已经等了多久」不影响「还要等多久」。从任意时刻起,到下一个事件的时间仍是 Exp\((\lambda)\)。
  • 稀疏化(thinning):每个事件独立地以概率 \(p\) 标记为类型 1,则类型 1 和类型 2 的事件分别构成速率 \(\lambda p\) 与 \(\lambda(1-p)\) 的独立 Poisson 过程(第 07c 章例 7m;单个时段内的计数版本即第 06a 章的泊松分拆)。
  • 叠加:独立的 Poisson 过程(速率 \(\lambda_1,\lambda_2\))合并后是速率 \(\lambda_1+\lambda_2\) 的 Poisson 过程(独立 Poisson 之和仍为 Poisson)。
  • 条件均匀性(习题 9.1):给定 \(N(t)=n\),这 \(n\) 个事件的发生时刻与 \(n\) 个独立 \(U(0,t)\) 的次序统计量(把它们从小到大排好后的结果)同分布。例:已知 1 小时内到达 2 人,两人都在前 20 分钟到达的概率为 \((1/3)^2=1/9\);至少一人在前半小时到达的概率为 \(1-(1/2)^2=3/4\)(自测题 9.2)。
  • 例(自测题 9.1):事件以每小时 3 次的速率到达,8 点到 10 点没有事件的概率为 \(e^{-6}\),期望事件数为 6;从下午 2 点开始,第 5 个事件的期望时刻为 \(2+5/3\) 小时,即 3:40 PM。

金融直觉:无记忆性在交易里的含义是:如果大单到达真的是 Poisson 的,那么「已经 5 分钟没来大单」不会让下一笔来得更快,等待时间的期望仍是 \(1/\lambda\)。这和「股价跌了很久该反弹了」是同一类直觉陷阱。叠加与稀疏化则是一对互逆操作:把多个交易所的订单流合并,速率相加;把一条订单流按买/卖拆开,各自仍是 Poisson,而且相互独立。后一点有些反直觉:直觉上买单多了,卖单似乎就该少,但在 Poisson 模型里两者互不影响。实证中如果发现买卖单数相关,就说明存在共同驱动因素(例如整体活跃度在变)。

9.1.4 Poisson 过程在量化中的位置

Poisson 过程是「事件到达」最基本的模型:限价单、市价单、撤单的到达,成交事件,新闻,以及价格跳跃(Merton 跳扩散模型中跳跃次数是 Poisson 过程,跳幅是 i.i.d. 随机变量,于是累计跳跃是第 07c 章的复合 Poisson)。它的价值在于作为基准:

  • 现实中的到达强度随日内时间变化(开盘、收盘密集),这需要非齐次 Poisson 过程(\(\lambda(t)\) 随时间变化);
  • 强度本身随机波动会造成过度离散(第 07b 章例 5o);
  • 订单会引发更多订单(自激),这需要 Hawkes 过程。

判断一个计数序列是否偏离 Poisson,最简单的检查就是方差/均值比(Poisson 时为 1)和间隔是否近似指数。

9.2 Markov 链

9.2.1 定义与转移矩阵

设 \(X_0,X_1,\dots\) 取值于状态空间 \(\{0,1,\dots,M\}\)。若对一切状态

\[P\{X_{n+1}=j\mid X_n=i,X_{n-1}=i_{n-1},\dots,X_0=i_0\}=P_{ij},\]
即「给定现在,未来与过去无关」(Markov 性),且转移概率与 \(n\) 无关,称 \(\{X_n\}\) 为(时齐)Markov 链。转移概率(transition probabilities)满足 \(P_{ij}\ge0\)、\(\sum_jP_{ij}=1\),排成转移概率矩阵 \(\mathbf P=(P_{ij})\),每行和为 1。

已知 \(\mathbf P\) 和初始分布,就能算出一切概率:

\[P\{X_n=i_n,\dots,X_1=i_1,X_0=i_0\}=P\{X_0=i_0\}P_{i_0i_1}P_{i_1i_2}\cdots P_{i_{n-1}i_n}.\]

例 2a(天气) 今天下雨则明天下雨的概率为 \(\alpha\),今天不下雨则明天下雨的概率为 \(\beta\)。状态 0 = 雨、1 = 不雨:

\[\mathbf P=\begin{pmatrix}\alpha&1-\alpha\\\beta&1-\beta\end{pmatrix}.\]

例 2b(赌徒) \(P_{i,i+1}=p=1-P_{i,i-1}\)(\(i=1,\dots,M-1\)),\(P_{00}=P_{MM}=1\)。状态 0 和 \(M\) 一旦进入就不再离开,称为吸收态(absorbing state)。

例 2c(Ehrenfest 扩散模型) \(M\) 个分子分布在两个瓮中,每次随机取一个分子换到另一个瓮。\(X_n\) 为瓮 1 中的分子数:\(P_{i,i+1}=\frac{M-i}{M}\),\(P_{i,i-1}=\frac iM\)。

扩充状态的技巧(习题 9.9):若明天天气依赖于今天和昨天两天,\(X_n\) 本身不是 Markov 链;但把状态改成「(昨天,今天)」这一对,就得到 4 个状态的 Markov 链。任何依赖有限期历史的过程都可以这样化为一阶 Markov 链。量化里,「过去 \(k\) 期的涨跌模式」驱动的状态都可以用这种方法建模。

9.2.2 \(n\) 步转移与 Chapman–Kolmogorov 方程

\(n\) 步转移概率 \(P^{(n)}_{ij}=P\{X_{n+m}=j\mid X_m=i\}\)。两步时对中间状态求和:\(P^{(2)}_{ij}=\sum_kP_{ik}P_{kj}\)。

命题 2.1(Chapman–Kolmogorov 方程)

\[P^{(n)}_{ij}=\sum_{k=0}^MP^{(r)}_{ik}P^{(n-r)}_{kj},\quad0<r<n.\]
证明:对时刻 \(r\) 的状态条件化,再用 Markov 性。矩阵形式就是 \(\mathbf P^{(n)}=\mathbf P^{(r)}\mathbf P^{(n-r)}\),于是
\[\mathbf P^{(n)}=\mathbf P^n.\]
\(n\) 步转移矩阵就是一步转移矩阵的 \(n\) 次幂。\(X_n\) 的无条件分布为 \(P\{X_n=j\}=\sum_iP^{(n)}_{ij}P\{X_0=i\}\),行向量形式 \(\boldsymbol\mu_n=\boldsymbol\mu_0\mathbf P^n\)。

推导拆解:两步转移的公式 \(P^{(2)}_{ij}=\sum_kP_{ik}P_{kj}\) 就是全概率公式:从 \(i\) 两步到 \(j\),第一步必然落在某个中间状态 \(k\),按 \(k\) 分情况,每种情况的概率是「\(i\to k\)」乘「\(k\to j\)」(Markov 性保证第二步只看 \(k\),不看 \(i\))。这恰好是矩阵乘法「第 \(i\) 行乘第 \(j\) 列」的定义。 数值例(天气链 \(\alpha=0.6,\beta=0.3\)):今天下雨,后天下雨的概率 \(=P_{00}P_{00}+P_{01}P_{10}=0.6\times0.6+0.4\times0.3=0.48\)。 金融直觉:评级迁移矩阵 \(\mathbf P\) 是一年期的,五年期迁移矩阵就是 \(\mathbf P^5\)。累计违约率随期限增长的速度会快于「一年违约率 × 年数」,因为公司会先降级,而低评级的违约率更高(见量化实战的 A 级例子)。

例 2d(一维随机游走) 状态为全体整数,\(P_{i,i+1}=p=1-P_{i,i-1}\)。\(n\) 步从 \(i\) 走到 \(j\) 需要 \((n-i+j)/2\) 步向右:

\[P^{(n)}_{ij}=\binom{n}{(n-i+j)/2}p^{(n-i+j)/2}(1-p)^{(n+i-j)/2}.\]

9.2.3 遍历性与平稳分布

若存在 \(n>0\) 使 \(\mathbf P^n\) 的所有元素都为正(从任何状态出发,\(n\) 步后都可能到达任何状态),称该链是遍历的(ergodic)。

定理 2.1 遍历 Markov 链的极限 \(\pi_j=\lim_{n\to\infty}P^{(n)}_{ij}\) 存在且与初始状态 \(i\) 无关,并且 \((\pi_0,\dots,\pi_M)\) 是方程组

\[\pi_j=\sum_{k=0}^M\pi_kP_{kj}\quad(j=0,\dots,M),\qquad\sum_j\pi_j=1\]
的唯一非负解。矩阵形式 \(\boldsymbol\pi=\boldsymbol\pi\mathbf P\),\(\boldsymbol\pi\) 称为平稳分布(stationary distribution):若初始分布是 \(\boldsymbol\pi\),则任意时刻的分布都是 \(\boldsymbol\pi\)。从线性代数角度看,\(\boldsymbol\pi\) 是 \(\mathbf P^\top\) 对应特征值 1 的特征向量(归一化后),见第 01 册。

方程的来历:对 \(P^{(n+1)}_{ij}=\sum_kP^{(n)}_{ik}P_{kj}\) 两边令 \(n\to\infty\)。

长期时间占比解释 \(\pi_j\) 也等于链处于状态 \(j\) 的长期时间比例。直观:设长期比例为 \(P_j\)(可用强大数定律证明它存在),链从 \(k\) 转入 \(j\) 的长期比例为 \(P_kP_{kj}\),而进入 \(j\) 的比例应等于处于 \(j\) 的比例,所以 \(P_j=\sum_kP_kP_{kj}\);再由唯一性 \(P_j=\pi_j\)。这个解释对周期链等非遍历情形一般也成立。

例 2e(天气链) 解方程得

\[\pi_0=\frac{\beta}{1+\beta-\alpha},\qquad\pi_1=\frac{1-\alpha}{1+\beta-\alpha}.\]
\(\alpha=0.6,\beta=0.3\) 时,长期下雨天的比例为 \(3/7\)。

推导拆解:方程组 \(\pi_0=\pi_0\alpha+\pi_1\beta\),\(\pi_0+\pi_1=1\)。把 \(\pi_1=1-\pi_0\) 代入第一式:\(\pi_0=\alpha\pi_0+\beta-\beta\pi_0\),移项得 \(\pi_0(1-\alpha+\beta)=\beta\)。(另一个平衡方程 \(\pi_1=\pi_0(1-\alpha)+\pi_1(1-\beta)\) 是多余的,它可以由前两式推出,所以总要用 \(\sum\pi_j=1\) 来替换其中一个。) 另一种理解是「流入 = 流出」:长期看,从雨转晴的频率 \(\pi_0(1-\alpha)\) 必须等于从晴转雨的频率 \(\pi_1\beta\)。用这一条加归一化,两行就能解出来。

例 2f(Ehrenfest 平稳分布) 平衡方程的解为二项分布 \(\pi_j=\binom Mj(1/2)^M\)。直观:长期看,每个分子各自以 1/2 的概率在瓮 1 中。

双随机矩阵(习题 9.7):若列和也都为 1,遍历链的平稳分布是均匀分布 \(1/(M+1)\)。

自测题 9.3–9.4 车流中汽车/卡车的跟随链 \(P_{00}=5/6\)、\(P_{01}=1/6\)、\(P_{10}=4/5\)、\(P_{11}=1/5\),平稳分布 \(\pi_0=24/29\),约 83% 是汽车;三态天气链的平稳分布为雨 1/4、晴 3/8、阴 3/8。

补充:平均持续期与首步分析。 处在状态 \(i\) 的连续期数服从几何分布,均值 \(1/(1-P_{ii})\)。含吸收态的链(例 2b)里,吸收概率和期望吸收时间可以用第 07b 章的首步分析列线性方程求解——赌徒破产问题、信用评级最终违约的概率都是这样算的。

9.3 惊奇、不确定性与熵

9.3.1 惊奇函数

我们想度量「得知事件 \(E\) 发生」带来的惊奇程度 \(S(p)\),它只依赖于 \(p=P(E)\),\(0<p\le1\)。合理的要求有四条:

  1. \(S(1)=0\):必然事件发生毫不意外;
  2. \(S(p)\) 严格递减:越不可能,越惊奇;
  3. \(S(p)\) 连续;
  4. \(S(pq)=S(p)+S(q)\):对独立事件 \(E,F\),先得知 \(E\) 再得知 \(F\),附加的惊奇应为 \(S(q)\)。

定理 3.1 满足公理 1–4 的函数必为 \(S(p)=-C\log_2p\),\(C>0\)。

证明:由公理 4,\(S(p^m)=mS(p)\),\(S(p^{1/n})=S(p)/n\),所以对正有理数 \(x\) 有 \(S(p^x)=xS(p)\),再由连续性推广到一切 \(x\ge0\)。对任意 \(p\),令 \(x=-\log_2p\),则 \(p=(1/2)^x\),\(S(p)=xS(1/2)=-C\log_2p\),其中 \(C=S(1/2)>S(1)=0\)。

取 \(C=1\),单位称为比特(bit)。本节以下 \(\log\) 表示 \(\log_2\)。

白话解释:公理 4 是关键:独立事件同时发生的概率是乘积,而惊奇应该相加。能把「乘」变成「加」的连续函数只有对数,所以惊奇必然是 \(-\log p\) 的倍数。数值感受:抛硬币出正面(\(p=1/2\))惊奇 1 比特;掷骰子出 6(\(p=1/6\))约 2.58 比特;连续 10 次正面(\(p=1/1024\))惊奇 10 比特,正好是 1 比特的 10 倍。

9.3.2 熵

\(X\) 以概率 \(p_i\) 取值 \(x_i\),惊奇的期望

\[H(X)=-\sum_{i=1}^np_i\log p_i\qquad(0\log0:=0)\]
称为 \(X\) 的熵(entropy)。它有三种等价的解读:平均惊奇;关于 \(X\) 的不确定性;观察到 \(X\) 平均获得的信息量。\(n\) 个取值时,等概率分布的熵最大,\(H=\log n\)(习题 9.13)。

联合熵与条件熵 \(H(X,Y)=-\sum_i\sum_jp(x_i,y_j)\log p(x_i,y_j)\)。给定 \(Y=y_j\) 时 \(X\) 的剩余不确定性 \(H_{Y=y_j}(X)=-\sum_ip(x_i\mid y_j)\log p(x_i\mid y_j)\),再按 \(Y\) 的分布平均得条件熵

\[H_Y(X)=\sum_jH_{Y=y_j}(X)\,p_Y(y_j).\]

命题 3.1(链式法则) \(H(X,Y)=H(Y)+H_Y(X)\)。证明:代入 \(p(x_i,y_j)=p_Y(y_j)p(x_i\mid y_j)\),把对数拆开。

引理 3.1 \(\ln x\le x-1\)(\(x>0\)),仅在 \(x=1\) 时取等号。

定理 3.2 \(H_Y(X)\le H(X)\),当且仅当 \(X,Y\) 独立时取等号。即观察 \(Y\) 平均而言只会减少关于 \(X\) 的不确定性。

证明:

\[H_Y(X)-H(X)=\sum_i\sum_jp(x_i,y_j)\log\frac{p(x_i)}{p(x_i\mid y_j)}\le\log e\sum_i\sum_jp(x_i,y_j)\Big[\frac{p(x_i)}{p(x_i\mid y_j)}-1\Big]=\log e\Big[\sum_i\sum_jp(x_i)p(y_j)-1\Big]=0.\]

差值 \(I(X;Y)=H(X)-H_Y(X)\) 称为互信息(mutual information,原书没有命名)。由链式法则 \(I(X;Y)=H(X)+H(Y)-H(X,Y)\),它关于 \(X,Y\) 对称、非负,独立时为 0。与相关系数不同,互信息对任何形式的依赖都敏感,不只是线性依赖。

推导拆解:定理 3.2 的证明分三步。 (1)把差写成一个双重求和:\(H(X)=-\sum_ip(x_i)\log p(x_i)=-\sum_i\sum_jp(x_i,y_j)\log p(x_i)\)(对 \(j\) 求和把联合概率还原成边缘概率),与 \(H_Y(X)\) 相减,两个对数合并成比值。 (2)用引理 3.1:\(\log_2x=\frac{\ln x}{\ln2}=\log_2e\cdot\ln x\le\log_2e\cdot(x-1)\)。 (3)\(p(x_i,y_j)\cdot\frac{p(x_i)}{p(x_i\mid y_j)}=p(y_j)p(x_i)\),因为 \(p(x_i,y_j)=p(y_j)p(x_i\mid y_j)\)。对 \(i,j\) 求和,得 \(\sum_ip(x_i)\sum_jp(y_j)=1\),减 1 为 0。 等号成立要求每一项都有 \(\frac{p(x_i)}{p(x_i\mid y_j)}=1\),也就是独立。 金融直觉:IC 只回答「因子值越高,收益是否线性越高」;互信息回答「知道因子值后,收益的不确定性少了多少」。比如波动率类因子往往与收益方向无关,但与收益幅度相关,IC 接近 0,互信息却明显为正。互信息的缺点是不告诉你方向,也不直接给出交易规则。

9.4 编码理论与熵(选读)

本节与量化交易没有直接关系,但它给熵一个可操作的含义:熵是无损编码平均所需比特数的下限。

前缀码 把 \(X\) 的取值编成 0/1 串传输,要求没有一个码字是另一个码字的前缀(prefix-free),否则接收方无法断句。例:4 个取值,编码 \(00,01,10,11\) 或 \(0,10,110,111\) 都可以;\(0,1,00,01\) 不行。若概率为 \(\frac12,\frac14,\frac18,\frac18\),第二种编码的期望长度 \(\frac12\cdot1+\frac14\cdot2+\frac18\cdot3+\frac18\cdot3=1.75\) 比特,优于第一种的 2 比特,恰好等于熵。

引理 4.1(Kraft 不等式) 存在码长为 \(n_1,\dots,n_N\) 的二进制前缀码,当且仅当 \(\sum_{i=1}^N2^{-n_i}\le1\)。

定理 4.1(无噪声编码定理) 任一前缀码的期望码长 \(L=\sum n_ip(x_i)\ge H(X)\)。证明:令 \(q_i=2^{-n_i}/\sum_j2^{-n_j}\),由引理 3.1 得 Gibbs 不等式 \(-\sum P_i\log P_i\le-\sum P_i\log q_i\)(即 KL 散度非负),再用 Kraft 不等式。反过来,取 \(n_i=\lceil-\log p(x_i)\rceil\) 可构造前缀码,所以最优码长满足

\[H(X)\le L<H(X)+1.\]

例 4b(10 次抛硬币的编码) 10 次独立抛掷,\(H=-10[p\log p+(1-p)\log(1-p)]\)。\(p=1/2\) 时 \(H=10\),无法压缩;\(p=1/4\) 时 \(H\approx8.11\)。一个简单方案:两两分组,\(TT\to0\),\(TH\to10\),\(HT\to110\),\(HH\to111\),平均 \(135/16\approx8.44\) 比特。

有噪信道 二元对称信道(binary symmetric channel)中每个比特独立地以概率 \(p\) 正确传输。\(p=0.8\) 时直接发送误码率 0.2;每比特重复 3 次、多数表决,误码率降为 \(0.2^3+3(0.2)^2(0.8)=0.104\),但速率降为 1/3;重复 17 次误码率低于 0.01,速率仅 1/17。

定理 4.2(Shannon 有噪编码定理) 存在信道容量 \(C^*\),对任意速率 \(R<C^*\) 和任意 \(\varepsilon>0\),都存在编码方案以速率 \(R\) 传输且每比特误码率低于 \(\varepsilon\)。二元对称信道的容量

\[C^*=1+p\log p+(1-p)\log(1-p).\]
也就是说,误码率可以任意小,而速率不必趋于 0。


量化实战

1. 订单流的 Poisson 基准。 用指数间隔生成订单到达,检查计数的均值和方差是否相等,并用稀疏化把订单分成买卖两类。若真实数据的方差远大于均值、或买卖单数显著相关,就说明强度是随机的或存在共同驱动,需要更复杂的模型。

2. 市场 regime 与信用迁移。 把市场划分为牛市/震荡/熊市三态,用转移矩阵刻画切换。平稳分布给出长期各状态的时间占比,\(1/(1-P_{ii})\) 给出平均持续期,\(\mathbf P^n\) 给出 \(n\) 期后的状态分布。信用评级迁移矩阵(credit migration matrix)中违约是吸收态,\(\mathbf P^n\) 最后一列就是 \(n\) 年累计违约率。实际中 regime 不可直接观测,需要用隐 Markov 模型(HMM)从收益中推断(第 06 册)。

3. 用互信息评估非线性信号。 把信号分成分位数组、收益分成涨跌,计算互信息。它能发现相关系数(IC)看不到的非线性关系,例如「信号两端都对应上涨」的 V 型关系。

import numpy as np
import pandas as pd
rng = np.random.default_rng(9)

# ---------- 1. Poisson 过程:订单到达 ----------
lam, T, days = 3.0, 60.0, 20_000          # 每秒 3 单,观察 60 秒
counts, buys, sells = [], [], []
for _ in range(days):
    gaps = rng.exponential(1 / lam, size=int(lam * T * 2))   # 到达间隔 ~ Exp(λ)
    times = np.cumsum(gaps)
    times = times[times <= T]
    is_buy = rng.random(times.size) < 0.6                    # 稀疏化:每单 60% 为买单
    counts.append(times.size); buys.append(is_buy.sum()); sells.append((~is_buy).sum())
counts, buys, sells = map(np.array, (counts, buys, sells))
print(f"N(60) 均值 {counts.mean():.2f}, 方差 {counts.var():.2f} (理论均为 λT = {lam*T:.0f})")
print(f"买单均值 {buys.mean():.2f} (λpT = {lam*0.6*T:.0f}), 卖单均值 {sells.mean():.2f}, "
      f"Corr(买, 卖) = {np.corrcoef(buys, sells)[0,1]:+.4f}")

# ---------- 2. 三状态市场 regime 的 Markov 链 ----------
states = ["牛市", "震荡", "熊市"]
P = np.array([[0.90, 0.08, 0.02],
              [0.10, 0.80, 0.10],
              [0.05, 0.15, 0.80]])
# 平稳分布:解 π = πP, Σπ = 1
A = np.vstack([P.T - np.eye(3), np.ones(3)])
pi = np.linalg.lstsq(A, np.r_[0, 0, 0, 1], rcond=None)[0]
print("\n平稳分布 π:", dict(zip(states, pi.round(4).tolist())))
print("P^50 第一行:", np.linalg.matrix_power(P, 50)[0].round(4))
print("平均持续期 1/(1-P_ii):", dict(zip(states, (1 / (1 - np.diag(P))).round(1).tolist())))
x, n_steps = 0, 500_000
path = np.empty(n_steps, dtype=int)
cum = P.cumsum(1)
u = rng.random(n_steps)
for t in range(n_steps):
    x = np.searchsorted(cum[x], u[t]); path[t] = x
print("模拟时间占比:", dict(zip(states, (np.bincount(path, minlength=3) / n_steps).round(4).tolist())))

# ---------- 3. 信用评级迁移:吸收态违约的累计违约率 ----------
R = np.array([[0.95, 0.04, 0.008, 0.002],     # A
              [0.05, 0.88, 0.05,  0.02 ],     # B
              [0.01, 0.09, 0.80,  0.10 ],     # C
              [0.0,  0.0,  0.0,   1.0  ]])    # D 违约(吸收)
for yrs in [1, 5, 10]:
    print(f"{yrs:>2d} 年累计违约率 A/B/C: {np.linalg.matrix_power(R, yrs)[:3, 3].round(4)}")

# ---------- 4. 互信息:抓住相关系数看不到的非线性信息 ----------
def entropy(p):
    p = p[p > 0]; return -(p * np.log2(p)).sum()
def mutual_info(xbin, ybin):
    joint = pd.crosstab(xbin, ybin, normalize=True).values
    return entropy(joint.sum(1)) + entropy(joint.sum(0)) - entropy(joint.ravel())
n = 200_000
s1 = rng.standard_normal(n); s2 = rng.standard_normal(n)
ret_lin = 0.05 * s1 + rng.standard_normal(n)                  # 线性信号
ret_vshape = 0.15 * (np.abs(s2) - 0.8) + rng.standard_normal(n)  # 两端都涨(V 型)
for name, s, r in [("线性信号", s1, ret_lin), ("V型信号", s2, ret_vshape)]:
    q = pd.qcut(s, 5, labels=False)
    I = mutual_info(q, (r > 0).astype(int))
    print(f"{name}: 相关系数 {np.corrcoef(s, r)[0,1]:+.4f}, 互信息 {I*1000:.2f} 毫比特, "
          f"五分位组上涨概率 {pd.Series(r > 0).groupby(q).mean().round(3).tolist()}")

关键输出:

N(60) 均值 180.10, 方差 180.11 (理论均为 λT = 180)
买单均值 108.07 (λpT = 108), 卖单均值 72.03, Corr(买, 卖) = -0.0039

平稳分布 π: {'牛市': 0.4464, '震荡': 0.3393, '熊市': 0.2143}
P^50 第一行: [0.4465 0.3393 0.2143]
平均持续期 1/(1-P_ii): {'牛市': 10.0, '震荡': 5.0, '熊市': 5.0}
模拟时间占比: {'牛市': 0.4496, '震荡': 0.338, '熊市': 0.2124}
 1 年累计违约率 A/B/C: [0.002 0.02  0.1  ]
 5 年累计违约率 A/B/C: [0.0238 0.117  0.3529]
10 年累计违约率 A/B/C: [0.0733 0.234  0.5065]
线性信号: 相关系数 +0.0516, 互信息 0.98 毫比特, 五分位组上涨概率 [0.476, 0.491, 0.5, 0.512, 0.53]
V型信号: 相关系数 +0.0019, 互信息 2.63 毫比特, 五分位组上涨概率 [0.536, 0.485, 0.459, 0.486, 0.534]

解读:Poisson 订单流的计数均值与方差相等,稀疏化后的买卖单数几乎不相关,与理论一致;三态链的 \(\mathbf P^{50}\) 每一行都收敛到平稳分布,模拟的时间占比也与之吻合;A 级 1 年违约率只有 0.2%,10 年累计却达 7.3%,因为它会先降级到 B、C 再违约,这种「迁移路径」效应只有用矩阵幂才算得出来;V 型信号的相关系数几乎为 0,按 IC 会被直接丢弃,但互信息比线性信号还高,分组上涨概率显示它在两端都有预测力。

注意,互信息的估计依赖于分组方式,且在样本少时有正偏差(即使独立,样本互信息也大于 0);实用中要配合置换检验(第 10 章的随机排列)判断显著性。


本章小结

Poisson 过程由独立增量、平稳增量和「事件逐个稀疏地发生」刻画,由此推出到达间隔 i.i.d. 指数、第 \(n\) 个事件时刻服从 Gamma、计数服从 Poisson,连接两者的是 \(\{N(t)\ge n\}=\{S_n\le t\}\);稀疏化、叠加、条件均匀性让它成为订单流和跳跃建模的基准。Markov 链由转移矩阵和初始分布完全确定,\(n\) 步转移就是矩阵幂;遍历链的极限分布与初值无关,是 \(\boldsymbol\pi=\boldsymbol\pi\mathbf P\) 的唯一概率解,也是长期时间占比。熵由四条公理唯一确定,满足链式法则,条件化不增加熵,二者之差是互信息;熵也是无损编码平均码长的下界。

概念 / 公式 内容
Poisson 过程 \(N(t)\sim\) Poisson\((\lambda t)\);间隔 i.i.d. Exp\((\lambda)\);\(S_n\sim\) Gamma\((n,\lambda)\)
计数–时刻对偶 \(N(t)\ge n\iff S_n\le t\)
稀疏化 / 叠加 独立 Poisson\((\lambda p)\)、Poisson\((\lambda(1-p))\);速率相加
条件均匀性 给定 \(N(t)=n\),到达时刻 ~ \(n\) 个 \(U(0,t)\) 的次序统计量
C–K 方程 \(\mathbf P^{(n)}=\mathbf P^n\)
平稳分布 \(\boldsymbol\pi=\boldsymbol\pi\mathbf P\),\(\sum\pi_j=1\);= 长期时间占比
平均持续期 \(1/(1-P_{ii})\)
熵 \(H(X)=-\sum p_i\log_2p_i\),最大 \(\log_2n\)
链式法则 \(H(X,Y)=H(Y)+H_Y(X)\)
互信息 \(I=H(X)-H_Y(X)\ge0\),独立时为 0
编码定理 \(H\le L<H+1\);BSC 容量 \(1+p\log p+(1-p)\log(1-p)\)

练习

基础

  1. 某股票的大单以每分钟 0.5 笔的 Poisson 速率到达。求 10 分钟内没有大单的概率,以及第 3 笔大单到达时间的均值和方差。 答案:\(e^{-5}\approx0.0067\);Gamma\((3,0.5)\),均值 6 分钟,方差 12。
  2. 已知 1 小时内到达 2 个事件,求两者都在前 20 分钟内的概率。 答案:\(1/9\)(习题 9.1)。
  3. 天气链 \(\alpha=0.7\)、\(\beta=0.4\),今天下雨,求 3 天后下雨的概率及长期下雨比例。 答案:\(\mathbf P^3\) 的 \((0,0)\) 元素 \(=0.583\);\(\pi_0=0.4/0.7=4/7\)。
  4. 证明双随机矩阵的遍历链平稳分布是均匀分布(习题 9.7)。
  5. 求两颗骰子点数之和的熵(习题 9.12)。 提示:按 11 个取值的概率 \(\frac{1}{36},\frac{2}{36},\dots,\frac6{36},\dots,\frac1{36}\) 直接计算,约 3.27 比特。

进阶

  1. 明天的涨跌依赖于今天和昨天:两天都涨则明天涨的概率 0.6,今天涨昨天跌为 0.5,今天跌昨天涨为 0.45,两天都跌为 0.4。把它写成 4 状态 Markov 链,求长期上涨日比例。 提示:状态为(昨天,今天),用扩充状态技巧(习题 9.9)。
  2. 在含违约吸收态的评级链中,用首步分析写出「从 B 级出发最终违约」的概率方程。若违约是唯一的吸收态且从任何状态都能到达,这个概率是多少?为什么实际模型中仍关心 \(n\) 年违约率而不是最终违约率?
  3. 证明 \(H(f(X))\le H(X)\)(习题 9.17),并说明把连续信号离散化为分位数组只会损失信息。
  4. 证明 \(n\) 值随机变量的熵不超过 \(\log_2n\),并说明为什么「二十问」游戏所需的平均问答次数至少为 \(H(X)\)(习题 9.16)。
  5. 两个独立 Poisson 过程分别代表买单(速率 \(\lambda_b\))和卖单(速率 \(\lambda_s\))。求下一笔订单是买单的概率,以及在下一笔卖单之前恰好到达 \(k\) 笔买单的概率。 答案:\(\frac{\lambda_b}{\lambda_b+\lambda_s}\);\(\big(\frac{\lambda_b}{\lambda_b+\lambda_s}\big)^k\frac{\lambda_s}{\lambda_b+\lambda_s}\)(几何分布)。

原书推荐习题:Problems 9.1(Poisson 过程的条件均匀性)、9.2–9.3、9.5(\(n\) 步转移)、9.7(双随机矩阵)、9.8(三态链平稳分布)、9.9(扩充状态,强烈推荐)、9.13(熵最大化)、9.16(问答次数下界)、9.18(信道容量);Self-Test 9.1–9.5。

原书对照

本章内容 原书章节 PDF 页码(书内页码 = PDF − 13)
Poisson 过程 9.1 p.408–410
Markov 链 9.2 p.410–415
惊奇、不确定性与熵 9.3 p.415–418
编码理论与熵 9.4 p.418–424
小结、习题、参考文献 — p.424–427;自测解答 p.475
进一步阅读 Ross《Introduction to Probability Models》《Stochastic Processes》;Kemeny–Snell–Knapp《Denumerable Markov Chains》 —