概率基础回顾:随机变量、概率分布与期望方差
做 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 模拟中,方差直接决定了模拟路径的「发散程度」。方差越大,模拟出的价格路径就越「野」,风险也就越高。
嗯,这里有个坑。方差对极端值非常敏感。如果你的数据里有一个异常大的收益或亏损,方差会被拉得很大。我曾经用历史数据算方差,结果因为一次金融危机期间的极端值,导致整个风险模型失效。
知识体系总览
下面这张图,是我自己梳理的概率基础知识结构。你可以把它当作一个导航图,随时回来查阅。
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