HaskellWiki

Haskell | Wiki community | Recent changes
Random page | Special pages

 

Not logged in
Log in | Help

Programming performance/KrassiVanguelov R

< Programming performance

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

Retrieved from "http://haskell.org/haskellwiki/Programming_performance/KrassiVanguelov_R"

This page has been accessed 406 times. This page was last modified 21:11, 7 April 2007. Recent content is available under a simple permissive license.