Блог им. Antonachi

Как добиться успеха в алгоритмическом трейдинге? (часть первая)

Как добиться успеха в алгоритмической торговле?

 

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

 

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

Это статья посвящена:

1) Чему научиться, чтобы добиться успеха

2) Как научится этому

3) Важные практические соображения

 

Что делать чтобы добиться успеха?

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

 

Технические навыки, необходимые для долгосрочной успешной алгоритмической торговли, включаю в себя:

  1. Программирование
  2. Статистика
  3. Риск менеджмент
  4. Есть и другие навыки, которые я хотел бы добавить к этому списку, но они немного выходят за рамки того, что я бы назвал «минимальными требованиями». – Об этом позже)

 

Программирование

 

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

Полезно ознакомиться с синтаксисом языка на основе С, такого как С++ и 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», упомянутым выше. Лично я считаю, что этот подход имеет большую практическую ценность, но он может быть очень дорогим в вычислении и не подходить для некоторых торговых стратегий.

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

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

 

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

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

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

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

 

★16
13 комментариев
Начать нужно с математического доказательства возможности заработка в будущем методом обработки данных из прошлого.

Начинающие алготрейдеры даже не парятся этим. Они верят в силу графика. Результат — потерянные деньги и годы жизни.
avatar
В первом предложении автора: «много информации об алгоритмической и количественной торговле». ппц. зеленое и квадратное. дальше читать не стал.
Это зазывала в  школу трейдинга Форекс + Метатрейдер… слив любого депозита за 2-3 месяца.
avatar
программирование знать совсем не обязательно, главное — алгоритм, приносящий прибыль
avatar
Ну ты и загрузил. Программирование узкоспециализированное. Изначально под софт. У нас есть tslab, есть wealth lab си шарп язык. Что то другое менее функционально для статистики.  Есть метатрейдер с его псевдо С++ как надежная платформа для любых роботов. Т.е. нужен язык си шарп на базовом уровне и далее переходить под изучение программ для алготрейдинга. 
Знать все что указано — это в принципе обще прикладное программирование, зачем?
Впрочем, обобщили и рассказали об все теориях и материалах. Применяемые в трейдинге. Только есть ли польза от них хоть у кого нибудь?
avatar
Допустим я написал стратегию(а это так на самом деле), которая дает мне 10% в месяц по бек тестам на выбранных мне инструментах и я не знаю как долго она будет работать. Рано или поздно все возможности исчезают.

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

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

Мой подход использовать портфель торговых алгоритмов(стратегий), а не зацикливаться на одной стратегии.

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

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

Alex — Quant School, статья переводная?
Изучить и С++ и Питон — не слишком ли для новичка? 
В принципе, достаточно одного питона, тем более, что он куда проще для изучения.
avatar
SergeyJu, никто не обещал легких денег в трейдинге. Чем больше вы изучите, тем проще будет вам применить свои навыки на практике
позвонили сегодня, сказали, что была попытка изменить мои реквизиты в банке, не стал слушать, повесил трубку. такая у людей работа.
avatar

Суть статьи в 6 словах: «вам нужно программирование, статистика, управление риском» Остальное вода.

Ни ссылок, ни посылок.

avatar

теги блога Alex - Quant School

....все тэги



UPDONW
Новый дизайн