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

 
elibrarius:
Заработало, спасибо! Интересно у вас получилось...
Он ищет 1 самый похожий вариант или усредняет по нескольким? Судя по всему находит 1 лучший. Мне кажется надо по 10 или даже по 100 вариантам искать средний прогноз (точное число должен определить оптимизатор).

Да, здесь он показывает 1 лучший, не заморачивался со многими вариантами, можете попробовать переделать, если разберетесь в моей писанине )
 
Dr. Trader:

У меня нейронка так и не смогла научиться торговать в прибыль используя просто цены. А паттерновая модель смогла, тут выбор очевиден :)

Одно дело отыскать "паттерн", но совсем другое дело чтобы это дало статистическое преимущество. ИМХО очень почему то сомневаюсь. На самом деле поиск паттернов сверткой(произведение, разность) по всей длине исторического ряда с усреднением, это всё равно что делать регрессию в НС с ОДНИМ НЕЙРОНОМ, то есть простейшая линейная модель, с крайне тупыми признаками, кусок цены как есть.

 
Женя:

Одно дело отыскать "паттерн", но совсем другое дело чтобы это дало статистическое преимущество. ИМХО очень почему то сомневаюсь. На самом деле поиск паттернов сверткой(произведение, разность) по всей длине исторического ряда с усреднением, это всё равно что делать регрессию в НС с ОДНИМ НЕЙРОНОМ, то есть простейшая линейная модель, с крайне тупыми признаками, кусок цены как есть.

Если это и один нейрон, то с количеством входов равным длине шаблона, (шаблон из 30 баров = 30 входов НСб из 500 баров = 500 входов НС).

На мой взгляд множество нейронов во внутренних слоях НС - это аналогия памяти, 10 - 50 -100 доп. нейронов - это соответственно 10 - 50 - 100 запомненных вариантов входных сигналов. А сравнивая шаблон с 375000 вариантам из истории (М1 за год), мы имеем абсолютно точную  и полную память, а не 10 -50- 100 самых часто встречающихся вариантов. Далее из этой памяти шаблоноискатель выявляет N самых похожих результатов и получает усредненный прогноз, нейросеть же с каждым похожим шаблоном увеличивает веса связей между нейронами.

Еще неясно зачем применять свертку, предполагаю, что вы предлагаете делать свертку искомого шаблона с каждым вариантом из истории, как итог получим 3-ю временную последовательность - и чем она поможет определить схожесть шаблона и проверяемого варианта?
 
elibrarius:

Если это и один нейрон, то с количеством входов равным длине шаблона, (шаблон из 30 баров = 30 входов НСб из 500 баров = 500 входов НС).

Именно так.
elibrarius:
Еще неясно зачем применять свертку, предполагаю, что вы предлагаете делать свертку искомого шаблона с каждым вариантом из истории, как итог получим 3-ю временную последовательность - и чем она поможет определить схожесть шаблона и проверяемого варианта?
Сворачиваете шаблон и ряд там где экстремумы там больше всего похожий ряд был, всё просто. Например у вас есть ряд {0,0,0,1,2,3,1,1,1} и вы хотите найти в нем шаблон {1,2,3}свертка даёт {0,0,0,3,8,14,11,8, 6} (считал на глаз) 14 максимум там где "голова" нашего шаблона. Конечно желательно нормализовывать вектора(mo=0,length=1) перед сверткой иначе там где просто большие числа там будут экстремумы
 
Maxim Dmitrievsky:

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

пока смотрю на картинку, что-то не совсем то...
Вот случайный пример

Ваша синяя прогнозная линия очень круто уходит вниз, при слабом движении похожего варианта...
Вот просто в фотошопе повернул этот вариант и получилось не так круто и по идее более логично.


 
elibrarius:

пока смотрю на картинку, что-то не совсем то...
Вот случайный пример

Ваша синяя прогнозная линия очень круто уходит вниз, при слабом движении похожего варианта...
Вот просто в фотошопе повернул этот вариант и получилось не так круто и по идее более логично.


Заметили :) в определенных ситуациях он почему-то не правильно считает угол, началось это после того когда я переписал с однотаймфреймовой версии на многотаймфреймовую, и так и не отловил где косяк

Кстати, возможно, что я вообще не правильно счтитал.. не догадался фотошопом проверить. Угол между предыдущими графиками и прогнозами одинаковый ведь должен получаться

 
Женя:
Именно так.
Сворачиваете шаблон и ряд там где экстремумы там больше всего похожий ряд был, всё просто. Например у вас есть ряд {0,0,0,1,2,3,1,1,1} и вы хотите найти в нем шаблон {1,2,3}свертка даёт {0,0,0,3,8,14,11,8, 6} (считал на глаз) 14 максимум там где "голова" нашего шаблона. Конечно желательно нормализовывать вектора перед сверткой иначе там где просто большие числа там будут экстремумы

Зачем усложнять так? Зачем искать экстремум  на свертке, если можно в ряду {0,0,0,1,2,3,1,1,1} искать конкретно {1,2,3}? Кроме усложнеия и увеличения времени расчетов не вижу преимуществ.

 
elibrarius:

Зачем усложнять так? Зачем искать экстремум  на свертке, если можно в ряду {0,0,0,1,2,3,1,1,1} искать конкретно {1,2,3}? Кроме усложнеия и увеличения времени расчетов не вижу преимуществ.

Ммм... а что значит "искать конкретно"? Приведите пожалуйста пример более быстрого алгоритма чем свертка.

Две операции можно использовать длинна разности векторов и скалярное произведение, длинна разности уж поверьте мне раз так в 3-10 медленней, покомпонентная разность, возведение в квадрат, сумма, извлечение корня, а свертка перемножить и сложить

Вам нужно каждый кусочек ряда длинной 3 взять как вектор и сравнить его по "похожести" с нашим {1,2,3}

 
Женя:

Ммм... а что значит "искать конкретно"? Приведите пожалуйста пример более быстрого алгоритма чем свертка.

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

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

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


 
Maxim Dmitrievsky:

Заметили :) в определенных ситуациях он почему-то не правильно считает угол, началось это после того когда я переписал с однотаймфреймовой версии на многотаймфреймовую, и так и не отловил где косяк

Кстати, возможно, что я вообще не правильно счтитал.. не догадался фотошопом проверить. Угол между предыдущими графиками и прогнозами одинаковый ведь должен получаться

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

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

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