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

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

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

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

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

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

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

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

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

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

Взгляд с высоты птичьего полета

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Использование ключевых концепций

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

Обмен данными

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

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

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

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

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

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

Сбор данных

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Управление заказами

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

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

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

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

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

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

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

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

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

С чего мне начать?

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

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

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

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

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

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

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

Не стесняйтесь взглянуть на наш основной репозиторий GitHub и посмотреть, пригодится ли вам то, что мы разработали. Мы выпустили всю нашу работу под лицензией Apache License 2.0.

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