Подписаться arrow_upward

Hitechrussia

Небольшие новости с полей ИИ-торговых роботов

Как я писал ранее, свою платформу по созданию торговых роботов я дорабатываю в сторону обучения нейронных сетей. 

Принцип работы обучения ИИ(конечно, это никакой не искуственный интеллект, но сокращение - емкое и удобное) примерно такой:

1. Создается простейшая нейронная сеть: сколько-то входов (допустим, данные свечей) и один выход со значением 0-100%

2. Мы указываем сети на сколько ей верить. Например - если выход выдал 65%, а уроввень доверия сети 80%, то ничего не делаем, а если выдала 82%, то уже торгуем.

3. Указываем параметры эволюции самой сети. Количество итераций обучения (по умолчанию - 5000), данные скольких свечей подается на вход сети(по умолчанию - 5), сколько потомков в каждой популяции (по дефолту 250), сколько мутаций на каждого потомка и вероятность возникновения мутации, типы мутаций, период для обучающей выборки и период для тестовой выборки.

4. Ну и сам процесс обучения.

Как устроено обучение

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

Обучающие данные (свечи, теханализ и прочее, что указывает пользователь) подаются сети на вход и каждый раз вычисляется сигнал - покупать/продавать. И так прогоняем всю сеть первый раз по данным, получая на выходе - сколько из портфеля общим весом 100% получилось на выходе. Обычно на первой итерации значение портфеля после обучения значительно меньше 1% =))) Далее - выбирается из популяции самый сильный потомок (давший самое высокое значение итогового портфеля), выбираются "элиты" - самые сильные потомки (дополнительно), выбираются случайные потомки (только для получения более случайного результата и избежать переобученности, overfitting) и происходит скрещивание 250 раз (столько, сколько потомков). Содом и гоморра, короче =))) Далее - к каждому потомку применяются мутации. Если мы указали 30 мутаций с вероятностью 20%, то на каждого потомка пытаемся применить случайную (из 14 типов) мутацию 30 раз и каждая мутация применится с шансом 20%. В итоге мы получим 250 потомков с мутациями от 1 до 30. И так 5000 раз (цифра не шибко большая, но в случаях с генетическими алгоритмами - вполне репрезентативная).

И что получается?

После 5000 итераций обычно появляется сеть, у которой на вход подается 5 свечей, с 30 мутациями на итерацию - в среднем сеть с 5-7 тыс нейронов между входом и выходом, которые в итоге формируют для сети результат с сигналом на покупку и продажу.

Я обучаю с обучающим периодом с 01.01.2010 по 31.12.2018 и тестовым периодом (том, на котором проверяем итог обучения) с 01.01.2019 по 31.12.2019. Процесс обучения на ноутбуке с 8 ядрами занимает около суток.

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

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

Самым большим прорывом для меня является то, что обучаются сети у вас на компьютерах в браузерах и не надо содержать огромный кластер серверов, чтобы обеспечивать потребности для обучения. Но надо будет еще до полного пуска проверить одно опасение: Если самого робота и ИИ обучаете вы на своем компьютере в браузере, то уже расчет сигналов у роботов с сетями делается на сервере и хранить большое количество обученных роботов на моем сервере довольно дорогое удовольствие и пока нет уверенности - потянет ли он пару сотен нейронных сетей с тысячами нейронов одновременно без покупок и аренд дополнительных серверов (но с парой сотен роботов на базе теханализа и свечных паттернов справляется легко).


Выложил пока немного наработок по обучениям сетей по ссылке.

Чтобы упомянуть другого пользователя в комментарии, введите знак @

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


Чтобы упомянуть ценную бумагу в комментарии, введите ее тикер после знака ^