跳到正文

常见概率分布

某些概率模式在金融领域反复出现。正态、对数正态、二项、泊松和指数分布各自建模不同的现实世界现象。

第 2 篇 · 共 5 篇 约 5 分钟

为什么分布在金融中很重要

每个量化模型都从对随机变量服从何种分布的假设开始。选择错误的分布,你的在险价值(VaR)估计、期权定价或投资组合优化就会系统性出错。本文介绍的分布在金融中出现的频率非常高,因此熟悉它们是必备知识。

正态分布(也称高斯分布)是统计学中最常用的分布。它的钟形曲线无处不在:测量误差、身高、IQ 分数,以及在金融领域大多数经典模型的基础假设。

均值为 μ\mu、方差为 σ2\sigma^2 的正态随机变量 XX 记为:

X∼N(μ,σ2)X \sim N(\mu, \sigma^2)

其 PDF 为:

f(x)=1σ2πe−(x−μ)22σ2f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}

68-95-99.7法则告诉我们,对于任何正态分布:

  • 约68%的值落在均值的一个标准差内。
  • 约95%落在两个标准差内。
  • 约99.7%落在三个标准差内。

在金融中,股票日收益率通常被建模为正态分布。这在数学上很方便,而且对于大型投资组合在历史上也是合理的。然而,正如我们将看到的,实际金融收益具有”肥尾”——极端事件发生的频率比正态分布预测的要高。

对数正态分布

股票价格不能为负。这是一个硬约束——一家公司的价值不可能小于零。但在破产时,股票价格确实可以跌至接近零。这种不对称性意味着我们不能用正态分布直接对股票价格建模,因为正态分布对所有实数(包括负数)都赋予非零概率。

解决方案是对对数收益建模为正态。如果对数收益 rt=ln⁡(St/St−1)r_t = \ln(S_t / S_{t-1}) 服从正态分布,那么股票价格 StS_t 服从对数正态分布:

St=S0ertS_t = S_0 e^{r_t}

为什么这很重要?当对数收益以每期算术均值 μ\mu、方差 σ2\sigma^2(其中 μ\mu 是对数收益的历史均值,而非风险中性漂移率)服从正态分布时,实际(简单)收益 Rt=ert−1R_t = e^{r_t} - 1 具有不同的分布。更重要的是,预期股票价格 E[St]=S0e(μ+12σ2)tE[S_t] = S_0 e^{(\mu + \frac{1}{2}\sigma^2)t} 呈指数增长,这与股权市场的长期行为相符。多出的 12σ2\frac{1}{2}\sigma^2 项源于 Jensen 不等式,因为 erte^{r_t} 是凸函数:对数收益的方差会在 StS_t 的水平上复合成正向偏差。

二项分布

二项分布计算 nn 次独立试验中成功的次数,每次试验成功的概率为 pp。记为:

X∼Binomial(n,p)X \sim \text{Binomial}(n, p)

PMF 为:

P(X=k)=(nk)pk(1−p)n−kP(X = k) = \binom{n}{k} p^k (1-p)^{n-k}

其中 (nk)=n!k!(n−k)!\binom{n}{k} = \frac{n!}{k!(n-k)!} 是二项式系数。

二项分布是离散时间期权定价的基础。著名的 Cox-Ross-Rubinstein(CRR)模型构建了一个二项树来近似股票价格的演化。在每个时间步,股票上涨 uu 倍或下跌 dd 倍,风险中性概率为 pp。期权的公允价格是该风险中性概率下的折现预期收益。

例子:统计一只股票在20个交易日内有多少天收盘价高于前一天的次数,每天”上涨日”的概率为55%。这个计数服从参数为 n=20n = 20、p=0.55p = 0.55 的二项分布。

泊松分布

泊松分布计算在固定时间或空间间隔内发生的事件数,假设事件以常数率 λ\lambda 发生且相互独立:

P(X=k)=λke−λk!P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}

其中 λ>0\lambda > 0 是率参数(每个间隔的平均事件数)。

在金融中,泊松分布对计数数据建模:一分钟内交易的数量、一年内股票价格的跳跃次数,或某个投资组合在给定季度内的违约次数。

泊松分布有一个性质:其方差等于均值,即 Var(X)=λ\text{Var}(X) = \lambda。当方差大于均值(过度离散)时,你可能需要用负二项分布来代替。

指数分布

指数分布对泊松过程中连续事件之间的时间进行建模——即到下一个事件发生的等待时间。如果事件服从率为 λ\lambda 的泊松分布,等待时间服从相同率的指数分布:

f(x)=λe−λx,x≥0f(x) = \lambda e^{-\lambda x}, \quad x \geq 0

指数分布是无记忆的:P(X>s+t∣X>s)=P(X>t)P(X > s + t | X > s) = P(X > t),对任意 s,t≥0s, t \geq 0。这意味着,无论你已经等了10分钟等一笔交易,还是根本没在等,再等5分钟的概率都是一样的。

在信用风险中,具有无记忆性的指数分布有时用于建模违约时间。

t 分布

t 分布看起来像正态分布,但尾部更厚——它给极端值赋予更多概率。它出现在对小样本量且方差未知时估计正态分布总体的均值时。

随着自由度 dfdf 的增加,t 分布趋近于正态分布。当 df=30df = 30 时,t 分布在大多数实际应用中与正态分布几乎无法区分。当 df=5df = 5 时,尾部明显更肥。

在金融中,t 分布有时用于建模资产收益,因为实际收益表现出比正态分布预测更多的极端事件。正态模型会低估4西格玛运动的概率。

柯西分布

柯西分布是一个值得了解的病态案例。其 PDF 为:

f(x)=1π(1+x2)f(x) = \frac{1}{\pi(1 + x^2)}

柯西分布没有定义的均值或方差——其尾部如此之厚,以至于定义这些矩的积分发散。然而它作为一个概率分布是完全有效的。柯西分布是无限可分的(意味着你可以把 nn 个独立柯西变量相加,得到另一个柯西变量),这将它与高级量化金融中使用的 Lévy 过程联系起来。

Python:可视化分布

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

x = np.linspace(-5, 5, 1000)

fig, axes = plt.subplots(2, 3, figsize=(14, 8))

# 正态分布
axes[0, 0].plot(x, stats.norm.pdf(x, 0, 1), 'b-', lw=2)
axes[0, 0].set_title('Normal N(0, 1)')
axes[0, 0].grid(alpha=0.3)

# 对数正态(exp(x) 的图,其中 x ~ N(0,1))
y = np.linspace(0, 8, 1000)
axes[0, 1].plot(y, stats.lognorm.pdf(y, 1), 'g-', lw=2)
axes[0, 1].set_title('Lognormal')
axes[0, 1].set_xlim(0, 8)
axes[0, 1].grid(alpha=0.3)

# 二项分布 (PMF)
n, p = 20, 0.5
k = np.arange(0, n + 1)
axes[0, 2].stem(k, stats.binom.pmf(k, n, p), basefmt=" ")
axes[0, 2].set_title(f'Binomial(n=20, p=0.5)')
axes[0, 2].grid(alpha=0.3)

# 泊松分布 (PMF)
k = np.arange(0, 20)
axes[1, 0].stem(k, stats.poisson.pmf(k, mu=5), basefmt=" ")
axes[1, 0].set_title('Poisson(λ=5)')
axes[1, 0].grid(alpha=0.3)

# 指数分布
axes[1, 1].plot(x, stats.expon.pdf(x, scale=1), 'r-', lw=2)
axes[1, 1].set_title('Exponential(scale=1)')
axes[1, 1].set_xlim(0, 5)
axes[1, 1].grid(alpha=0.3)

# t 分布 vs 正态分布(展示肥尾)
axes[1, 2].plot(x, stats.norm.pdf(x, 0, 1), 'b-', lw=2, label='Normal')
axes[1, 2].plot(x, stats.t.pdf(x, df=3), 'r--', lw=2, label='t (df=3)')
axes[1, 2].plot(x, stats.t.pdf(x, df=10), 'g:', lw=2, label='t (df=10)')
axes[1, 2].set_title('T-Distribution vs Normal (Fat Tails)')
axes[1, 2].legend()
axes[1, 2].grid(alpha=0.3)

plt.tight_layout()
plt.show()

# 展示肥尾:极端值的概率
print("P(|X| > 3) under Normal:", 2 * (1 - stats.norm.cdf(3)))
print("P(|X| > 3) under t(df=3):", 2 * (1 - stats.t.cdf(3, df=3)))
print("P(|X| > 3) under t(df=5):", 2 * (1 - stats.t.cdf(3, df=5)))

提示词

用 matplotlib 和 scipy.stats 在 2×3 子图上画常见分布:正态、对数正态、二项、泊松、指数,以及 t 分布和正态的肥尾对比。

输出结果揭示了关键洞察:正态分布给出 P(∣X∣>3)≈0.0027P(|X| > 3) \approx 0.0027,意味着 3 西格玛事件发生的概率应低于 0.3%。但在真实金融市场中,3 西格玛甚至 4 西格玛事件发生的频率要高得多。低自由度的 t 分布能更好地捕捉这种超额峰度。

参考文献

Ross, S. M. A First Course in Probability, Chapters 4–5. Pearson. Hull, J. C. Options, Futures, and Other Derivatives, Chapter 12. Pearson.