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:PtPt−1>1+δSell:PtPt−1<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)