Блог им. DenisVo

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

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

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

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

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

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


★4
47 комментариев
С вашим подходом НС ничего не найдет. НС — это всего лишь та же самая статистика, и не более того. НС может находить-выделять только статистически различимые данные. Чтобы обучить МО вы сами должны знать что же вы ищете и где конкретно это надо искать. Как написано в одной книге — МО хорошо решает только конкретные задачи.
Для МО нужны свои методики обучения для каждого класса задач и это не проще, а сложней чем создавать индикаторные стратегии.
avatar
3Qu, Ну так я об этом и говорю, что нейросеть эта та же статистика, просто без погружения во все эти формулы и расчеты. Нейросети могу вполне себе помочь улучшить индикаторную стратегию, если индикаторы действительно показывают будущее.
С тем что вы сказали я согласен, но именно первый шаг хотелось бы решить иначе. Если знать, что искать :) мне не нужны будут сети, простой алгоритм на ифах все решит. 
Меня больше волнует другой вопрос, индикатор показывает некоторое изменение в процессе, так вот использовать сеть или мл алгоритм как индикатор. Получается создание совего индикатора но на базе сети.
avatar
Denis, я делаю по другому. Берем индикаторную стратегию, с помощью нее выделяем предполагаемые участки, где возможны сделки.  На этих участках обучаем НС или деревья, или что-то еще. НС в этом случае используется как обучаемая логика для индикаторной стратегии. Экономим время и силы на написание логики. Ну, и на проверку стратегии.
У меня на СЛ пара простеньких топиков есть по МО. Возможно там есть какая-то доп инфа.
avatar
3Qu, Да, это выглядит как самый удобоваримый результат, но нам сперва нужно взять индикаторную стратегию, и поверить что стратегия работет, ну можно на истории проверить. Т.е. индикатор описывает некоторе состояние рынка, так ведь? Это просто представление цены в другом виде. Простая нейронная сеть вполне может заменить себе машку и другие простые индикаторы. Так вот, что я думаю, если индикатор на показывает, что состояние рынка изменилось, мы ведь как то на это реагируем. Вопрос в том, как мы решаем что именно это изменение нам важно, а не другое. Мы сами проверяем есть тут какой то эффект или нет. Но ведь можно вот этот первый шаг выбора индикатора, тоже атоматизировать.
avatar
Denis, нет, НС или МО не заменяет индикаторы. НС работает с областями ряда выделенными индикаторами, и в этих областях уже ищет что-то похожее на точки входа.
Если там ничего нет, то НС там ничего не найдет.( Как и раньше, сама стратегия остается за вами.
avatar
3Qu, я понимаю, что вы говорите :). Я предлагаю как раз таки заменить индикатор нейросетью.
Кстати, а почему вы убеждены, что индикаторы будут работать лучше, чем нейронная сеть вместо индикатора? Любой технический индикатора же показывает только то, что уже произошло, он же на цене построен по четко заданной формуле.
avatar
Denis, 
Я предлагаю как раз таки заменить индикатор нейросетью.
А зачем и для чего заменять индикаторы НС?
Тем самым вы только усложните НС, и не более того.
Кстати, уж, — любой график показывает только то, что уже произошло, и не более того. А индикаторы нужны не для прогнозирования будущего, а для выделения из врем ряда нужной вам конкретной информации. Какой именно? — решать вам.
avatar
3Qu, а можно пример, что бы мы на одном языке разговаривали, а то часто получается что об одном и том же разными словами люди говорят :).
Что покажет вам индикатор, какую конкретно полезную информацию?
avatar
Denis, скажем, линия регрессии — показывает направление и скорость тенденции и ее развитие во времени. Часто считают СТО относительно линии регрессии. Тогда уже по поведению ряда можно оценить, скажем, вероятность смены тенденции.
Обычные стат. параметры и информация.
avatar
3Qu, 
Тогда уже по поведению ряда можно оценить, скажем, вероятность смены тенденции.Обычные стат. параметры и информация.

Т.е. надо считать всю статистику и задавать некоторый критерий фильтрации этих параметров? на базе этого фильтра формируется результат о состоянии рынка или смены тенденции? правильно я мысль понимаю или?
avatar
Denis, В общем, примерно так и используется. Обычные методы мат. статистики. НС, кстати, для этого не нужны. Их обычно используют для обработки уже подготовленных данных.
avatar
3Qu, Однако нейронными сетями можно заменить методы мат. статистики, статистика ж она вроде как все линейные процессы с нормальным распределением наровит описать (хотя я то что бы эксперт в мат. статитике, возможно ошибаюсь), нейросети в теории могут работать с нелинейными и находить какие то зависимости там.
avatar
Denis, нелинейность — это понятие из другой оперы. Она здесь ни с какого боку.
avatar
Идею почерпнуть? Ловите ДВЕ:
1. Сначала место — потом сигнал
2. Пересечение средних — далеко не самый лучший их сигнал
Если не отбросите эти два пункта сразу, возможно получите что надо.
avatar
VladMih, Пересечение средних я бы даже стратегией не назвал, и сигналы там рандом еще тот. 
Эх, пишу видимо сумбурно, я вот про место и пишу, как это самое место находить?
avatar
Denis, раз оно на первом месте (по крайней мере у меня), значит это самое сложное. В правильном месте и плохие сигналы дадут неплохой результат.

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

Места входа в тренд надежней и выгодней,
но их описывать НЕСОИЗМЕРИМО сложней.
За всё надо платить… Грааль не может быть легким.
avatar
VladMih, Т.е. другими словами вам интересно не изменяется ли процесс в данный момент и будет ли он продолжаться. Нет ли каких то аномалий. Например, если имеются аномалии для вас эту будет сигнал на закрытие сделки?
avatar
Denis, я о закрытии ничего еще не говорил.
Это отдельная сложная тема сопровождения открытой сделки, которая может улучшить характеристики робота.
Но правильный робот может и без этого зарабатывать.
avatar
Думаю, что с понедельника возможен поход на второе дно, ввиду отсутствия позитива на вирусном рынке.
avatar
Игрь, у нас есть опционный хэдж на такой случай… что не захэджированно :) можно будет еще докупить… главное что бы поток кэша не закончился. ))
avatar
"… построили грибоуборочный комбайн. Теперь оператору требуется только найти гриб. Остальное — дело техники" ©
avatar

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

 

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

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

avatar
Михаил, я RL пока не рассматриваю, однако стоит заметить, что для того же RL важно найти фичи которые бы формировали стратегию поведения агента. 

Вот первый вариант на самом деле формируется из двух критериев, вход и выход. С выходом то все понятно. А со входом возникают проблемы. Как я уже выше в коментариях отметил. В обще крутится в голове идея скормить просто ценовые ряды в сеть для поиска аномалий, посмотреть что выдаст, возможно можно будет кластеризировать и далее найти точки входа. Можно взять htm от нументы, но там вроде придется весь ряд запихивать, по дням сегментированный не получится. 
avatar
Denis, если вы используете сети, не нужно никакие фичи городить, поиск аномалий или иной цирк из этой области.

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

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

На мой взгляд, ваша основная проблема, что вы взяли примитивную сетку в пару слоев и надеетесь, что она вам решит достояно сложную задачу. Сети — это поиск архитектур. В случае решенных задач (классификация изображений, как пример), такой поиск занял много лет. Большинство работающих архитектур подразумевают десятки и сотни слоев, а не парочку, как у вас.
avatar
Михаил, как вы правильно сказали, для rl кормят картинки, картинки цветные, чернобелые, маленькие, большие и тд. это и есть фичи. В терминах rl это должна быть понятная для сети среда, но можно и rl без сетей делать. 

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

avatar
Denis, не очень понял, что вы хотите сказать, кроме достаточностях общего соображения, что прогноз модели просто еще один достаточно сложный индикатор. В общем это действительно так. Потом можно по верх него построить некую метамодель, уловный стакинг и блендинг в терминах ML. 
avatar
Михаил, Ну я всю эту беседу затеял можно сказать что бы у себя в голове мысли структурировать ). Да, я именно это в общем то и говорю, что прогноз модели это и есть индикатор. Но индикатор который лишь говорит, что вот событие появилось, как его обрабатывать это уже следующий этап.
avatar
Denis, не обязательно — можно сигнал и напрямую использовать, а можно и обработать. 
avatar
Михаил, да, согласен. 
У меня в голове слелующий подход крутится для внутредневных торгов:

1. поиск триггера -> поиск аномалий в ценовом движении или на базе стандартного индикатора или же использование регрессионной модели.
2. разметка данных для поиска направлений по этим триггерам

если вдруг тут все хорошо, и есть некоторая вероятность что у меня есть преимущество, то переходим к следующему шагу:

3. строим метки по окну, что бы можно было оценить ожидаемую доходность и убыток.
4. обучаем еще одну сеть.
5. профит :)

зы. мне не очень нравятся всякие эти стратегии на простых индикаторах и голом тех анализе, меня как то в сон от них клонит, учитывая что уже миллион раз все перепроверено другими. другое дело нейросетки… и интересно и полезно… можно и картинки и текст… и тд
У нас как то была идея использовать нейросети, которые бы отслеживали эмоциональное состояние самого трейдера и выдавали бы рекомендации, мол все ок, торгуй, а сейчас не торгуй. Входные сигналы — данные с bci интерфейса… но чет данных достаточно не набрали :) и загнил проект.
avatar
Denis, я вижу несколько проблем в вашем подходе:

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

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

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

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

Ну и третье, если на неком предварительном этапе вы найдете некие действительно аномалии, то видимо их будет крайне мало, а для обучения сети нужно много примеров.
Да, тут меня этот момент тоже смущает, причем довольно сильно. Скорее всего аномалий действительно будет слишком мало и не совсем понятно как их определять. Можно сперва привести график к какой то определенной форме, хз, отклонение от средней, потом уже пробовать их там детектить. Есть в принципе некоторые идеи по этому вопросу.
Я честно сказать не очень понимаю, зачем это нужно. В сетях давно придумали Gated Units, которые позволяют реализовывать фильтрацию, Attention, чтобы агрегировать несколько разных сигналов. На мой взгляд, лучше продумать архитектуру, которая будет реализовывать ваши идеи поиска и агрегации и учить такую сеть end-to-end, а не разбивать все на кучу разрозненных этапов.
Хмм… честно говоря я этот момент видимо в своих размышлениях упустил, спасибо что обратили на это внимание, надо будет это обмозговать. Это я видимо от того, что есть у меня убеждение, что даже самая простая архитектура на хороших данных что то да покажет, что то отличное от рандома :)
avatar
Denis, тут объективно данные очень сложные, не даром так много об эффективности рынка говорится. Возможно в добавок вы полезли в самый сложный кусок. На тиках очень сложно чего-то найти. Насколько я понимаю, там гораздо больше работает простой арбитраж на высоких скоростях. Может поискать удачу на более протяженных таймфреймах.
avatar
Михаил, да, я подумываю попробовать на дневных данных и более долгих периодах.

В тики и внутредневную тенденцию я полез по причини того, что там можно больше данных накопать, и так как нынче все процессы идут быстрее, то мне кажется, что вероятность предстказаний некоторого более близкого события делать проще, но с другой стороны там слишком много шума, что усложняет все.
avatar
Denis, на коротких интервалах больше шума, и больше относительные издержки. Это чисто в теории. А на практике там нужно очень быстрое исполнение, маловероятно, что ради интереса вы потянете сервер на колокейшене и весь код захотите на си и асеблере переписать. 
avatar
Михаил, Код на си не проблема, но конечно я ради лишь интереса не буду сервер покупать. Не те масштабы. 
Возвращаясь к дневным таймфреймам, там ведь тоже шума хватает, хоть и действуют более долгие и инертные тенденции.
avatar
Denis, ско маштабирется, как t**0.5, а доходность, как t, что дает больше шансов на длинных таймфремах. На длинных фреймах известно достаточно аномалий (value, momentum, low-vol, small-cap из наиболее сильных), чтобы гарантировано получить хоть какой-то результат.
avatar
Михаил, Что ж, спасибо за беседу. Вы меня на некоторые интересные мысли натолкнули. :)
Ну и да, действительно стоит попробовать дневные таймфреймы.
avatar
Михаил, «гарантировано»? Оч. интересно!
Ну так соберите в кучу мелкие «гарантии» и вот вам грааль! )))

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

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

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

В конце концов ваши нейросети — тоже разновидность ТА. Нет?
Ну, раз «в сон клонит», спите дальше. Я думал вы интересней.
avatar
VladMih, Я уверен, что другие зарабатывают на чистом тех анализе. Да, нейросети можно сказать тот же та, только вид сбоку. 

зы. да, люди разочаровывают :) что уж поделать.
avatar

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

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

avatar
day0markets, хм… Спасибо, но что то не вижу в этом большего смысла, но все равно спасибо за предложение.
avatar

теги блога CloseToAlgoTrading

....все тэги



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