首页 > 解决方案 > 使用 ARIMA 循环预测波动率

问题描述

关于Stata中循环的一个小问题:

我有一个数据集,其中包含以下变量:隐含波动率(股票期权)和该期权的 delta(期权价格对标的物的弹性)。Delta 严格来说在 20 到 80 之间,增量为 5。隐含波动率通常是几个百分点。

我想得到这个:

quietly arima impl_volatility if delta == 20, ar(1) ma(1)
predict tildevol20 if delta == 20

为 (20, 25, 30, 35, ..., 80)的每个值循环delta,因此循环中的下一个将是:

quietly arima impl_volatility if delta == 25, ar(1) ma(1)
predict tildevol25 if delta == 25

变量 tildevol(delta) 应该从 delta 开始tildevol20并随着 delta 的增加而增加tildevol80

我已经尝试过这个,以及其他几个迭代,但我似乎无法让它工作(deltalvl是 delta 的本地存储值的名称,20-80)。

levelsof delta, local(deltalvl)
foreach 1 of local deltalvl {
   quietly arima impl_volatility if delta == `deltalvl', ar(1) ma(1)
   predict tildevol`deltalvl' if delta == `deltalvl'
}

它什么也不返回,它只是运行,然后结束,它没有给出错误。

Stata 文档似乎对此一无所知(或者我可能只是在错误的地方寻找)。

数据集示例:

示例 1

示例 2

因此,每个日期的每个增量都在 20-80 之间,增量为 5,并且每个增量都有隐含波动率。所以 1 个日期 > 13 个 deltas > 每个 delta 1 波动率。

标签: stataarima

解决方案


更有意义的是

foreach 1 of local deltalvl {
   arima impl_volatility if delta == `1', ar(1) ma(1)
   predict tildevol`1' if delta == `1'
}

但很难预测这是否会奏效。

quietly当调试是一个坏主意时。您可能需要 Stata 提供的信息。


推荐阅读