每个分布一个对象
scipy.stats 把每个概率分布都做成一个对象,例如 stats.norm、stats.t 和 stats.lognorm。它们都有相同的四个方法。pdf(x) 是密度,表示 x 附近的值有多可能。cdf(x) 是取值不超过 x 的概率。ppf(p) 是 cdf 的反函数:返回使下方概率为 p 的值 x,称为分位数。rvs(size) 生成随机数。每个分布都有位置(loc)和尺度(scale),所以取值等于 loc + scale * 标准值。调用 dist.fit(data) 会做最大似然,也就是选出使你的数据最可能出现的参数。对正态分布,拟合的均值就是样本均值,拟合的标准差除以 n 而不是 n−1。
日收益率有厚尾:大涨大跌的日子比正态曲线所说的多得多。自由度为 ν 的学生 t 分布尾部更厚,ν 越小尾部越厚。它的方差是 ν/(ν−2)(需要 ν>2),所以要让它有选定的标准差 σ,就用尺度 s=σ(ν−2)/ν。一天 99% 的风险价值(VaR)是只有 1% 的日子会被超过的损失,由收益率的 1% 分位数得到。
VaR99=−(μ+σz0.01) with z0.01=−2.3263,VaR99t=−(μ+st0.01,ν),s=σνν−2(1) 两种方式的 99% VaR设日均收益
μ=0.05%,标准差
σ=1.2%。用正态分布,
z0.01=−2.3263,所以
VaR=2.3263⋅1.2−0.05=2.74%。现在用
ν=4、标准差相同的 t 分布。尺度
s=1.22/4=0.85,标准 t 的 1% 分位数是
−3.7469,所以
VaR=3.7469⋅0.85−0.05=3.13%。t 曲线给出更大的损失,因为它在远处的尾部放了更多权重。在真实数据上,SPY 有
5,403 个日收益,均值
0.039%,标准差
1.196%。正态拟合把 1% 分位数放在
−2.74%,而真实的 1% 分位数是
−3.52%。它的超额峰度是
14.6,最佳 t 拟合的
ν=2.45。跌幅超过
4% 的日子有
42 天,而正态分布只预期约
2 天。
- 同样的四个方法:
pdf 求密度,cdf 求下方概率,ppf 求分位数,rvs 生成随机数。 - 先拟合,再检验:
fit 给出最大似然参数(正态的 sigma 除以 n),还要把极端日子的个数与数据对比。 - 厚尾对风险很重要:ν 较小的 t 分布,在标准差相同时给出比正态更大的 VaR。
实验:评分内容
- 正态 VaR15 分
- 最大似然 sigma15 分
- t 分布的尺度10 分
- t 分布的 VaR15 分
- 四个共有方法10 分
- 尾部风险的流程10 分
- 为什么正态会低估损失25 分