Система для выявления манипуляций в условиях высокочастотной биржевой торговли
Иосиф Иткин, Антон СитниковExactpro Systems
Чем мы занимаемся
• Критикуем хорошие программы, написанные умными людьми• Создаем своих монстров для
проверки высоконагруженных трейдинговых систем
Как делать деньгиThere are three ways to make a living in this business: be first, be smarter, or cheat
Что бы такого сделать плохого• Манипуляция ценами• Переигрывание объемами• Уход от налогов• Финансирование зла• Инсайдерская торговля• Проскальзывание перед клиентом• Многое другое…
Что бы такого сделать плохого• Манипуляция ценами• Переигрывание объемами• Уход от налогов• Финансирование зла• Инсайдерская торговля• Проскальзывание перед клиентом• Многое другое…
Часто легитимная активность выглядит как злоупотребление, и наоборот
Функциональность системы
• Поток сообщений• Незаметность• Агрегация данных• Гибкая настройка правил• Помощь в обследовании
места преступления и сборе доказательств• Хранение данных
Система для мониторинга Шша
• Перехват сетевых пакетов• Разобрать и сложить все сообщения в MySQL• Сделать логику проверок на SQL запросах• Хороший инструмент для тестирования• Но тянет не более 30 млн. сообщений в день
Холодный ветер с дождем
• Возникло желание усилить ее хотя бы десятикратно• Получилась боевая система, похожая на Market Surveillance • Теперь мы используем ее как модель для проверки ее собратьев
Красивое название
• Возникло желание усилить ее хотя бы десятикратно• Получилась боевая система, похожая на Market Surveillance • Теперь мы используем ее как модель для проверки ее собратьев
Complex Event Processing и Akka
• Surveillance-система является подмножеством CEP• Surveillance-система должна иметь состояние (книжка)• Коммерческие решения слишком дороги• Esper не позволяет хранить состояние• Akka – средство для написания событийных систем• высокая производительность• распределенность• удобная модель параллельной обработки• работает на JVM
Система хранения
• Много операций добавления, мало операций чтения• SQL базы данных плохо масштабируются и не позволяют
сохранять большой поток данных• NoSQL базы данных как Riak, Cassandra, Voldemort требуют
создания большого кластера для достижения 100k msg/sec• БД движки (Kyoto Cabinet, Krati, LevelDB). Быстрые. Позволяют
написать систему хранения, максимально адаптированную для задачи. LevelDB быстрее
Архитектура Dolphin
Web
-Инт
ерф
ейс
Ист
очни
ки д
анны
х
Конверторы
100101110111010
СценарииКнижки
События Потоки событий
Web сервер
Мультиплексор/демультиплексор потоков
JSON Protobuf
Сохранение событий
• Уникальный идентификатор события (ИД источника + номер)• За кодирование/декодирование отвечает источник• Возможность сохранения иерархических событий• LevelDB – движок, передача по сети – ZeroMQ• Распределение нагрузки по нескольким узлам по ИД события• «Послал и забыл» - каждый узел может определить пропущенное
сообщение и запросить его у дублирующего
Сохранение потоков событий
• Поток событий = индекс• ИД события в потоке – ИД потока + порядковый номер• Ключ в LevelDB – ИД потока + порядковый номер ( + время)• Одна запись в LevelDB включает несколько логических записей• Распределение нагрузки по нескольким узлам
Web-интерфейс и потоки событий
• Система создает и записывает множество дополнительных потоков (индексов), например• все события, связанные с одним ордером• все ордера, размещенные участником рынка
• Сервер web-интерфейса запрашивает потоки из хранилища и предоставляет их пользователю
Web-интерфейс Dolphin• Play framework на
стороне сервера• Sencha Ext JS на
стороне клиента• Динамические
обновления: JSON + WebSocket/Comet
Вопросы и ответы
Спасибо!
http://exactpro.com http://tmpaconf.orghttp://linkedin.com/in/iosifitkin