Upload
alexei-lupan
View
883
Download
1
Embed Size (px)
Citation preview
Тестирование систем электронной торговли ценными бумагами, использующих протокол FIX
Никита НалютинDeutsche Bank
Содержание
• Бизнес-потоки• Программная поддержка• Протокол FIX• Тестовая среда• Типы тестирования
Торговля ценными бумагами
LSE
NASDAQ
NYSE
DBSI
ITG
Клиент
Брокеры
Биржи
Downstream - orders
Upstream – execution reports
Orderbook
Stock: GOOG.O Price: 384.9000 Orders: 1295622 Volume: 2791809
BUY SELL
Price Shares Price Shares
100384.82 384.95 500
100384.82 385.01 100
300384.81 385.05 200
100384.81 385.46 100
500384.80 385.51 100
100384.79 385.60 400
200384.77 385.62 100
100384.75 385.63 200
Электронная торговля ценными бумагами
LSE
NASDAQ
NYSEКлиент
Брокеры Биржи
Соед
инен
ие с
кли
енто
м
Соед
инен
ие с
бир
жей
DMA
Order Management
System
Execution Management
System
Рыночные данные
FINRA
Регуляторы
Отчеты
Что такое FIX?
• FIX – Financial eXchange Protocol – протокол обмена финансовой информацией
• Международный отраслевой стандарт• Спецификация свободно доступна• Поддерживается FIX Protocol Ltd.
• Только протокола FIX недостаточно для описания интерфейса между участниками торгов. В документе Rules of Engagement описаны правила использования протокола
http://www.fixprotocol.org
Версии FIX
• Version 4.0: 1996 – акции• Version 4.1: 1998• Version 4.2: 2000 – акции+FX• Version 4.3: 2001• Version 4.4: 2003 – акции+FX+данные рынка• Version 5.0: 2006 – разделение уровней
протокола
Приложение
Соединение FIX• FIX engine:– Поддержка
протокола– Установление
соединения– Поддержание
сессии– Валидация
сообщений– Аудит
Сеть
FIX engine
FIX engine
Приложение
Сеть
DMZ
Сообщение FIX
• Два уровня: сессионный и уровень приложения
• Каждое сообщение – набор пар
55=EURТег Значение
Сообщение FIX
8=FIX.4.29=0398 35=D 115=onBehalfOfComp 128=deliverToComp 116=onBehalfOfSub 129=deliverToSub 34=334 49=SRC 56=TGT 52=20101106-10:05:16 1=DEFAULT 11=test106 21=1 38=1000.0 40=1 44=92.10009002685547 47=U 63=1 54=1 55=VOD.L 58=text 59=0 60=20101106-10:05:16.341 10302=1 10=227
Сообщение FIX
Заголовок
Тело
Хвост
8 (BeginString) = FIX4.29 (BodyLength) = 213
35 (MsgType) = D49 (SenderCompId) = BUYSIDE56 (TargetCompId) = SELLSIDE
52 (SendingTime) = 20101106-09:00:00.0055 (Symbol) = VOD.L1 (Account) = ACC1
11 (ClOrdId) = OrderId_A54 (Side) = 1
40 (OrdType) = 110 (CheckSum) = 0559
Что тестируем?
• Модификация ордера и отчетов о выполнении (Enrichment)
• FIX-сценарии (FIX flow)• Состояния ордера• Соглашения о соединении с клиентом
(Rules of engagement)• Соглашения о соединении с биржей• Производительность
Тестовая среда
Order Management
System
Симулятор клиента
Симулятор upstream
систем
Симулятор стратегий
Симулятор биржи
Виртуальные биржевые
данные
Виртуальные статические
данные
Анализатор отчетов
Симулятор downstream
систем
Симулятор трейдера
Enrichment
Клиент FIX engine Клиентский роутер
Order manager
Биржевой роутер Биржа
Идентификация
Валидация
Роутинг
Состояния
Разбиение
Enrichment: пример
• Идентификация клиента• Применение параметров клиента• Получение данных сессии клиента• Нормализация инструментов• Обработка типа сообщения• Роутинг на трейдера
Сценарии обмена
• Обычный ордер• Отмена• Замена (увеличение, уменьшение количества)• Последовательность замен и отмен• Односторонняя отмена и замена• Отказ• Статусные сообщения• Многодневные сообщения• Исправления отчетов
Сценарии обмена: обычный ордерКл
иент
FIX-
шлю
з
NewOrderSingle (MsgType = D)
PendingNew (MsgType = 8,OrderStatus,ExecType = PendingNew)
Ack (MsgType = 8,OrderStatus,ExecType = New)
Partial Fill (MsgType = 8,OrderStatus,ExecType = PartiallyFilled)
Fill Bust (MsgType = 8, ExecType = Cancelled, ExecId = “MKTID”)
Partial Fill (MsgType = 8,OrderStatus,ExecType = PartiallyFilled)
Partial Fill (MsgType = 8,OrderStatus,ExecType = Filled)
Сценарии обмена: изменение и отменаКл
иент
FIX-
шлю
з
NewOrderSingle (ClOrdId = Ord1)
Ack (ClOrdId = Ord1)
Partial Fill (ClOrdId = Ord1)
CancelReplace (MsgType=G, OrigClOrdId = Ord1, ClOrdId=Ord1n)
Ack (ClOrdId = Ord1n, OrigClOrdId = Ord1, OrdState = Replaced)
Partial Fill (ClOrdId = Ord1n)
Cancel (MsgType=F, OrigClOrdId = Ord1n, ClOrdId=Ord1c)
Ack (ClOrdId = Ord1c, OrigClOrdId = Ord1n, OrdState = Cancelled)
Сценарии обмена: односторонняя отмена
Клие
нт
FIX-
шлю
з
NewOrderSingle (ClOrdId = Ord1)
Ack (ClOrdId = Ord1)
Partial Fill (ClOrdId = Ord1)
UnsolicitedCancelAck (MsgType=8, Status=Cancelled, Text=“CNCL”
Состояния ордераNew
PendingNew
Acked
PartiallyFilled
FullyFilled
Cancelled PartiallyCancelled
Replaced
Rejected
Соединение с клиентом
• Специфичные для клиента теги• Структура клиента (трейдеры, дески,
аккаунты)• Symbology (RIC, ISIN, SEDOL, ….)• Типы ценных бумаг• Тип соединения (прямое/копия)• Время соединения• Восстановление при сбоях
Соединение с клиентом и с биржей
PT Desk
ARB Desk
Соед
инен
ие с
кли
енто
м Order Management System A
Order Management System B
Соед
инен
ие с
бир
жей
LSE
NASDAQ
NYSE
Торговый поток
Торговый поток
Копии
Спасибо за внимание
Никита НалютинDeutsche Bank