23
Тестирование систем электронной торговли ценными бумагами, использующих протокол FIX Никита Налютин Deutsche Bank

Sqadays2010 nalyutin

Embed Size (px)

Citation preview

Page 1: Sqadays2010 nalyutin

Тестирование систем электронной торговли ценными бумагами, использующих протокол FIX

Никита НалютинDeutsche Bank

Page 2: Sqadays2010 nalyutin

Содержание

• Бизнес-потоки• Программная поддержка• Протокол FIX• Тестовая среда• Типы тестирования

Page 3: Sqadays2010 nalyutin

Торговля ценными бумагами

LSE

NASDAQ

NYSE

DBSI

ITG

Клиент

Брокеры

Биржи

Downstream - orders

Upstream – execution reports

Page 4: Sqadays2010 nalyutin

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

Page 5: Sqadays2010 nalyutin

Электронная торговля ценными бумагами

LSE

NASDAQ

NYSEКлиент

Брокеры Биржи

Соед

инен

ие с

кли

енто

м

Соед

инен

ие с

бир

жей

DMA

Order Management

System

Execution Management

System

Рыночные данные

FINRA

Регуляторы

Отчеты

Page 6: Sqadays2010 nalyutin

Что такое FIX?

• FIX – Financial eXchange Protocol – протокол обмена финансовой информацией

• Международный отраслевой стандарт• Спецификация свободно доступна• Поддерживается FIX Protocol Ltd.

• Только протокола FIX недостаточно для описания интерфейса между участниками торгов. В документе Rules of Engagement описаны правила использования протокола

http://www.fixprotocol.org

Page 7: Sqadays2010 nalyutin

Версии 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 – разделение уровней

протокола

Page 8: Sqadays2010 nalyutin

Приложение

Соединение FIX• FIX engine:– Поддержка

протокола– Установление

соединения– Поддержание

сессии– Валидация

сообщений– Аудит

Сеть

FIX engine

FIX engine

Приложение

Сеть

DMZ

Page 9: Sqadays2010 nalyutin

Сообщение FIX

• Два уровня: сессионный и уровень приложения

• Каждое сообщение – набор пар

55=EURТег Значение

Page 10: Sqadays2010 nalyutin

Сообщение 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

Page 11: Sqadays2010 nalyutin

Сообщение 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

Page 12: Sqadays2010 nalyutin

Что тестируем?

• Модификация ордера и отчетов о выполнении (Enrichment)

• FIX-сценарии (FIX flow)• Состояния ордера• Соглашения о соединении с клиентом

(Rules of engagement)• Соглашения о соединении с биржей• Производительность

Page 13: Sqadays2010 nalyutin

Тестовая среда

Order Management

System

Симулятор клиента

Симулятор upstream

систем

Симулятор стратегий

Симулятор биржи

Виртуальные биржевые

данные

Виртуальные статические

данные

Анализатор отчетов

Симулятор downstream

систем

Симулятор трейдера

Page 14: Sqadays2010 nalyutin

Enrichment

Клиент FIX engine Клиентский роутер

Order manager

Биржевой роутер Биржа

Идентификация

Валидация

Роутинг

Состояния

Разбиение

Page 15: Sqadays2010 nalyutin

Enrichment: пример

• Идентификация клиента• Применение параметров клиента• Получение данных сессии клиента• Нормализация инструментов• Обработка типа сообщения• Роутинг на трейдера

Page 16: Sqadays2010 nalyutin

Сценарии обмена

• Обычный ордер• Отмена• Замена (увеличение, уменьшение количества)• Последовательность замен и отмен• Односторонняя отмена и замена• Отказ• Статусные сообщения• Многодневные сообщения• Исправления отчетов

Page 17: Sqadays2010 nalyutin

Сценарии обмена: обычный ордерКл

иент

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)

Page 18: Sqadays2010 nalyutin

Сценарии обмена: изменение и отменаКл

иент

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)

Page 19: Sqadays2010 nalyutin

Сценарии обмена: односторонняя отмена

Клие

нт

FIX-

шлю

з

NewOrderSingle (ClOrdId = Ord1)

Ack (ClOrdId = Ord1)

Partial Fill (ClOrdId = Ord1)

UnsolicitedCancelAck (MsgType=8, Status=Cancelled, Text=“CNCL”

Page 20: Sqadays2010 nalyutin

Состояния ордераNew

PendingNew

Acked

PartiallyFilled

FullyFilled

Cancelled PartiallyCancelled

Replaced

Rejected

Page 21: Sqadays2010 nalyutin

Соединение с клиентом

• Специфичные для клиента теги• Структура клиента (трейдеры, дески,

аккаунты)• Symbology (RIC, ISIN, SEDOL, ….)• Типы ценных бумаг• Тип соединения (прямое/копия)• Время соединения• Восстановление при сбоях

Page 22: Sqadays2010 nalyutin

Соединение с клиентом и с биржей

PT Desk

ARB Desk

Соед

инен

ие с

кли

енто

м Order Management System A

Order Management System B

Соед

инен

ие с

бир

жей

LSE

NASDAQ

NYSE

Торговый поток

Торговый поток

Копии

Page 23: Sqadays2010 nalyutin

Спасибо за внимание

Никита НалютинDeutsche Bank