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')
