Skip to content

Instantly share code, notes, and snippets.

View zachmayer's full-sized avatar

Zach Deane-Mayer zachmayer

View GitHub Profile
@zachmayer
zachmayer / Build Model.R
Created August 22, 2011 14:50
Recession forecasting-Me
#################################################
# Build a model
#################################################
#Choose Differencing window
#Hussman uses 6 months
Diff <- 6
Data$PAYEMS <- (Data$PAYEMS-Lag(Data$PAYEMS,Diff))/Lag(Data$PAYEMS,Diff)
Data$UNRATE <- (Data$UNRATE-Lag(Data$UNRATE,Diff))/Lag(Data$UNRATE,Diff)
Data$SP500 <- (Data$SP500-Lag(Data$SP500,Diff))/Lag(Data$SP500,Diff)
@zachmayer
zachmayer / 1. Compare 1 month.R
Created August 22, 2011 15:47
Recession forecasting II- Hussman's Accuracy
#Actual Recessions
getSymbols('USREC',src='FRED')
USREC <- USREC["1997-07-01::",] #Start from same period
#Compare recession now to warning last month
library(caret)
OneMonth <- Lag(P.Rec)
compare <- na.omit(merge(OneMonth,USREC))
confusionMatrix(compare[,1],compare[,2],positive = '1')
@zachmayer
zachmayer / 0. Plain.R
Created August 23, 2011 15:13
Variable Interactions
cor(iris[-5])
pairs(iris[-5], bg=iris$Species, pch=21)
@zachmayer
zachmayer / Linear Model.R
Created August 26, 2011 14:52
Sheep and Temperature
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.18471 0.12130 9.767 1.08e-12 ***
Sheep -0.71154 0.08546 -8.326 1.16e-10 ***
rm(list = ls(all = TRUE))
#http://etfprophet.com/days-since-200-day-highs/
require(quantmod)
getSymbols('^GSPC',from='1900-01-01')
daysSinceHigh <- function(x, n){
apply(embed(x, n), 1, which.max)-1
}
@zachmayer
zachmayer / Chart 1.R
Created September 15, 2011 21:32
Stock Correlations
#Load Data
rm(list = ls(all = TRUE))
library(quantmod)
library(PerformanceAnalytics)
symbols <- c('XLE','XLV','XLI','XLU','XLP','IYZ','XLK','XLY','XLF','XLB','GLD','SLV','EFA','EEM','FXA','FXE','FXY','HYG','LQD')
getSymbols(symbols,from='2007-01-01')
getSymbols('SPY',from='2007-01-01')
@zachmayer
zachmayer / 1. Functions.R
Created September 16, 2011 17:36
Backtesting a Simple Stock Trading Strategy 2
rm(list = ls(all = TRUE))
daysSinceHigh <- function(x, n){
apply(embed(x, n), 1, which.max)-1
}
myStrat <- function(x, nHold=100, nHigh=200) {
position <- ifelse(daysSinceHigh(x, nHigh)<=nHold,1,0)
c(rep(0,nHigh-1),position)
}
@zachmayer
zachmayer / Naive.R
Created September 20, 2011 18:31
Recessions III
#Load current know recessions
library(xts)
ModRec <- read.csv("http://dl.dropbox.com/u/7428423/Modified%20NBER%20Recession%20Data.csv")
ModRec$DATE <- as.Date(ModRec$DATE)
ModRec <- xts(ModRec[,-1],order.by=ModRec[,1])
#Load actual recessions
library(quantmod)
getSymbols('USREC',src='FRED')
@zachmayer
zachmayer / 1. Setup.R
Created October 17, 2011 14:44
Backtesting a Simple Stock Trading Strategy 3
rm(list = ls(all = TRUE))
memory.limit(size = 4000)
#Get Data
library(quantmod)
getSymbols('^GSPC',from='1900-01-01')
myStock <- Cl(GSPC)
bmkReturns <- dailyReturn(myStock, type = "arithmetic")
#Apply our strategy to tomorrows returns
@zachmayer
zachmayer / Random Strategies.R
Created October 20, 2011 20:19
Random Strategies
#Setup
rm(list = ls(all = TRUE))
set.seed(1)
nsims <- 1000
library(quantmod)
library(PerformanceAnalytics)
#Load Data
getSymbols('^GSPC',from='1900-01-01')
spyReturns <- dailyReturn(GSPC$GSPC.Adjusted, type = "arithmetic")