CloseToAlgoTrading
CloseToAlgoTrading личный блог
12 апреля 2020, 14:57

Поиск точек входа для алгоритма.

Всем привет.
Сей пост скорее поток мыслей, дабы их структурировать, пообсуждать, а возможно и идею интересную почерпнуть, :)
 
Все кто смотрел мои видюшки уже в курсе, что я тиху по малу пытаюсь прикрутить нейронные сети или мл к торговле, и построить прибыльную систему. Начал я конечно с самых азов и подхода в лоб, но как и предполагалось, ничего у не вышло. Так как весь подход построен на сетях которые обучаются с учителем, нам нужны размеченные данные. Всегда встает вопрос, как же нам получить эти метки. Чем на самом деле являются эти метки? Мне кажется слово триггер будет более правильным описанием того что происходит. Мы делаем некоторое предположение, что после некоторого события, цена пойдет в том или ином направлении, на некоторое минимально ожидаемое расстояние, с некоторой вероятностью. По большому счету мы и пытаемся узнать эту вероятность при помощи нейросетей.

Был проведен эксперемент со стратегией на двух скользящих средних. Пересечение средних — это наш триггер, если цена со 100% вероятностью дошла до минимально заданной цели то мы можем искользовать этот триггер. Далее можно посчитать всякого рода статистику, сколько прибыльных, сколько убыточных сделок. Тут никаких нейросети не нужны, посмотрели результат, увидили что ничерта не работает. :) Однако можно пойти другим путем, берем пересечение прямых, и смотрим куда после нашего триггера пошла цена, вверх или вниз, если видим некоторый перекос в результатах, скажем на истории у нас оказалось 60% прибыльных и 40% убыточных сделок, то тут есть уже над чем подумать. Встает вопрос как узнать будет ли сделка прибыльна или убыточна. Вот тут то и можно попытаться использовать нейронные сети, которые нам могут заменить сложные статистические модели. Мы же всегда работаем с предположениями и вероятностями, если мы скормили модели наши данные, и модель, не дай бог, обучилась и смогла в этих данных что то найти, то мы можем смело сказать, что у нас есть зависимость между нашими данными и результатом. Зависимость эта нам не известна, да и не нужно нам ее знать. Эдакий простой метод и не надо нам все эти заумные статистические, математические методы поиска нужного процесса.

Филосовские размышления привели меня к тому, что мне не дает покоя. Как же нам находит эти самые триггеры. Понятно, что у нас есть классические методы: пялимся на график, читаем книжки, шерстим форумы, конструируем индикаторы и тд. В общем то хотим мы найти некоторые зависимости между тем что мы видим сейчас и будущим в заданных нами рамках. Теперь собственно вопрос, который хотелось бы обсудить.

Как считаете, если на рынке случается некоторая аномалия, процесс во временном ряде изменятеся (как пример пересечение средних), будет ли это являтся хорошей точкой входа. Возможно стоит попытаться сперва решить задачу поиска аномалий во временном ряде цены, и эти точки брать как наши метки?

Правда мне не совсем понятно, как искать эти самые аномалии автоматически. Может кто уже заморачивался по такой теме? )


47 Комментариев
  • 3Qu
    12 апреля 2020, 15:10
    С вашим подходом НС ничего не найдет. НС — это всего лишь та же самая статистика, и не более того. НС может находить-выделять только статистически различимые данные. Чтобы обучить МО вы сами должны знать что же вы ищете и где конкретно это надо искать. Как написано в одной книге — МО хорошо решает только конкретные задачи.
    Для МО нужны свои методики обучения для каждого класса задач и это не проще, а сложней чем создавать индикаторные стратегии.
      • 3Qu
        12 апреля 2020, 15:30
        Denis, я делаю по другому. Берем индикаторную стратегию, с помощью нее выделяем предполагаемые участки, где возможны сделки.  На этих участках обучаем НС или деревья, или что-то еще. НС в этом случае используется как обучаемая логика для индикаторной стратегии. Экономим время и силы на написание логики. Ну, и на проверку стратегии.
        У меня на СЛ пара простеньких топиков есть по МО. Возможно там есть какая-то доп инфа.
          • 3Qu
            12 апреля 2020, 15:46
            Denis, нет, НС или МО не заменяет индикаторы. НС работает с областями ряда выделенными индикаторами, и в этих областях уже ищет что-то похожее на точки входа.
            Если там ничего нет, то НС там ничего не найдет.( Как и раньше, сама стратегия остается за вами.
              • 3Qu
                12 апреля 2020, 16:01
                Denis, 
                Я предлагаю как раз таки заменить индикатор нейросетью.
                А зачем и для чего заменять индикаторы НС?
                Тем самым вы только усложните НС, и не более того.
                Кстати, уж, — любой график показывает только то, что уже произошло, и не более того. А индикаторы нужны не для прогнозирования будущего, а для выделения из врем ряда нужной вам конкретной информации. Какой именно? — решать вам.
                  • 3Qu
                    12 апреля 2020, 19:17
                    Denis, скажем, линия регрессии — показывает направление и скорость тенденции и ее развитие во времени. Часто считают СТО относительно линии регрессии. Тогда уже по поведению ряда можно оценить, скажем, вероятность смены тенденции.
                    Обычные стат. параметры и информация.
                      • 3Qu
                        12 апреля 2020, 19:49
                        Denis, В общем, примерно так и используется. Обычные методы мат. статистики. НС, кстати, для этого не нужны. Их обычно используют для обработки уже подготовленных данных.
                          • 3Qu
                            12 апреля 2020, 20:15
                            Denis, нелинейность — это понятие из другой оперы. Она здесь ни с какого боку.
  • VladMih
    12 апреля 2020, 15:13
    Идею почерпнуть? Ловите ДВЕ:
    1. Сначала место — потом сигнал
    2. Пересечение средних — далеко не самый лучший их сигнал
    Если не отбросите эти два пункта сразу, возможно получите что надо.
      • VladMih
        12 апреля 2020, 18:24
        Denis, раз оно на первом месте (по крайней мере у меня), значит это самое сложное. В правильном месте и плохие сигналы дадут неплохой результат.

        Самый простой вариант определения места — это верх или низ тренда. Но это разворотный подход, он хуже трендового как по надежности, так и по «гарантированным» целям, и по возможностям тралить.

        Места входа в тренд надежней и выгодней,
        но их описывать НЕСОИЗМЕРИМО сложней.
        За всё надо платить… Грааль не может быть легким.
          • VladMih
            12 апреля 2020, 19:13
            Denis, я о закрытии ничего еще не говорил.
            Это отдельная сложная тема сопровождения открытой сделки, которая может улучшить характеристики робота.
            Но правильный робот может и без этого зарабатывать.
  • Игрь
    12 апреля 2020, 15:13
    Думаю, что с понедельника возможен поход на второе дно, ввиду отсутствия позитива на вирусном рынке.
  • bocha
    12 апреля 2020, 16:00
    "… построили грибоуборочный комбайн. Теперь оператору требуется только найти гриб. Остальное — дело техники" ©
  • Михаил
    12 апреля 2020, 17:00

    Тут есть два основных варианта. 

     

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

    Второй вариант по сложней. Полноценный RL, в котором сеть дает сигналы и на вход, и на выход.

      • Михаил
        12 апреля 2020, 17:28
        Denis, если вы используете сети, не нужно никакие фичи городить, поиск аномалий или иной цирк из этой области.

        Никто не придумывал фичи для RL в играх Атари, го и т.д. — им просто кормили состояние экрана, или доски и все. Никто не придумывает фичи при классификации картинок. Сети работают на сыром сигнале. В нашем случае это котировки и объемы, возможно данные о котировках и объемам других инструментов, эмбединги наименований инструментов или их качественных характеристик, если модель тренируется на нескольких инструментах. 

        Если вы идете в сторону рукопашных фичей, какой-то суровой пред обработки, то нужно смотреть в сторону классического ML, в первую очередь градиентного бустинга. 

        На мой взгляд, ваша основная проблема, что вы взяли примитивную сетку в пару слоев и надеетесь, что она вам решит достояно сложную задачу. Сети — это поиск архитектур. В случае решенных задач (классификация изображений, как пример), такой поиск занял много лет. Большинство работающих архитектур подразумевают десятки и сотни слоев, а не парочку, как у вас.
          • Михаил
            12 апреля 2020, 17:45
            Denis, я портфельный инвестор. В таком подходе вопрос ставится не об открытие или закрытии позиции, а перераспределении доли отдельных инструментов в портфеле. Если у вас есть предсказание будущей доходности, то в общем случает доли должны быть пропорциональны доходности. Если модель выдает предсказание доходности и ско, то пропорциональны доходности и обратно пропорциональны квадрату ско.
              • Михаил
                12 апреля 2020, 18:04
                Denis, не очень понял, что вы хотите сказать, кроме достаточностях общего соображения, что прогноз модели просто еще один достаточно сложный индикатор. В общем это действительно так. Потом можно по верх него построить некую метамодель, уловный стакинг и блендинг в терминах ML. 
                  • Михаил
                    12 апреля 2020, 18:47
                    Denis, не обязательно — можно сигнал и напрямую использовать, а можно и обработать. 
                      • Михаил
                        12 апреля 2020, 19:10
                        Denis, я вижу несколько проблем в вашем подходе:

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

                        Я честно сказать не очень понимаю, зачем это нужно. В сетях давно придумали Gated Units, которые позволяют реализовывать фильтрацию, Attention, чтобы агрегировать несколько разных сигналов. На мой взгляд, лучше продумать архитектуру, которая будет реализовывать ваши идеи поиска и агрегации и учить такую сеть end-to-end, а не разбивать все на кучу разрозненных этапов. 

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

                        Ну и третье, если на неком предварительном этапе вы найдете некие действительно аномалии, то видимо их будет крайне мало, а для обучения сети нужно много примеров.
                          • Михаил
                            12 апреля 2020, 19:29
                            Denis, тут объективно данные очень сложные, не даром так много об эффективности рынка говорится. Возможно в добавок вы полезли в самый сложный кусок. На тиках очень сложно чего-то найти. Насколько я понимаю, там гораздо больше работает простой арбитраж на высоких скоростях. Может поискать удачу на более протяженных таймфреймах.
                              • Михаил
                                12 апреля 2020, 19:44
                                Denis, на коротких интервалах больше шума, и больше относительные издержки. Это чисто в теории. А на практике там нужно очень быстрое исполнение, маловероятно, что ради интереса вы потянете сервер на колокейшене и весь код захотите на си и асеблере переписать. 
                                  • Михаил
                                    12 апреля 2020, 19:53
                                    Denis, ско маштабирется, как t**0.5, а доходность, как t, что дает больше шансов на длинных таймфремах. На длинных фреймах известно достаточно аномалий (value, momentum, low-vol, small-cap из наиболее сильных), чтобы гарантировано получить хоть какой-то результат.
                                    • VladMih
                                      12 апреля 2020, 20:23
                                      Михаил, «гарантировано»? Оч. интересно!
                                      Ну так соберите в кучу мелкие «гарантии» и вот вам грааль! )))

                                      Но есть непонятная хрень — сколько видел хороших роботов, почти все они работают на минутках или даже на тиках. Про HFT вообще молчу, тут длинные таймфреймы воспринимаются как анекдот. )

                                      Ребята (и вам, и Денису говорю), вам надо подружиться с логикой.
                                      Без этого в трейдинге и робовладении труба.
                                      • Михаил
                                        12 апреля 2020, 20:35
                                        VladMih, у вас сколько денег под управление, чтобы понять насколько ваши советы про логику надо слушать?
                                        • VladMih
                                          12 апреля 2020, 20:41
                                          Михаил, а вы не слушайте глупые советы,
                                          ответьте по более существенным пунктам моего комментария.
                                          Их там ДВА, они в первых двух абзацах.

                                          Отвечать будете уже не мне — себе ответьте, если сможете.
                                          • Михаил
                                            12 апреля 2020, 20:53
                                            VladMih, что конкретно вы хотите, чтобы я прокомментировал? В любом случае работающие методы сильно зависят от сумм.
                      • VladMih
                        12 апреля 2020, 19:12
                        Denis, эээээ… «Другими перепроверено»....
                        Другие уже давно делают деньги на ТА,
                        а вы смотрите на тех, кто никуя не умеет — это непродуктивно.

                        В конце концов ваши нейросети — тоже разновидность ТА. Нет?
                        Ну, раз «в сон клонит», спите дальше. Я думал вы интересней.
  • day0markets.ru
    13 апреля 2020, 09:11

    1. Вытаскиваешь историю ЛЧИ
    2. Находишь прибыльных ребят, которые торгуют плюс-минус на одном интервале
    3. Используешь массив их сделок для разметки данных.

    Сам я так не делал, но можешь попробовать, авось взлетит. Архив ЛЧИ за последние несколько лет могу дать.

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

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