Guest User

Untitled

a guest
Jan 21st, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. testStrategy <- function(symbol, nHold=100, nHigh=200, cost=.005, ylog=FALSE, wealth.index = FALSE, ...) {
  2. require(quantmod)
  3.  
  4. #Load Data
  5. myStock <- getSymbols(symbol,from='1900-01-01')
  6. myStock <- adjustOHLC(get(myStock),symbol.name=symbol)
  7. myStock <- Cl(myStock)
  8.  
  9. #Determine position
  10. myPosition <- myStrat(myStock,nHold,nHigh)
  11. bmkReturns <- dailyReturn(myStock, type = "arithmetic")
  12. myReturns <- bmkReturns*Lag(myPosition,1)
  13. myReturns[1] <- 0
  14. names(bmkReturns) <- symbol
  15. names(myReturns) <- 'Me'
  16.  
  17. #Add trading costs
  18. trade = as.numeric(myPosition!=Lag(myPosition,1))
  19. trade[1] = 1
  20. trade = trade*cost
  21. myReturns = myReturns-trade
  22.  
  23. #Make plot
  24. require(PerformanceAnalytics)
  25. symbol <- sub('^','',symbol,fixed=TRUE)
  26. Title <- paste('High=',nHigh,' Hold=',nHold,' on ',symbol,sep='')
  27. if (ylog) {wealth.index = TRUE}
  28. layout(matrix(c(1, 2, 3)), height = c(2, 1, 1.3), width = 1)
  29. par(mar = c(1, 4, 4, 2))
  30. chart.CumReturns(cbind(bmkReturns,myReturns), main=Title, ylab = "Cumulative Return",
  31. wealth.index = wealth.index,ylog=ylog,...)
  32. chart.RelativePerformance(myReturns,bmkReturns, ylab = "Relative Return", main = "")
  33. chart.Drawdown(cbind(bmkReturns,myReturns),legend.loc = 'bottomleft', ylab = "Drawdown", main = "")
  34.  
  35. #Return Benchmarked Stats
  36. cbind(Me=Performance(myReturns),Index=Performance(bmkReturns))
  37. }
  38.  
  39. testStrategy('^GSPC',100,200,ylog=TRUE)
  40. testStrategy('^FTSE',100,200)
  41. testStrategy('^DJI',100,200,ylog=TRUE)
  42. round(testStrategy('^N225',100,200),8)
  43. testStrategy('EEM',100,200)
  44. testStrategy('EFA',100,200)
  45. testStrategy('GLD',100,200)
Add Comment
Please, Sign In to add comment