分享

Spark 高级分析:第九章第10,11节 返回值分布可视化和结果评估

本帖最后由 feilong 于 2018-12-7 08:24 编辑

问题导读

1.
如何将返回结果可视化
2.
如何对结果进行评估
3.
蒙特卡洛风险模拟可以用来做什么



关注最新经典文章,欢迎关注公众号



Spark 高级分析:第九章第8,9节 多元正态分布和试验
http://www.aboutyun.com/forum.php?mod=viewthread&tid=26422


除了在特定的置信水平下计算VaR之外,查看更全面的收益分布图也是有用的。它们是正常分布的吗?它们在端点处有刺吗?正如我们对单个因素所做的那样,我们可以使用核密度估计绘制联合概率分布的概率密度函数的估计。同样,用于以分布式方式(通过RDD)计算密度估计的支持代码也包含在本书附带的git存储库中。
[mw_shl_code=scala,true]def plotDistribution(samples: RDD[Double]) {
val stats = samples.stats()
val min = stats.min
val max = stats.max
val domain = Range.Double(min, max, (max - min) / 100)
.toList.toArray
val densities = KernelDensity.estimate(samples, domain)
val f = Figure()
val p = f.subplot(0)
p += plot(domain, densities)
p.xlabel = "Two Week Return ($)"
p.ylabel = "Density"
}
plotDistribution(trials)[/mw_shl_code]

图片1.png

我们如何知道我们的估计是好的估计吗?我们如何知道我们是否应该用更多的试验来模拟?一般来说,蒙特卡洛模拟中的误差应该与1/n成正比。这意味着,一般来说,试验数量的四倍应该大致将误差减少一半。

对历史数据进行回溯测试是检查结果质量的一种好方法。一个常见的测试是KuiCiC的失败比例(POF)测试。它考虑投资组合在多个历史时间间隔内是如何执行的,并计算损失超过VaR的次数。零假设是VaR是合理的,而足够极端的测试统计意味着VaR估计不能准确地描述数据。依赖于p、VaR计算的置信水平参数、x、损失超过VaR的历史间隔数、以及考虑的历史间隔总数的T的测试统计被计算为:
图片3.png
下面对我们的历史数据计算测试统计量。我们扩展了日志以获得更好的数值稳定性:
图片4.png
[mw_shl_code=scala,true]var failures = 0
for (i <- 0 until stocksReturns(0).size) {
val loss = stocksReturns.map(_(i)).sum
if (loss < valueAtRisk) {
failures += 1
}
}
failures
...
155
val failureRatio = failures.toDouble / total
val logNumer = (total - failures) * math.log(1 - confidenceLevel) +
failures * math.log(confidenceLevel)
val logDenom = (total - failures) * math.log(1 - failureRatio) +
failures * math.log(failureRatio)
val testStatistic = -2 * (logNumer - logDenom)
...
96.88510361007025[/mw_shl_code]
如果我们假设零假设VaR是合理的,那么这个检验统计量是从具有单个自由度的卡方分布中抽取的(有关卡方检验的稍微深入的讨论,请参阅上一章)。我们可以使用Commons Math ChiSquaredDistribution来找到伴随着我们的测试统计量值的P值。
[mw_shl_code=scala,true]import org.apache.commons.math3.distribution.ChiSquaredDistribution
1 - new ChiSquaredDistribution(1.0).cumulativeProbability(testStatistic)[/mw_shl_code]
这给了我们一个极小的P值,这意味着我们有足够的证据来拒绝这种假设是合理的零假设。看来我们需要改进一下…

在这个练习中提出的模型是对实际金融机构使用的非常粗略的第一次削减。在建立一个精确的VAR模型时,我们忽略的几个步骤是非常重要的。策划一组市场因素可以建立或破坏一个模型,金融机构在模拟中加入数百个因素并不罕见。挑选这些因素既需要对历史数据进行大量的实验,也需要大量的创造力。选择将市场因素映射到票据回报的预测模型也很重要。当我们使用简单的线性模型时,许多计算使用非线性函数或用布朗运动模拟随时间变化的路径。最后,值得注意的是用于模拟因子回报的分布。Kolmogorov Smirnoff检验和卡方检验对于检验经验分布的正态性是有用的。Q-Q图对于视觉上比较分布是有用的。通常,金融风险更好地反映了一个分布比我们使用的正常尾部更胖。正态分布的混合物是实现这些较胖尾部的一种好方法。《金融经济学,长尾分布》一文由马库斯·哈斯和克里斯蒂安·皮戈尔斯撰写,提供了一些关于其他肥尾分布的很好的参考。

银行使用SCAP和大规模数据处理框架,用历史方法计算VaR。Darryll Hendricks利用历史数据评估风险价值模型提供了历史VaR方法的良好概述和性能比较。

蒙特卡洛风险模拟可用于计算单个统计量。结果可以用来通过投资决策来主动降低投资组合的风险。例如,如果在收益最差的试验中,某一套特定的工具往往会反复出现亏损,人们可能会考虑将这些工具从投资组合中撤出,或者增加倾向于向相反方向移动的工具。

已有(3)人评论

跳转到指定楼层
jiangzi 发表于 2018-12-7 14:49:51
多元正态分布和试验~~~
回复

使用道具 举报

jiangzi 发表于 2018-12-9 18:09:20
通过投资决策来主动降低投资组合的风险。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条