Eric Novik and Steve Barber
30 January 2014
set.seed(1)
e1 <- rnorm(500)
e2 <- rnorm(500)
trd <- 1:500
y1 <- 0.8 * trd + cumsum(e1)
y2 <- 0.6 * trd + cumsum(e2)
reg <- lm(y1 ~ y2)
display(reg)
lm(formula = y1 ~ y2)
coef.est coef.se
(Intercept) 14.71 0.85
y2 1.47 0.01
---
n = 500, k = 2
residual sd = 9.85, R-Squared = 0.99
\[ \begin{aligned} Spread_{t} = log(Y_{t}) - (\alpha + \beta log(X_{t})) \end{aligned} \]
EstimateParameters <- function (price.pair, method = lm)
{
x <- log(price.pair)
reg <- method(x[, 2] ~ x[, 1])
hedge.ratio <- as.numeric(reg$coef[2])
premium <- as.numeric(reg$coef[1])
spread <- x[, 2] - (hedge.ratio * x[, 1] + premium)
list(spread = spread,
hedge.ratio = hedge.ratio,
premium = premium)
}
price.pair <- stock.price[, 1:2]["2008-03-31::"]
params <- EstimateParametersHistorically(price.pair, period = 180)
plot(params$spread)