I wanted to try and post my first piece of R code on the site. I am having a few problems with the HTML of the code so here goes a first try. I am rookie coder with R and any other language for that matter. What this code does is goes and downloads more than 60 years of S&P 500 daily data, it then observes when the gold cross takes place, i.e. 50 day moving average crosses the 200 day moving average. In this instance there is a long signal. When the 50 day cross the 200 day to the downside it is a signal to close out the long trade. The system does not enter short trades and is exceptional relative to the traditional buy and hold strategy.
require(quantmod) require(PerformanceAnalytics) #get the data and fill out the MA getSymbols(‘SPY’, from=’1950-01-01′) SPY$ma200 <- SMA(Cl(SPY), 200) SPY$ma50 <- SMA(Cl(SPY), 50) #lets look at it from 2000 to 2015 spy <- SPY['1950/2015'] #our baseline, unfiltered results ret <- ROC(Cl(spy)) #our comparision, filtered result ma_sig <- Lag(ifelse(SPY$ma50 > SPY$ma200, 1, 0)) ma_ret <- ROC(Cl(spy)) * ma_sig golden<- cbind(ma_ret,ret) colnames(golden) = c(‘GoldCross’,’Buy&Hold’) #Plot to visually see the actual moving averages chartSeries(spy, type = “line”, name = “Moving Average : Golden Cross”, TA= c(addSMA(50, col = ‘yellow’), addSMA(200))) maxDrawdown(golden) table.AnnualizedReturns(golden, Rf= 0.02/252) charts.PerformanceSummary(golden, Rf = 0.02, main=”Golden Cross”,geometric=FALSE)