2013-07-15 3 views
3

저는 여기서 해결책을 찾지 못했습니다. 코드의 마지막 줄을 보면 다음 영업일에 구입하고 5 일 후 (x = 5)에 판매하고자하는 것을 알게 될 것입니다.XTS 지수 및 거래일과 관련된 문제

것은 주말은 xts 색인입니다. 그래서 예를 들어 7 월 12 일 금요일에 index = 1을 얻습니다.하지만 월요일 7 월 15 일에 index = 4입니다. 나는 그것을 +1 거래일 인 2와 같게하려고합니다.

x + 5 거래일을 얻으려면 색인을 수정하거나 Cl(SPY)[index(SPY) + x] 이외의 다른 방법을 사용할 수 있습니까? 이

# Variable d'optimisation 
x <- 5 

library(quantmod) 

# Get data from Yahoo, then adjust 
getSymbols("SPY", from = "1990-01-01") 

# add RSI3 column 
SPY$RSI3 <- RSI(Cl(SPY), n = 3) 

# Add buy sig 
SPY$buySig <- ifelse(SPY$RSI3 > 90, 1, 0) 

# If signal, buy tomorrow at open, sell at close x days later 
# PnL Calculation here : 
PnL <- ifelse(lag(SPY$buySig) == 1, Cl(SPY)[index(SPY) + x] - Op(SPY), NA) 

답변

2

사용 lag에 어떤 힌트를 사전에

덕분에 +x일에서 닫기를 계산합니다. 실제 원하는 논리에 따라 k의 값을 -(x+1)으로 변경해야 할 수도 있습니다 (신호가 발생한 날로부터 5 일 후 또는 영업일로부터 5 일 후 판매).

SPY$Lag.Cl <- lag(Cl(SPY),-x) 
PnL <- lag(SPY$buySig) * (SPY$Lag.Cl - Op(SPY)) 
+0

대단히 감사합니다. 이것은 완벽하게 작동하고 더 의미가 :) – JohnWolf