Автокорреляция. Выявление линейной зависимости в значениях рыночных цен

После того, как я показал, что значения рыночных цен имеют функцию распределения вероятностей отличную от нормальной, я задумался, куда двигаться дальше? В самом деле, вся теория, которая разработана для случайных величин, распределенных по нормальному закону, в случае рынка неприменима, или применима с непонятными и неоднозначными результатами. Меня это огорчило и не устроило.

В качестве промежуточного шага я решил проверить линейную связь между значениями рыночных цен. Проверить самостоятельно и попытаться понять результаты. Если такая связь будет установлена – это должно помочь при создании адекватной модели прогнозирования или хотя бы определить, какая модель подойдет, а какая нет. Если же этой связи нет, то линейные МП применять для целей прогнозирования рынка теоретически глупо. Хотя на практике и возможно.

И так, степень линейной зависимости, между текущей выборкой Xi={xn,…,xnm} и выборкой Xj={xnL,…,xnmL} из ВР X={x1,…,xn} называется линейной корреляцией и рассчитывается по формуле:

rL =∑(xi-Xi,ср)*(xj-Xj,ср)/( ∑(xi-Xi,ср)2*∑ (xj-Xj,ср) 2 )   (1),

где i=n,…,n-m; j=n-L,…,n-m-L, где L называется лагом.

Эту формулу ещё называют коэффициентом линейной корреляции Пирсона.

Последовательность рассчитанных коэффициентов rL, при L=1,2,3,4… называется автокорреляционной функцией.

На практике, как правило для небольших ВР, максимальное значение L рассчитывают по формуле:

Lmax=floor(10*log10(n))   (2)

Здесь n – количество значений в X, а floor – операция, возвращающая целую часть от числа.

Автокорреляционная функция может помочь в анализе ВР следующим образом:

1) если наиболее высоким оказался коэффициент автокорреляции первого порядка (L=1), исследуемый ВР содержит только тенденцию;

2) если наиболее высоким оказался коэффициент автокорреляции порядка m, возможно ряд содержит циклические колебания с периодичностью в m моментов времени;

3) если не удается выявить ни каких закономерностей, значения ВР либо независимы друг от друга, либо эта зависимость нелинейная.

Вот код на языке R для определения автокорреляционной функции для ВР, обозначенного как х:

n<-length(x)
 r<-NULL
 for(l in 0:floor(10*log10(length(x))))
 {
 xm<-x[(1+l):n]
 xml<-x[1:(n-l)]
 xms<-sum(xm)/length(xm)
 xmls<-sum(xml)/length(xml)
 r<-c(r,round(sum((xm-xms)*(xml-xmls)) / sqrt( sum((xm-xms)^2)*sum((xml-xmls)^2)),3))
 }
 print(r)
 plot(x,type='l')

Анализ автокорреляционной функции вещь достаточно популярная и в языке R для этого существует простая команда acf(x,type=»correlation»), которая даст те же самые результаты, что и код приведенный выше.

Смоделируем искусственный ВР с наличием тренда, периодичностью и случайной компонентой, распределенной по нормальному закону:

mgraph Вот непосредственно код:

x<-(1:500)/80+sin(c(1:500))+rnorm(100)
 plot(x,type='l')

По графику виден только тренд. Но не понять, есть ли периодичность? По графику корреляционной функции это видно (по оси абсцисс – лаг, по оси ординат – значение коэффициента корреляции Пирсона (1)):

acmg

Я показал, что инструмент полезный?

Хорошо. А теперь я рассчитаю корреляционные функции применительно к рыночным ценам для тех же самых, ранее выбранных ВР: EUR/USD, GBP/JPY, AUD/CAD. Напомню, это часовые котировки цен за 2015 год, где около 4000 значений. Для эксперимента я взял только 100 последних значений.

Вот графики корреляционных функций:

aceugjПолучился интересный результат. Между текущими и предыдущими рыночными ценами существует линейная зависимость. При этом коэффициенты автокорреляции положительные. Все это говорит о том, что мы как бы имеет постоянный восходящий тренд. Значит теоретически обычная линейная авто-регрессионная модель (о ней можно прочитать в интернете, ничего сложного нет) должна неплохо работать? Но что такое авто-регрессионная модель по сути? По сути это уравнение прямой линии, которое «описывает» наши данные с некоторой «точностью». Точность мы задаем через какой-то критерий, скажем минимизируем ошибку квадрата отклонений истинного значения от прямой. Построенная линейная МП будет тупо продолжать тренд в будущее… но (!) ведь относительно этого тренда рыночные цены могут отклоняться как угодно сильно… И этого такая модель учесть не сможет! Значит построить торговую стратегию не получится.

И тут я решил проверить, а не связаны ли между собой линейно отклонения логарифмов рыночных цен? Ведь нас в идеале интересует куда пойдет цена, вверх или вниз и насколько сильно? Проверил. Вот графики:

acdeudgjd

Никакой связи не наблюдается, а также трендов и цикличности.

Подходят ли линейные модели для порогового прогнозирования? Вряд ли. Также вряд ли возможно точечное прогнозирование с приемлемой точностью по исходным данным. Вообще для точечного и порогового прогнозирования применяют разные нелинейные модели, включая нейронные сети. Однако результатов, которые были бы приемлемы для построения торговой системы я не видел.

Нужен другой подход. И этот подход я буду разрабатывать и описывать в этом блоге в следующей статье.

Похожие статьи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *