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

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



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

  1. Какова будет частота торговли и вероятный торговый оборот?
  2. Потребует ли система модуля управления рисками или построения портфеля?
  3. Потребует ли система высокопроизводительный тестировщик на исторических данных?

Трейдеры, которым требуется более сложные и специально разработанные системы, могут поразмыслить об использовании C#, Matlab, или Python, но я бы сказал, что для оставшихся 95% трейдеров программного обеспечения для алгоритмической торговли будет достаточно.

Вариант 1 – Вычисления на Python, Matlab, C#

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

Основной процесс работы следующий:

  • Алгоритмическая торговая стратегия снабжает рыночными данными (историческими или текущими) компьютерную программу (для тестирования на исторических данных или автоматизированного исполнения).
  • Программа затем отправляет ордеры брокеру через API и получает от него уведомления о статусах ордеров.

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

Импорт исторических данных из Yahoo Finance на Python.
Иллюстрация. Импорт исторических данных из Yahoo Finance на Python.
Процесс алгоритмической торговли.
Иллюстрация. Процесс алгоритмической торговли.

Вариант 2 – Программное обеспечение для алгоритмической торговли без навыков написания кода

Второй подход — это алгоритмические инструменты, такие как MultichartsStrategyQuant, или конструктор стратегий R Trader (бесплатный и удобный в использовании, на основе «облачных» технологий), и многие другие.

Дни, когда алгоритмическая торговля применялась только лишь профессионалам, прошли. Нет необходимости тратить много часов времени на изучение C# когда почти все системы и стратегии можно написать при помощи StrategyQuant, Multicharts, или конструктора стратегий R Trader Strategy Builder.

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

У всех платформ есть свои плюсы и минусы, для нас, конструктор стратегий R Trader является простым в использовании модулем собственной разработки, который позволяет частным трейдерам проектировать, тестировать, и разворачивать алгоритмические торговые стратегии, не обладая знаниями языков программирования.

Торговая платформа R Trader предлагает вам более простой способ уйти от традиционной торговли методом "указания и щелчка". Разработанный как для опытных трейдеров, так и для новичков, наш просто й в использовании интерфейс позволяет вам автоматизировать свои торговые стратегии за считанные минуты. Никакого кода и спешки – вы будете готовы к работе в два счёта.

Тестирование на исторических данных. Установочная программа стратегий в конструкторе стратегий R Trader.
Иллюстрация. Тестирование на исторических данных. Установочная программа стратегий в конструкторе стратегий R Trader.

Тестирование и оценка торговых стратегий

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

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

Зачем вообще нужен бэктестинг алгоритмической стратегии?

Фильтрация

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

Моделирование

Бэктестинг позволяет безопасно  протестировать новые стратегии в определенных рыночных условиях.

In-Sample и Out-of-Sample

Тестируя торговую идею на исторических данных, будет нелишним выделить дополнительный временной промежуток с данными под вторичное тестирование. Изначальные данные, на которых тестируется и оптимизируется стратегия, называются in-sample. Дополнительный временной промежуток называется out-of-sample, и он необходим для того, чтобы протестировать торговую идею на данных, не использовавшихся для оптимизации. Данные out-of-sample никак не влияют на тестируемую стратегию, помогая трейдеру трезво оценить будущее поведение стратегии в реальной жизни.

Оптимизация алгоритмической торговой стратегии

Хотя оптимизация стратегии может быть необъективной, бэктестинг позволяет улучшить эффективность стратегии, пересчитывая и изменяя значения параметров. Подбор кривой — большая проблема во всех областях, связанных с исследованием данных, поэтому так важно правильно проверять данные и подбирать тесты. Для валидации могут применяться различные методы: повторные тесты, симуляции Монте-Карло, Walk-Forward-Matrix, Walk-Forward-Optimization, несколько периодов out-of-sample.

Демо-тестирование

Демо-трейдинг дает трейдеру набор out-of-sample данных, пригодных для оценки всей системы. Симуляция торговли с использованием стратегии включает следование за ее логикой в реальных рыночных условиях. Здесь важно следовать логике системы с максимальной точностью; в противном случае точная оценка этого этапа тестирования становится если не невозможной, то предельно трудной. Многие брокеры, в том числе RoboMarkets, предлагают демо-аккаунты для симуляции торговли и подробной оценки системы в условиях, близких к реальным.

Бэктестинг. Диаграмма в Python.
Иллюстрация. Бэктестинг. Диаграмма в Python.
Бэктестинг. Исторические данные по сделкам в R Trader Strategy Builder.
Иллюстрация. Бэктестинг. Исторические данные по сделкам в R Trader Strategy Builder.

Напоследок хотелось бы еще поделиться с вами набором инструментов, которые помогут вам разобраться в данной теме.

Инструменты

Программное обеспечение для исследования рынка и автоматизированной торговли

Excel, R Trader Strategy Builder (https://rtrader.umstel.com – бесплатная программа), StrategyQuant (платная программа), MultiCharts (платная программа), TradeStation (платная программа), Wealth-lab (платная программа).

Языки программирования

Matlab, Python, R, C#

Источники данных

  1. Данные об общественных настроениях (из Twitter и других соцсетей, см. также ISentium, TickerTags)
  2. Краудсорсинговые ресурсы (см. Estimize)
  3. Поведенческая информация (см. Cabot Research)
  4. Изображения с воздуха и со спутников (см. Orbital Insight)
  5. Данные о поведении потребителей (см. Brand Loyalties)
  6. Нетрадиционные онлайн-ресурсы (см. Knowsis)
  7. сайт OTAS (технические данные)

Другие источники

TIM Group, Discern, Essentia, Kensho, RavenPack, SocialMediaAnalytics, Ayasdi, TheySay Analytics, Quid, Rage Frameworks, Dataminr.

Книги (на английском языке):

  1. Quantitative Trading: How to Build Your Own Algorithmic Trading Business - Ernest Chan
  2. Algorithmic Trading: Winning Strategies and Their Rationale - Ernest Chan
  3. Machine Trading: Deploying Computer Algorithms to Conquer the Markets - Ernest Chan
  4. Algorithmic Trading and DMA: An introduction to direct access trading strategies - Barry Johnson
  5. Trading and Exchanges: Market Microstructure for Practitioners - Larry Harris

Популярные сайты и журналы для поиска идей (на английском языке):

  1. arXiv http://arxiv.org/archive/q-fin
  2. SSRN https://www.ssrn.com/en/
  3. Journal of Investment Strategies https://www.risk.net/journal-of-investment-strategies
  4. Journal of Computational Finance https://www.risk.net/journal-of-computational-finance
  5. Mathematical Finance https://onlinelibrary.wiley.com/journal/14679965

Заключение

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

Если у вас появились какие-то вопросы во время прочтения этой статьи, буду рад ответить на них в комментариях к этому посту.

Откройте счет в RoboForex



Внимание!
Любая информация, предоставленная в этой статье являются частным мнением автора. Данная статья не представляет собой руководство к действию или торговле. Автор статьи и компания RoboForex не несут ответственности за результаты работы, которые могут возникнуть при использовании торговых рекомендаций из представленных обзоров.

Стиль, орфография и пунктуация автора сохранены.


Предыдущая статья

Неделя на рынке (13.01 - 19.01): статданные и решения Центробанков

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

Следующая статья

Акции трех компаний для покупки в 2020 году: Delta Air Lines, HP, Morgan Stanley

Продолжается 12-летний цикл роста американской экономики. Это самый длинный период, который экономика США прошла без кризиса. Начало 2020 года продолжает радовать инвесторов, акции продолжают обновлять исторические максимумы. Кто успел купить ранее, тот радуется растущей прибыли.