使用 ARIMA 循环预测波动率

Looping with ARIMA to predict volatility

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

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

我想要这个:

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

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

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

变量 tildevol(delta) 应从 tildevol20 开始并随增量增加,直至 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'
}

它returns 没什么,它只是运行,然后结束,它不会报错。

Stata 文档似乎没有关于此的任何内容(或者我可能只是找错地方了)。

数据集示例:

所以每个日期都有 20-80 之间的每个增量,增量为 5,每个增量都有一个隐含波动率。所以 1 个日期 > 13 个增量 > 每个增量 1 个波动率。

更有意义的是

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

但预测这是否会奏效并不容易。

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