17
Система для выявления манипуляций в условиях высокочастотной биржевой торговли Иосиф Иткин, Антон Ситников Exactpro Systems

Иосиф Иткин, Антон Ситников (Exactpro Systems)

  • Upload
    ontico

  • View
    403

  • Download
    11

Embed Size (px)

DESCRIPTION

HighLoad++ 2013

Citation preview

Page 1: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Система для выявления манипуляций в условиях высокочастотной биржевой торговли

Иосиф Иткин, Антон Ситников

Exactpro Systems

Page 2: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Чем мы занимаемся

• Критикуем хорошие программы написанные умными людьми

• Создаем своих монстров для проверки высоконагруженных трейдинговых систем

Page 3: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Как делать деньги

There are three ways to make a living in this business: be first, be smarter, or cheat

Page 4: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Что бы такого сделать плохого • Манипуляция ценами • Переигрывание объемами • Уход от налогов • Финансирование зла • Инсайдерская торговля • Проскальзывание перед клиентом • Многое другое…

Page 5: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Что бы такого сделать плохого • Манипуляция ценами • Переигрывание объемами • Уход от налогов • Финансирование зла • Инсайдерская торговля • Проскальзывание перед клиентом • Многое другое… Часто легитимная активность выглядит как злоупотребление, и наоборот

Page 6: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Функциональность системы

• Поток сообщений

• Незаметность

• Агрегация данных

• Гибкая настройка правил

• Помощь в обследовании места преступления и сборе доказательств

• Хранение данных

Page 7: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Система для мониторинга Шша

• Перехват сетевых пакетов

• Разобрать и сложить все сообщения в MySQL

• Сделать логику проверок на SQL запросах

• Хороший инструмент для тестирования

• Но тянет не более 30 млн. сообщений в день

Page 8: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Холодный ветер с дождем

• Возникло желание усилить ее хотя бы десятикратно

• Получилась боевая системуа похожая на Market Surveillance

• Теперь мы используем ее как модель для проверки ее собратьев

Page 9: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Красивое название

• Возникло желание усилить ее хотя бы десятикратно

• Получилась боевая системуа похожая на Market Surveillance

• Теперь мы используем ее как модель для проверки ее собратьев

Page 10: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Complex Event Processing и Akka

• Surveillance-система является подмножеством CEP

• Surveillance-система должна иметь состояние (книжка)

• Коммерческие решения слишком дороги

• Esper не позволяет хранить состояние

• Akka – средство для написания событийных систем • высокая производительность

• распределенность

• удобная модель параллельной обработки

• работает на JVM

Page 11: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Система хранения

• Много операций добавления, мало операций чтения

• SQL базы данных плохо масштабируются и не позволяют сохранять большой поток данных

• NoSQL базы данных как Riak, Cassandra, Voldemort требуют создание большого кластера для достижения 100k msg/sec

• БД движки (Kyoto Cabinet, Krati, LevelDB). Быстрые. Позволяют написать систему хранения, максимально адаптированную для задачи. LevelDB быстрее

Page 12: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Архитектура Dolphin

Web

-Ин

тер

фей

с

Ист

очн

ики

дан

ны

х

Конверторы

10010 11101 11010

Сценарии Книжки

События Потоки событий

Web сервер

Мультиплексор/демультиплексор потоков

JSON Protobuf

Page 13: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Сохранение событий

• Уникальный идентификатор события (ИД источника + номер)

• За кодирование/декодирование отвечает источник

• Возможность сохранения иерархических событий

• LevelDB – движок, передача по сети – ZeroMQ

• Распределение нагрузки по нескольким узлам по ИД события

• «Послал и забыл» - каждый узел может определить пропущенное сообщение и запросить его у дублирующего

Page 14: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Сохранение потоков событий

• Поток событий = индекс

• ИД события в потоке – ИД потока + порядковый номер

• Ключ в LevelDB – ИД потока + порядковый номер ( + время)

• Одна запись в LevelDB включает несколько логических записей

• Распределение нагрузки по нескольким узлам

Page 15: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Web-интерфейс и потоки событий

• Система создает и записывает множество дополнительных потоков (индексов), например

• все события, связанные с одним ордером • все ордера, размещенные участником рынка

• Сервер web-интерфейса запрашивает потоки из хранилища и представляет их пользователю

Page 16: Иосиф Иткин, Антон Ситников (Exactpro Systems)

Web-интерфейс Dolphin

• Play framework на стороне сервера

• Sencha Ext JS на стороне клиента

• Динамические обновления: JSON + WebSocket/Comet