How-to: пошаговое руководство по разработке торговой системы для работы на фондовом рынке
Содержание статьи
How-to: пошаговое руководство по разработке торговой системы для работы на фондовом рынке
Примечание: Данный пост написан британским разработчиком и финансовым аналитиком Майклом Халлс-Муром, который является профессионалом в так называемом Quantitative trading. С нашей точки зрения информация, содержащаяся в этом топике, может быть интересна техническим специалистам и разработчикам, которые интересуются фондовым рынком и обладают навыками для создания, к примеру, успешных торговых роботов, но не знают с чего начать. Поэтому топик будет рассматриваться именно в таком контексте, кроме того, текст адаптирован к российским реалиям, соответственным образом переведены и некоторые термины. Будем рады вашим комментариям! (Поправки по переводу лучше отправлять в личных сообщениях).
Алгоритмическая торговля — является крайне сложной областью финансов, и чтобы освоить объем информации, который позволит создать свою собственную торговую систему или устроиться разработчиком в финансовую компанию или фонд, потребуется довольного много времени. Большой опыт в программировании просто необходим для успешной работы на этом рынке, как минимум алготорговец должен хорошо разбираться в таких языках, как C/C++ (в области финансов перспективен и язык Java) и Python, Matlab и R (на российском рынке набирает популярность разработанный в США TradeScript — прим. перев.).
Любая высокочастотная торговая система состоит из четырех основных компонентов:
- Идентификация стратегии — то есть определение стратегии торговли, эксплуатация заключенных в ней преимуществ и выбор частоты торговли.
- Бэктестинг стратегии — получение исторических данных о торгах и «прогон» стратегии на них, анализ результатов и оптимизация слабых мест.
- Движок — часть, которая соединяется с брокерской торговой системой (недавно ITinvest ввел в строй новую систему Matrix — прим. перев.), автоматически осуществляет торговлю и подстраиваться под изменения на рынке для сокращения издержек.
- Риск-менеджмент — распределение капитала для совершения торговых операций оптимальным образом, определение последовательности действий при неудачном стечении обстоятельств на рынке.
Торговая стратегия
В трейдинге любым действиям всегда предшествует этап сбора и изучения информации. Прежде чем выбрать стратегию для торговли, необходимо проанализировать исходные данные вроде объема имеющихся средств, а также учесть, насколько новая стратегия сочетается с уже использующимися. Индивидуальные трейдеры просто обязаны уделять большое внимание транзакционным издержкам и всеми силами пытаться их сокращать, соответственным образом и выбирается оптимальная стратегия торговли.
Вопреки расхожему мнению, что «ни один дурак не будет делиться стратегией, которая приносит деньги», на самом деле в публичных источниках можно найти информацию о стратегиях, которые действительно работают. Кроме того, аналитики и ученые иногда публикуют результаты своих исследований и финансовых экспериментов. Существует довольно много блогов на тему алгоритмеческой торговли на английском языке (в России, иногда, интересные темы проскакивают на ресурсе Smart-lab.ru), а в прессу иногда попадают данные о торговых стратегиях фондов.
Конечно, никто не станет обсуждать в публичном поле все аспекты и детали настройки прибыльной стратегии. Ключ к прибыльности как раз заключается в понимании того, какие параметры должны иметь стратегия, а также её «тонкая настройка». Тем не менее, практически стопроцентный путь к созданию собственной стратегии этого «воровство» чужих идей и их последующая доработка.
Большинство стратегий можно разделить на две большие группы — «играющие на неэффективностях» и «идущие за трендом». Стратегии первого типа эксплуатируют неэффективности рынка (например, спред в цене связанных финансовых инструментов) и тот факт, что в краткосрочной перспективе цена активов часто возвращается на изначальный уровень. Трендовые стратегии играют на психологии инвесторов и действиях фондов, пытаясь «запрыгнуть» в поезд нового тренда и успеть собрать на этом профит до того момента, пока движение не обратится в обратную сторону.
Еще один важнейший момент алгоритмической торговли — это её частота. Низкочастотная торговля (LFT) подразумевает обладание финансовыми инструмента на протяжении времени, превышающем один торговый день. Соответственно, при высокочастотной торговли (HFT) все операции происходят «интрадей», то есть в рамках одного торгового дня. Существуют также так называемые ультравысокочастотные стратегии (UHFT), которые подразумевают удержание актива на протяжении секунд или даже миллисекунд. Большое развитие на мировых и российских рынках сейчас получила высокочастотная торговля.
После того, как стратегия выбрана, необходимо протестировать её эффективность на исторических данных. Этот процесс называется бэктестингом.
Бэктестинг
Суть бэктестинга в том, чтобы подтвердить или опровергнуть прибыльность выбранной стратегии, запущенной на исторических данных. Знание результатов, которые стратегия показала бы в прошлом, позволяет предположить её эффективность в текущей рыночной ситуации. Само собой, тот факт, что на исторических данных стратегия принесла виртуальный миллион, ещё не гарантирует успеха в реальном мире.
При бэктестинге самым важным моментом является наличие данных о прошедших торговых сессиях, для запуска стратегии. Получить эти данные можно несколькими способами — часто их предоставляют брокеры и биржи, но существуют и сторонние поставщики данных.
Также важно определить метрики, по которым будет определяться, насколько успешно или неуспешно отработала стратегия «на истории». Стандартом в индустрии являются понятия «максимальной просадки» и коэффициент Шарпа. Максимальная просадка — это максимальный убыток по портфелю за определенный период (обычно за год). У низкочастотных стратегий просадка может быть больше, чем у высокочастотных, вследствие некоторых статистических факторов. Бэктест покажет максимальную просадку портфеля, которая могла бы иметь место в прошлом, что даст примерное понятие о том, чего стоит ожидать в этом плане при работе на реальном текущем рынке. Коэффициент Шарпа же это показатель эффективности инвестиционного портфеля (актива), который вычисляется как отношение средней премии за риск к среднему отклонению портфеля.
После того, как стратегия оттестирована и устранены все выявленные узкие места, возможная просадка минимизирована а коэффициент Шарпа максимален, пора переходить к собственно разработке торгового движка.
Торговый модуль
Торговый движок является средством, благодаря которому список сделок, подлежащих исполнению в соответствии с торговой стратегией, передается в торговую систему брокера. Процесс генерирования приказов может быть наполовину или полностью автоматизирован, а механизм их исполнения может быть ручным, наполовину ручным («в один клик») или полностью автоматизированным. Для низкочастотных стратегий чаще всего используется ручной или наполовину ручной ввод приказов. Для HFT-стратегий, которым важна каждая миллисекунда, в основном используется полностью автоматический метод.
Главные момент, которые следует учесть при разработке торговой системы, это обеспечение надежного и быстрого подключения к брокерской торговой системе (обычно через API) или обеспечение прямого доступа на биржу, минимизацию издержек (включая комиссию брокера и биржи, а также возможное проскальзывание).
Транзакционные издержки — одна из главных вещей, о которой стоит думать HFT-трейдеру. Они обычно складываются из трех компонентов: коммиссий брокера и биржи (и налогов), проскальзывания (разница между ценой, по которой планировалось совершить сделку, и той ценой, по которой она в реальности прошла), а также спред конкретного финансового инструмента (разница между ценой покупки и продажи — bid/ask). Спред не является постоянно зафиксированной величиной и зависит от текущей ликвидности рынка.
Высокие транзакционные издержки могут сделать из потенциально очень прибыльной стратегии с хорошим коэффициентом Шарпа полностью убыточную и наоборот. С помощью бэктеста правильно спрогнозировать транзакционные издержки может быть довольно трудно, для этого обычно необходимо получать у биржи исторические тиковые данные, включающие информацию по ценам bid/ask.
Необходимо также помнить и о разнице между эффективностью работы системы в реальном мире и тем, что она показывала на исторических данных. Разница может быть весьма существенной, и тому есть множество причин. Баги программного обеспечения и ошибки самой торговой стратегии могут не проявиться при бэктестинге, но сыграть важную роль при реальной работе на рынке.
Примеры создания торговых роботов на TradeScript.
Риск-менеджмент
Понятие «риска» включает в себя вcе вышеперечисленные опасности. Риск состоит из технологических опасностей (например, внезапный отказ серверов), риск брокера (банкротство компании), да и вообще всё, что может потенциально помешать задуманному функционированию торговой системы.
Частью риск-менеджмента является и процесс оптимизации капитала (его распределении между различными стратегиями). Это довольно сложный процесс, использующий большое количество «математики». Индустриальным стандартом, описывающим отношение оптимального распределния капитала и получения максимального эффекта от работы торговых стартегий, является критерий Келли.
Ещё один важный компонент риск-менеджмента — определение собственного психологического портрета трейдера. У каждого человека есть какие-то черты, которые могут препятствовать успешной торговле на рынке. В случае алгоритмической торговли психологический эффект играет меньшую роль, чем при «ручной» торговле на рынке, но все же присутствует — ведь за торговым роботом следит человек, который может захотеть слишком рано зафиксировать убыток или поторопиться с закрытием позиции, опасаясь увеличения потерь.
Подробнее о риск-менеджменте можно прочитать в этом топике.
Выводы
Алгоритмическая торговля — это очень сложное направление человеческой деятельности, но оно также является очень интересной областью финансов. Для того, чтобы иметь шансы добиться успехов в этом деле, просто необходимо на хорошем уровне овладеть программированием. Необходимо тренироваться, создавая торговые модули самостоятельно (торговые движки, анализаторы данных, средства для бэктестинга стратегий), используя доступные ресурсы — в конце концов, речь идет о собственных деньгах, которые никто не хочет потерять.
Создание торговой стратегии. Полезные советы
Создание торговой стратегии является достаточно сложным процессом, который требует от трейдера наличия определенного опыта и квалификации. Практика показывает, что грамотно созданная собственная стратегия позволяет трейдеру в разы увеличить результативность торгов.
p, blockquote 1,0,0,0,0 —>
Как было сказано выше, создание стратегии является достаточно трудоемким и продолжительным процессом. Практика показывает, что далеко не каждому трейдеру удается создать эффективную стратегию с первого раза. С течением времени трейдер сможет учесть все недостатки своей первой стратегии, что позволит ему создать новую более совершенную. Таким образом, в результате доработки своей изначальной стратегии трейдеру удастся стать обладателем действительно эффективной торговой методики.
p, blockquote 2,0,1,0,0 —>
Создание торговой стратегии. Основные факторы
Опытные трейдеры рекомендуют учитывать в процессе создания торговой стратегии следующие факторы:
- Создаваемая торговая методика в обязательном порядке должна соответствовать той ситуации, которая сложилась на валютном рынке в настоящее время. Ваша стратегия должна изменяться вместе с характером движения применяемых валютных пар, а также вместе с настроением игроков, присутствующих на рынке.
- Вам необходимо предварительно подобрать подходящую валютную пару, которую вы будете применять в процессе ведения торгов. Также вам необходимо заранее решить, какие именно ордера вы будете открывать: на продажу или на покупку.
- Для входа в рынок в соответствии с разрабатываемой стратегией вы можете применять как отложенные, так и рыночные ордера. Как можно понять из названия при использовании рыночных позиций, сделка будет заключаться по текущей цене. При использовании отложенных ордеров сделка будет открыта в момент, когда ценовой уровень достигнет указанного вами значения.
- При разработке собственной торговой методики вы должны точно определить, когда именно вы будете создавать ордера. Также вы должны решить для себя, на какой именно доход вы рассчитываете при открытии ордера, а также, сколько вы готовы потерять, если ценовой уровень будет двигаться в невыгодном для вас направлении.
- Также вам необходимо обязательно разработать подробный сценарий заключения сделки. Этот сценарий должен включать в себя все этапы, начиная от выявления места для открытия ордера и заканчивая вариантами его закрытия. Кроме того, вам необходимо провести оценку потенциала движения применяемой валютной пары. На основании этих данных вы должны разработать собственный порядок действий в ситуациях, когда ценовой уровень движется в нужном вам направлении. А также в ситуациях, когда ценовой уровень непосредственно после создания ордера совершает поворот и движется в невыгодном направлении.
Качества, необходимые для создания стратегии
Для того чтобы разработать действительно надежную и эффективную торговую стратегию, трейдер должен обладать следующими качествами:
- Уметь избегать разнообразных стрессов и быть терпеливым. В ситуациях, когда разработанная вами стратегия приносит убытки, не нужно расстраиваться. В этом случае вам необходимо взять себя в руки и исправить все ошибки, допущенные при создании стратегии.
- Быть уверенным в себе и дисциплинированным. Опытные трейдеры строго следуют правилам применяемой стратегии и не поддаются эмоциям. Даже если существует возможность получить прибыль больше той, которая планировалась изначально, трейдер закрывает сделку в полном соответствии со стратегией.
- Успешный трейдер должен обладать высокой работоспособностью. При этом, не следует забывать об отдыхе. Это связано с тем, что чрезмерная усталость мешает трейдеру адекватно реагировать на изменения рынка.
- Не стоит бояться ошибок. Это связано с тем, что анализ периодически совершаемых ошибок позволяет постоянно улучшать используемую вами торговую стратегию и делать ее более совершенной.
- Необходимо быть готовым к резким изменениям ценового уровня, так как валютный рынок может быть очень непредсказуемым.
- Старайтесь учиться на опыте более успешных трейдеров. Наблюдая за их действиями, вы сможете быстрее усовершенствовать собственную торговую стратегию.
- При открытии ордеров необходимо убедиться в том, что соотношение потенциальной прибыли и рисков является выгодным для вас.
- Используйте все доступные обучающие программы и материалы о валютном рынке, так как это поможет вам быстрее обрести необходимый багаж знаний.
p, blockquote 5,0,0,0,0 —>
Преимущества торговых стратегий перед торговлей наугад
Для того чтобы оценить преимущества наличия собственной торговой стратегии, лучше всего сравнить ее применение с открытием ордеров наугад. Открытая наугад позиция может быть как успешной, так и неудачной. При этом, при торговле наугад вы не выявите причину неудачи, так как у вас не существует правил вхождения в рынок. Таким образом, вы не сможете провести работу над ошибками, что в итоге станет причиной открытия новых убыточных ордеров.
p, blockquote 6,0,0,1,0 —>
Если вы предпочитаете вести торги наугад, то вам будет достаточно трудно найти ответ на следующие вопросы:
- Если ордер является прибыльным, когда его лучше всего закрыть.
- Что делать если изначально успешный ордер стал приносить убытки после разворота цены.
- Следует ли сразу закрывать ордер, если он начал приносить убытки.
- Что именно делать, если после создания ордера ценовой уровень начал двигаться в невыгодном направлении.
- Какой объем убытков является для вас допустимым.
Из всего сказанного выше можно сделать вывод, что создание торговой стратегии является первым шагом к успеху на валютном рынке.
Источник https://habr.com/ru/company/iticapital/blog/224353/
Источник https://womanforex.ru/foreks-dlya-novichkov/sozdanie-torgovoj-strategii.html
Источник
Источник