Что такое алготрейдинг (алгоритмическая торговля)
Термин «алготрейдинг» (algorithmic trading) имеет два значения:
- Автоматизация совершения сделок на бирже – процесс, позволяющий системе совершать сделки без участия человека. Вам нужно лишь задать определенные параметры (ценовой диапазон, перечень инструментов и др.) – и можно заниматься своими делами. Робот совершит все необходимые действия без вас. Это позволит минимизировать человеческий фактор, исключит эмоциональную составляющую и, в конце концов, сэкономит время.
- Процесс исполнения крупной заявки, которая разбивается на более мелкие. Поясню на примере. Предположим, вам нужно приобрести 100000 акций какой-то компании. Система позволяет купить не более 5 бумаг в пределах одной сделки. Соответственно, возникает необходимость рутинной работы, которая заключается в создании заявок через определенный временной промежуток. Алгоритмическая торговля сделает это за вас.
Итак, основными задачами алготрейдинга являются ускорение процесса совершения сделок и экономия времени трейдера.
Мифы об алготрейдинге
Многие считают, что торговля роботом можно приносить только прибыль, и трейдеру вообще не нужно ничего делать. Конечно же, это не так. Нужно всегда следить за роботом, оптимизировать его и контролировать, чтобы не закралась ошибка, или чтобы он не стал сливать, когда рынок резко изменится.
Есть люди, которые полагают, что на роботах, наоборот, нельзя заработать. Это, скорее всего, люди, которые столкнулись с некачественными роботами, которые продают мошенники для торговли на форекс. На форекс есть качественные роботы, которые приносят прибыль. Но их никто не будет продавать, ведь они и так приносят деньги.
Есть те, кто считает, что только роботы, сделанные по методике Мартингейл, могут приносить хорошую прибыль. Они это действительно иногда могут, но только какое-то ограниченное время. А потом наступает неизбежная потеря всего депозита.
В чем ее суть
Алготрейдинг использует математические модели для определения максимальной вероятности получения прибыли. Как вы уже, наверное, догадались, в основе алгоритмической торговли лежит теория вероятностей. Помимо этого, робот анализирует исторические данные о котировках и рассчитывает благоприятные моменты для открытия позиций, продажи или покупки активов.
Этот процесс осуществляется одним из способов:
- вручную – специалист самостоятельно подбирает данные, используя математические модели. Здесь возникает резонный вопрос: а как же автоматизация? Дело в том, что можно использовать какую-то определенную модель, а для этого не потребуется покупать программный комплекс. Допустим, вы совершаете сделки только с определенными акциями. Все что вам нужно – это определить ценовой диапазон, ориентируясь на исторические минимумы и максимумы. Тогда достаточно задать нужные параметры в торговой системе, и процесс торговли будет осуществляться без присутствия человека;
- автоматически. Здесь уже потребуется программное обеспечение, которое содержит обширную базу для анализа и расчетов. Программа рассчитает все необходимые индикаторы, предполагаемый результат от сделки и другие параметры;
- с применением искусственного интеллекта. При выборе этого способа алготрейдинга правила для совершения сделок устанавливаются квантовым роботом самостоятельно.
Как добиться успеха в алгоритмическом трейдинге? (часть первая)
Как добиться успеха в алгоритмической торговле?
С чего начать?
Сегодня в открытом доступе много информации об алгоритмической и количественной торговле. Трейдера, которого привлекает эта область, хочет синтезировать как можно больше информации, когда он только начинает. В результате новички могут быть ошеломлены «параличом анализа» и потратить много своего ценного времени на алгоритмическую торговлю, не добившись значительного прогресса. В этой статье я расскажу о том, как я подошел бы к алгоритмической торговле в качестве новичка, если бы только начинал свой путь. Эта статья окрашена личным опытом, поэтому, пожалуйста, прочитайте ее с пониманием того, что я описываю то, что работает для меня. Я не претендую на то, чтобы быть гуру по личному или профессиональному развитию, но мне удалось развить свои навыки алгоритмической торговли до такой степени, что я смог оставить свою основную работу для торговли на рынках – так что, возможно, у меня есть личный опыт и понимание, которые могут быть полезны для вас. В этой статье, я намерен предоставить вам некую «дорожную карту» для начала и достижения максимально эффективного прогресса, поделившись некоторыми практическими вещами, которые я узнал на своем пути в качестве алготрейдера.
Это статья посвящена:
1) Чему научиться, чтобы добиться успеха
2) Как научится этому
3) Важные практические соображения
Что делать чтобы добиться успеха?
Активное практика это гораздо важнее, чем пассивное обучение. Изучение теоретических основ важно, но это только первый шаг. Чтобы стать опытным в алгоритмической торговле, вы должны применять теорию на практике. Чтобы преуспеть в алгоритмической торговле, обычно нужно иметь знания и навыки, которые охватывают ряд дисциплин. Это включает в себя как технические, так и другие навыки.
Технические навыки, необходимые для долгосрочной успешной алгоритмической торговли, включаю в себя:
- Программирование
- Статистика
- Риск менеджмент
- Есть и другие навыки, которые я хотел бы добавить к этому списку, но они немного выходят за рамки того, что я бы назвал «минимальными требованиями». – Об этом позже)
Программирование
Если вы еще не можете программировать, начните учится. Чтобы заниматься серьезной алгоритмической торговлей, вы должны уметь программировать, так как этот навык позволяет проводить эффективные исследования. Забудьте о программах типа «нажмите и перетащите», которые обещают успех в алгоритмической торговле без необходимости писать код, и если какой либо гуру трейдинга скажет вам, что вам не нужно кодировать, развернитесь и бегите не оглядываясь от него. Примите, что навыки программирования являются предпосылкой для успешной алгоритмической торговли. Через некоторое время вы обнаружите, что вам это нравится.
Полезно ознакомиться с синтаксисом языка на основе С, такого как С++ и Java, но в тоже время сосредоточьтесь на основах структур данных и алгоритмах. Это даст вам очень прочную основу и хотя может потребоваться десятилетие, чтобы стать экспертом С++, я считаю, что большинство людей могут достичь достойного уровня за шесть месяцев напряженной работы. Это подготовит вас к тому, что последует дальше.
Также полезно знать хотя бы один из языков более высоко уровня, таких как Python, R или MATLAB, поскольку вы, вероятно будете делать подавляющее большинство своих исследований и разработок на одном из этих языков. Мое личное предпочтение R.
- Python довольно прост в освоении и является отличным инструментом для эффективного получения, обработки и управления данными из различных источников. Есть несколько очень полезных библиотек, написанных очень умными людьми, которые делают анализ данных относительно безболезненным.
- Мне очень нравится использовать R для исследований и аналитики, поскольку он подкреплен огромным хранилищем полезных библиотек и функций. Он был написан с учетом статистического анализа, поэтому он естественным образом подходит для работы, которые будут делать алгоритмические трейдеры (для некоторых, синтаксис R может быть немного странным)
- Я также использовал MATLAB и его аналог с открытым исходным кодом Octave, но я почти никогда больше не буду использовать эти языки для серьезных исследований algo. Это скорее личное предпочтение, и некоторые люди предпочтут MATLAB, особенно те, кто вращается в инженерных кругах, поскольку они могли познакомиться с ним во время работы или учебы.
Когда вы начнете, я не думаю, что это будет иметь большое значение, какой из этих языков высокого уровня вы выберете. Со временем вы начнете узнавать, какой инструмент является наиболее подходящим для выполнения поставленной задачи. Поэтому не слишком зацикливайтесь на своем первоначальном уровне – просто сделайте выбор и начните!
Смысл возможности программирования в этом контексте заключается в том, чтобы обеспечить тестирование и реализацию алгоритмических торговых систем. Поэтому может быть огромной пользой иметь качественную среду моделирования в вашем распоряжении. Как и в случае любой задачи моделирования, важным соображением являются точность, скорость и гибкость. Вы всегда сможете написать свою собственную среду моделирования, и иногда это будет наиболее разумной вещью, но часто вы можете использовать инструменты, которые создали другие люди для этой цели. Это имеет то преимущество, что позволит сосредоточиться на реальных исследованиях и разработках, которые непосредственно связаны с торговой стратегией, а не тратить много времени на создание самой среды моделирования. Недостатком является то, что иногда вы не совсем точно знаете, что происходит под капотом, и бывают случаи, когда использование чужого инструмента помешает вам преследовать определенную идею, в зависимости от ограничений инструмента. Хороший инструмент моделирования должен иметь следующие характеристики:
- Точность – моделирование любого реального явления неизбежно страдает от недостатка точности. Хитрость заключается в том, чтобы убедиться, что модель достаточно точна для выполнения поставленной задачи. Как сказал однажды статистик Джордж Бокс: «все модели неверны, но некоторые полезны. Игра с бесполезными моделями – пустая трата времени»
- Гибкость – в идеале ваш инструмент моделирования не будет ограничивать вас или блокировать вас в определенных подходах
- Скорость – иногда скорость может стать реальной проблемой, например при выполнении моделирования на основе тиков или выполнения процедур оптимизации.
- Активная разработка – при возникновении непредвиденных проблем необходим доступ к исходному коду или ответственным за него лицам. Если инструмент активно разрабатывается, вы можете быть уверены, что помощь будет доступна, если она вам понадобится.
Есть несколько вариантов, но для новичка, вероятно, нет ничего лучше, чем платформа Zorro, которая сочетает в себе точность, гибкость и скорость с простым языков сценариев на основе C, что делает его идеальным введение в программирование. Платформа постоянно совершенствуется и обновляется, причем улучшения выпускаются примерно раз в квартал. Zorro может выглядеть не очень впечатляюще, но он упаковывает в себе множество функций и является отличным выбором для начинающих. Платформа Zorro широко использует возможности в алгоритмической торговле и включает в себя подробные учебники по началу работы, которые направлены на новичка.
Статистика
Было бы трудно быть успешным алгоритмическим трейдером без хорошего знания статистики. Статистика лежит в основе почти всего, что мы делаем, от управления рисками до изменения эффективности и принятия решения о распределении по конкретным стратегиям. Важно отметить, что статистика станет вдохновением для многих ваших идей для торговых алгоритмов. Вот некоторые конкретные примеры использования статистики в алгоритмической торговле, чтобы проиллюстрировать, насколько важен этот навык:
- Статистические тесты могут дать представление о том, какой базовый процесс описывает рынок в конкретное время. Это может генерировать идеи о том, ка лучше всего торговать на этом рынке.
- Корреляция компонентов портфеля может использоваться для управления рисками
- Регрессионный анализ может помочь вам проверить идеи, относящиеся к различным факторам, которые могут влиять на рынок.
- Статистика может дать представление о том, является ли тот или иной подход более эффективным из-за более высокого риска или он использует подлинный источник альфа.
Помимо этого, наиболее важное применение статистики в алгоритмической торговле связана с интерпретацией результатов тестирования и моделирования. Есть некоторые существенные подводные камни, такие как выемка данных или «P-hacking» — которые возникают естественным образом в результате процесса разработки стратегии и которые очевидны, если вы не понимаете статистику тестирования гипотез и последовательного сравнения. Неправильный учет этих предубеждений может быть катастрофическим в торговом контексте. Хотя этот вопрос невероятно важен, он далеко не очевиден и представляет собой самый значительный барьер на пути к успеху с которым я столкнулся. Пожалуйста, потратьте некоторое время на понимание этого принципиально важного вопроса – я не могу не подчеркнуть насколько он важен.
Также оказывается, что человеческий мозг прискорбно неадекватен, когда дело доходит до выполнения обоснованных статистических рассуждений. Даниел Канеман в книге «Думай медленно… Решай быстро» обобщает несколько десятилетий исследований и когнитивных предубеждений, с которыми люди сталкиваются. Канеман обнаружил, что мы склонны слишком доверять собственным способностям и суждениям, что человеческий разум систематически впадает в заблуждения и ошибки в суждениях, и что мы в подавляющем большинстве склонны приписывать слишком много значения случайности. Важным следствием работы Канемана является то, что, когда дело доходит до выводов о сложной системе со значительным количеством случайности, мы почти гарантированно принимаем плохие решения без надежной статистической основы. Мы просто не можем полагаться на собственную интерпритацию.
«Думай медленно… Решай быстро» — это не книга о трейдинге, но она помогла мне в торговле больше, чем любая другая книга, которую я читал. Очень рекомендую. Кроме того, не случайно работа Канемана создала область поведенческой экономики.
Риск менеджмент
Управление рисками. Существует множество рисков, которыми необходимо управлять в рамках алгоритмического трейдинга. Например, существует инфраструктурный риск (риск того, что ваш сервер выйдет из строя или пострадает от отключения питания, оборванного соединения или любого другого вмешательства) и встречный риск (риск того, что встречная сторона сделки не сможет выполнить сделку или риск того, что ваш брокер обанкротится и заморозит ваш счет). Хотя эти риски, весьма реальны и их необходимо учитывать – больше внимания уделяется управлению рисками на уровне торговли и портфеля. Этот вид управления рисками пытается количественно оценить риск потерь и определить оптимальный подход к распределению стратегии или портфеля стратегий. Это сложная область, и есть несколько подвохов и вопросов, о которых практикующий трейдер должен знать.
Две стратегии распределения, о которых стоит узнать – это распределения Келли и оптимизация средней дисперсии (MVO). Они использовались на практике, но они несут в себе некоторые сомнительные предположения и практические вопросы осуществления. Именно этими предположениями должен заниматься новичок в алгоритмической торговле.
Лучшее место, чтобы узнать о распределении Келли – в «руководстве по математике портфолио» Ральфа Винса, хотя есть множество сообщений в блогах и на форумах о распределении Келли, которые будет легче переварить.
Сложность в реализации Келли заключается в том, что она требует регулярной ребалансировки портфеля, что приводит к покупке в выигрышах и продаже в убытках – что легче сказать, чем сделать.
MVO, за которую Гарри Марковиц получил Нобелевскую премию, включает в себя формирование портфеля, который лежит на так называемой «эффективной границе» и следовательно, минимизирует дисперсию (риск) для данной доходности или, наоборот максимизирует доходность для данного риска. MVO страдает от классической проблемы, с которой алгоритмические трейдеры будут постоянно сталкиваться: оптимальный портфель формируется задним числом, и нет никакой гарантии, что прошлый оптимальный портфель будет оставаться оптимальным в будущем. Базовая доходность, корреляция и ковариация компонентов портфеля не являются стационарными и постоянно меняются часто непредсказуемым способом.
Другим способом оценки риска, связанного со стратегией, является использование Value-at-Risk (VaR), которое обеспечивает аналитическую оценку максимального размера убытка от торговой стратегии или портфеля за заданный временной горизонт и при заданном доверительном уровне.
Например, VaR $ 100 000 на 95% доверительном уровне для временного горизонта в одну неделю означает, что есть шанс в 95% потерять не более $ 100 000 в течении следующей недели. Как в случае и с другими инструментами управления рисками, важно понимать предположение, на которое опирается VaR. Во-первых, VaR не учитывает риск, связанный с возникновением экстремальных событий. Однако зачастую эти события мы и хотим понять. Он также опирается на точечные оценки корреляций и волатильность компонентов стратегии, которые постоянно меняются.
Наконец, я хочу упомянуть эмпирический подход к измерению риска, связанного с торговой стратегией: перестановка системных параметров или SPP. Этот подход пытается обеспечить обьективную оценку эффективности стратегии на любом доверительном уровне в любое время интересующего горизонта. Под «непредвзятым» я подразумеваю, что оценка не подвержена тенденциям интеллектуального анализа данных или «P-hacking», упомянутым выше. Лично я считаю, что этот подход имеет большую практическую ценность, но он может быть очень дорогим в вычислении и не подходить для некоторых торговых стратегий.
Теперь вы знаете о нескольких различных инструментах, которые помогут вам в управлении рисками. Я не буду рекомендовать один подход по сравнению с другим, но я рекомендую изучить каждый из них, особенно их преимущества, недостатки и предположения. Тогда вы сможете выбрать тот подход, который соответствует вашим целям и который вы понимаете достаточно глубоко, чтобы строить реалистичные ожидания. Следует также иметь ввиду, что существует множество различных ограничений, в рамках которых необходимо управлять портфелями проектов и стратегий, особенно в институциональных условиях.
Последнее слово по управлению рисками: при измерении любой метрики, связанной с торговой системой, учитывайте, что она статична – скорее, она почти всегда динамично развивается со временем. Таким образом, точечное измерение говорит лишь крошечную часть истинной истории. Пример того, почему это важно, можно увидеть в портфеле акций, риск которых управляется путем измерения корреляций и ковариаций различных компонентов. Такой портфель направлен на снижение риска за счет диверсификации. Однако такой портфель сталкивается с проблемами, когда рынки танкуют: в этих условиях ранее некоррелированные активы становятся гораздо более коррелированными, сводя на нет эффект диверсификации именно тогда, когда это необходимо больше всего!
Переходя к трем основным навыкам, которые я описал, я также хотел бы добавить численную оптимизацию, машинное обучение и анализ больших данных, однако они выходят за рамки того, что я бы назвал «минимальными требованиями». Эти навыки приятно иметь в своем инструментарии, они облегчат вашу жизнь в качестве алгоритмического трейдера.
Для авантюрных и по-настоящему преданных делу я также могу порекомендовать изучение поведенческих финансов, микроструктуры рынка и макроэкономики. Опять же, это не минимальные требования, но это даст вам понимание, которое поможет ориентироваться на рынках. Финансы и экономика помогают генерировать торговые идеи, но вам не нужно формальное образование в этих областях.
Наконец, было бы упущением с моей стороны не упомянуть о «нетехнических навыках», которые пригодятся. Особенно важным из них является критическое мышление. Вы будите читать горы информации о рынках на своем алгоритмическом торговом пути, и каждая страница должна быть прочитана критическим взглядом. Заведите привычку проверять идеи самостоятельно и собирать собственные доказательства, а не полагаться на утверждение других людей.
Другие нетехнические навыки, которые стоит культивировать, включают настойчивость перед лицом отказа (вы к сожалению, будете вынуждены отказаться от большинства ваших торговых идей) и способность проводить высококачественны, воспроизводимые и обьективные исследования.
Как и когда появилась алгоритмическая торговля
Первая автоматизированная система торговли была создана на бирже NASDAQ в начале 70-х годов прошлого века. Официально электронные сделки с активами были разрешены в 1998 году в США и активно развивались вплоть до кризиса 2008–2009 гг. После 2012 года их объем немного сократился по причине большого количества ошибок в алгоритмах и составил примерно 50% от общего числа сделок.
Пандемия коронавируса в 2022 году поспособствовала развитию электронной торговли. К концу 2022 г. в России некоторые компании стали совершать более 90% сделок в электронной форме.
Больше всего HFT-trading (высокочастотный алготрейдинг) используется в банках и хедж-фондах. Эти крупные участники рынка имеют штат высококвалифицированных специалистов, которые разрабатывают и внедряют новые стратегии алготрейдинга.
Почему нужен алгоритм торговли
Думается, что ответ на этот вопрос очевиден. Еще с детства нас обучали, что надо составлять расписание дел на день и тогда будешь действовать быстрее и успевать больше. Такой же принцип работает на финансовых рынках.
Когда вы прописываете каждый свой шаг, у вас уменьшается количество возможных ошибок автоматически. Никакие непредвиденные ситуации, вроде отключенного электричества не испортят вам торговлю, потому что у вас уже будет подготовлен запасной вариант.
А в торговле алгоритм избавит вас от азарта и повысит хладнокровие. Ведь его иногда так не хватает.
Разновидности алгоритмов
Приведем краткий обзор разновидностей алгоритмов, применяемых в биржевой торговле.
- Алгоритмы исполнения приказов. Они основаны на критериях ценовых минимумов и максимумов, средневзвешенной цены по времени и по объему. Простыми словами, пользователю следует задать условие, которое алгоритм исполнит в определенный момент. Например, если цена упадет до такого-то значения – продавать (или покупать). Алготрейдинг позволяет сделать это быстро, пока цена находится на нужном уровне. При необходимости можно распределить ордера на более мелкие для минимизации рисков.
- Алгоритмы поведенческих факторов. Здесь анализируются действия трейдеров, совершающих аналогичные сделки. Для примера: один крупный инвестор всегда покупает облигации, если курс национальной валюты падает в течение определенного срока. Значит, его действия берутся за основу. Примерно так работает этот метод алготрейдинга.
- Алгоритмы скальпинга основаны на большом количестве спекулятивных сделок в течение короткого периода. Как вы уже догадались, этот метод подходит для внутридневной торговли.
- Предиктивные алгоритмы используют исторические данные и математические модели. Например, если линия тренда максимально приближена к другой линии в прошлых периодах, максимальную прибыль получили те, кто торговал в каком-то определенном диапазоне. Система берет это в качестве шаблона и действует аналогичным образом. Здесь участвует и искусственный интеллект, который подключает методы фундаментального анализа компании на основе данных отчетности и государственной статистики.
Алгоритмические торговые стратегии
Итак, теперь, когда вы понимаете, как работает программное обеспечение для алгоритмической торговли, нам необходимо обсудить некоторые стратегии, выполнение которых будет запрограммировано протоколом.
Хотя количество реализуемых стратегий не ограничено, ниже вы найдете несколько часто используемых примеров.