I am trying to put together code to retrieve Yahoo Data and perform a cointegration analysis of two securities for Pair Trade analysis in RM. I have R code for performing the ADF test. Not being knowledgeable in R Code I need help in adjusting some parameters in this code. The way it is now all the historical data available is accessed. I want to be able to define the date ranges for the data to be retrieved. For example I want one run of the code for last years data then I want to tun the code again on this years data. I don't know how to input this in R. Can someone help me with this?
#http://quanttrader.info/public/testForCoint.html
library(zoo) # Load the zoo package
library(tseries) # Load the tseries package
# Read the CSV files into data frames
#
aapl <- read.csv("http://ichart.finance.yahoo.com/table.csv?s=GLD&ignore=.csv", stringsAsFactors=F)
adbe <- read.csv("http://ichart.finance.yahoo.com/table.csv?s=GDX&ignore=.csv", stringsAsFactors=F)
# The first column contains dates. The as.Date
# function can convert strings into Date objects.
#
aapl_dates <- as.Date(aapl[,1])
adbe_dates <- as.Date(adbe[,1])
# The seventh column contains the adjusted close.
# We use the zoo function to create zoo objects from that data.
# The function takes two arguments: a vector of data and
# a vector of dates.
#
aapl <- zoo(aapl[,7], aapl_dates)
adbe <- zoo(adbe[,7], adbe_dates)
# The merge function can combine two zoo objects,
# computing either their intersection (all=FALSE)
# or union (all=TRUE).
#
t.zoo <- merge(aapl, adbe, all=FALSE)
# At this point, t.zoo is a zoo object with two columns: gld and gdx.
# Most statistical functions expect a data frame for input,
# so we create a data frame here.
#
t <- as.data.frame(t.zoo)
# Tell the user what dates are spanned by the data.
#
cat("Date range is", format(start(t.zoo)), "to", format(end(t.zoo)), "\n")
m <- lm(aapl ~ adbe + 0, data=t)
beta <- coef(m)[1]
cat("Assumed hedge ratio is", beta, "\n")
sprd <- t$aapl - beta*t$adbe
ht <- adf.test(sprd, alternative="stationary", k=0)
cat("ADF p-value is", ht$p.value, "\n")
if (ht$p.value < 0.05) {
cat("The spread is likely mean-reverting\n")
} else {
cat("The spread is not mean-reverting.\n")
}