Архив за месяц: Май 2020

Пулы объектов для достижения высокой производительности в 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 прямо прут вверх на фоне прибылей. С переходом на удаленную работу вырос спрос на сетевое оборудование для организации виртуальных рабочих мест, телеконференций, дистанционного обучения и приватных сетей. А кто у нас главный в мире по сетям и сетевому оборудованию? Cisco.

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

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

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

Читать далее