Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 437

 
elibrarius:

Еще не уверен, что правильно считать похожими графики при столь сильной разности в углах наклона. На том же примере:

найденный вариант дает откат от верхней точки тренда или конец тренда, перенеся его на график шаблона он даст прогноз на продолжение спадающего тренда, а не разворот - по сути обратный сигнал. Что-то тут не то....

все верно, просто большая разница в наклонах паттернов, можно сделать ограничение поиска если наклон сильно отличается то не брать в расчет такие варианты, но если вы погоняете в тестере то он редко будет находить варианты с очень уж большой разницей в наклонах, это говорит о том что при определенном пределе это уже будет действительно не падающий а растущий паттерн ну и другая в нем структура будет совершенно с низкой корреляцией к текущему, поэтому такие никогда в результаты не попадают
 
Maxim Dmitrievsky:
все верно, просто большая разница в наклонах паттернов, можно сделать ограничение поиска если наклон сильно отличается то не брать в расчет такие варианты, но если вы погоняете в тестере то он редко будет находить варианты с очень уж большой разницей в наклонах, это говорит о том что при определенном пределе это уже будет действительно не падающий а растущий паттерн ну и другая в нем структура будет совершенно с низкой корреляцией к текущему

ну градусов 10-15 (на глаз) куда уж меньше? И лучше ничего не находить, чем ложный сигнал.

ПС. измерил в фотошопе - 18 градусов

 
elibrarius:
ну градусов 10-15 (на глаз) куда уж меньше? И лучше ничего не находить, чем ложный сигнал.


да он даже при идеальном совпадении в 50% не в ту сторону прогнозирует )

И кстати да, прогнозная кривая вообще не правильно считается здесь, где-то я лиханул.. а старый вариант посеял

 
Maxim Dmitrievsky:

да он даже при идеальном совпадении в 50% не в ту сторону прогнозирует )

потому-что по одному варианту прогноз строите, с сотни похожих достоверность прогноза была бы больше. Но средний прогноз будет нулевой ))

И по одному плохо и по многим плохо. Надо эту задачу оптимизатору скормить.

 
elibrarius:

потому-что по одной линии прогноз строите, с сотни похожих достоверность прогноза была бы больше. Но средний прогноз будет нулевой ))

И по одному плохо и по многим плохо. Надо эту задачу оптимизатору скормить.


Да, но сначала переделать что бы рпогноз правильно считал, он реально не должен так линии вытягивать, че попало делает.. направление только правильно показывает )

но это все фигня через корреляцию в любом случае, потому и забросил..

 
Maxim Dmitrievsky:

Как минииум нужно делать аффинные преобразования чартов, потомоу что паттерны идут под разными углами наклонов (самоаффинные структуры), во вторых поиск на разных тф. Но все это не спасает когда используется корреляция, - очень не похожие паттерны находит.

Если главная проблема в корреляции то, что "очень не похожие паттерны находит", - то можно просто ужесточить требования по допустимой ошибке и будут находиться только очень похожие. Но это будет происходить не на каждом баре, а иногда (раз в несколько часов, как в вашем эксперте с углом наклона). Допустимую ошибку опять же подберет оптимизатор.
К тому же в моем варианте считается не непосредственно корреляция Пирсона, как у вас, а суммарная ошибка (с отсевом по макс. допустимой ошибке на каждом баре). При этом находятся наверняка, самые коррелируемые к шаблону варианты, потому я и сравнил это с корреляцией.

 
Dr. Trader:

Допустим есть два массива цен, в каждом по 5 цен
первый a1,a2,a3,a4,a5
второй b1,b2,b3,b4,b5

1) график цен можно детрендировать, т.е. из некоего повёрнутого расположения расположить его горизонтально. Это можно сделать с линейной регрессией - найти её, и использовать массив ошибок вместо оригинального ряда цен. Поможет ли этот шаг при поиске паттернов я не знаю, детально я не изучал его влияние. Пока что этот шаг сам не использую.

2) Ряд цен спорно называть паттерном; должно быть некое математическое описание фигуры которую образуют эти цены. Например можно найти прирост цены на каждом баре, и эти приросты уже использовать как некое описание паттерна.
первый паттерн получится по формуле a5-a4, a4-a3, a3-a2, a2-a1
второй - b5-b4, b4-b3, b3-b2, b2-b1

3) "похожесть" паттернов - либо корреляция (сам не проверял), либо декартово расстояние по теореме пифагора (проверял, сработало непллохо) -
sqrt(  ((a5-a4)-(b5-b4))^2 + ((a4-a3)-(b4-b3))^2 + ((a3-a2)-(b3-b2))^2 + ((a2-a1)-(b2-b1))^2 )
ну или что-то ещё, я думаю должны быть и варианты получше.

1. Вы это делаете - увеличивая допустимую ошибку при углублении в историю.

2. Расчет ошибки в лоб (сумма абс. значений  дельт на каждом баре) Графики предварительно должны быть сведены по нулевому бару.
Abs(a5-b5)+ abs(a4-b4)+abs(a3-b3)+abs(a2-b2)+abs(a1-b2)

Расчет ошибки по вашему варианту
abs((a5-a4)-(b5-b4))+abs((a4-a3)-(b4-b3)+....
преобразуем 1-й элемент
abs((a5-a4)-(b5-b4)) = abs((a5-b5)+(b4-a4)) -

(a5-b5)+(b4-a4) = дельта 5 + ( - дельта 4), это похоже на сумму дельт, т.е. ошибок. Но это не сумма абс. значений дельт, а просто сумма, причем дельт с разным знаком! Если ошибки на соседних барах с одинаковым знаком, то они компенсируют друг друга (за счет того, что вторая дельта со знаком минус). Даже огромная ошибка +1000пт и +1000пт сведется к нулю в вашей формуле. И она отметит как похожие, график с выбросом в +1000 пт на 2-х барах. Хотя на следущем элементе, будет посчитан только 1 из этих выбросов и полученная ошибка отсеет этот вариант.
Но все равно такая ф-я расчета ошибки может пропустить как похожий вариант,  такой ряд с дельтами: 0, +10, +15,+12,+5. Ваша формула такой комбинации даст меньшую ошибку (25пт), чем просто сумма абс. значений дельт на каждом баре (42 пт).

3. Тут та же формула, что и в п. 2 с теми же недостатками.

 
elibrarius:

Самый простой - пошагово смещаем окно шириной в искомый пример по всей последовательности и находим сумму абс. значений дельт:

0,0,0 и 1,2,3 ошибка = (1-0)+(2-0)+(3-0)=6

0,0,1 и 1,2,3 ошибка = (1-0)+(2-0)+(3-1)=5

0,1,2 и 1,2,3 ошибка = (1-0)+(2-1)+(3-2)=3

1,2,3 и 1,2,3 ошибка = (1-1)+(2-2)+ (3-3) =0

2,3,1 и 1,2,3 ошибка = (2-1)+(3-2)+Abs(1-3) = 4

Где минимальная ошибка - там и максимальная похожесть.


А свертка это тоже самое только вместо сложения и модуля одно умножение и выбирается максимум, это быстрее

0,0,0 и 1,2,3 ошибка = 0*1+0*2+0*3 = 0  

 
Женя:

А свертка это тоже самое только вместо сложения и модуля одно умножение и выбирается максимум, это быстрее

0,0,0 и 1,2,3 ошибка = 0*1+0*2+0*3 = 0  

Крутой у вас процессор! ))
А мой по старинке складывает и вычитает быстрее, чем умножает, и модуль находит просто приравниванием 64-го бита нулю.
 
elibrarius:

3. Тут та же формула, что и в п. 2 с теми же недостатками.


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

Причина обращения: