Робастная модель прогнозирования рыночных тенденций. Оценки Тейла

Сегодня я рассмотрю робастную модель прогнозирования рыночных тенденций на основе оценок Тейла.

Напомню, что в предыдущий раз я протестировал НМП ВРТ, которая имеет вид:

si+1=-si.                 (1)

Переписав данное уравнение (1) в виде

si+1=a*si+b,        (2)

Получим общий вид линейной модели парной авторегрессии, из которой при коэффициентах a=-1 и b=0 получается НМП ВРТ (1).

Как я уже отмечал ранее, любую более сложную модель при определённых значениях параметров можно свести к НМП. Если рассуждать в обратном направлении, то уравнение (2) при коэффициентах a≠-1 и b≠0 – есть «усложнённая» НМП, которая в науке и называется линейная модель парной авторегрессии (ЛМПА).

По результатам экспериментов НМП (1) показала посредственные результаты. Точность НМП весьма низкая. Вообще приемлемая точность (PL>50%) достигается при небольших значениях порога d. А нам нужно, чтобы значение d было как можно больше и в тоже время точность была как можно выше! Точный прогноз слабых тенденций не даст профит. Только на точном прогнозировании более-менее «значимых» тенденций возможно построить адекватную торговую стратегию.

Возникает вопрос: быть может при других коэффициентах a и b точность прогнозирования по модели (2) будет выше?

В пользу этого предположения – прошлые результаты проверки на линейную связь между значениями ВРТ.

Как найти «наилучшие» оценки значений параметров a и b? То есть такие оценки, при которых истинное значение si будет минимально отличаться от прогнозного?

Существует метод оценки параметров a и b, который называется метод наименьших квадратовНо он хорошо работает только для ВР, значения которых распределены по нормальному закону. Это важное требование и у нас оно не выполняется! Значит необходимо искать непараметрический аналог. И такой аналог есть и даже не один. Такие методы называются робастные – устойчивые к отклонениям случайных величин от нормального закона распределения.

Я выбрал метод оценок Тейла. Он прост и понятен. А также обладает высокой степенью достоверности.

Метод заключается в следующем (рассмотрим его применительно к ВРТ).

Для всех пар значений ВРТ (si,si+1), где i=1,…,n-1 рассчитываются:

aji=(si+1-sj+1)/(si-sj),                          (3)

при этом i<j, I,j=1,…,n-1.

Все повторяющиеся значения si в S={s1,…,sn} следует исключить. Хотя бы потому, что знаменатель (3) будет обращаться в 0.

Тогда оценка коэффициента a рассчитывается:

a=median(aij).                                  (4)

А оценка коэффициента b:

b=median(si+1-si·a)                         (5)

median – это медиана, рассчитанная по полученным значениям значений.

Вот и все!

Я оценил коэффициенты a и b для ВРТ, полученных по данным EUR/USD, GBP/JPY, AUD/CAD.

Получились следующие значения:

EUR/USD: a=-0.624, b=-7.7e-05
GBP/JPY: a=-0.662, b=4.7e-3
AUD/CAD: a=-0.682, b=8.12e-6

Коэффициенты b в некотором роде характеризуют систематический сдвиг среднего значения ВРТ с течением времени. Ранее я показал, что ВРТ стационарен и этого сдвига нет. Потому и значения коэффициентов b получились крайне маленькими, практически равными 0. ими можно пренебречь.

А вот коэффициенты a где-то около -0.6, что отличается на 40% от -1 (как это было в наивной модели).

Пожалуй, можно было бы уже протестировать такую МП… но наука говорит о том, что, прежде всего, необходимо проверить значимость коэффициента a. То есть проверить гипотезу H0: a=0. Если гипотеза истина, то вся линейная связь только кажущаяся и полученная МП не имеет с реальностью ничего общего.

Как проверить значимость коэффициента a, оцененного по методу Тейла? Об этом я напишу в следующий раз.

А в заключение код на языке R, позволяющий оценить коэффициенты парной линейной авторегрессии по Тейлу (ввиде функции).

#Оценка коэффициентов методом Тейла
 getabV<-function(V)
 {
 lenV<-length(V)
 #Ограничения применимости
 if (lenV==0) {return(0)}
 V1<-V[-lenV]
 V2<-V[-1]
 aV<-NULL
 for(i in 1:(lenV-1))
 {
 aV<-c(aV,diff(V2,i)/diff(V1,i))
 }
 #Исключение всех неопределенностей
 aV<-aV[is.finite(aV)]
 #Расчет коэффициентов
 a<-median(aV)
 b<-median(V2-a*V1)
 return(data.frame(a,b))
 }

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

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

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