Programming performance/KrassiVanguelov R
Language: R
Experience level: Advanced
Time: 22 minutes
theData=read.table(file="gspc.txt", sep=" ", comment.char='#') prices=rev(theData[,5]) pctReturns=diff(prices)/prices[-length(prices)]*100 cash=10000 portfolio=list(shares=numeric(0),prices=numeric(0)) trades = mapply( function(price,ret){ if(ret <= -3) { portfolio$shares <<- c(portfolio$shares,0.1*cash/price); portfolio$prices <<- c(portfolio$prices,price); cash <<- 0.9*cash } else if(ret > 0){ sells = which(price/portfolio$prices >= 1.06); if(length(sells)>0){ cash <<- cash + sum(portfolio$shares[sells]*price); portfolio$shares <<- portfolio$shares[-sells]; portfolio$prices <<- portfolio$prices[-sells] } } } , prices[-1] , pctReturns ) cash = cash + sum(portfolio$shares*prices[length(prices)]) cat(cash, '\n')