day0markets.ru
day0markets.ru личный блог
22 июля 2019, 21:36

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

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


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

Часть, которая завязана на принятии решении, сильно упрощена, но это реально неплохая стартовая точка.
25 Комментариев
  • Schurik
    22 июля 2019, 23:28
    А вы используете подобные подходы в своей торговле? Насколько успешно?
      • Schurik
        22 июля 2019, 23:52
        day0markets,  а насколько активные стратегии у вас, основанные на обучении с подкреплением? Сколько сделок  за торговую сессию в среднем? Как часто переобучаете стратегии?
  • старый трейдер
    22 июля 2019, 23:43
    Не единственная и даже не очень хорошая, без радикальной доработки напильником. Задача специфическая, ничего готового нет, к сожалению (точнее — к счастью).
    • (1:10) || algo
      23 июля 2019, 10:10
      старый трейдер, укажите известные вам альтернативы
      • старый трейдер
        23 июля 2019, 13:24
        кукловедофилофоб, вижу, что национальная любовь к отдаче приказов вас не миновала, но подскажу, что за основу для переделки можно взять чуть ли не любую нейронку, в крайнем случае — даже старинных, досверточных времен. Все зависит от головы, сетка — лишь средство.
  • П М
    23 июля 2019, 12:07
    давным давно купил в книжном в питере (лиговский?) сильно потрёпаную книгу, даже выпросил скидку :)  — с очень широким охватом инструментов анализа рынка. 
    таким, научным достаточно, дотошным и без воды.
    там был раздел и про мультиагентное моделирование.
    код как раз похож по философии, если я правильно понимаю, на это.
    но среды в коде не видно, а это кмк самое главное:
    написать среду взаимодействия агентов, с вознаграждениями и штрафами.

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

    такие вещи всегда очень интересны. но в части представления и визуализации мне в последнее время лень что-то делать. хотя лет 20 назад я с этого и начинал. может старые воспоминания про сложности тех лет и мешают.
      • П М
        23 июля 2019, 16:12
        day0markets, я их за отказ от торговли штрафую :)
    • Максим Я
      23 июля 2019, 18:17
      ПBМ, а можно название книги?
  • Максим Я
    23 июля 2019, 18:58
    есть какой-нить краткий туториал, чтобы войти в тему?
  • Чёрный Трейдер
    23 июля 2019, 20:08
    За ссылку спасибо, почитаем. Что ещё посоветуете по RL на эту тему?
  • semen74
    31 июля 2019, 17:09

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

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


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

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



      • semen74
        31 июля 2019, 17:53

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

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

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

  • Arr Tarr
    02 августа 2019, 23:20
    там в первом же Turtle Trading Agent ошибка в def buy_stock(....
    в итоговом результате не учитывается остаток акций на балансе после всех сделок. Получается неправильный расчет итога инвестиций total gains и total investment

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн