Блог им. diamante

Обучение с подкреплением (код)

Интересный код, для тех, кто в теме.


Это подборка различных RL алгоритмов в реализации для трейдинга. Если пишете свой алго, возможно, тут есть что позаимствовать. Код, понятное дело, на Python.  Для тех, кто не знает, что такое reinforcement learning — погуглите, это действительно крутая штука. Имхо, это единственная технология machine learning, которая может дать что-то стоящее в трейдинге. Порог входа достаточно серьезный, но дорогу осилит идущий:)

Часть, которая завязана на принятии решении, сильно упрощена, но это реально неплохая стартовая точка.
★61
25 комментариев
А вы используете подобные подходы в своей торговле? Насколько успешно?
avatar
Schurik, да, кое-что из этих алгоритмов использую в достаточно сильно модифицированном виде.
avatar
day0markets,  а насколько активные стратегии у вас, основанные на обучении с подкреплением? Сколько сделок  за торговую сессию в среднем? Как часто переобучаете стратегии?
avatar
Schurik, в день до 400 сделок, но по разным тикерам. Речь в данном контексте идет не о переобучение, а о доп обучение на свежих данных. Примерно, раз в несколько месяцев дообучаю системы.
avatar
Не единственная и даже не очень хорошая, без радикальной доработки напильником. Задача специфическая, ничего готового нет, к сожалению (точнее — к счастью).
старый трейдер, укажите известные вам альтернативы
avatar
кукловедофилофоб, вижу, что национальная любовь к отдаче приказов вас не миновала, но подскажу, что за основу для переделки можно взять чуть ли не любую нейронку, в крайнем случае — даже старинных, досверточных времен. Все зависит от головы, сетка — лишь средство.
давным давно купил в книжном в питере (лиговский?) сильно потрёпаную книгу, даже выпросил скидку :)  — с очень широким охватом инструментов анализа рынка. 
таким, научным достаточно, дотошным и без воды.
там был раздел и про мультиагентное моделирование.
код как раз похож по философии, если я правильно понимаю, на это.
но среды в коде не видно, а это кмк самое главное:
написать среду взаимодействия агентов, с вознаграждениями и штрафами.

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

такие вещи всегда очень интересны. но в части представления и визуализации мне в последнее время лень что-то делать. хотя лет 20 назад я с этого и начинал. может старые воспоминания про сложности тех лет и мешают.
avatar
ПBМ, в этом коде среда упрощена. в общем-то моделирование среды, reward function — основные задачи. результаты очень сильно зависят от модели вознаграждения. если брать чистый return, то агенты часто выбирают поведение вообще не торговать:)
avatar
day0markets, я их за отказ от торговли штрафую :)
avatar
ПBМ, а можно название книги?
avatar
cyb650, ей наверное лет 10 или около того, уже думаю не совсем актуальна. книги нет под рукой, оставил у родителей
вот
https://smart-lab.ru/blog/reviews/326309.php#comment5683454
avatar
ПBМ, спасибо, скачал пдф, полистаю на досуге.
avatar
cyb650, вот ещё нагуглил по теме, наверное есть и ещё
https://www.dissercat.com/content/imitatsionnoe-modelirovanie-rynka-tsennykh-bumag-na-osnove-multiagentnogo-podkhoda
avatar
есть какой-нить краткий туториал, чтобы войти в тему?
avatar
cyb650, совсем краткого нету.
Но вот статья, совсем простая. С мотивирующими картинками для изучения ML :)
https://www.analyticsvidhya.com/blog/2018/10/predicting-stock-price-machine-learningnd-deep-learning-techniques-python/





Чёрный Трейдер, что-то картинка слишком радужная. проверяли?
avatar

cyb650, проверял, конечно :)

картинка, конечно, основана на сильно подогнанной модели, но некий смысл в ней есть.

cyb650, краткого туториала нет. вот это можете для начала посмотреть
avatar
За ссылку спасибо, почитаем. Что ещё посоветуете по RL на эту тему?

Чёрный Трейдер, http://incompleteideas.net/book/the-book-2nd.html

на udemy и udacity есть кое-что по теме.

avatar

Я пол года убил на RL — вместо самописных алгоритмов лучше взять фреймворк типа tensorforce

У меня выходит, что она осваивает очень простые паттерны — типа цена вниз — купили, цена вверх — продал, о чем примерно и говорит эта картинка по ссылке


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

Мои результаты примерно такие же:



avatar
semen74, вы в качестве actions брали buy/sell/hold? а учить пробовали только на одном инструменте? ну и вопрос, конечно, какая модель вознаграждения.
исходя из моего опыта — очень плохо учиться, если брать в качестве вознаграждения чисто return. Кстати, с играми дело зачастую обстоит немного по другому. Там есть знания агента о среде намного более полные, чем в случае трейдинга.
avatar

day0markets, функция обучения PPO

в качестве целевой фунции — да, изменение equity, так как пробовал комбинации и остановился на этой. я не говорю, что она не учится, она учится чему-то очень простому. если дать ей специально зашумленную утечку будущего (+цену с random) — моментально это ухватывает и торгует как бог :)
а качестве action пробывал все что угодно
buy+1, sell-1,close_all,hold,full_long,full_short и комбинации этих вариантов от простого к сложному.

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

avatar
там в первом же Turtle Trading Agent ошибка в def buy_stock(....
в итоговом результате не учитывается остаток акций на балансе после всех сделок. Получается неправильный расчет итога инвестиций total gains и total investment
avatar

теги блога day0markets.ru

....все тэги



UPDONW
Новый дизайн