Мой опыт в качестве количественного разработчика в хедж-фонде

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

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

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

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

Сигналы/алгоритмы. Этот аспект включает в себя проведение статистического исследования по полученным данным о котировках с целью выявления торговых возможностей. Стратегии, используемые хедж-фондами чрезвычайно разнообразны. У систематических фондов они часто будут попадать в группы отслеживания тренда, возврата к среднему, статистического арбитража или высокочастотного трейдинга/маркетмейкинга. Фонды стараются не раскрывать своих карт, так что хорошие стратегии редко становятся общеизвестными. Это сфера деятельности количественного исследователя (quantitative researcher) или трейдера (quantitative trader).

Выполнение/заявки. После того, как торговая стратегия прошла все необходимое бэктестирование и получила достаточные теоретические результаты, приходит время поработать квантам, реализующим исполнение (execution quants), которые строят модели эффективного проведения сделок на бирже, без слишком больших издержек проскальзывания и транзакционных издержек. Как и в случае котировок, над созданием эффективных алгоритмов исполнения часто работают команды кандидатов наук – на самом деле исполнение и сигналы сильно перекрывают друг друга. После того, как алгоритм исполнения разработан, в дело вступает количественный разработчик системы исполнения (execution quantitative developer), который создает интерфейс совершения сделок для прайм-брокера (prime broker). Кроме того, управление портфелем и инструменты синхронизации должны быть полностью автоматизированы и должны иметь возможность генерирования моментальных отчетов по требованию. Это занимало около 20% моей работы.

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

Количественная разработка системы котировок ценных бумаг

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

Наш фонд в основном использует модель шорт/лонг акций в качестве торгового механизма. Мы, прежде всего, имели дело со следующими классами активов: мировые акции, макро-данные, данные по фиксированному доходу и деривативам, форекс-спот данные (и фьючерсы), товары (фьючерсы и опционы) и индексы, такие как S&P 500, FTSE100, VIX и т.д. Частотность была преимущественно от дневок OHLC (open, high, low, close) вплоть до десятиминуток.

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

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

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

Эти данные затем обрабатывались другими программными пакетами через комплекс внутренних API, и методы репликации базы данных.

Весь этот процесс, в конечном счете, был полностью автоматизирован. Единственные задачи, которые необходимо было проводить вручную – это проверка журналов ошибок и починка источников данных, добавление новых источников данных и корректировка API, чтобы иметь возможность вызывать дополнительные функции.

Также в мои обязанности в качестве количественного разработчика входили подготовка веб-инструментов отчетности, инструментов выверки портфеля и других различных «домашних» скриптов для конкретных задач. Все это программное обеспечение было написано на комбинировании Python (80%) и C++ (20%). Я использовал C++ там, где было необходимо быстрое выполнение некоторых алгоритмов (в частности, в выверке портфеля), и Python во время большей части сбора и хранения данных. Мы также интенсивно использования MatLab и Excel для разработки и анализа стратегий.

Автор: Michael Halls-Moore

Источник: My experiences as a quantitative developer in a hedge fund

Другие статьи по теме:

Количественные торговые стратегии: гид для начинающих

Количественный трейдинг: какие бывают должности

Что количественный трейдер может узнать из книги Талеба “Antifragile” (Антихрупкость)

Комментарии:

Kent: Python (80%) 😉

Intro: И что? У меня тоже Python 80%, на нем делается все, кроме торговли.

Kent: значит правильной дорогой идете )

GreenBear: «Я использовал C++ там, где было необходимо быстрое выполнение некоторых алгоритмов». Какой С++? Зачем оптимизировать алгоритмы напишу как лучше на С++ и скажу что это предел скоростей 🙂

http://lurkmore.so/images/0/01/Code_Nulch_dem.jpg


Подпишитесь на уведомления о новых постах

И получите доступ к специальным материалам сайта