关于Stata中循环的一个小问题:
我有一个包含以下变量的数据集:(股票期权的)隐含波动率和该期权的差额(基础期权价格的弹性)。 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'
}
它什么也不返回,它只是运行,然后结束,它没有给出错误。
Stata文档似乎没有任何内容(或者我可能只是在错误的位置看)。
数据集示例:
因此,每个日期的每个增量都在20-80之间,增量为5,每个增量都有隐含的波动性。因此,1个日期> 13个增量>每个增量1波动率。
答案 0 :(得分:1)
更有意义的是
foreach 1 of local deltalvl {
arima impl_volatility if delta == `1', ar(1) ma(1)
predict tildevol`1' if delta == `1'
}
,但要预测是否可行并不容易。
quietly
是一个不好的主意。您可能需要Stata提供的信息。