Математика на фондовом рынке: подход с двойной стратегией

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

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

Проблемы, с которыми приходится сталкиваться

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

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

Как избежать точки «безубыточности»
Во многих случаях прибыль настолько минимальна, что становится незначительной из-за комиссий. Важно понимать, что выигрышная стратегия не всегда гарантирует прибыльность. Становится важным определить порог прибыли, необходимый для того, чтобы бот стабильно приносил прибыль.

Управление риском разорения
Под риском разорения понимается вероятность потери всего инвестиционного капитала из-за серии последовательных убытков. Алгоритмическая торговая система учитывает риск разорения и направлена на контролируемое управление убытками.
Алгоритм определяет ценовые уровни, на которых сделки будут закрыты, если рынок движется против позиции. Эти уровни устанавливаются на основе технического анализа и направлены на ограничение убытков в каждой сделке.

Рынок двойных стратегий

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

Преимущество работы двух экземпляров бота, один из которых настроен на «длинную», а другую на «короткую», на одном и том же рынке с одними и теми же криптовалютами заключается в способности максимизировать торговые возможности и снизить связанный с этим риск.

Основные преимущества работы в обеих позициях:

  • Диверсификация рисков: При одновременной торговле «длинными» и «короткими» позициями достигается эффективная диверсификация рисков. В то время как одна позиция может понести убытки из-за неблагоприятного движения рынка, другая позиция может приносить прибыль от движения в противоположном направлении. Когда прибыль, полученная от положительного тренда, перевешивает убытки, понесенные от противоположного тренда бота, мы можем обеспечить гарантированную прибыль.
  • Бот может извлечь выгоду как из бычьих, так и из медвежьих рыночных тенденций. Охватывая обе стороны рынка, возможность получения прибыли в любых рыночных условиях максимизируется.
  • Расширенные торговые возможности: Торгуя как в «длинных», так и в «коротких» позициях, бот может совершать больше сделок по сравнению с однонаправленной стратегией.

Логика бота может быть применена к нескольким рынкам и различным активам. В следующих примерах мы сосредоточимся на криптовалютах для простоты демонстрации, но те же принципы могут быть настроены для применения к другим рынкам, таким как FOREX.

Стратегия алгоритма

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

Мы можем разделить алгоритм на три разные части:

1: Повышение доверия к торговле

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

Используя подход с несколькими монетами и двумя позициями, основанный на наиболее вероятных результатах, торговый алгоритм становится более надежным и надежным инструментом для достижения стабильной прибыли.

2: Идентификация точек входа

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

Первоначальный анализ включает в себя изучение истории цен и применение функции преобразования Фурье, которая сопоставляет цену с координатой на плоскости.

Преобразование Фурье, примененное в ряду временного запаса

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

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

Волновая картина преобразования Фурье

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

Важно отметить, что преобразование Фурье — это всего лишь один из инструментов в нашей стратегии. Несмотря на то, что он эффективен для выявления циклических закономерностей, он не является безошибочным. На самом деле, алгоритм может неправильно идентифицировать изменение тренда примерно в 20% случаев. Однако эти потенциальные потери смягчаются за счет применения меры стоп-лосса. Мы ожидаем, что бот будет проигрывать в этих 20% сделок, и наша стратегия предназначена для контроля процента убытка по каждой из этих сделок.

Алгоритм тренда преобразования Фурье

И, используя информацию о тенденциях, мы можем найти точки входа наших кандидатов

Алгоритм точек входа

3: Бизнес-логика

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

Раскрытие потенциала

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

На первом графике показан алгоритм точек входа в тренд, а на втором — совершенные сделки купли/продажи на длинном рынке в течение 3 месяцев.

Давайте попробуем с несколькими активами

Бот в режиме Long — 30 дней торгов

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

Можно ли гарантировать прибыльность нашей стратегии?

В то время как абсолютная уверенность неуловима в мире торговли, мы можем значительно склонить шансы в нашу пользу. Наш подход использует силу вероятности, сосредотачиваясь на выявлении точек повторного входа и получении прибыли, когда вероятность успеха высока. Мы устанавливаем стоп-лоссы на основе того, что происходило раньше и что делал рынок, что помогает нам избежать больших потерь. По сути, наша стратегия основана на принципе извлечения выгоды из наиболее вероятного события. Вот как мы улучшаем нашу игру.

Насколько выгоден бот?

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

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

# Long Bot Instance
python src/live/fft_bot_trader.py \
--start_date=2020-11-1 \
--end_date=2021-11-11 \
--window_days=30 \
--coin_list=ARPA,XMR,OCEAN,CELO,LTC,ANT,TRX,XRP,OGN,CTXC,NMR \
--initial_capital=500 \
--order_size=20 \
--bot_type=long \
--umbral_rsi_down_first_force=true \
--umbral_rsi_up_first_force=true
# Short Bot Instance
python src/live/fft_bot_trader.py \
--start_date=2020-11-11 \
--end_date=2021-11-11 \
--window_days=30 \
--coin_list=ARPA,XMR,OCEAN,CELO,LTC,ANT,TRX,XRP,ZEC,EOS,RSR,REEF \
--initial_capital=500 \
--order_size=20 \
--bot_type=short \
--umbral_rsi_down_first_force=true \
--umbral_rsi_up_first_force=true

Ключевые параметры, на которые следует обратить внимание:

window_days: Цикл, в котором мы реинвестируем наш капитал. (Составной)
bot_type: Указывает, будет ли бот работать в ДЛИННЫХ или КОРОТКИХ позициях.
initial_capital: Начальный капитал разделен для всех монет в списке
coin_list: Список монет, которые будут одновременно участвовать в экземпляре бота и с которыми он будет торговать.
Почему я использую именно эти монеты списка, а не другие? На этот вопрос есть несколько ответов, для подробного объяснения которых может потребоваться еще один пост. Но в целом, эти монеты продемонстрировали сильную корреляцию с алгоритмом распознавания точек входа и хорошо работают в обоих направлениях рынка. На данный момент я определил около 20 монет, которые выполняют эту функцию, в то время как есть другие, которые хорошо работают только в одном тренде, а некоторые в настоящее время находятся в стадии тестирования. Количество монет должно быть связано с капиталом и размером ордера, для бота, торгующего 12 монетами, нам нужно от 15 до 20 позиций ордера. (capital/order_size = позиции ордеров). От правильной настройки этих параметров будут зависеть результаты прибыли.

Пример тестирования на истории 1

Длинные результаты бота

Изменение капитала для коротких позиций Бот с течением времени

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

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

Краткие результаты бота

Изменение капитала для коротких позиций Бот с течением времени

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

Комбинированные результаты ботов

Результаты

Дней: 374
Начальный капитал: 
$100
Конечная столица: 
$195,69

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

Пример тестирования на истории 2

Результаты

Дней: 726
Начальный капитал: 
$100
Конечная столица: 
$235,33

В этих результатах мы наблюдаем периоды, когда экземпляр бота Short превосходит среднее, а другие — ниже среднего. Та же картина наблюдается и с экземпляром бота Long. Они эффективно уравновешивают друг друга с течением времени. Первые полтора года показывают значительный прирост капитала, в то время как последние полгода были относительно стабильными. Эти результаты весьма впечатляют, особенно учитывая двухлетний период.

Пример тестирования на истории 3

В нашем последнем примере мы рассмотрим результаты запуска дополнительного экземпляра алгоритма с идентичной конфигурацией, но инициированного через 10 дней после первого. Это позволяет нам наблюдать, как меняется производительность бота при запуске в разные даты.

Экземпляр (1) Дата начала: 05.09.2020

Экземпляр результатов (1)

Дней: 1034
Начальный капитал: 
$100
Конечная столица: 
$339,29

Дата начала: 2020–09–15

Пример результатов (2)

Дней: 1034
Начальный капитал: 
$100
Конечная столица: 
$395,12

Мы наблюдаем, что производительность бота остается относительно стабильной в обоих примерах, при этом основной целью является обеспечение прибыльности, на что указывает восходящая траектория синей линии!

Заключение

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

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

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

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

Результат бэк-тестирования
Реальные результаты заказов Live Instance Bot

Источник