Избранное трейдера Карел
В продолжении разговора об рыночных факторах-аномалиях(начало было здесь, про дивиденды), хочу немного написать о другом рыночном факторе — моментуме. Для начала, вот ссылка на очень хорошую статью — «The Quantitative Momentum Investing Philosophy» из блога компании Alpha Architect, рекомендую прочесть. В ней изложены основные принципы, на основе которых компания делает свои моментум-фонды. Если совсем кратко изложить суть написанного, то для акций, на горизонте от 6 до 12 месяцев, наблюдается образование аномалии моментума. Иными словами, если цены акции начали рост, и уже растут больше 6 месяцев, то рост с большой вероятностью будет продолжен. Эта аномалия описана во множестве академических работ и используется во многих рыночных моделях, например моделях Фамы-Френча(см. ссылки в статье). В этих же академических работах также отмечается, что на этом многомесячном тренде роста иногда возникает обратное контр-трендовое движение, длительностью до месяца. Чтобы отсечь этот «противоход», часто используют определение моментума в следующем виде: общий рост за N месяцев, без учета последнего(самого недавнего) месяца. В модели Фамы-Френча используется определение моментума — 12 минус 1, т.е. рост за 12 месяцев, без учета последнего месяца. Этот же моментум часто называют «12_2 моментум», по месяцам вычисления.
Посчитал на R спред между акциями Google и Apple с учётом соотношения (hedge ratio). И нанёс среднюю линию с двумя среднеквадратичными отклонениями сверху и снизу. Красота.
Делается на R это очень просто, код ниже.
require(quantmod)
> startT <- «2015-01-01»
> endT <- «2016-01-01»
> rangeT <- paste(startT, "::", endT, sep="")
> symbols <- c(«AAPL», «GOOG»)
> getSymbols(symbols)
[1] «AAPL» «GOOG»
> tGOOG <- GOOG[,6][rangeT]
> pdtGOOG <- diff(tGOOG)[-1]
> tAAPL <- AAPL[,6][rangeT]
> pdtAAPL <- diff(tAAPL)[-1]
> model <- lm(pdtAAPL ~ pdtGOOG)
> hr <- as.numeric(model$coefficients[1])
> spreadT <- tAAPL — hr * tGOOG
> meanT <- as.numeric(mean(spreadT, na.rm=TRUE))
> sdT <- as.numeric(sd(spreadT, na.rm=TRUE))
> par(mfrow = c(2,1))
> hist(spreadT, col=«blue», breaks = 100, main = «Spread Histogram (AAPL vs GOOG)»)
> plot(spreadT, main=«AAPL vs GOOG spread (in-sample period)»)
> abline(h = meanT, col = «red», lwd = 2)
> abline(h = meanT + 1 * sdT, col = «blue», lwd = 2)
> abline(h = meanT — 1 * sdT, col = «blue», lwd = 2)
Здесь:
meanT — среднее
sdT — среднекв. отклонение
spreadT — спред
par — график с двумя секциями
plot — график
hist — гистограмма
abline — линия поверх графика
model — линейная зависимость модель, МНК
quantmod — библиотека для получения исторических данных
rangeT — временной диапазон