3. 市场极端情景构建:历史情景、假设情景与蒙特卡洛模拟
各位同学,今天我们来聊聊压力测试里最核心的一环——极端情景怎么构建。
说实话,我刚入行那会儿,觉得压力测试就是拍脑袋想几个暴跌场景。后来吃过亏才明白,情景构建是个技术活。你构建的情景如果不够极端,测不出风险;如果太离谱,又会被业务部门怼回来。
我个人习惯把情景构建分成三类:历史情景、假设情景和蒙特卡洛模拟。这三者各有各的用处,咱们一个一个说。
3.1 历史情景:从过去找答案
历史情景,说白了就是「抄作业」。把过去发生过的极端事件,原封不动地搬到当前市场里。
比如2008年次贷危机、2015年A股股灾、2020年新冠疫情。这些事件都有完整的数据轨迹,我们只需要把当时的市场波动、相关性、流动性变化,套用到现在的投资组合上。
我建议你建一个历史事件库,至少包含近20年的重大危机事件。每个事件记录以下指标:
| 事件 | 时间 | 最大回撤 | 波动率变化 | 相关性变化 |
|---|---|---|---|---|
| 次贷危机 | 2008 | -57% | +300% | 趋近1 |
| 欧债危机 | 2011 | -32% | +180% | 分化明显 |
| 新冠冲击 | 2020 | -35% | +250% | 先升后降 |
3.2 假设情景:自己造风暴
历史情景解决不了「从未发生过」的风险。比如俄乌冲突爆发前,谁能想到SWIFT会被当作武器?这时候就需要假设情景。
假设情景的构建,我总结了一个三步法:
- 识别风险因子:利率、汇率、信用利差、波动率……你的组合暴露在哪些因子下?
- 设定冲击幅度:比如利率上升200bp,汇率贬值15%,信用利差扩大300bp。
- 考虑传导效应:一个因子变了,其他因子会怎么联动?
举个例子。我曾经帮一家银行做压力测试,假设「中美脱钩加速」情景。我们设定了:
- 人民币对美元贬值10%
- 中概股暴跌40%
- 信用利差扩大250bp
- 流动性枯竭,交易成本上升5倍
结果测出来,他们的固收+产品线直接亏穿。后来他们提前做了对冲,躲过一劫。
3.3 蒙特卡洛模拟:让概率说话
历史情景和假设情景都是「点估计」,只测几个特定场景。但真实世界的风险是连续的、多维的。蒙特卡洛模拟能生成成千上万条路径,覆盖各种可能性。
核心逻辑很简单:
- 假设资产价格服从某种随机过程(比如几何布朗运动)
- 用历史数据估计参数(漂移率、波动率、相关性)
- 随机生成大量路径,计算每个路径下的组合损益
- 看尾部损失分布,比如99%分位数的损失
下面是一个简化的Python实现:
import numpy as np
def monte_carlo_simulation(S0, mu, sigma, T, n_steps, n_sims):
"""
S0: 初始价格
mu: 年化收益率
sigma: 年化波动率
T: 时间长度(年)
n_steps: 时间步数
n_sims: 模拟路径数
"""
dt = T / n_steps
paths = np.zeros((n_sims, n_steps + 1))
paths[:, 0] = S0
for i in range(n_sims):
for t in range(1, n_steps + 1):
z = np.random.standard_normal()
paths[i, t] = paths[i, t-1] * np.exp(
(mu - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * z
)
return paths
# 模拟10000条路径
paths = monte_carlo_simulation(
S0=100, mu=0.08, sigma=0.25,
T=1, n_steps=252, n_sims=10000
)
# 计算99% VaR
final_prices = paths[:, -1]
returns = final_prices / 100 - 1
VaR_99 = np.percentile(returns, 1)
print(f"99% VaR: {VaR_99:.2%}")
3.4 三种方法的对比与融合
这三种方法不是互斥的,而是互补的。我一般这样用:
- 历史情景:做基准测试,看看组合在已知危机下的表现
- 假设情景:覆盖「黑天鹅」事件,尤其是地缘政治风险
- 蒙特卡洛模拟:做全概率分布分析,量化尾部风险
下面这张图展示了三者的关系:
在实际项目中,我通常这样组合:先用历史情景跑一遍,看看组合在已知危机下的表现。然后用假设情景补充几个「黑天鹅」场景。最后用蒙特卡洛模拟生成完整的损失分布,计算VaR和ES。
好了,关于极端情景构建,今天就聊这么多。记住:压力测试不是为了预测未来,而是为了让你知道——当最坏的情况发生时,你扛不扛得住。