Есть ли закономерность в хаосе? Попробуем поискать! Машинное обучение на примере конкретной выборки. - страница 27

 
Aleksey Vyazmikin #:

В экселе счет идет с единицы, а в CatBoost и mql (да и других языках) с нуля.

Т.е., как я понимаю, вы взяли просто последний столбец, сделали массив накопительный, получился как бы график. Допустим. Создали какие то предикторы по этим данным. А целевая следующее значение этого ряда, или изначального т.е. дельта? Т.е. регрессионная модель, дающая результат условно (+x||-x), и если +x, то входим в сделку, правильно?

Я попробую дать данные по этим последним столбцам, но чуть позже - с того времени были внесены некоторые изменения мной в код, потом они были утрачены и все снова переработано - тяжелый случай.

Всё верно! Из графика формируется целевая. Потом под эту целевую через генетику "подгоняется" всего один индюшок - осциллятор. Осциллятор используется как предиктор и он же целевая (следующий шаг его). Ну а далее если следующий предсказанный шаг целевой вниз, то продаём, если вверх, то покупаем. Вот и весь простой алгоритм. Тейка нет, т.к. профит только по обратному сигналу. А стоп вычисляется по всем отрицательным сделкам на выборке train через статистический подход (5 сигм средней отрицательных сделок), но в показанных выше картинках стоп обнулён для ужесточения.

 
RomFil #:

Всё равно не понял ... :( Какие сделки, какая разметка?

Подход по торговле следующий:

1) Есть движение цены (график Close, ну например битка). На график для наглядности нанесён мувинг с периодом 9 и сдвигом -2.

2) Торговля с описанным выше подходом подразумевает сигналы по продаже, либо покупке актива без привязки к лоту. В один момент времени на активе одна сделка.

3) Если сделка дала профит, то в итого записывается +А количество пунктов, в противном случае -А.

4) Таким образом и формируется доход в пунктах.

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

Все решается в десятки раз проще. Время есть время. 
 
RomFil #:

Всё верно! Из графика формируется целевая. Потом под эту целевую через генетику "подгоняется" всего один индюшок - осциллятор. Осциллятор используется как предиктор и он же целевая (следующий шаг его). Ну а далее если следующий предсказанный шаг целевой вниз, то продаём, если вверх, то покупаем. Вот и весь простой алгоритм. Тейка нет, т.к. профит только по обратному сигналу. А стоп вычисляется по всем отрицательным сделкам на выборке train через статистический подход (5 сигм средней отрицательных сделок), но в показанных выше картинках стоп обнулён для ужесточения.

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

Попробуйте по двум - последнему - для продаж и предпоследнему - покупок. При этом столбец Target_P должен стать фильтром - если +1 и сигал на покупку, то осуществляем его, иначе пропускаем вход, так же и для продажи - -1.

Если график в плюс, то восхищусь.

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

 
Aleksey Vyazmikin #:

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

Попробуйте по двум - последнему - для продаж и предпоследнему - покупок. При этом столбец Target_P должен стать фильтром - если +1 и сигал на покупку, то осуществляем его, иначе пропускаем вход, так же и для продажи - -1.

Если график в плюс, то восхищусь.

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

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

Есть предложение сделать какие-нибудь новые выборки. Хоть "хаос", хоть какой-либо реальный инструмент. Досточно две выборки: (1) трейн и (2) тест. глубина выборки трейн от 10к значений. Хотя кому что надо ... :)

С уважением, RomFil.

 
RomFil #:

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

Есть предложение сделать какие-нибудь новые выборки. Хоть "хаос", хоть какой-либо реальный инструмент. Досточно две выборки: (1) трейн и (2) тест. глубина выборки трейн от 10к значений. Хотя кому что надо ... :)

С уважением, RomFil.

Можете сбросить тогда результаты классификации на каждой выборке по отдельности?

Я просто хочу понять, как полученный результат можно применять. Пока представление такое - что входить надо без стоп лоссов и может результат сойдется.

А что за осциллятор - расскажите?

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

 
Aleksey Vyazmikin #:

Можете сбросить тогда результаты классификации на каждой выборке по отдельности?

Я просто хочу понять, как полученный результат можно применять. Пока представление такое - что входить надо без стоп лоссов и может результат сойдется.

А что за осциллятор - расскажите?

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

Осциллятор может быть любым! Основная задача любого осциллятора преобразование графика в другой график, но с заранее известной амплитудой. Я использую свой самописный, но это не главное. 

Выборка может быть любой! Можно и без результата.

Однако только что сам попробовал обычный рандомный генератор от 0 до 1 и ... НЕПОЛУЧИЛОСЬ использовать подход!!! 

Причину уже определил, это очень зашумлённые данные. Однако и из этой ситуации есть выход! Повышать таймфрем выборки! Если выборка убыточна, то делаем из неё М2, снова проверяем. Если снова убыточная, то М3 и т.д.


P.S. Хотя из 10 раз проверки один раз не получилось только ... :) И то отрицательный результат был после обучения комитета нейросетей на трейновой выборке. При таком результате можно вообще говорить, что выборка совсем не предсказуема.

 
RomFil #:

Осциллятор может быть любым! Основная задача любого осциллятора преобразование графика в другой график, но с заранее известной амплитудой. Я использую свой самописный, но это не главное. 

Выборка может быть любой! Можно и без результата.

Однако только что сам попробовал обычный рандомный генератор от 0 до 1 и ... НЕПОЛУЧИЛОСЬ использовать подход!!! 

Причину уже определил, это очень зашумлённые данные. Однако и из этой ситуации есть выход! Повышать таймфрем выборки! Если выборка убыточна, то делаем из неё М2, снова проверяем. Если снова убыточная, то М3 и т.д.


P.S. Хотя из 10 раз проверки один раз не получилось только ... :) И то отрицательный результат был после обучения комитета нейросетей на трейновой выборке. При таком результате можно вообще говорить, что выборка совсем не предсказуема.

Ну, любым, конечно он быть может, но не каждый будет эффективен.

Прикладываю файл с разметкой, аналогичной той, что Вы уже обучались - проверьте на нем модель.

И, я не совсем понимаю, ждать размеченный файл прогнозом Вашей модели или нет?

Файлы:
New_data.zip  21 kb
 
Aleksey Vyazmikin #:

Ну, любым, конечно он быть может, но не каждый будет эффективен.

Прикладываю файл с разметкой, аналогичной той, что Вы уже обучались - проверьте на нем модель.

И, я не совсем понимаю, ждать размеченный файл прогнозом Вашей модели или нет?

Хочу уточнить " размеченный файл прогнозом" - это сделать новый столбец и там указать на каком шаге бай, на каком селл?

 
RomFil #:

Хочу уточнить " размеченный файл прогнозом" - это сделать новый столбец и там указать на каком шаге бай, на каком селл?

Ну да, думаю так.

Можно только этот столбец и прислать - остальное не надо. Ну и дату - для контроля синхронизации.
 
Aleksey Vyazmikin #:

Ну да, думаю так.

Можно только этот столбец и прислать - остальное не надо. Ну и дату - для контроля синхронизации.

Добавил столбец: "1" бай, "-1" селл. Открытие сделки в случае смены сигнала на противоположный. Вроде правильно сделал, но проверять не стал ... :) Лень.

По графику без спреда и комиссии вот такой результат в пунктах:

Результаты: PR=157488 +trades=778 -trades=18 (профит, количество положительных и отрицательных трейдов)

Cпред в 0.00050:


Результаты: PR=117688 +trades=629 -trades=167 

Cпред в 0.00100:

PR=77888 +trades=427 -trades=369

Спред в 200:


PR=-1712 +trades=241 -trades=555

Файлы: