Брокер по роду своей деятельности занимается предоставлением брокерских услуг клиентам. Для приема ордеров клиентам и передачи им отчетов об исполнении в электронном виде брокер создает систему входных шлюзов, через которые клиенты подключаются к внутренним системам брокера.
Команда client connectivity отвечает за техническое обеспечение подключения клиентов брокера к его системе. В ведении этой команды находятся входные шлюзы брокера, к которым подключаются все его клиенты, программные валидаторы и маршрутизаторы сообщений, которые передают входящие сообщения от клиента к далее к брокерским системам и ответы от брокерских систем клиентам.
Под-команда client onboarding занимается техническими деталями подключения нового клиента к брокерской системе. После того, как клиент подключен, эта команда отвечает за техническую поддержку клиента на случай обрыва связи, внесения каких-то изменений или дополнений в настройки соединения и проч. Если клиент прекращает отношения с брокером, эта же команда отвечает за удаление всех его настроек и конфигураций.
Подключение по FIX-протоколу
Всех клиентов чаща всего подключают по протоколу FIX. У брокера есть книга rules of engagement. Подробнее о том, как осуществляется подключение по FIX-протоколу, написано в отдельной статье.
Валидации и лимиты по позициям
Вся инфраструктура client connectivity напрямую связана с клиентской базой. С клиентским id, выданным для подключения, связаны все лимиты по позициям для данного клиента: все настройки, с какими рынками он имеет право торговать, какими ценными бумагами и на какие общие суммы. Эти лимиты проверяются на всех стадиях обработки ордера и если валидация по каким-то лимитам не проходит, клиенту отправляется отлуп — сообщение Reject на его ордер.
Роутинг
Входящие сообщения от клиента далее могут перенаправляться в разные системы брокера. Все зависит от услуг, которые брокер предоставляет данному конкретному клиенту. Например, по услуге DMA сообщения от клиента попадают в OMS брокера. Там автоматически валидируются и направляются на рынок через модуль market connectivity. В случае услуги LLDMA — сообщения клиента направляются сразу на модуль market connectivity, минуя OMS брокера. Если брокер предоставляет клиентам к своему алгоритмическому движку (DSA-услуга), ордера клиента по его желанию могут направляться в движок. В случае услуг High Touch ордера от клиента попадают в OMS брокера и там ждут, когда их вручную обработает конкретный трейдер. Путей — множество и у каждого брокера для каждого клиента они разные. Все зависит от конкретного случая.
Cancel-on-disconnect
В случае, если клиент потеряет связь с брокером, все его открытые ордера автоматически отменяются на бирже. При восстановлении связи клиент получает отчет об отмене ордеров. Эта функция называется cancel-on-disconnect.
Так снимается риск потери управляемости ордеров, когда клиент связь потерял и не может отменить ордера самостоятельно. Так как ордеров может быть много и отменять их вручную может привести к ошибкам, отмена ордеров делается автоматически. При отключении TCP/IP протокол еще держит соединение открытым, ожидая восстановления связи несколько секунд, но потом, если программа получает от сетевого уровня уведомление о потери связи, сессия закрывается и запускается процедура отмена ордеров.
Обрывом связи может считаться также и неполучение FIX Heartbeat, например, TCP/IP связь работает, а heartbeat от клиента не пришел. Если он не получен через определенный интервал, связь с клиентом считается потерянной, и протокол FIX инициирует конец сессии и опять-таки инициируется процедура отмены открытых ордеров. По умолчанию heartbeat в протоколе FIX требуется каждые 30 секунд, но во избежание случайной задержки системы настраивают на посылку heartbeat через меньшие промежутки — скажем, каждые 25 секунд.
Почему все так сложно?
Наличие всех этих защит — не прихоть брокера, а требования самого брокера для защиты своего бизнеса, а также — требования различных регуляторов рынка. Цель этих сложных систем — защитить рынки ценных бумаг от неправильных ордеров, от сошедших с ума торговых алгоритмов, от случайных событий (fat finger), от ошибок программистов, и конечно защитить самого брокера от финансовых и репутационных потерь из-за действий клиента.