Алгоритмический трейдинг что это
Как добиться успеха в алгоритмическом трейдинге? (часть первая)
Как добиться успеха в алгоритмической торговле?
Сегодня в открытом доступе много информации об алгоритмической и количественной торговле. Трейдера, которого привлекает эта область, хочет синтезировать как можно больше информации, когда он только начинает. В результате новички могут быть ошеломлены «параличом анализа» и потратить много своего ценного времени на алгоритмическую торговлю, не добившись значительного прогресса. В этой статье я расскажу о том, как я подошел бы к алгоритмической торговле в качестве новичка, если бы только начинал свой путь. Эта статья окрашена личным опытом, поэтому, пожалуйста, прочитайте ее с пониманием того, что я описываю то, что работает для меня. Я не претендую на то, чтобы быть гуру по личному или профессиональному развитию, но мне удалось развить свои навыки алгоритмической торговли до такой степени, что я смог оставить свою основную работу для торговли на рынках – так что, возможно, у меня есть личный опыт и понимание, которые могут быть полезны для вас. В этой статье, я намерен предоставить вам некую «дорожную карту» для начала и достижения максимально эффективного прогресса, поделившись некоторыми практическими вещами, которые я узнал на своем пути в качестве алготрейдера.
Это статья посвящена:
1) Чему научиться, чтобы добиться успеха
2) Как научится этому
3) Важные практические соображения
Что делать чтобы добиться успеха?
Активное практика это гораздо важнее, чем пассивное обучение. Изучение теоретических основ важно, но это только первый шаг. Чтобы стать опытным в алгоритмической торговле, вы должны применять теорию на практике. Чтобы преуспеть в алгоритмической торговле, обычно нужно иметь знания и навыки, которые охватывают ряд дисциплин. Это включает в себя как технические, так и другие навыки.
Технические навыки, необходимые для долгосрочной успешной алгоритмической торговли, включаю в себя:
Программирование
Если вы еще не можете программировать, начните учится. Чтобы заниматься серьезной алгоритмической торговлей, вы должны уметь программировать, так как этот навык позволяет проводить эффективные исследования. Забудьте о программах типа «нажмите и перетащите», которые обещают успех в алгоритмической торговле без необходимости писать код, и если какой либо гуру трейдинга скажет вам, что вам не нужно кодировать, развернитесь и бегите не оглядываясь от него. Примите, что навыки программирования являются предпосылкой для успешной алгоритмической торговли. Через некоторое время вы обнаружите, что вам это нравится.
Полезно ознакомиться с синтаксисом языка на основе С, такого как С++ и Java, но в тоже время сосредоточьтесь на основах структур данных и алгоритмах. Это даст вам очень прочную основу и хотя может потребоваться десятилетие, чтобы стать экспертом С++, я считаю, что большинство людей могут достичь достойного уровня за шесть месяцев напряженной работы. Это подготовит вас к тому, что последует дальше.
Также полезно знать хотя бы один из языков более высоко уровня, таких как Python, R или MATLAB, поскольку вы, вероятно будете делать подавляющее большинство своих исследований и разработок на одном из этих языков. Мое личное предпочтение R.
Когда вы начнете, я не думаю, что это будет иметь большое значение, какой из этих языков высокого уровня вы выберете. Со временем вы начнете узнавать, какой инструмент является наиболее подходящим для выполнения поставленной задачи. Поэтому не слишком зацикливайтесь на своем первоначальном уровне – просто сделайте выбор и начните!
Смысл возможности программирования в этом контексте заключается в том, чтобы обеспечить тестирование и реализацию алгоритмических торговых систем. Поэтому может быть огромной пользой иметь качественную среду моделирования в вашем распоряжении. Как и в случае любой задачи моделирования, важным соображением являются точность, скорость и гибкость. Вы всегда сможете написать свою собственную среду моделирования, и иногда это будет наиболее разумной вещью, но часто вы можете использовать инструменты, которые создали другие люди для этой цели. Это имеет то преимущество, что позволит сосредоточиться на реальных исследованиях и разработках, которые непосредственно связаны с торговой стратегией, а не тратить много времени на создание самой среды моделирования. Недостатком является то, что иногда вы не совсем точно знаете, что происходит под капотом, и бывают случаи, когда использование чужого инструмента помешает вам преследовать определенную идею, в зависимости от ограничений инструмента. Хороший инструмент моделирования должен иметь следующие характеристики:
Есть несколько вариантов, но для новичка, вероятно, нет ничего лучше, чем платформа Zorro, которая сочетает в себе точность, гибкость и скорость с простым языков сценариев на основе C, что делает его идеальным введение в программирование. Платформа постоянно совершенствуется и обновляется, причем улучшения выпускаются примерно раз в квартал. Zorro может выглядеть не очень впечатляюще, но он упаковывает в себе множество функций и является отличным выбором для начинающих. Платформа Zorro широко использует возможности в алгоритмической торговле и включает в себя подробные учебники по началу работы, которые направлены на новичка.
Статистика
Было бы трудно быть успешным алгоритмическим трейдером без хорошего знания статистики. Статистика лежит в основе почти всего, что мы делаем, от управления рисками до изменения эффективности и принятия решения о распределении по конкретным стратегиям. Важно отметить, что статистика станет вдохновением для многих ваших идей для торговых алгоритмов. Вот некоторые конкретные примеры использования статистики в алгоритмической торговле, чтобы проиллюстрировать, насколько важен этот навык:
Помимо этого, наиболее важное применение статистики в алгоритмической торговле связана с интерпретацией результатов тестирования и моделирования. Есть некоторые существенные подводные камни, такие как выемка данных или «P-hacking» — которые возникают естественным образом в результате процесса разработки стратегии и которые очевидны, если вы не понимаете статистику тестирования гипотез и последовательного сравнения. Неправильный учет этих предубеждений может быть катастрофическим в торговом контексте. Хотя этот вопрос невероятно важен, он далеко не очевиден и представляет собой самый значительный барьер на пути к успеху с которым я столкнулся. Пожалуйста, потратьте некоторое время на понимание этого принципиально важного вопроса – я не могу не подчеркнуть насколько он важен.
Также оказывается, что человеческий мозг прискорбно неадекватен, когда дело доходит до выполнения обоснованных статистических рассуждений. Даниел Канеман в книге «Думай медленно… Решай быстро» обобщает несколько десятилетий исследований и когнитивных предубеждений, с которыми люди сталкиваются. Канеман обнаружил, что мы склонны слишком доверять собственным способностям и суждениям, что человеческий разум систематически впадает в заблуждения и ошибки в суждениях, и что мы в подавляющем большинстве склонны приписывать слишком много значения случайности. Важным следствием работы Канемана является то, что, когда дело доходит до выводов о сложной системе со значительным количеством случайности, мы почти гарантированно принимаем плохие решения без надежной статистической основы. Мы просто не можем полагаться на собственную интерпритацию.
«Думай медленно… Решай быстро» — это не книга о трейдинге, но она помогла мне в торговле больше, чем любая другая книга, которую я читал. Очень рекомендую. Кроме того, не случайно работа Канемана создала область поведенческой экономики.
Риск менеджмент
Управление рисками. Существует множество рисков, которыми необходимо управлять в рамках алгоритмического трейдинга. Например, существует инфраструктурный риск (риск того, что ваш сервер выйдет из строя или пострадает от отключения питания, оборванного соединения или любого другого вмешательства) и встречный риск (риск того, что встречная сторона сделки не сможет выполнить сделку или риск того, что ваш брокер обанкротится и заморозит ваш счет). Хотя эти риски, весьма реальны и их необходимо учитывать – больше внимания уделяется управлению рисками на уровне торговли и портфеля. Этот вид управления рисками пытается количественно оценить риск потерь и определить оптимальный подход к распределению стратегии или портфеля стратегий. Это сложная область, и есть несколько подвохов и вопросов, о которых практикующий трейдер должен знать.
Две стратегии распределения, о которых стоит узнать – это распределения Келли и оптимизация средней дисперсии (MVO). Они использовались на практике, но они несут в себе некоторые сомнительные предположения и практические вопросы осуществления. Именно этими предположениями должен заниматься новичок в алгоритмической торговле.
Лучшее место, чтобы узнать о распределении Келли – в «руководстве по математике портфолио» Ральфа Винса, хотя есть множество сообщений в блогах и на форумах о распределении Келли, которые будет легче переварить.
Сложность в реализации Келли заключается в том, что она требует регулярной ребалансировки портфеля, что приводит к покупке в выигрышах и продаже в убытках – что легче сказать, чем сделать.
MVO, за которую Гарри Марковиц получил Нобелевскую премию, включает в себя формирование портфеля, который лежит на так называемой «эффективной границе» и следовательно, минимизирует дисперсию (риск) для данной доходности или, наоборот максимизирует доходность для данного риска. MVO страдает от классической проблемы, с которой алгоритмические трейдеры будут постоянно сталкиваться: оптимальный портфель формируется задним числом, и нет никакой гарантии, что прошлый оптимальный портфель будет оставаться оптимальным в будущем. Базовая доходность, корреляция и ковариация компонентов портфеля не являются стационарными и постоянно меняются часто непредсказуемым способом.
Другим способом оценки риска, связанного со стратегией, является использование Value-at-Risk (VaR), которое обеспечивает аналитическую оценку максимального размера убытка от торговой стратегии или портфеля за заданный временной горизонт и при заданном доверительном уровне.
Наконец, я хочу упомянуть эмпирический подход к измерению риска, связанного с торговой стратегией: перестановка системных параметров или SPP. Этот подход пытается обеспечить обьективную оценку эффективности стратегии на любом доверительном уровне в любое время интересующего горизонта. Под «непредвзятым» я подразумеваю, что оценка не подвержена тенденциям интеллектуального анализа данных или «P-hacking», упомянутым выше. Лично я считаю, что этот подход имеет большую практическую ценность, но он может быть очень дорогим в вычислении и не подходить для некоторых торговых стратегий.
Теперь вы знаете о нескольких различных инструментах, которые помогут вам в управлении рисками. Я не буду рекомендовать один подход по сравнению с другим, но я рекомендую изучить каждый из них, особенно их преимущества, недостатки и предположения. Тогда вы сможете выбрать тот подход, который соответствует вашим целям и который вы понимаете достаточно глубоко, чтобы строить реалистичные ожидания. Следует также иметь ввиду, что существует множество различных ограничений, в рамках которых необходимо управлять портфелями проектов и стратегий, особенно в институциональных условиях.
Последнее слово по управлению рисками: при измерении любой метрики, связанной с торговой системой, учитывайте, что она статична – скорее, она почти всегда динамично развивается со временем. Таким образом, точечное измерение говорит лишь крошечную часть истинной истории. Пример того, почему это важно, можно увидеть в портфеле акций, риск которых управляется путем измерения корреляций и ковариаций различных компонентов. Такой портфель направлен на снижение риска за счет диверсификации. Однако такой портфель сталкивается с проблемами, когда рынки танкуют: в этих условиях ранее некоррелированные активы становятся гораздо более коррелированными, сводя на нет эффект диверсификации именно тогда, когда это необходимо больше всего!
Переходя к трем основным навыкам, которые я описал, я также хотел бы добавить численную оптимизацию, машинное обучение и анализ больших данных, однако они выходят за рамки того, что я бы назвал «минимальными требованиями». Эти навыки приятно иметь в своем инструментарии, они облегчат вашу жизнь в качестве алгоритмического трейдера.
Для авантюрных и по-настоящему преданных делу я также могу порекомендовать изучение поведенческих финансов, микроструктуры рынка и макроэкономики. Опять же, это не минимальные требования, но это даст вам понимание, которое поможет ориентироваться на рынках. Финансы и экономика помогают генерировать торговые идеи, но вам не нужно формальное образование в этих областях.
Наконец, было бы упущением с моей стороны не упомянуть о «нетехнических навыках», которые пригодятся. Особенно важным из них является критическое мышление. Вы будите читать горы информации о рынках на своем алгоритмическом торговом пути, и каждая страница должна быть прочитана критическим взглядом. Заведите привычку проверять идеи самостоятельно и собирать собственные доказательства, а не полагаться на утверждение других людей.
Другие нетехнические навыки, которые стоит культивировать, включают настойчивость перед лицом отказа (вы к сожалению, будете вынуждены отказаться от большинства ваших торговых идей) и способность проводить высококачественны, воспроизводимые и обьективные исследования.
Блог компании AMarkets | Лайфхаки для алготрейдинга: что важно учитывать?
Торговля на финансовых рынках не обязательно должна вестись вручную. Для тех, кто хочет максимально автоматизировать торговый процесс существует алготрейдинг. Это способ автоматической торговли, когда создается алгоритм, описывающий условия открытия, сопровождения и закрытия позиции, после чего эти действия осуществляются программным способом.
Таким образом, задача трейдера сводится к разработке и отладке своей собственной торговой системы, после чего система работает автоматически, без его участия.
Такую торговлю также называют трейдингом с использованием механических торговых систем, которые на Форекс называются советниками.
Механическая торговая система предполагает последовательное исполнение всех без исключения сигналов, без оценки и вынесения суждения относительно текущей торговой ситуации.
Обычно алготрейдинг используют с определенной целью, например, для долгосрочного инвестирования, когда нет возможности много времени проводить перед монитором с целью открытия и отслеживания позиций.
Этапы алготрейдинга
Алготрейдинг подразумевает несколько этапов.
Сбор данных. Нужно сказать, что обычно в программу уже заложены инструменты технического анализа, но все равно перед началом торговли рекомендуется детально изучить интересующий вас инструмент. Важно определиться с такими важными моментами, как правила открытия позиции, расположение уровней поддержки и сопротивления, а также правила расчета SL и ТP и условия пробоя уровней.
Создание торгового алгоритма. После этого переходят к созданию алгоритма торговли. Если у вас есть знания одного из языков программирования, таких как C++, Java и др., то можете написать торгового робота самостоятельно. В противном случае есть специальные конструкторы для алготрейдинга, такие как MetaTrader или TSLab.
Тестирование на исторических сделках. Протестировать алгоритм нужно обязательно, чтобы оценить его эффективность. Для этого выбирают ранее совершенные сделки.
Внедрение алгоритма. После успешного тестирования алгоритм можно внедрять в торговлю. Желательно для начала открывать небольшие позиции, чтобы в случае неудачи не терять крупных сумм.
Также нужно помнить о том, что рынок меняется и средний возраст успешных алгоритмов не превышает 3 года. Периодически нужно проводить мониторинг роботов для алготрейдинга, которые работают более 2х лет.
Преимущества и недостатки алготрейдинга
Как известно, у любой торговой системы есть преимущества и недостатки. Что касается алготрейдинга, то он обладает рядом бесспорных плюсов:
Также не следует забывать и о недостатках алготрейдинга:
В заключение нужно отметить, что алготрейдинг позволяет не только увеличить прибыль от торговли, но и снизить нагрузку на трейдера. Есть много вариаций алготрейдинга, в числе которых парный трейдинг или арбитраж. Использоваться он может как на валютном, так и на фондовом рынках.
Алгоритмическая торговля на фондовом рынке в России: тренды и технологии
Не так давно издание о фондовом рынке Market Lab опубликовало интервью с Юрием Масловым, который в ITinvest занимается развитием инфраструктуры для работы на бирже с помощью торговых роботов. В блоге на Хабре мы публикуем выдержки из этого разговора, посвященные ответам на часто встречающиеся вопросы относительно технологий, используемых на фондовом рынке в России.
Плюсы алгоритмической торговли
Увеличение числа трейдеров, использующих для торговли на бирже специальных роботов, является мировым трендом. Не все довольны этим фактом, многие считают алгоритмическую торговлю вредной спекуляцией, однако она позволяет поддерживать ликвидность на рынках. Число высокочастотных торговцев (HFT) и их влияние на рынок определяется общими рыночными законами — мы писали об этом в топике, посвященном перспективам алгоритмической торговли в России:
Помимо этого, использование технологий в торговле позволяет избавиться от одной из главных проблем, возникающих при работе на финансовом рынке — преобладания эмоций над разумом, что может приводить к ошибкам и потере денег. Кроме того, часто ситуация на фондовом рынке меняется столь стремительно, что человек может не успеть на нее среагировать — робот не столь медлителен.
Например, давным-давно, в 2002-2003гг. люди торговали простой жесткий арбитраж Газпром против фьючерса Газпрома руками. Получали безумные проценты в годовых. Но в 2008 году эта ниша целиком уже была занята алгоритмами. После сентября 2011 года эта ниша была полностью занята высокочастотными алгоритмами.
Сколько нужно денег для торговли роботом
Алгоритмизировать торговые стратегии можно и при наличии не очень большого объема средств для торговли на бирже. При этом, необходимо осознавать, что существуют различные сферы алгоритмической торговли. Есть ее разновидности, не предъявляющие повышенного требования к скорости — например, интеллектуальные стратегии, которые выигрывают за счет понимания рынка. Если же нужна высокочастотная торговля (стратегии, обгоняющие всех на рынке) или предполагается использование микроструктурных моделей, то входной билет стоит дороже, поскольку необходимо наличие серьезной инфраструктуры, затраты на ее поддержку.
Прежде, чем бросаться в бой на реальный рынок, необходимо протестировать стратегию и рассчитать ее доходность (в принципе, это можно сделать даже в MS Excel). Эта доходность должна, в идеале, покрывать затраты на разработку и поддержание торгового робота — оплата услуг программиста или, при самостоятельной разработке, временные затраты.
На рынке есть люди, которые начинали со 100 тыс. руб. Может, они просто начинали в более удачное время. Сегодня сумма от 500 тыс. рублей до 1 млн. рублей — это входной порог, на котором уже можно начинать работу с алгоритмическими стратегиями. При этом, есть удобные инструменты, которыми можно алгоритмизировать стратегию и за 20 тыс. рублей. Их на рынке становится все больше. Они позволяют делать алгоритмы без значительных затрат на разработку.
В число таких решений входят системы TS Lab или продукты компании Cofite. Таких решений становится все больше — суть их заключается в использовании скриптовых языков, которые упрощают разработку по времени. Они «заточены» под быструю реализацию алгоритмов. Пример подобного скриптового языка — TradeScript, созданный американцами из Modulus Financial Engineering. Эта технология была лицензирована (OEM) для создания терминала SmartX. Этот язык очень прост и позволяет описать торговую стратегию за короткое время, просто ознакомившись с мануалом (или публикациями на Хабре — раз, два)
Раундтрип заявок
Скорость работы торгового робота зависит от различных факторов. Одним из важнейших является используемый протокол передачи данных.
Возьмем протоколы, которые используются для работы с Московской биржей по спот рынку. Там есть разные способы подключения: «родной» биржевой протокол, его еще называют нативным, FIX-подключение и работа через брокерскую торговую систему. Люди, которые стараются быть первыми в «стаканах», используют FIX-подключение, реже — нативный протокол.
При подключении через брокерскую систему скорость, как правило, ниже. Если говорить о FIX на фондовом рынке ММВБ, то раундтрип, в биржевой части составляет около 300-350 микросекунд, полный путь заявки, учитывая задержку каналов связи и на клиентском оборудовании, может выражаться в заметно больших значениях.
Эти цифры одинаковы для всех брокеров, они зависят в большей степени от качества канала до биржи, установленного оборудования и скорости обработки заявки в ядре. В случае использования «родного» биржевого протокола TEAP типичная задержка выше и составляет от 420 мкс.
Время для выставления заявок, проходящих через торговую систему ITinvest (от момента, когда она получена от клиента на шлюз (gateway), до момента, когда клиенту отдается ответ на неё – необходимо понимать, что при работе через интернет могут быть непредсказуемые задержки на участке от шлюза брокера до оборудования клиента) составляет от 1,5 до 2,5мс. При этом для высокочастотных трейдеров существует решение, которое подразумевает работу по FIX-протоколу и подключение к серверам риск-менеджмента ITinvest. На контроль рисков уходит считанное количество микросекунд и в общем количестве биржевого раундтрипа они незаметны.
Технологии разработки
Опыт показывает, что наилучшим технологическим решением для создания торговых роботов на российском рынке являются универсальные процессоры. Диапазон применения различных решений ограничен — на FPGA можно построить быструю стратегию, но для сложными вычислений лучше использовать универсальный процессор. В графических процессорах есть свои недостатки, например, медленная работа с памятью и большое энергопотребление. Оптимизация робота под универсальный процессор на локальном рынке в настоящий момент является лидирующим решением.
Что касается операционных систем, то чем больше человек хочет производительности, тем более он заинтересован использовать Linux. Если есть какая-то работающая бизнес-идея, то повышение скорости может позволить заработать больше. Но стоимость разработки и использования высококлассного программиста может не окупить эти расходы. В принципе, достаточно быстрые решения можно создать и на Windows. Linux хорош тем, что он кастомизируется под возникающие нужды пользователя-трейдера — выходят новые ядра с новыми фишками. Windows более консервативен в этих вопросах.
Популярным в последнее время является С#. Он очень прост в разработке, и человек, даже не имеющий профильного образования и обладающий лишь базовыми навыками разработки, может освоить С# и написать алгоритм робота. Для более серьезных разработок на финансовом рынке используются C и C++, которые позволяют получить приемлемую скорость при оптимальных затратах (в тяжелых случаях дело доходит и до Ассемблера). Начинающие разработчики биржевого софта обычно используют C#.
Нужно ли использовать коробочные продукты для создания роботов
С одной стороны, плюс подобных решений в том, что они экономят время разработки. С другой — это «черный ящик» со своей логикой, и разобраться в некоторых продуктах без консультации с их создателями, действительно, сложно. Но тот факт, что они облегчают разработку торговых роботов несомненен. У большинства брокеров есть удобный интерфейс, который позволяет быстро и удобно написать приложение. Например, у ITinvest есть API SmartCom.
Его мануал содержит примеры, и человек, владеющий С#, сможет написать своего робота достаточно быстро. При этом, высокочастотные торговцы практически всегда пишут торговые системы под себя — данный метод позволяет получать уникальный продукт и рассчитывать на больший выигрыш на рынке.
На сегодня все, всем спасибо за внимание. Также мы хотели бы поинтересоваться у пользователей Хабра тем, о каких темах, связанных с фондовым рынком, им было бы интересно почитать. Заявки и вопросы принимаются в комментариях!