Разработка инфраструктуры и торговых ботов для ИИ-трейдинга

Примечание: данная статья преследует исключительно образовательные и развлекательные цели, не являясь прямой финансовой рекомендацией. Редакция каналов Better Programming и Nuances of Programming не несет никакой ответственности за возможные последствия предпринимаемых вами действий в области биржевой торговли. 

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

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

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

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

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

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

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

Вид сверху

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

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

Торговые идеи формируются на основе анализа и визуализации данных.

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

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

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

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

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

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

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

Эффективность живой торговли определяется оптимальностью внедрения автоматизированных торговых стратегий. 

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

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

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

Освоение ключевых принципов

Как следует из раздела “Взгляд сверху”, для надежного проектирования, тестирования и внедрения торговых стратегий требуется основательная инфраструктура ПО. Мы вкратце рассмотрим ее наиболее важные элементы, которые в совокупности будем называть платформой. 

Подключение биржи

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

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

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

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

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

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

Сбор данных

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

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

Один пробел в данных может изменить их анализ непредвиденным образом, поэтому процесс извлечения информации с бирж и построения датасетов должен быть сверхнадежен. 

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

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

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

Визуализация данных

Люди  —  визуальные создания. Хоть наш мозг и заключен в “черный ящик”, у нас есть развитые сенсоры для восприятия среды и отправки ценной информации в центральную нервную систему для интерпретации. Зрение при этом является нашим основным сенсором.

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

Визуализация данных — ключ к разработке торговых идей.

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

Тестирование стратегии

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

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

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

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

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

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

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

Управление ордерами

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

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

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

Масштабируемое внедрение

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

Развертывание ряда скоординированных задач на нескольких машинах

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

Масштабируемость инфраструктуры

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

С чего начать

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

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

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

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

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

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

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

Приглашаем всех в наш основной репозиторий GitHub  —  возможно, вас заинтересуют наши разработки. Мы выпустили все свои продукты под лицензией Apache 2.0.

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

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Julian Molina: Crypto Trading Bots and the Emergence of Trading Intelligence

Предыдущая статьяРабота с GitHub Actions на маркетплейсе
Следующая статьяСоветы по модуляризации приложений Android