Никита Налютин -- Тестирование систем электронной...

Post on 12-Jun-2015

844 views 3 download

Transcript of Никита Налютин -- Тестирование систем электронной...

Тестирование систем электронной торговли ценными бумагами, использующих протокол 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