概率基础回顾:随机变量、概率分布与期望方差

做 Monte Carlo 模拟,说白了就是在跟概率打交道。你想想看,我们模拟的资产价格路径,本质上就是一堆随机变量的实现。所以,在动手写代码之前,我建议咱们先把概率论里最核心的几个概念捋一遍。

嗯,这里要注意。很多人一上来就调库、跑模拟,结果连正态分布和对数正态分布的区别都没搞清楚。我曾经在做一个期权定价项目时,就因为混淆了这两个分布,导致回测结果差了十万八千里。后来花了整整两天排查,才发现是底层假设出了问题。

随机变量:不确定性的数学表达

随机变量,说白了就是一个会变的数。它不是一个固定的值,而是根据某种概率规则取不同的值。

  • 离散随机变量:取值是有限的或可数的。比如掷骰子的点数,只能是1到6。
  • 连续随机变量:取值是某个区间内的任意实数。比如股票收益率,理论上可以是任何值。

我个人习惯把随机变量想象成一个「黑箱」。你每次打开它,都会蹦出一个数。但你永远不知道下一个数是什么,只能知道它出现的概率。

核心要点:在金融工程中,我们通常用随机变量来描述资产价格、收益率、波动率等不确定量。Monte Carlo 模拟的本质,就是大量生成这些随机变量的样本,然后统计它们的规律。

概率分布:随机变量的行为模式

随机变量怎么取值?不是瞎取的。它遵循一定的概率分布。分布函数告诉我们:某个值出现的可能性有多大。

正态分布:金融世界的基石

正态分布,也叫高斯分布。它的形状像个钟,所以也叫钟形曲线。公式长这样:

f(x) = (1 / (σ * √(2π))) * exp(-(x - μ)² / (2σ²))

其中 μ 是均值,σ 是标准差。

为什么金融里这么爱用正态分布?因为中心极限定理。说白了,大量独立随机变量的和,会趋近于正态分布。我在做风险因子建模时,经常用正态分布来近似收益率分布。但要注意——这只是近似。

避坑指南:我曾经以为股票收益率完全服从正态分布,结果在极端行情下吃了大亏。真实数据往往有「厚尾」特征,也就是极端值出现的概率比正态分布预测的要高。所以,用正态分布做风险估值时,一定要留个心眼。

对数正态分布:资产价格的天然选择

资产价格有个特点:它不能为负。你想想看,股票价格最低跌到0,不可能变成负数。但正态分布允许负值,这就尴尬了。

所以,我们通常假设资产价格服从对数正态分布。什么意思?就是价格的对数服从正态分布。

如果 P 服从对数正态分布,那么 ln(P) 服从正态分布

这样做的好处是:价格永远为正,而且可以模拟出价格随时间增长的形态。Black-Scholes 期权定价模型,就是建立在这个假设之上的。

特征 正态分布 对数正态分布
取值范围 (-∞, +∞) (0, +∞)
对称性 对称 右偏
适用场景 收益率、残差 资产价格、波动率
均值与中位数 相等 均值 > 中位数

期望与方差:分布的数字特征

知道了分布的形状还不够。我们还需要一些数字来概括它。期望和方差,就是最常用的两个。

期望:平均而言会怎样

期望,就是随机变量取值的加权平均。权重就是概率。

离散情况:E[X] = Σ x_i * p_i
连续情况:E[X] = ∫ x * f(x) dx

在金融里,期望收益率就是我们「预期」能赚多少。但注意,期望不等于现实。我见过太多人把期望收益率当成 guaranteed return,结果亏得底朝天。

个人经验:我在做资产配置时,从来不看单一资产的期望收益率。我更关注多个资产组合后的期望收益和风险分散效果。因为期望是线性的,但风险不是。

方差与标准差:风险的第一把尺

方差衡量的是随机变量偏离期望的程度。标准差就是方差的平方根,单位跟原始数据一致,更容易理解。

Var[X] = E[(X - E[X])²]
σ = √Var[X]

在 Monte Carlo 模拟中,方差直接决定了模拟路径的「发散程度」。方差越大,模拟出的价格路径就越「野」,风险也就越高。

嗯,这里有个坑。方差对极端值非常敏感。如果你的数据里有一个异常大的收益或亏损,方差会被拉得很大。我曾经用历史数据算方差,结果因为一次金融危机期间的极端值,导致整个风险模型失效。

知识体系总览

下面这张图,是我自己梳理的概率基础知识结构。你可以把它当作一个导航图,随时回来查阅。

概率基础回顾 · 知识体系 随机变量 离散随机变量 连续随机变量 概率分布 正态分布 N(μ, σ²) 对数正态分布 ln(P) ~ N(μ, σ²) 数字特征:期望 E[X] · 方差 Var[X] · 标准差 σ Monte Carlo 模拟 · 资产定价 · 风险估值

Python 中的快速实现

光说不练假把式。咱们用 Python 来感受一下这些概念。

import numpy as np
import matplotlib.pyplot as plt

# 设置随机种子,保证结果可复现
np.random.seed(42)

# 生成正态分布样本
mu, sigma = 0.05, 0.20  # 年化收益率5%,波动率20%
normal_samples = np.random.normal(mu, sigma, 10000)

# 生成对数正态分布样本(模拟资产价格)
S0 = 100  # 初始价格
lognormal_prices = S0 * np.exp(normal_samples)

# 计算期望和方差
print(f"正态样本期望: {np.mean(normal_samples):.4f}")
print(f"正态样本方差: {np.var(normal_samples):.4f}")
print(f"对数正态价格均值: {np.mean(lognormal_prices):.2f}")
print(f"对数正态价格中位数: {np.median(lognormal_prices):.2f}")

运行这段代码,你会发现对数正态分布的均值大于中位数。这就是右偏分布的特征。你想想看,价格可以涨很多,但最多跌到0。这种不对称性,正是对数正态分布的魅力所在。

实战建议:在 Monte Carlo 模拟中,我们通常用正态分布生成收益率序列,然后用指数变换得到价格序列。这样既保证了收益率的对称性,又保证了价格的非负性。我个人习惯把这个过程封装成一个函数,每次调用时传入均值和方差参数,方便做敏感性分析。

好了,概率基础就聊到这儿。这些概念虽然基础,但它们是整个 Monte Carlo 模拟的根基。下一节,我们会把这些知识用到实际的资产路径模拟中。


公众号:蓝海资料掘金营,微信deep3321