我正在尝试使用R中的TTR包和volatility()函数来计算两个底层证券之间价差的滚动30天波动率。
到目前为止,这是我的代码的剥离版本(已经提取/清理数据,日期匹配等):
asset1 <-c(rnorm(100, mean=50))
asset2 <-c(rnorm(100, mean=50))
spread <-c(asset1-asset2)
vClose.spread <-volatility(spread, n=30, calc="close", N=252)
现在我得到的错误是:
Error in runCov(x, x, n, use = "all.obs", sample = sample, cumulative) :
Series contain non-leading NAs
In addition: Warning message:
In log(x) : NaNs produced
非常感谢任何协助或指示。
答案 0 :(得分:3)
volatility
计算价格时间序列的波动率:
它只适用于正数量。
您可以直接使用runSD
。
# Standard deviation of the spread
sqrt(252) * runSD( spread, 30 )
# Standard deviation of the change in spread
sqrt(252) * runSD( diff(spread), 30 )