Блог им. AleksandrBaryshnikov

Адаптивные алгоритмы торговли: адаптивные индикаторы

    • 23 ноября 2023, 00:03
    • |
    • bascomo
  • Еще
Привет.

Это продолжение темы, которая была затронута в этом посте: Адаптивные алгоритмы торговли (smart-lab.ru)

Адаптивные алгоритмы торговли: адаптивные индикаторы

Вводная часть
Мою мысль тогда не так поняли, как мне кажется, решив, что адаптивная торговая система в моём понимании — это система, которую нужно периодически выключать и подстраивать/оптимизировать, и запускать заново.
Я имел ввиду, однако, совсем не это.
Я имел ввиду, что система является самоподстраиваемой, изменяя свои настройки или логику прямо в ходе торговли.
Топорно это можно сделать элементарно, используя в качестве параметра торговой системы не константу, как обычно, а динамическое значение некого индикатора, так или иначе описывающего поведение цены или других рыночных данных. Это верное направление, но, если его реализовать, как описано, ничего хорошего не получится, поскольку влияние значения настроечного параметра на результат торговой системы практически всегда нелинейно, и поэтому между выходом индикатора и входом торговой системы со значением нужно будет произвести некоторые преобразования, а какие именно — это вопрос исследований для конкретного кейса.

Определения
Для ясности дам определения моего понимания торговых систем для разбиения на эти классы:
  • мёртвая торговая система — эта такая торговая система, которая не меняет своих параметров, настроек и внутренней логики в процессе торговли, и для того, чтобы их изменить, систему нужно выключить из торговли, внести изменения и включить снова.
  • живая (адаптивная) торговая система — это такая торговая система, которая изменяет свои параметры, настройки и/или внутреннюю логику прямо в процессе торговли, в момент анализа поступающих рыночных данных, без участия человека и, что главное — не требует для этого остановки и перезапуска, с целью максимизации прибыли и более полного использования всех возможностей, возникающих на рынке. Звучит красиво и… страшно. Согласны? ;-) Я всегда говорю: ставьте амбициозные цели и стремитесь к ним!
Преимущества
Почему такая система лучше, чем «пятно» или «облако» параметров/систем? Очевидно, потому, что она должна быть эффективнее. Если мы торгуем пакетом однотипных систем с небольшим разбросом настроечных параметров, то представляется, что какие-то из них будут менее прибыльными, а какие-то — более, в зависимости от конкретного варианта настроек того или иного работающего экземпляра. Значит, ряд таких торговых систем будет менее эффективным, чем мог бы.

Что касается адаптивной системы — то смысл её «адаптивности» как раз заключается, по моему представлению, в том, чтобы она в каждый момент времени, а буквально — на каждой сделке — была лучшей из систем того самого пресловутого облака/пятна параметров.

Адаптивные алгоритмы торговли: адаптивные индикаторы

Адаптивные индикаторы
Чтобы плавнее перейти к понятию адаптивных торговых систем, я посвятил этот пост понятным и используемым сегодня рядом трейдеров вещам, имя им — адаптивные индикаторы.

Летом прошлого, 2022 года, мы проводили в группе такой эксперимент: взяли несколько различных торговых систем, и поисследовали, что будет, если разрешать им сделки только в то время, когда значение индикатора ATR находится в конкретном, узком, заданном нами диапазоне. Я думаю, вы догадываетесь, к чему привело добавление такого, по сути своей, динамического фильтра. Доходность торговых систем выросла, число сделок сократилось, время в рынке сократилось, остальные показатели ожидаемо улучшились.

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

Что в подходе меня не устраивало? Как обычно, то, что значения ATR для различных инструментов будет разным в силу того, что и цена их тоже отличается. Поэтому, используя ATR, если него не нормализовывать каким-то образом, невозможно портировать торговую систему на другие, «не родные» инструменты. Я стремлюсь изо всех сил не делать торговые системы, специфичные для конкретного рынка, таймфрейма, инструмента, стремлюсь к их универсализации, чего и вам советую.

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

Адаптивные алгоритмы торговли: адаптивные индикаторы

Классификация адаптивных индикаторов
Адаптивные индикаторы — это такие индикаторы, которые автоматически меняют свои параметры, формулы или логику в зависимости от текущих рыночных условий. Они позволяют торговой стратегии лучше адаптироваться к различным фазам рынка, таким как тренд, флэт, волатильность и т.д.

Какие адаптивные индикаторы известны сегодня? Не претендую на полноту списка, но, будучи человеком системным, хочу сразу разделить их на категории, сообразно базовым принципам, на которых они основаны, и это:
  1. Адаптация к циклам. Эти индикаторы определяют длину и фазу текущего цикла рынка и подстраивают свои параметры под него.
  2. Адаптация к волатильности. Это те индикаторы, которые определяют степень колебания цен и подстраивают свои параметры под него.
Примеры индикаторов первого типа:
  • Например, адаптивная скользящая средняя (Adaptive Moving Average, AMA) меняет своё поведение в зависимости от волатильности рынка, интенсивно меняя своё значение в тренде и более или менее превращаясь в константу в боковике
  • Адаптивный циклический индикатор (Adaptive Cycle Indicator, ACI), который использует алгоритм Гёрцеля для измерения периода и фазы цикла и генерирует сигналы на основе их изменения
  • Cycle Identifier Indicator — тоже позволяет идентифицировать циклические движения в рыночных данных
  • Detrended Price Oscillator (DPO): DPO измеряет разницу между ценой и средним значением цены за определенный период времени и помогает отслеживать циклы ценовой активности, отделяя их от общего тренда
  • Schaff Trend Cycle (STC): этот индикатор основан на идее, что тренды обладают циклическими характеристиками, и использует стохастический осциллятор для идентификации циклов в рыночной ценовой активности
Примеры индикаторов второго типа:
  • Adaptive Parabolic Indicator, API меняет свой фактор ускорения в зависимости от волатильности рынка, становясь более чувствительным в тренде и более инерционным в флэте
  • Adaptive Keltner Indicator, AKI использует Average True Range для определения ширины канала и подстройки его под волатильность рынка
  • Конечно же, всем известный Bollinger Bands: этот индикатор использует стандартное отклонение для изменения своих границ в зависимости от волатильности цен. Полосы сужаются в периоды низкой волатильности и расширяются в периоды высокой волатильности.
И так далее.

Мы видим тут, конечно, X и Y ценового графика: адаптация к циклам — это про время, а следовательно — ось X, а волатильность — это про Y. Конечно, сложно однозначно отнести тот или иной индикатор к одной из этих двух категорий, это деление условно и является следствием моего пунктика про системность — желание разложить всё по полочкам, выстроить понятную картину мира.

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

Адаптивные алгоритмы торговли: адаптивные индикаторы

Дальнейшие планы и работа
Возвращаюсь к идее адаптивной торговой системы с набором скользящих, которая была описана в первом посте этой темы.
Она выглядит вполне рабочей, но требует усилий по решению нескольких задач, и они таковы:
  1. Уйти от абсолютного значения как цен, так и самих скользящих для обеспечения лёгкости портируемости торговой системы на другие рынки и/или инструменты. Понятно, как эту задачу решить. Тут на помощь придут методы геометрии + производные + бинарная логика, что позволит избавиться от ценовой составляющей. Это упражнение я уже делал, когда создавал свой кастомный индикатор, где решалась абсолютно аналогичная задача.
  2. Разметить ценовой ряд лучшими точками входов и выходов. Этот механизм тоже давно создан и великолепно работает, позволяя мне в своих изысканиях отбрасывать в помойку тухлые и ни на что не пригодные индикаторы из того огромного количества, которое создано на сегодняшний день.
  3. Рассчитать параметры кривых скользящих относительно друг друга в лучших точках входов и выходов, их ускорения и взаимного расположения.
  4. На основе полученного набора данных выявить закономерности (если они там существуют) :), используя методы статистики, а, возможно, просто графически представив результаты в виде множества точечных диаграмм рассеяния. На этом этапе мне нужно будет определить диапазоны значений параметров скользящих, рассчитанных ранее, при попадании в которые осуществляется наибольшее число идеальных входов и выходов.
  5. С рассчитанными настройками проэмулировать торговлю системы на исторических данных разных инструментов.
Если будет третий пост, завершающий эту тему, то он будет о результатах исследования, план которого изложен выше.

Заключение и выводы
Идея адаптируемых торговых систем выглядит чем-то вроде грааля или золотого руна. Ещё бы! Торговая система, которая сама собой подстраивается под рынок, а ты себе только выводи и трать. Я не думаю, что всё будет настолько радужно, но всё же ожидаю результатов, превосходящих «мёртвые» ТС, в особенности, на инструментах, на которых «мёртвые» ТС показывают отвратительные результаты из-за частых и нерегулярных ралли, смен тренда или возникновения боковиков — ну, то есть, всего того, что любит делать рынок.

Может быть, для меня — это способ диверсифицировать портфель торговых алгоритмов, а может — в зависимости от результатов — я вообще уйду в это направление полностью, поскольку обсчитывать десятки миллионов алгоритмов ради получения сотен или тысяч рабочих — это такая себе история, и история конечная: пока у меня 50 инструментов в портфеле — я успеваю делать это за неделю, а если их будет 1000? Это риторический вопрос.

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

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

Доброй ночи и приятных снов.
★7
20 комментариев
Остается лишь найти эту формулу самонастройки которая сделает МА адаптивной и прибыльной. Но тогда МА станет лишней.
avatar
Практически первое, что я сделал, когда начал заниматься алготрейдингом, это нормализовал ATR. С тех пор всегда его использую только в нормализованном виде. Очень удобно при использовании стратегии на разных инструментах

avatar
Poll, расскажите, как :) 
avatar
«ничего хорошего не получится, поскольку влияние значения настроечного параметра на результат торговой системы практически всегда нелинейно, и поэтому между выходом индикатора и входом торговой системы со значением нужно будет произвести некоторые преобразования...» — усложняешь на ровном месте. Я просто перехожу на новые параметры в момент отсутствия позиции, иначе изменение «картины рынка» не соответствует картине на момент открытия позы и там хз что может быть в общем случае.
   Проблема есть в другом — как не словить временное изменение характера движения цены при перенастройке параметров. Это по сути еще один уровень — пока забил на него, итак уже хрен знает сколько-многомерная задача, ограничился периодичностью подстройки по количеству прошедших интервалов. 
Мои системы, созданные в 1998-м и 2002-м изначально использовали средние приращений логарифмов цен дней (разных, и закрытий, и максимум+минимум, и максимумов, и минимумов) с переменным окном, размер которого тоже был частью алгоритмов.

Тоже самое и с волатильностью тех же приращений,  но там берется максимум из СКО окна, на котором считается среднее и значения немного другой волатильности за 50 предыдущих дней.

Но все равно зарабатывать там, где волатильность в 3 и более раз меньше средней на всей истории, не получается, а хорошего прогноза роста волатильности получить никак не удается (например такая низкая волатильность, у Сбербанка, Газпрома и Норникеля с 1 июня этого года по 10 октября, а у Газпрома и до 22 ноября). Поэтому торгуем. Хотя «фильтр пилы» сделал, но он только фиксирует «пилы» за предыдущие 5-10 дней и снижает просадки и доходность, правда улучшая соотношение доходность/просадка, но не сильно.

И вообще с марта 2022-го вне этой низкой волатильности бОльшую часть времени только Si, а RI там вообще был с июля 2022 по октябрь 2023. Вот как такое прогнозировать, когда выключаться и когда включаться, если прогнозов на месяц построить не получается.
avatar
А. Г., м.б., включаться в сильную волатильность, а остальное время — быть вне рынка и ждать? Я делал такие системы, они совершают сделки очень редко, но метко, но большую часть времени спят. И меня это нервирует, поэтому решил копать дальше.
avatar
bascomo, да в моих системах прибыль и на маленькой волатильности есть за периоды больше 6 месяцев и без таких событий, как 24.02.2022, только она маленькая, не намного больше депозита в Сбербанке, а то и меньше. Но как быть, если волатильность подскочит на пару недель-месяц и снова упадет? С подключением для прибыли точно опоздаем, а вывод средств из банка приведет к отсутствию его доходности.
avatar
А. Г., сложно сказать, я не очень понимаю контекст. Я практик, мне лучше на 2-3 кейсах примеры разобрать, тогда и идеи появляются.
avatar
1. Адаптивные средние типа АМА, АКА, Булашева, собственные у меня не пошли. 
2. Волатильность нормирую,  использую, ничего адаптивного в использовании индикатора, отражающего волу, не вижу.
3. Залеты людей, использовавших краткосрочную оптимизацию, видел. Напороться на что-то подобное не хочу. 
4. Желаю автору успеха в его подходах, пусть каждому повезет на его пути. 
avatar
SergeyJu, пока что мне интереснее исследовать, чем торговать :)
avatar
bascomo, ты так еще и не запустил системы на реальные торги?
avatar
T-800, зачем сливать свои депозиты, когда можно сливать чужие?)))

avatar
bascomo, ах ты негодяй!)
avatar

SergeyJu, прошу пояснить, вы не используете адаптивные индикаторы?
Сам не использую. 

 

avatar
EY, не использую. Не пошло у меня это.
avatar
Индикатор CCI в теории адаптивный к циклам.
avatar
Как показала моя практика, надежнее периодически оптимизировать систему, чем пытаться сделать её адаптивной. Но это всего лишь мое скромное мнение, не претендующее на истину.
avatar
Riskplayer, неспроста большинство так и делает :)
avatar
Как-то грустно звучит — «мёртвая ТС». Я такие «статическими» называю.

Сам сейчас занят разработкой своей системы, есть в мыслях сделать периодическую автоподстройку параметров на обновляемых исторических данных. То есть раз в неделю/месяц/квартал/сезон (в зависимости от логики конкретной системы) запускается прогон на исторических данных с разными комбинациями параметров и наилучшие используются для работы в следующем периоде.
Андрей Борисов, уж сколько их упало в эту бездну :)
avatar

теги блога bascomo

....все тэги



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