Пулы объектов для достижения высокой производительности в Java

В торговых приложениях создается множество объектов в реальном времени. Скажем, каждый новый ордер от клиента создает объект Order. Исполнение ордера на рынке порождает новый объект Fill или Partial Fill. И если поток ордеров очень высок во время активного торгового дня, это создание новых объектов оказывает:

  • большую нагрузку на JVM по созданию новых экземпляров объектов из классов;
  • большую нагрузку на память, для записи всех этих объектов в heap;
  • большую нагрузку на сборщик мусора, который должен постоянно отслеживать появление этих новых объектов и проверять, не стали ли они мусором.

Все эти операции имеют большие накладные расходы сами по себе, плюс могут привести к непредсказуемым задержкам, поэтому Java-программисты нашли обходное решение этой проблемы: использовать пулы заранее созданных объектов (object pools). Т.е. переиспользовать объекты, которые уже не нужны, вместо создания новых.

Читать далее

26 мая Нью-Йоркская биржа открывает торговый зал

Нью-Йоркская биржа (NYSE) откроет 26 мая торговый зал для ограниченного числа трейдеров. Торговый зал был закрыт 23 марта из-за эпидемии коронавируса, и вот спустя почти два месяца торговый зал снова откроется.

Примечательно, что Нью-Йоркская биржа — одна из немногих бирж мира, которая еще имеет торговый зал и в нем физически присутствую трейдеры. Биржа уже дано оборудована всей инфраструктурой для ведения торгов электронно, и биржа работала электронно во время карантина. Но торговый зал и физическое присутствие трейдеров в нем является чем-то сакральным для биржи NYSE и все попытки окончательно закрыть торговый зал, как это сделали множество других бирж по всему миру, до сих пор наталкиваются на резкие возражения работников биржи.

8 июня свой торговый зал откроет Чикагская биржа опционов (CBOE). Еще один пример верности вековым традициям торговли в стиле «open outcry» (торговля лицом к лицу, где информация между участниками торгов передается путем выкриков и сигналов руками).

 

Дилемма трейдера и алгоритмическая торговля

Когда трейдер получает от институционального клиента ордер большого размера, перед ним стоит классическая проблема, которая называется trader’s dillema.

Вариант 1: Весь большой ордер на продажу (Sell order) выбросить на рынок сразу. Это увеличит предложение на рынке, а увеличение предложения неизбежно приведет к падению цены, т.е. ордер «сдвинет рынок». В результате акции инвестора будут проданы за меньшую цену, чем он ожидал.

Вариант 2: Трейдер выкладывает большой ордер по кусочкам в течение торгового дня. В этом случае исполнение ордера растянется на длительный период времени торгового дня, в то время как инвестору деньги за акции нужны «вот прям сейчас». За время исполнения ордера могут произойти какие-то события, утечка информации, просто какие-то изменения цены из-за действия других участников торгов. В результате акции опять-таки будут проданы не по той цене, по которой ожидал инвестор.

Значит трейдер стоит перед выбором: какой риск более приемлем и какой риск более вероятен — риск сдвинуть рынок большим ордером, но получить деньги за акции прямо сейчас, или риск опоздать с исполнением.

Читать далее

Интересное наблюдение

После падения рынка акции многих компаний отыгрывают назад. А акции Cisco прямо прут вверх на фоне прибылей. С переходом на удаленную работу вырос спрос на сетевое оборудование для организации виртуальных рабочих мест, телеконференций, дистанционного обучения и приватных сетей. А кто у нас главный в мире по сетям и сетевому оборудованию? Cisco.

И судя по тому, что коронавирус с нами на долго, переход на удаленную работу, в виртуальный мир сетей — это наше новое будущее.

Размышления о программной инженерии

«Программная инженерия — это приложение инженерных принципов к разработке программного обеспечения». В данной статье хочу выразить пару своих мыслей по поводу software engineering и свое видение этого предмета.

Читать далее

Client connectivity: подключение клиентов

Брокер по роду своей деятельности занимается предоставлением брокерских услуг клиентам. Для приема ордеров клиентам и передачи им отчетов об исполнении в электронном виде брокер создает систему входных шлюзов, через которые клиенты подключаются к внутренним системам брокера.

Читать далее

Почему нельзя использовать double для финансовых расчетов

В финансовых расчетах часто приходится оперировать дробными числами. Например, на некоторых рынках цены на опционы и фьючерсы могут иметь два и даже три знака после запятой. Цены на некоторые акции могут выражаться в пенни, так называемые penny-stocks. Для валидации ордеров перед отправкой на рынок надо проверять, не выходит ли указанная цена ордера за определенные пределы (price limits), рассчитанные от текущей рыночной цены инструмента. Например, надо вычислить +/-5% от цены 1.005. Казалось бы для выражения цены в Java идеально подходит примитивный тип double. Но это крупная, опасная ошибка!

Читать далее

Мои любимые фильмы о трейдинге

На карантине почему-бы не совместить приятное с полезным: развлечься и одновременно поучиться чему-то? Рекомендую вам несколько фильмов на тему биржевой торговли, которые раскроют вам некоторые секреты профессии, ну и дадут представление о людях, которые работают в этом бизнесе.

Читать далее

Что такое FIX-engine

FIX-движок (FIX-engine) — это компонент торговой системы, обеспечивающий связь с другими системами по протоколу FIX. Этот компонент отвечает за преобразование внутренних структур приложения в исходящие FIX-сообщения и за конвертацию входящих FIX-сообщений во внутренние структуры данного приложения.

Читать далее

Электронная торговля

Электронная торговля подразумевает торговлю с использованием компьютерной системы, где ордера участников торгов заносятся в систему и сводятся в ней автоматически без использования ручного труда. Это весьма общее определение, которым я стараюсь охватить все разноообразие электронных систем торговли ценными бумагами, которые существовали начиная с конца 60-х XX века и по сегодняшний день.

Сейчас вся торговля почти на всех биржах мира ведется в электронном виде. Не осталось уже бирж, где торговля ведется вручную. Исключение пока составляет Нью-Йоркская фондовая биржа — одна из старейших бирж мира.

Компьютеризация торговли решает множество проблем:

  • информация передается быстро
  • информация передается точно
  • информация легко хранится извлекается и используется для расчетов, перерасчетов, сведения балансов, ревизий, аудита и написания отчетов

Казалось бы, выгоды перехода на электронные торги очевидны. Ведь компьютеры быстро завоевали свое место в бухгалтерском деле, в планировании ресурсов предприятий, в автоматизации продажи билетов авиакомпаний, в статистике, в банковском деле, и хранении данных. А вот путь внедрения компьютеров в биржевом деле не был прост и легок.

Препятствиями на пути были коропоративная костность, корысть ведущих участников биржевого бизнеса, нежелание менять вековые традиции, боязнь потери привилегированного положения посредника на выгодном рынке, консервативный взгляд на новые технологии, высокая стоимость и низкая производительность компьютеров и банальное невежество и недальновидность людей, от которых зависило принятие ключевых решений. Особенное сопротивление прогрессу проявляли старейшие биржи мира — Лондонская фондовая биржа, Нью-Йоркская фондовая биржа, Чигагские биржи деривативов CBOT и CME.

Читать далее