第2章 概率论基础回顾:概率空间、随机变量、期望与方差、条件期望

各位同学,咱们今天聊点基础的东西。别一听「基础」就觉得简单,我做了这么多年量化,发现很多翻车事故,根源都在概率论没吃透。说白了,风险中性定价这套工具,底层全是概率论在撑着。

我个人习惯是,每次开始一个新模型之前,先花半小时把概率论的基本盘捋一遍。这就像开车前检查轮胎,看着多余,真上了高速你就知道有多重要了。

2.1 概率空间:你赌的是什么?

先问个问题:你买了一张彩票,中奖概率是百万分之一。这个「概率」到底是什么意思?

数学上,我们用一个三元组来定义概率空间:(Ω, F, P)。我当年学的时候觉得这玩意儿太抽象,直到有一次做期权定价模型,发现标的资产的价格路径根本定义不清楚,才意识到这个框架有多重要。

  • Ω(样本空间):所有可能结果的集合。比如掷骰子,Ω = {1,2,3,4,5,6}。
  • F(事件域):你能关注的事件集合。比如「掷出偶数点」就是一个事件。
  • P(概率测度):给每个事件分配一个0到1之间的数,表示它发生的可能性。

核心要点:在金融数学里,Ω通常代表所有可能的市场状态,F代表你能获取的信息,P代表你对未来走势的信念。风险中性定价,本质上就是在换这个P。

嗯,这里要注意:概率空间不是唯一的。同一个随机现象,你可以用不同的概率空间来描述。关键看你的模型需要什么。

2.2 随机变量:把不确定性变成数字

随机变量,说白了就是一个函数。它把样本空间里的每个结果,映射成一个实数。

举个例子:明天某只股票的价格。如果明天有100种可能的情况,每种情况对应一个价格,这就是一个随机变量。

我刚开始做量化的时候,经常混淆「随机变量」和「它的取值」。记住:随机变量是一个函数,不是数字。你看到X,心里要想着「这是一个映射」,而不是「这是一个数」。

我的小技巧:在代码里,我习惯把随机变量定义成一个函数对象,而不是一个标量。这样写出来的代码更符合数学直觉,也更容易调试。

2.3 期望与方差:你赚多少?风险多大?

期望,就是加权平均。每个可能的结果乘以它发生的概率,然后加起来。

方差,衡量的是不确定性。期望告诉你「平均能赚多少」,方差告诉你「这个平均值的可信度有多高」。

我记得有一次做投资组合优化,两个策略的期望收益一模一样,但方差差了三倍。很多新手会选那个方差大的,觉得「反正期望一样,搏一搏」。结果呢?回撤大到扛不住,被迫平仓。

指标 数学定义 金融含义
期望 E[X] ∑ x · P(X=x) 预期收益
方差 Var(X) E[(X - E[X])²] 风险度量
标准差 σ √Var(X) 波动率

避坑指南:我曾经在计算条件方差时,忘了分母是条件概率而不是无条件概率,结果整个定价模型全错了。后来花了三天才找到这个bug。所以,算方差的时候,一定要搞清楚你用的是哪个概率测度。

2.4 条件期望:用已知信息更新你的判断

条件期望,是金融数学里最核心的概念之一。它回答的问题是:在已知某些信息的情况下,你对未来的最佳估计是什么?

举个例子:你知道今天某只股票涨了5%,那么你对它明天价格的期望,肯定和不知道这个信息时不一样。这个「知道今天涨了5%之后的新期望」,就是条件期望。

数学上,条件期望记作 E[X | F],其中F代表你已知的信息。它本身也是一个随机变量——因为你的信息不同,条件期望的值也会不同。

我个人觉得,理解条件期望的关键在于:它不是一个数字,而是一个函数。这个函数把「信息」映射成「估计值」。

风险中性定价的核心:在风险中性测度Q下,任何资产的折现价格都是一个鞅。而鞅的定义,就是条件期望等于当前值。所以,条件期望是连接「现在价格」和「未来收益」的桥梁。

2.5 知识体系总览

下面这张图,是我自己整理的概率论基础框架。每次做新模型之前,我都会看一眼,确保自己没有跑偏。

概率论基础 概率空间 (Ω,F,P) 随机变量 X:Ω→R 期望 E[X] 与方差 Var(X) 条件期望 E[X|F] 样本空间、事件域、测度 离散型、连续型、分布函数 矩、协方差、相关性 鞅、信息流、贝叶斯更新 图:概率论基础框架图

这张图里,四个模块是层层递进的。概率空间是地基,随机变量是工具,期望和方差是度量,条件期望是核心应用。在风险中性定价里,你几乎每天都在跟条件期望打交道。

2.6 一个简单的代码示例

最后,我给大家看一段Python代码。这是我平时做快速验证时用的模板,用来计算一个离散随机变量的期望和条件期望。

import numpy as np

# 定义样本空间和概率
outcomes = np.array([1, 2, 3, 4, 5, 6])
probs = np.array([1/6] * 6)

# 计算期望
expectation = np.sum(outcomes * probs)
print(f"期望值: {expectation}")

# 条件期望:已知结果是偶数
even_mask = (outcomes % 2 == 0)
even_outcomes = outcomes[even_mask]
even_probs = probs[even_mask] / np.sum(probs[even_mask])
cond_expectation = np.sum(even_outcomes * even_probs)
print(f"条件期望(已知为偶数): {cond_expectation}")

这段代码很简单,但背后的逻辑很重要。注意看条件概率的计算:even_probs = probs[even_mask] / np.sum(probs[even_mask])。这一步就是贝叶斯公式的体现——在已知信息下重新归一化概率。

我的建议:刚开始学的时候,别急着上复杂的随机过程。先把离散情况下的条件期望算明白。我见过太多人,连续型随机变量玩得飞起,结果一问条件期望的定义,支支吾吾说不清楚。

好了,概率论基础就聊到这儿。这些东西看着简单,但每次用的时候多想想,能帮你避开不少坑。

专注资料整理