7.3 Simple fiter buy-sell

Here we create trading signal based on simple filter rule. Recall that simple filter rule suggests buying when the price increases a lot compared to the yesterday price and selling when price decreases a lot: Buy:PtPt1>1+δSell:PtPt1<1δ

where Pt is the closing price at time t and δ>0 is an arbitrary threshold.

We first download the data:

library(quantmod)
getSymbols("MSFT")
## [1] "MSFT"

Now we generate trading signal:

price <- Cl(MSFT)
r <- price/Lag(price) - 1
returnMSFT <- (Cl(MSFT) - Op(MSFT))/Op(MSFT)

delta<-0.005
signal <-c(NA) # first signal is NA

for (i in 2: length(Cl(MSFT))){
  if (r[i] > delta){
    signal[i]<- 1
  } else if (r[i]< -delta){
    signal[i]<- -1
  } else
    signal[i]<- 0
}
signal<-reclass(signal,Cl(MSFT))

To keep thing simple, we allow costless short selling. Otherwise, we only allow a sell after a buy.

trade <- Lag(signal)
ret<-returnMSFT *trade
names(ret) <- 'Naive'
charts.PerformanceSummary(ret)