08/11/2024

How-to: пошаговое руководство по разработке торговой системы для работы на фондовом рынке

 

How-to: пошаговое руководство по разработке торговой системы для работы на фондовом рынке

image

Примечание: Данный пост написан британским разработчиком и финансовым аналитиком Майклом Халлс-Муром, который является профессионалом в так называемом Quantitative trading. С нашей точки зрения информация, содержащаяся в этом топике, может быть интересна техническим специалистам и разработчикам, которые интересуются фондовым рынком и обладают навыками для создания, к примеру, успешных торговых роботов, но не знают с чего начать. Поэтому топик будет рассматриваться именно в таком контексте, кроме того, текст адаптирован к российским реалиям, соответственным образом переведены и некоторые термины. Будем рады вашим комментариям! (Поправки по переводу лучше отправлять в личных сообщениях).

Алгоритмическая торговля — является крайне сложной областью финансов, и чтобы освоить объем информации, который позволит создать свою собственную торговую систему или устроиться разработчиком в финансовую компанию или фонд, потребуется довольного много времени. Большой опыт в программировании просто необходим для успешной работы на этом рынке, как минимум алготорговец должен хорошо разбираться в таких языках, как C/C++ (в области финансов перспективен и язык Java) и Python, Matlab и R (на российском рынке набирает популярность разработанный в США TradeScript — прим. перев.).

Любая высокочастотная торговая система состоит из четырех основных компонентов:

  • Идентификация стратегии — то есть определение стратегии торговли, эксплуатация заключенных в ней преимуществ и выбор частоты торговли.
  • Бэктестинг стратегии — получение исторических данных о торгах и «прогон» стратегии на них, анализ результатов и оптимизация слабых мест.
  • Движок — часть, которая соединяется с брокерской торговой системой (недавно ITinvest ввел в строй новую систему Matrix — прим. перев.), автоматически осуществляет торговлю и подстраиваться под изменения на рынке для сокращения издержек.
  • Риск-менеджмент — распределение капитала для совершения торговых операций оптимальным образом, определение последовательности действий при неудачном стечении обстоятельств на рынке.

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

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

image

Вопреки расхожему мнению, что «ни один дурак не будет делиться стратегией, которая приносит деньги», на самом деле в публичных источниках можно найти информацию о стратегиях, которые действительно работают. Кроме того, аналитики и ученые иногда публикуют результаты своих исследований и финансовых экспериментов. Существует довольно много блогов на тему алгоритмеческой торговли на английском языке (в России, иногда, интересные темы проскакивают на ресурсе Smart-lab.ru), а в прессу иногда попадают данные о торговых стратегиях фондов.

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

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

Еще один важнейший момент алгоритмической торговли — это её частота. Низкочастотная торговля (LFT) подразумевает обладание финансовыми инструмента на протяжении времени, превышающем один торговый день. Соответственно, при высокочастотной торговли (HFT) все операции происходят «интрадей», то есть в рамках одного торгового дня. Существуют также так называемые ультравысокочастотные стратегии (UHFT), которые подразумевают удержание актива на протяжении секунд или даже миллисекунд. Большое развитие на мировых и российских рынках сейчас получила высокочастотная торговля.

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

Бэктестинг

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

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

Также важно определить метрики, по которым будет определяться, насколько успешно или неуспешно отработала стратегия «на истории». Стандартом в индустрии являются понятия «максимальной просадки» и коэффициент Шарпа. Максимальная просадка — это максимальный убыток по портфелю за определенный период (обычно за год). У низкочастотных стратегий просадка может быть больше, чем у высокочастотных, вследствие некоторых статистических факторов. Бэктест покажет максимальную просадку портфеля, которая могла бы иметь место в прошлом, что даст примерное понятие о том, чего стоит ожидать в этом плане при работе на реальном текущем рынке. Коэффициент Шарпа же это показатель эффективности инвестиционного портфеля (актива), который вычисляется как отношение средней премии за риск к среднему отклонению портфеля.

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

Торговый модуль

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

image

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

Транзакционные издержки — одна из главных вещей, о которой стоит думать HFT-трейдеру. Они обычно складываются из трех компонентов: коммиссий брокера и биржи (и налогов), проскальзывания (разница между ценой, по которой планировалось совершить сделку, и той ценой, по которой она в реальности прошла), а также спред конкретного финансового инструмента (разница между ценой покупки и продажи — bid/ask). Спред не является постоянно зафиксированной величиной и зависит от текущей ликвидности рынка.

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

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

Примеры создания торговых роботов на TradeScript.

Риск-менеджмент

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

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

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

Подробнее о риск-менеджменте можно прочитать в этом топике.

Выводы

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

Создание торговой стратегии. Полезные советы

sozdanie-torgovoj-strategii

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

p, blockquote 1,0,0,0,0 —>

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

p, blockquote 2,0,1,0,0 —>

Создание торговой стратегии. Основные факторы

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

sozdanie-torgovoj-strategii

  1. Создаваемая торговая методика в обязательном порядке должна соответствовать той ситуации, которая сложилась на валютном рынке в настоящее время. Ваша стратегия должна изменяться вместе с характером движения применяемых валютных пар, а также вместе с настроением игроков, присутствующих на рынке.
  2. Вам необходимо предварительно подобрать подходящую валютную пару, которую вы будете применять в процессе ведения торгов. Также вам необходимо заранее решить, какие именно ордера вы будете открывать: на продажу или на покупку.
  3. Для входа в рынок в соответствии с разрабатываемой стратегией вы можете применять как отложенные, так и рыночные ордера. Как можно понять из названия при использовании рыночных позиций, сделка будет заключаться по текущей цене. При использовании отложенных ордеров сделка будет открыта в момент, когда ценовой уровень достигнет указанного вами значения.
  4. При разработке собственной торговой методики вы должны точно определить, когда именно вы будете создавать ордера. Также вы должны решить для себя, на какой именно доход вы рассчитываете при открытии ордера, а также, сколько вы готовы потерять, если ценовой уровень будет двигаться в невыгодном для вас направлении.
  5. Также вам необходимо обязательно разработать подробный сценарий заключения сделки. Этот сценарий должен включать в себя все этапы, начиная от выявления места для открытия ордера и заканчивая вариантами его закрытия. Кроме того, вам необходимо провести оценку потенциала движения применяемой валютной пары. На основании этих данных вы должны разработать собственный порядок действий в ситуациях, когда ценовой уровень движется в нужном вам направлении. А также в ситуациях, когда ценовой уровень непосредственно после создания ордера совершает поворот и движется в невыгодном направлении.

Качества, необходимые для создания стратегии

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

sozdanie-torgovoj-strategii

  1. Уметь избегать разнообразных стрессов и быть терпеливым. В ситуациях, когда разработанная вами стратегия приносит убытки, не нужно расстраиваться. В этом случае вам необходимо взять себя в руки и исправить все ошибки, допущенные при создании стратегии.
  2. Быть уверенным в себе и дисциплинированным. Опытные трейдеры строго следуют правилам применяемой стратегии и не поддаются эмоциям. Даже если существует возможность получить прибыль больше той, которая планировалась изначально, трейдер закрывает сделку в полном соответствии со стратегией.
  3. Успешный трейдер должен обладать высокой работоспособностью. При этом, не следует забывать об отдыхе. Это связано с тем, что чрезмерная усталость мешает трейдеру адекватно реагировать на изменения рынка.
  4. Не стоит бояться ошибок. Это связано с тем, что анализ периодически совершаемых ошибок позволяет постоянно улучшать используемую вами торговую стратегию и делать ее более совершенной.
  5. Необходимо быть готовым к резким изменениям ценового уровня, так как валютный рынок может быть очень непредсказуемым.
  6. Старайтесь учиться на опыте более успешных трейдеров. Наблюдая за их действиями, вы сможете быстрее усовершенствовать собственную торговую стратегию.
  7. При открытии ордеров необходимо убедиться в том, что соотношение потенциальной прибыли и рисков является выгодным для вас.
  8. Используйте все доступные обучающие программы и материалы о валютном рынке, так как это поможет вам быстрее обрести необходимый багаж знаний.

sozdanie-torgovoj-strategii

p, blockquote 5,0,0,0,0 —>

Преимущества торговых стратегий перед торговлей наугад

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

p, blockquote 6,0,0,1,0 —>

Если вы предпочитаете вести торги наугад, то вам будет достаточно трудно найти ответ на следующие вопросы:

  1. Если ордер является прибыльным, когда его лучше всего закрыть.
  2. Что делать если изначально успешный ордер стал приносить убытки после разворота цены.
  3. Следует ли сразу закрывать ордер, если он начал приносить убытки.
  4. Что именно делать, если после создания ордера ценовой уровень начал двигаться в невыгодном направлении.
  5. Какой объем убытков является для вас допустимым.

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

Источник https://habr.com/ru/company/iticapital/blog/224353/

Источник https://womanforex.ru/foreks-dlya-novichkov/sozdanie-torgovoj-strategii.html

Источник

Источник