Нейросети и трейдинг. Часть 3: прогнозируем биток на 1 час вперед

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В прошлой статье была попытка показать весь процесс обучения, отбора и тестирования моделей на торговой паре EUR/USD. В Google Colab работала схема: обучаем модели->тестируем->рисуем на графике. Попытка оказалась неудачной. Стремление не тащить в Colab тонну кода, а максимально все упростить привело к очень низкому качеству обучения. Сигналы выглядели неубедительно и кучковались в очевидных местах.

С тех пор утекло много воды, исследования продолжались. Об этом и расскажу + очередной Colab, на этот раз проще и нагляднее.

Двигаемся дальше

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

В прошлой статье об этом было подробно, а здесь просто напомню, что нейросеть отвечает на вопрос куда пойдет цена "вверх" или "вниз" и не отвечает на вопрос насколько сильно будет движение. Ответ бинарный: 1 - вверх, 0 - вниз. Т.е. если после опроса вернулся ответ [0.8, 0.2] это значит "пойдет вверх", а [0.4, 0.6] "наверно пойдет вниз, но это не точно". Разница внутри этих бинарных ответов характеризует степень уверенности сети, +0.6 в первом случае и -0.2 во втором. Чем больше эта разница стремится к 1 (или -1), тем выше качество прогноза.

"Степень уверенности" при которой ответ можно считать сигналом, индивидуальна для каждой модели и определяется при прогоне на тестовых данных. Более того, этот порог различен для сигналов "вверх" и "вниз". Модели, которые будут загружены в колаб, имеют название файла типа BTCUSD_M6_0.66_0.75.h5
Последние два значения и есть эти лимиты. Перед опросом модели из ее названия вынимаются значения срабатывания и сравниваются с ее ответом.

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

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

Когда эта задачка решилась, возникла необходимость всю эту красоту нарисовать и выставить напоказ. Сегодня браузер является самым массовым средством доставки. Беру открытую библиотеку которая рисует свечи а-ля TradingView, добавляю туда свои сигналы, быстро все это собираю "на коленке" и готово... таков был первоначальный наивный план. На практике, после питона вникать в JavaScript + Vue + NodeJS оказалось погружением в ад. В итоге, сайт заработал, но тормозит и периодически подвисает, зато график BTC/USD на свечах 5m похож на новогоднюю елку.

Google Colab

В колабе к этой статье будет следующее:

  1. установим/подключим все нужные библиотеки

  2. загрузим уже обученные модели

  3. скачаем данные по паре BTC/USD за последние две недели, в данных будет время, цена и вектор для опроса моделей (подробнее было в предыдущей статье).

  4. нарисуем графики с прогнозами, каждый прогноз на, примерно, 1 час вперед.

"Муть какая-то..." скажет внимательный читатель. "Ты даешь нам готовые модели + данные из истории. А может модели переобучены на этих данных? Поэтому и прогнозируют".

Читатель был бы прав если бы не одно "но". Модели не меняются, а вот данные подгружаются с биржи самые последние разбитые на свечи 6м, т.е. каждые 6 минут добавляется новый блок данных, всего 3000 блоков. Через сутки график обновится примерно на 10%, а через две недели на 100%. Последний раздел колаба дает возможность скачать архив моделей. Потом архив можно вернуть обратно и проверить результат спустя сутки или более.

Google Colab можно найти по этой ссылке. Не забудьте сначала залогиниться в свою учетную запись на Google (или Gmail).

Копируйте «ноутбук» себе.

Если выпрыгнет предупреждение типа
Warning: This notebook was not authored by Google
соглашайтесь и продолжайте, никакие данные не собираются, весь код открыт.

Теперь нужно последовательно запускать блоки сверху вниз...
На этом все.

P.S. Не пытайтесь заработать на реальном рынке, 97% начинающих теряют депозит. Цель исследования - решить интересную задачу.

Источник: https://habr.com/ru/post/562092/


Интересные статьи

Интересные статьи

Всем привет!Меня зовут Борис. Я AQA iOS-engineer в Vivid Money.Это вступительная статья, в цикле статей по iOS-автоматизации, в которых хочется рассказать о пользе ui-тес...
Можно представить себе redux-saga (middleware) как администратора камер хранения. В камеры хранения можно класть эффекты на неопределенный срок и забирать их от...
Сейчас занимаюсь разработкой калькулятора для печатных плат и изучаю расчетные модели, которые стоят за табличными формулами. Добрался до волнового сопротивления микрополосковой линии...
Вступление В процессе выбора решений для умного дома я стараюсь обходить коробочные решения, требующие наличие связи с внешними облаками или имеющие собственные приложения, особенно решения без ...
Доброго времени суток, Хабр. Сегодня я решил представить вам перевод цикла статей для подготовки к Spring Professional Certification. Это перевод только первой статьи, если он зайдет аудитории,...