Algorithm Whisperer

[This article was first published on Milk Trader, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

I was staring at my favorite trading algorithm the other day and I could swear it wanted to tell me something. I’ve made contact with it in the past, but our conversations pretty much ran along the lines of “What position are you in the market?” to which it would reply “long”, “short” or “flat”. And that was pretty much it. I would nod and it would just sit there. Like it wanted me to tell me more but was bound by secret oath to not say anything unless it was properly asked. It had a pale look on its face though, like it was holding out on me and didn’t like it.

I’m getting around to accepting that I have to lead this conversation. We’ve spoken in the past in several languages, but R has always been the best algorithm-to-human interface.  I started out by picking the market.

“So White Bumblebee, do you want to talk about gold or silver?”

No reply. I felt a little cheap with that taunt so I started again.

“White Bumblebee, let’s talk about the gold market, and let’s use the GLD gold etf as a point of reference for our little chat.”

Still no reply, but I could see an almost imperceptible smile.

I didn’t really say “… let’s talk about the gold market …”. I said the following:

require("quantmod")   
                                                           
getSymbols("GLD")     
                                       
GLD$fast    <- BBands(( GLD[,4] ), n=10, sd=0.5)                                         
GLD$slow    <- BBands(( GLD[,4] ), n=30, sd=0.5)      
GLD         <- na.locf(GLD, na.rm=TRUE)                                   
                                                                          
position     <- ifelse (GLD$mavg > GLD$up.1, 1,                             
                ifelse(GLD$mavg < GLD$dn.1, -1, NA))
            
position    <- na.locf(position, na.rm=TRUE) 
  
Here, we continue our conversation. And start building a meaningful relationship.

Me: White Bumblebee, how often have you been long versus short the yellow metal in the last few years?

hist(position, 
     main="How often have you been long 
           vs short in the last few years?",
     col="goldenrod") 
White Bumblebee:



Me: What does your daily distribution of returns look like?:

returns     <- ROC(Cl(GLD))*position
hist(returns, main="What do your daily returns look like?", col="darkslategray2") 
White Bumblebee:

Me: Ahem, without look-ahead bias, please?

returns     <- Lag(ROC(Cl(GLD)))*position
hist(returns, main="Ahem, without Look-Ahead Bias?", col="darkslategray")
White Bumblebee:



Me: Got anything more intuitive?:

require(vioplot)
returns <- na.locf(returns, na.rm=TRUE)
vioplot(returns, names="Got anything more intuitive?", col="blue")  
White Bumblebee:



Me: Where do you see gold closing tomorrow?:

paste("What is the closing price for gold tomorrow?")
trick_question <- Cl(GLD[NROW(GLD)+1, ])
trick_question
White Bumblebee:

Error in `[.xts`(GLD, NROW(GLD) + 1, ) : subscript out of bounds

That last one was a trick question. I couldn't resist. Good thing for me that White Bumblebee knows how to take a joke.

To leave a comment for the author, please follow the link and comment on their blog: Milk Trader.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)