Нашёл в tensorflow-js то что нужно для первых шагов в ML и трейдинге.
Это dqn обучение, когда агенту выдаются награды и штрафы за действия.
https://github.com/tensorflow/tfjs-examples/tree/master/snake-dqn
https://storage.googleapis.com/tfjs-examples/snake-dqn/index.html
Получается у нас есть змейка, которая обучается на собственном опыте двигаться. У неё есть определённое количество ход (повернуть или продолжить) и её задача добраться до фруктов. Изначально змейка ничего не умеет но по ходу обучения она обретает возможности находить фрукты и уворачиваться. Очень похоже на трейдинг, не правда ли?
Ну, как минимум для нашей задачи, когда у нас бегут данные, а роботу нужно принять решение покупать или продавать.
Минус змейки в том, что он написан для node.js, а нам нужно уметь возможность обучать в браузере (чтобы любой пользователь мог это делать). Поэтому это же нужно было завести на клиенте.
Затаoщил змейку как есть к себе на страницу с графиком и попытался запустить. Не тут-то было!
Змейка всячески сопротивлялась,
сначала пакеты,
потом аргументы. (кстати ещё и пуллреквест рядом сделал с фиксом https://github.com/tensorflow/tfjs-examples/pull/353),
потом %%Unhandled Rejection (TypeError): Cannot call a class as a function%%. Который чинится здесь https://github.com/tensorflow/tfjs/pull/3906/files, но т.к. релиза ещё нет то пришлось руками подставить. Вот здесь кстати проблема у многих возникает https://github.com/tensorflow/tfjs/issues/3384.
Дальше уже пошли миноры вроде подмены работы с fs на indexeddb. Работу с которой подсмотрел здесь, кстати. Ну и вообще cart-pole изначально вдохновил сделать всё на клиенте.
https://github.com/tensorflow/tfjs-examples/tree/master/cart-pole
https://storage.googleapis.com/tfjs-examples/cart-pole/dist/index.html
в итоге вот что получилось:
https://github.com/pskucherov/opexflow/pull/16/files
Ну и всё собственно, следующим этапом будут:
- Приладить к графикам
- Визуализация
- Обучить робота на известных данных показать максимальный результат
Ниже на видео демка работы-обучения роботов на клиенте. Когда-нибудь они так же будут торговать фьючерсами сбербанка вместо меня.Если вам понравилась статья, то подписывайтесь на мой телеграм канал.