学习模型自己的参数
到目前为止,模型的数(如 q、r、μ、φ、σ)都是给定的。实际中必须从同一批数据里学出它们。粒子滤波在两方面有帮助。第一,它能估计任意一组数 θ 下数据的似然:每天粒子权重的平均估计了当天收益有多大可能,这些平均值取对数后相加就是对数似然。在网格上对多组 θ 运行滤波,始终使用同一批随机数以使比较平滑,并保留最好的一组。这个估计有噪声,在接近 17750 的对数似然上波动约为 3,所以只有更大的差距才有意义。
logL^(θ)=t∑log(N1i∑wt(i)),h2=1−(2δ3δ−1)2,a=1−h2,θ′=aθ+(1−a)θˉ+hVz(1) 第二种方式是把未知的数放进状态里:每个粒子带着自己的 θ。如果 θ 从不移动,这就会失败,因为重采样只会复制少数几个取值,θ 的云缩成一个点。Liu-West 的办法是在每次重采样之后把每个粒子的 θ 稍微移动,但要保持云的均值和离散程度不变。选一个接近 1 的折扣因子 δ(如 0.95),则 h2=1−((3δ−1)/(2δ))2,a=1−h2。每个值先按系数 a 向云的均值 θˉ 靠拢,再加上方差为 h2V 的噪声,V 是云的方差。δ 越小,抖动越大。
Liu-West 与 SPY 的数字取
δ=0.95:
(3δ−1)/(2δ)=0.9737,所以
h2=1−0.97372=0.0519,
a=0.9737。一个
θ=0.90 的粒子在均值为
0.97 的云里会被拉到
0.9737×0.90+0.0263×0.97=0.902。若云的方差为
V=0.0004,抖动的方差为
0.0519×0.0004,标准差为
0.0046。在 SPY 上,随机波动率的对数似然在网格上于
φ=0.98、
σ=0.25 处最大,为
17793,而常数波动率为
16252。它只有
3 个数,BIC 为
−2×17793.1+3ln5404=−35560,优于 3 状态隐马尔可夫模型(
−35485),甚至优于 4 状态的(
−35557)。
- 用滤波求似然:平均权重的对数之和,每组参数用同一批随机数。
- 放进状态的参数:重采样后需要小幅抖动,否则参数云会坍缩。
- 公平比较模型:对数似然需要对参数个数加惩罚,例如 BIC。
实验:评分内容
- 对数似然增益10 分
- Liu-West 常数 h 的平方15 分
- 收缩系数 a10 分
- 收缩后的粒子15 分
- 抖动的大小10 分
- BIC15 分
- 没有抖动的参数10 分
- 为什么要和约为 3 的差距比较15 分