【问题标题】:Looping with ARIMA to predict volatility使用 ARIMA 循环预测波动率
【发布时间】:2019-12-05 17:54:45
【问题描述】:

关于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 开始,并随着 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 文档似乎对此没有任何内容(或者我可能只是在寻找错误的地方)。

数据集示例:

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

【问题讨论】:

  • 这里没有可重现的:没有我们可以使用的数据示例。什么地方出了错?你收到语法错误了吗?结果不是您所期望的?没结果?问题报告只是“我似乎无法让它工作”。请研究 Stata 标签 wiki 以获取详细建议。
  • 这很奇怪,我没有错误。 .执行 "C:\Users\u1265418\AppData\Local\Temp\STD00000000.tmp" 。 foreach 1 of local deltalvl{ 2. 如果 delta == local deltalvl, ar(1) ma(1) 3. predict vol`' if delta == local deltalvl 4. } .文件结束它似乎没有运行。
  • 我会添加一些数据示例
  • 所述语法对我来说毫无意义。您永远不会在循环内引用本地宏 1。这不是致命的,但也不是你需要的。但由于 deltalvl 包含或应该包含值列表,arima 调用应该因为非法而失败。
  • 请使用dataex 命令提供示例数据,而不是屏幕截图。

标签: stata arima


【解决方案1】:

更有意义的是像

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多