How-to: Что нужно учитывать при разработке стратегии для торгового робота

в 12:06, , рубрики: HFT, алгоритмическая торговля, Блог компании ITinvest, ит-инфраструктура, разработка, торговые роботы, фондовый рынок

image

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

Что нужно учитывать прежде всего

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

Помимо особенностей характера, необходимо учитывать и несколько других важных аспектов:

  • Наличие времени — работает ли будущий инвестор полный день или удаленно, живет рядом с офисом или вынужден тратить на дорогу несколько часов? Ответы на эти вопросы помогут определить «частотность» торговой стратегии, которую следует избрать. Очевидно, что люди, проводящие большую часть дня в дороге и в офисе, не должны создавать высокочастотные стратегии, потому что не смогут контролировать работу робота. Если же инвестор обладает значительным количеством времени, то ему може быть более интересно окунуться в мир высокочастотной торговли (HFT)
  • Важность постоянного исследования рынка — очень редко торговые стратегии могут успешно работать на протяжении долгого времени. Как правило в них постоянно нужно вносить изменения, отражающие текущую ситуацию на рынке. Как следствие этого, создатели торговых систем значительную часть своего времени посвящают исследованию рынка и поиску новых торговых идей.
  • Объём доступных средств — транзакционные издержки для алгоритмических торговцев могут быть довольно значительными (прямое подключение к бирже, аренда серверов для запуска робота, комиссии биржи и брокера — тарифы ITinvest по ссылке). Считается, что для алгоритмической стратегии средней стартовым капиталом должно являться примерно $50 тысяч — такого мнения, в частности, придерживается «квант», разработчик и инвестор Майк Халлс-Мур.
  • Умение программировать — знание таких языков программирования, как C++, C# Java, Python, R (или TradeScriptздесь представлены примеры роботов на этом скриптовом языке) позволит создавать все элементы робота — от торгового движка до системы бэктестинга.
  • Финансовая цель— вопреки расхожему мифу, алгоритмические торговцы не купаются в деньгах (по крайней мере очень быстро разбогатеть, создав торгового робота, скорее всего не выйдет). Это долгий и кропотливый труд, что необходимо учитывать. Если торговец надеется получать стабильный доход и ежемесячного снимать с брокерского счета определенную сумму денег, то должен соответственным образом выбирать «частотность» стратегии — необходимость постоянно выводить средства потребует более высокочастотной стратегии с небольшой волательностью, долгосрочные инвесторы могут позволить себе более «спокойную» стратегию поведения на рынке.

Как искать идеи для торговых стратегий

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

Большое количество интересной информации можно почерпнуть в тематических сообществах, форумах и блогах. Вот лишь некоторые из них:

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

Можно пойти дальше и заняться изучением так называемых «академических стратегий», которые публикуются в научных журналах — это также очень полезно и интересно, однако есть и минусы: для получения доступа к некоторым журналам нужна подписка, представленные в них стратегии часто устарели и не всегда подробно описаны (например, какой используется тип приказов — «по рынку» или «лимит»?).

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

Оценка торговой стратегии

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

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

image

Вот список некоторых таких критериев, предлагаемых Майклом Халс-Муром:

Методология

Насколько сложна стратегия? Как много параметров необходимо учесть для ее реализации (чем их больше, тем больше вероятность «ошибок оптимизации»)? Сумеет ли стратегия пережить существенные изменения на рынке (например, изменение законов или ужесточение регулирования финансовых рынков)?

Коэффициент Шарпа

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

Плечо

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

Частотность

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

Волатильность

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

Общий доход и число убыточных сделок

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

Максимальная просадка

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

Число параметров

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

Бенчмарки

Производительность большинства стратегий измеряется в сравнении с каким-то бенчмарком, в роли которого чаще всего выступает какой-либо индекс, характеризующий большой сегмент финансовых активов, аналогичных тем, что использованы в стратегии. Такими бенчмарками могут быть индекс S&P 500, в России — индексы ММВБ и РТС (вот материал о том, зачем нужны фондовые индексы).

image

Динамика индекса РТС

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

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

Работа с историческими данными

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

Фундаментальные данные

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

Новостные данные

Несомненно, что новости влияют на фондовый рынок — и такой информации гораздо больше. Сюда входят новостные заметки крупных и небольших СМИ, посты в блогах и микроблогах. Для хранения таких неструктурированных данных хорошо подходят СУБД NoSQL.

Данные по цене активов и частотность

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

image

Чем выше частотность данных, тем выше их стоимость и требования к хранилищу. Для некоторых стратегий нужны тиковые данные и даже копии так называемых «очереди заявок» (order book). Работа с такими данными очень сложна технологически. Помимо прочего, описанные выше стратегии наверняка будут сравниваться с бенчмарками (индекс S&P500 и FTSE100), а значит, понадобятся и данные по этим бенчмаркам.

Заключение

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

Спасибо за внимание! Будем рады ответить на вопросы в комментариях.

Автор: itinvest

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js