R中关于极值分布理论的包有很多,如fExtremes、POT、evir等等,下面我们以一个简单的应用场景来演示fExtremes的使用方法。
本示例利用1960年1月1日到1987年10月16日的标准普尔500指数,拟合Generalized Extreme Value(GEV)分布,然后通过MonteCarlo模拟,预测下一季度日损失率超过6.9%的概率。
首先导入标准普尔500指数,并将其转换为对数收益率。
data(SP500)
r=diff(log(SP500))
d=window(r, start = "1960-01-01", end = "1987-10-16")
因为我们这里关心的是未来资金损失的风险,故需将对数收益率取负值,再以季度为单位,计算每季度负对数收益率最大值。
dv=blockMaxima(as.timeSeries(-d), block = c("quarterly"), doplot = FALSE)
下面可以用最大似然估计法或者概率加权矩方法估计GEV分布的三个参数。
fit = gevFit(as.vector(dv$`max.^GSPC`), type = "mle")
x=seq(-0.0001,0.07,by=0.0001)
ps=fit@fit$par.ests
de=dgev(x = x,xi =ps[1],mu = ps[2],beta = ps[3])
par(mfcol = c(2, 2))
summary(fit)
GEV的概率密度函数和季度最大负对数收益率的核密度函数如图。
density.png
最后一步,用MonteCarlo模拟估算下一季度损失率超过6.9%的概率,这里是0.0033
mt=rgev(70000000,xi=ps[1],mu=ps[2],beta=ps[3])
p=sum(mt>=0.069)/length(mt)
[1] 0.003289786
网友评论