Яндекс.Метрика
ГлавнаяПостроение системы › Путеводитель по разработке биржевых роботов -1

Путеводитель по разработке биржевых роботов -1

chart.png

Основные этапы создания автоматических торговых систем сформулировал Michael Halls-Moore на своем сайте www.quantstart.com. Я присоединяюсь к его советам и рекомендациям - по текстам на сайте видно, что автор действительно занимается практической работой по алготрейдингу.

Автоматическая торговля это чрезвычайно сложная область биржевых финансов. Значительное время может занять получение необходимых знаний для создания вашей собственной стратегии. Также потребуется неплохие навыки в программировании, как минимум на таких языках, как MATLAB, R или Python. В связи с постоянным ростом частоты сделок технологические аспекты торговли тоже становятся очень важны. Это требует изучения языков программирования C/C++.

Автоматическая торговая система состоит из следующих основных компонентов:

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

Сначала рассмотрим, как найти торговую стратегию.

Идентификация стратегии

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

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

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

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

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

Другой очень важные аспект автоматического трейдинга это частота торговой стратегии. Низкочастотный трейдинг (LFT) обычно ассоциируется со стратегиями, которые удерживают позиции дольше, чем одни тороговый день. Соответственно, к высокочастотному трейдингу (HFT) относятся стратегии, торгующие внутри дня. Ультра-высокочастотный трейдинг (UHFT) характеризует стратегии, удерживающие позиции в течении секунд или миллисекунд. Частный трейдер может разрабатывать HFT и UHFT стратегии, при условии детального понимания микроструктуры рынка и технологических особенностей биржевых торгов.

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

Тестирование стратегий

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

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

Основные проблемы исторических данных состоят в их аккуратности/чистоте и учете корпоративных особенностей, таких как дивиденты и сплиты акций:

  • Аккуратность означает общее качество данных - содержат ли они ошибки. Ошибки иногда легко определить, используя, например, фильтр выбросов, который находит неправильные (слишком большие) отклонения во временной серии и скорректировать их. Иногда найти ошибку очень сложно. Часто необходимо иметь двух или больше поставщиков и сравнивать их данные друг с другом.
  • Ошибка "выживания"  чаще особенность бесплатных или дешевых наборов данных. Данные с такой ошибкой не содержат активы, которые больше не торгуются. В случае акций это исключенные из листинга или обанкротившиеся компании. Это приводит к тому, что любая стратегия, тестируемая на таком наборе данных покажет себя лучше, чем в реальной торговле, так как на прошедшем времени "победители" уже, как бы, определены.
  • Корпоративные особенности включают в себя "логистическую" активность, которая происходит, когда цена акции компании изменяется скачком, который не должен быть включен в расчет приращений цены. Корректировка под дивиденты и сплиты (разделение) акций необходима. Процесс, известный как обратная корректировка, нужен под каждый вид таких корпоративных действий. Он должен применяться осторожно, чтобы избежать путаницы с реальными приращениями цен. Много трейдеров ошибаются на этом этапе!

В порядке проведения процедуры тестирования необходимо использование программной платформы. У вас есть выбор между специальным софтом, как например, Tradestation, числовой платформой, как Эксель или МATLAB, или полностью самописной программой на языках программирования, таких как Python и C++. Мы бы не советовали пользоваться Tradestation, Excel или MATLAB, а использовать собственную платформу по следующим причинам. Одним из преимуществ такого подхода является глубокая интеграция тестовой и исполнительной части, особенно для очень продвинутых статистических стратегий. Для HFT старетгий общепринято использование самописного программного обеспечения.

При тестировании стратегии нужно определить, насколько хорошо она работает. Индустриальным стандартом метрик для автоматических стратегий являются максимальная просадка и коэффициент Шарпа. Максимальная просадка характеризует наибольшее падение кривой эквити за определенный период времени ( обычно год). Чаще всего измеряется в процентах. LFT стратегии имеют тенденции к большим просадкам, чем HFT стратегии, в связи с меньшим числом статистических факторов. Исторический бэктест покажет максимальную прошлую просадку, которая будет служить ориентиром для будущей производительности стратегии. Вторая метрика это коэффициент Шарпа, который эвристически определен как среднее превышение приращений прибыли деленное на среднеквадратичное отклонение приращений прибыли. Здесь превышение определяется как разница прибыли стратегии и определенного эталона, за который обычно принимается индекс S&P500. Отметим, что просто годовая доходность обычно не применяется, так как не учитывает волатильность стратегии (в отличие от коэффициента Шарпа).

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

1 Комментарии[ Ваш комментарий ]

  1. А вот я несколько сомневаюсь в практических навыках этого Майкла.

    Так уж случилось, что периодечески получал от него рекламную почту, включая его предложения по поиску публикации статей на его сайте. 

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

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

    Основная мысль автора этого сайта - это скорее просто привлечение к себе внимания и попытка предложить некую книгу на C++ за своим авторством.

    Но численные рецепты Cambridge University Press, цитируемые часто в т.ч. исследовательским центром Микрософт, ему не перебить. Практического смысла кроме чистой публицистики в виде элементов статистического обучения и мягких вычислений давностью 10-15 лет нет, однако есть несколько примеров установки разных пакектов на Linux, Mac.

    Можно просто зайти на сайт Microsoft Azure Machine Learning, скачать описание, поупражняться в методах машинного обучения - в сотни раз легче. В настоящий момент предлагается статистичесое обучение с учитилем.

    Однако где же они те самые признаки? Кстати, нет у товарища на сайте даже ни одного онлайн алгоритма хотя бы линейной регрессии, хотя очень часто встречается словосочетание "высокая частота".

    В целях снятия стереотипов могу также от себя добавить, у меня есть возможность сравнить библиотеку машинного обучения написанную на C++, развиваемую используемую более 10-ти лет в различных средах Unix/Windows, в т.ч. со встроенной линейной алгеброй и код С# - так случилось что нужна отдельная группа методов.

    Так вот благодаря компилятору C# 2015 -го года методы, написанные в C# работают на 30% веселее старого японского меча C++. Версия 2013-го года работала на 150%-250% хуже.

    Использована линейная алгебра, но с двумя оговорками:

    - для решения многих задач численных финансов на практике не нужны большие размерности матриц;

    - так сложилось что основное преимущество компилятора C++ - векторизация циклов,- не задействовано. 

    Также не будет здесь никакого преимущества от Lapack, Blas.

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

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

    В качестве итога:

    - 2 известнейших российских профессора: Вапник и Червоненскис, в авторстве которого есть доступный по запросу Гугл "Теория обучения машин" для интересующихся и обадающих инженерным образованием, а также признанные автор: тех.директор Гугл - книга (она же учебник по ИИ и машинному обучению) Искусственный интеллект современный подход и т.д.

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

Сообщение

Обратите внимание: вы можете использоватьHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>