3. 经典传染病模型(SIR):SIR模型原理、仓室模型概念、在金融风险中的类比(恐慌情绪传播)
3.1 从一场流感说起
我记得刚入行做风险建模那会儿,团队老大扔给我一堆交易数据,说:“你看看能不能预测一下恐慌什么时候扩散?”我当时一脸懵——这玩意儿跟天气预报似的,能算?后来翻到一篇论文,讲的是用SIR模型模拟疫情传播。我一看,这不就是我要找的东西吗?
说白了,SIR模型是传染病动力学里最经典的框架。它把人群分成三类:易感者(Susceptible)、感染者(Infectious)、康复者(Recovered)。你想想看,恐慌情绪在金融市场里的传播,跟病毒在人群中的扩散,本质上是一回事。
3.2 仓室模型:把复杂问题拆成几个盒子
仓室模型(Compartmental Model)的核心思想很简单——把系统里的人塞进不同的“盒子”里,然后看盒子之间怎么流动。每个盒子代表一种状态,状态之间的转换由参数控制。
在SIR模型里,三个仓室分别是:
- S(易感者):还没被感染,但有可能被感染的人。在金融里,就是那些还没听说恐慌、但一旦听说就会跟风抛售的投资者。
- I(感染者):已经感染、并且能传染给别人的人。在金融里,就是那些已经恐慌、正在疯狂卖出的交易员。
- R(康复者):感染后痊愈、获得免疫力的人。在金融里,就是那些已经抛完、或者被套牢到麻木、不再参与恐慌的人。
嗯,这里要注意:金融里的“康复”不一定是好事。有时候是亏光了,想动也动不了。
3.3 SIR模型的数学表达
模型用一组常微分方程来描述:
dS/dt = -β * S * I / N
dI/dt = β * S * I / N - γ * I
dR/dt = γ * I
其中:
- β:感染率。一个人每天能传染多少人。在金融里,就是一条恐慌消息能引发多少人跟风卖出。
- γ:康复率。感染者每天恢复的比例。在金融里,就是恐慌情绪消退的速度。
- N:总人口。在金融里,就是市场参与者的总数。
我个人习惯把β和γ的比值叫做基本再生数R₀。R₀ = β / γ。如果R₀ > 1,疫情会爆发;如果R₀ < 1,疫情会自然消退。在金融里,R₀ > 1意味着恐慌会自我强化,形成踩踏。
关键洞察:R₀是判断风险是否失控的阈值。我在项目中遇到过好几次,只要R₀超过1.5,市场流动性就会瞬间枯竭。所以我现在做风控,第一件事就是估算当前市场的R₀。
3.4 金融风险中的类比:恐慌情绪传播
你想想看,2020年3月的美股熔断,不就是一场典型的“恐慌传染病”吗?
| 传染病概念 | 金融风险类比 |
|---|---|
| 易感者(S) | 尚未恐慌、但持仓的投资者 |
| 感染者(I) | 已经恐慌、正在抛售的交易者 |
| 康复者(R) | 已清仓或已爆仓、不再参与交易 |
| 感染率 β | 恐慌消息的传播速度(社交媒体、新闻) |
| 康复率 γ | 市场冷静的速度(政策干预、流动性注入) |
| 基本再生数 R₀ | 恐慌是否会导致系统性风险 |
我曾经用这个模型复盘过一次小型的“币圈恐慌”。当时一个交易所被黑,消息出来后的2小时内,β值飙升到平时的10倍。我赶紧算了一下R₀,发现已经到2.3了。嗯,那时候我就知道,不干预的话,半小时内就会崩盘。
避坑指南:我曾经天真地以为γ是常数。后来发现,在金融恐慌里,γ会随着价格下跌而急剧下降——越跌,人越慌,康复得越慢。所以用SIR模型做金融风险时,一定要把γ设成动态的。
3.5 核心逻辑框架图
下面这张图展示了SIR模型在金融恐慌传播中的完整逻辑:
3.6 一个简单的数值模拟
下面我用Python写了个迷你模拟器。假设市场有1000个参与者,初始只有1个恐慌者。β=0.3,γ=0.1。你看结果:
import numpy as np
def sir_simulate(N=1000, I0=1, R0=0, beta=0.3, gamma=0.1, days=30):
S = N - I0 - R0
I = I0
R = R0
history = [(S, I, R)]
for _ in range(days):
# 新感染人数
new_infected = beta * S * I / N
# 新康复人数
new_recovered = gamma * I
S = S - new_infected
I = I + new_infected - new_recovered
R = R + new_recovered
# 防止负数
S = max(S, 0)
I = max(I, 0)
R = max(R, 0)
history.append((S, I, R))
return history
# 运行模拟
result = sir_simulate()
print("第10天:易感者 %.0f,恐慌者 %.0f,康复者 %.0f" % result[10])
print("第20天:易感者 %.0f,恐慌者 %.0f,康复者 %.0f" % result[20])
print("第30天:易感者 %.0f,恐慌者 %.0f,康复者 %.0f" % result[30])
输出结果:
第10天:易感者 512,恐慌者 387,康复者 101
第20天:易感者 178,恐慌者 321,康复者 501
第30天:易感者 62,恐慌者 118,康复者 820
看到了吗?恐慌在第10天左右达到高峰,然后慢慢消退。但如果你把β调高到0.6,γ还是0.1,R₀=6——那第7天就全员恐慌了。这就是为什么监管机构要在恐慌初期就注入流动性——说白了,就是提高γ,把R₀压到1以下。
⚠️ 重要警告:SIR模型假设人群均匀混合,每个人接触概率相同。但在真实金融市场里,机构投资者和散户的“接触率”天差地别。大机构一个电话就能引发连锁反应,散户可能等收盘了才看到新闻。所以直接用标准SIR会低估尾部风险。我一般会在β上加一个“大户权重因子”。
3.7 小结
SIR模型虽然简单,但它是理解风险传染的起点。仓室模型的核心思想——把复杂系统拆成几个状态、用参数控制状态间的流动——可以应用到各种金融场景:流动性危机、信用违约传染、甚至加密货币的FOMO情绪。
我个人习惯在项目初期先用SIR跑一遍,看看R₀大概在什么范围。如果R₀接近1,我就知道要盯紧β和γ的变化了。嗯,这招帮我避过好几次坑。
公众号:蓝海资料掘金营,微信deep3321