Веб-платформа для проведения соревнований по алгоритмической торговле
Секция: Технические науки
XL Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Веб-платформа для проведения соревнований по алгоритмической торговле
Введение
На сегодняшний день не существует эффективного способа поиска и подготовки специалистов в области алгоритмической торговли. Именно тех специалистов, которые смогут работать в инвестиционных банках и крупных финансовых корпорациях. Таким специалистом может стать выпускник топового технического вуза, однако не во всех вузах существуют учебные курсы, которые покрывают необходимый объём знаний. Недостатки учебных программ пытаются компенсировать крупные компании, проводя открытые конкурсы по программированию и анализу данных.
Самым известным соревнованием по алгоритмической торговле является World Quant Challenge [2], в котором участникам предлагается разработать торговую стратегию, протестировать её на исторических данных и наблюдать, как она работает на текущих данных. Лучшие участники становятся консультантами, а впоследствии работниками компании.
С одной стороны, не каждая компания обладает достаточными ресурсами, что бы выстроить такую цепочку найма людей. С другой стороны, не всем участникам интересно разрабатывать стратегии по формату World Quant. Решением же является создание платформы проведения подобных соревнований, на которой компании будут публиковать свои соревнования, а у пользователей будет возможность выбора.
Целевой аудиторией данной платформы являются крупные компании, занятые в сфере финансов, такие как инвестиционные фонды и банки. А также компании, которым необходимы квалифицированные кадры для разработки и развития торговых площадок.
На сегодняшний день существует ряд инструментов и методов по отбору и подготовке трейдеров. Однако нет инструмента целенаправленного и качественного поиска лучших кадров. В силу высокой конкуренции компаний, существует необходимость в дополнительном обучении и отборе аналитиков и разработчиков платформ для торгов. Поиск сотрудников в подобные подразделения является большой задачей для любой компании, т.к. высококвалифицированных сотрудников компании стараются удержать на их позициях. Новых перспективных сотрудников отлавливают еще на ранней стадии подготовки и берут в качестве стажера, однако не известно выгодно ли компании будет вложение в данного сотрудника.
Использование же данной платформы уменьшает риск компании при поиске сотрудника, а также увеличивает качество подготовки кадров в среднем. Компании смогут напрямую получать выход на кандидатов избегая рисков о его профпригодности. Именно соревнование является лучшим способом найти наиболее талантливых и мотивированных сотрудников
Сами пользователи смогут использовать платформу, чтобы принять участие в соревнованиях, узнать нравиться ли им заниматься подобными задачами и сравнить свои результаты с другими участниками.
Решение
Такая платформа с технической точки зрения включает в себя несколько компонентов:
1. Распределенная система выполнения задач.
2. Веб-сайт с личным кабинетом пользователя.
Для распределенной системы предлагается использовать архитектуру “master – workers”, в которой есть главный сервер(master) и несколько рабочих серверов(worker). Master отвечает за распределение задач, контроль выполнения, хранение результатов тестирования. worker является вычислительным ресурсом, получая задачу, он обрабатывает её и оповещает master о завершении. Эта модель хорошо ложится в концепцию облачных вычислений, когда создается такое количество workers, которое справляется с текущей нагрузкой. Если же нагрузка меняется, то пропорционально меняется количество workers.
Важным требованием системы является, отсутствие возможности у worker подключиться к master, так как worker выполняет пользовательский код, который может содержать опасные инструкции. Общая концепция такая, что worker рождается, что бы выполнять задачу, если что-то пошло не так, всегда можно откатить worker к безопасному состоянию.
Worker представляет собой независимый HTTP сервис, умеющий принять задачу и поставить её в очередь. Забрать задачу из очереди, выполнить, сохранить необходимые данные и оповестить master. Так как worker может в любой момент умереть, master обязан забрать все нужные данные и показать пользователю результат выполнения задачи.
Общение между всеми частями системы происходит по протоколу HTTP с обменом информации в JSON формате. Проблемы безопасности и ограничение ресурсов предлагается решить контейнеризацией на основе Docker.
Для web-сайта предлагается использовать Django framework. Основные разделы сайта показаны на рисунке 1.
Рисунок 1. Пользовательские экраны и переходы
Пример соревнования
Соревнование – это описание предметной области, открытые данные для тестирования и критерий качества торговой стратегии. Для некоторых соревнований планируется привлечение спонсора, который и будет определять параметры соревнования, а в качестве награды получать стратегии пользователей и их персональные контакты.
Данные — тики на мартовский фьючерс Brent на Московской бирже за один день, тики предоставлены компанией Финам [1].
Таблица 1.
Данные по фъючерсу Brent
symbol |
date |
time |
best bid price |
best ask price |
bid 2 |
bid 1 |
ask 1 |
ask 2 |
BR-3.15 |
2015-Mar-12 |
19:00:15.466 |
57.4 |
57.44 |
399 |
101 |
1001 |
40 |
BR-3.15 |
2015-Mar-12 |
19:00:15.725 |
57.4 |
57.44 |
399 |
101 |
1001 |
40 |
Каждая строка этой таблицы один тик, всего за один день биржа обрабатывает 400000 тиков. Данные разделены пополам, первая половина называется открытыми данными и доступна в условии соревнования всем участникам, закрытая часть держится в секрете, также участники не знают происхождение данных. Также для большей честности соревнования, будет происходить общее тестирование всех стратегий в конце соревнования на текущих данных.
Пользователи могут предлагать свои стратегии, написанные на языках C++, Python. Пример стратегии на Python:
average = 655
print "Start"
while True:
price = int(raw_input())
if price < average:
print "buy 10"
else:
print "skip"
Это полностью рабочая стратегия, и может быть отправлена в систему для тестирования. Именно интерактивное тестирование позволяет писать стратегию практически на любом языке программирования, который умеет считывать со стандартного входа и писать в стандартный выход.
Всё что, пользователь пишет до строки с выводом “Start” отвечает за анализ уже имеющихся данных, построение модели, инициализацию переменных. После вывода “Start” начинается интерактивное тестирование, здесь алгоритм получает новые данные по тикам и должен ответить системе, кокой ход он совершает на данном тике, в самом простом случае у него есть 3 варианта: пропустить ход, совершить покупку по текущей цене, совершить продажу по текущей цене.
Цель любой стратегии набрать максимальный показатель по описанному критерию качества. Так популярным критерием качества торговых стратегий является коэффициент Шарпа. Используя знания из математической статистики, можно предсказать какое значение коэффициента Шарпа соответствует хорошей стратегии, значение коэффициента в пределе соответствует нормальной случайной величине с нулевым математическим ожиданием и единичной дисперсией. Используя правило 3-х сигм, можно сказать, что если стратегия получила коэффициент Шарпа больше 3-х, то она превысила 99.73% возможных значений случайной величины, а значит можно сказать, что статистически это хорошая стратегия.
Внутри соревнования пользователи упорядочиваются по значению критерия Шарпа стратегии. Общий рейтинг формируется по формуле Эло, которая используется на соревнованиях по шахматам.