
基于蒙特卡罗模拟的金融风险评估
|
179
9.7
采样
有了将市场因素回报映射到金融工具回报的模型之后,接下来可以讨论怎样生成随机回报
因素来模拟市场条件。也就是说,我们需要确定因素回报向量的一个概率分布,并从该
分布上采样。数据实际服从什么分布呢?为了回答此类问题,有必要先对数据进行可视
化。连续概率分布的可视化可以采用密度曲线,它给出了在分布区间上的概率密度函数
(
PDF
)。因为我们不知道数据服从的分布,所以并没有一个公式可以帮助我们计算任意点
上的概率密度。但我们可以使用一种称为
核密度估计
(
kernel density estimation
)的技术来
粗略估计概率密度。不严格地讲,核密度估计是一种对直方图进行平滑处理的方法。它以
每个数据点为中心建立一个概率分布(通常为正态分布),因此一个两周回报样本的集合
将有
200
个正态分布,每个分布的总体均值都不一样。为了评估在给定点的概率密度,可
以计算所有正态分布在这个点上的概率密度,然后取平均值。核密度曲线的平滑程度取决
于它的
带宽
(
bandwidth
),也就是每个正态分布的标准差。本书的
GitHub
资料库上提供了
一个核密度估计的实现,既可以用于
RDD
,也可用于本地集合。为了节省篇幅,这里不再
赘述。
breeze-viz
是一个
Scala
工具,我们可以用它轻松地绘制简单图形。下面的代码绘制了样本
集的密度曲线:
import org.apache.spark.mllib.stat.KernelDensity
import org.apache.spark.util.StatCounter ...