月末の VaR をヒストリカル方式で計算したい。私の時系列は 2000 年の初めから現在までです。十分なデータを得るには、2005 年に計算を開始する必要があります。同様のポストローリング計算が xts by monthにあり、私の場合のコードを変更しようとしました。毎月末の VaR は過去のデータを使用する必要があります。
これが私のコードです(そうでなければ時間がかかるため、ここでは2012年に始まります):
library(quantmod)
getSymbols("^GSPC",return.class = "zoo",from = "2012-01-01",to = Sys.Date())
sp500 <- Ad(GSPC)
ldr_sp500 <- Return.calculate(sp500, method = "log")
ldr_sp500 <- na.omit(ldr_sp500)
idx <- index(ldr_sp500)[endpoints(ldr_sp500, 'months')]
out <- lapply(idx, function(i) {
as.xts(rollapplyr(as.zoo(ldr_sp500), 30, VaR))
})
sapply(out, NROW)
まず、コードに大きなエラーがあります。幅はどのくらいですか?出力をzooオブジェクトとして与えることも可能ですか? 私はこの種の関数の初心者です...履歴法ではなくガウス法を使用したくない場合は、次のようにします。
apply.monthly(as.xts(ldr_sp500), VaR, method="gaussian")
これは、重複しない期間でうまく機能するようです...