(This article was first published on DataPunks.com » R, and kindly contributed to R-bloggers)
Timely Portfolio has a nice post about linear models sytems for stock.
The idea follows from the steps below:
- Get the weekly closing values of the S&P 500.
- Choose a time window (i.e. 25 weeks) and for each window, linearly regress the subset of closing values
- Choose an investment strategy based on the residuals, the running average of slope coefficients, or the running average of correlation with data points
The idea is quite simple, and so far, from Timely Portfolio’s post, it looks like the drawdown is behaving nicely.
It seems like the idea could be extended to a non-linear method. The residuals are getting larger and larger, and this indicates that linear methods are less reliable as time goes by.
# code from Timely Portfolio # http://timelyportfolio.blogspot.ca/2011/08/unrequited-lm-love.html require(PerformanceAnalytics) require(quantmod) getSymbols("^GSPC",from="1896-01-01",to=Sys.Date()) GSPC <- to.weekly(GSPC)[,4] width = 25 for (i in (width+1):NROW(GSPC)) { linmod <- lm(GSPC[((i-width):i),1]~index(GSPC[((i-width):i)])) ifelse(i==width+1,signal <- coredata(linmod$residuals[length(linmod$residuals)]), signal <- rbind(signal,coredata(linmod$residuals[length(linmod$residuals)]))) } signal <- as.xts(signal,order.by=index(GSPC[(width+1):NROW(GSPC)])) plot(signal, main="Residuals through time") plot(log(signal), main="Log of Residuals through time") |
To leave a comment for the author, please follow the link and comment on their blog: DataPunks.com » R.
R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...