2013-05-18 4 views
1

역사적인 방법으로 월말에 VaR을 계산하고 싶습니다. 내 시간 시리즈는 2000 년 초부터 지금까지 시작됩니다. 계산이 시작되어 2005 년에 충분한 데이터가 있다고 말하도록해야합니다. 비슷한 게시물 rolling computations in xts by month이 있고 내 경우 코드를 수정하려고했습니다. 매월 말 VaR은 과거 데이터를 사용해야합니다.개월당 xts로 롤링 계산 2 부

여기 (그렇지 않으면 오래 걸릴 것이기 때문에 여기에 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) 

먼저 내 코드에 큰 오류가 있습니다. 폭은 무엇이되어야합니까? 출력물을 동물원 개체로 제공 할 수 있습니까? 스피 기능 이런 종류의 초보자 ... 나는 역사의 방법을 사용하고 싶지만 오히려 가우스 방법은 내가 사용하는 것 해달라고하는 경우 :

apply.monthly(as.xts(ldr_sp500), VaR, method="gaussian") 

이 중복되지 않은 기간에 잘 작동 것 같다 ...

코드에서

답변

1

lapply의 함수는 인수 i를 사용하지 않습니다 당신은 반복해서 같은 일 (기간에 매일의 VAR) 을 계산한다.

는 또한, VaR의 기본 방법은 modified입니다 : 당신이 method="historical"를 지정해야 . 현재 달의 일일 수익률의 위험에 노출 값을 계산하려면

, 당신의 제안은 실제로 작동 사용 apply.monthly를 사용 :

:

apply.monthly(ldr_sp500, VaR, method="historical") 

대신 확장 창을 원하는 경우

library(quantmod) 
library(PerformanceAnalytics) 
getSymbols("^GSPC", from = "2012-01-01") 
x <- Return.calculate(Ad(GSPC), method = "log") 
idx <- index(x)[endpoints(x, 'months')] 
result <- sapply(idx, 
    function(i) VaR(x[paste0("/",i)], method = "historical") 
) 
xts(result, idx)