Книга Rogue Trader и интересные технические детали из нее

На днях прочитал книгу Ника Лисона о том, как он разорил банк Barings. По этой книге снят хороший фильм, который я всем очень советую посмотреть. Действие книги происходит в 1992-1995 годах, когда Ник Лисон поступил на работу в банк Barings и был направлен на работу в Сингапур, где Barings только что открыл свой офис для совершения сделок по деривативам на сингапурской бирже SIMEX.

В Сингапуре на тот момент существовало несколько бирж. Биржа торговли акциями и облигациями Stock Exchange of Singapore (SES) была создана в 1973 году. Биржа Singapore International Monetary Exchange (SIMEX) была создана в 1984 году в тесном сотрудничестве с Chicago Mercantile Exchange (CME).

Я опущу детали событий, описанных в книге. Меня заинтересовали технические подробности, которые могут быть интересны с точки зрения финансов, программирования и истории биржевого дела.

Читать далее

habr.com: Финансовое latency critical приложение на Java и Akka

Всем привет! В своей статье я поделюсь опытом разработки одного из финансовых приложений на Java в ТехЦентре Дойче Банка, расскажу про стек технологий, который мы используем, и каких результатов достигаем.

Алгоритмы алгоритмической торговли

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

Чаще всего крупный родительский ордер (parent order) делится на более мелкие ордера (child orders) и эти мелкие ордера отправляются один за одним на рынок для исполнения. Алгоритмический движок (algo engine) следит за исполнением каждого мелкого ордера и в определенных случаях отменяет какой-то из них и выставляет новый child order с другими параметрами в соответствии с выбранным алгоритмом, который называют еще стратегией (strategy).

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

Читать далее

Что такое tick-to-trade и как его замерять

В предыдущих статьях я рассказывал о том, как важно чтобы торговое приложение работало быстро, но не менее важно, как быстро оно способно принимать исходные данные и передавать результаты в сеть.

Например, приложение автоматизированной торговли слушает поток market data, анализирует его и в случае благоприятной комбинации сигналов отправляет на биржу приказ о продаже или покупке определенного финансового инструмента. Или несколько приказов. Время, прошедшее с момента поступления события в рыночных данных до момента, когда приказ сформирован закодирован и вытолкнут в сеть называется tick-to-trade. В кратце, это скорость реакции вашей системы на заданное ключевое событие.

Читать далее

Рыночные данные на бумажной ленте

До появления тикера цены с бирж разносили мальчики-подростки, бегавшие от Нью-Йоркской биржи по брокерским конторам с новостями. Текущие цены на акции они записывали в блокноты (pads), поэтому их называли «pad shovers».

Эдвард Калахан (Edward Calahan), работник телеграфной компании Western Union, приехав в 1867 году в Нью-Йорк, был поражен толпами этих мальчишек, перекрикивающих друг друга в толпе возле Нью-Йоркской биржи. При такой организации ошибки, искажения, обманы были обычным делом. Он понял, что здесь для телеграфного бизнеса скрыта золотая жила. Достаточно провести в каждую брокерскую контору телеграф с биржи, и все брокерские конторы будут получать цены без ошибок и отпадет надобность в курьерах.

Читать далее

Многозадачность операционной системы и low-latency

На современной серверной машине low-latency процесс работает на многозадачной операционной системе. Это может быть Solaris, Linux, FreeBSD или Windows Server. Помимо нашего процесса в ОС работают еще и другие процессы, которым ОС тоже должна выделять машинное время. Собственно потому ОС и называется многозадачной.

Конкретный процесс работает определенное время до тех пор пока:

  • не произойдет вызов операции ввода-вывода. Тогда процесс останавливается и ждет окончания — поступления данных. Это может быть ожидание очередной порции байтов из сети или загрузка с диска каких-то данных или страницы памяти (page fault), или окончания записи данных в систему вывода: это может быть запись данных в сеть или запись их на диск (page swap);
  • не истечет выделенное ядром ОС время, после чего ядро приостанавливает исполнение процесса. Специальный модуль ядра «планировщик» (scheduler) выбирает следующий в очереди процесс и начинает его исполнять. Такое переключение происходит примерно каждые 20~50 миллисекунд.

В данной статье пойдет речь о том, как многозадачная операционная система влияет на исполнение нашего процесса и как мы можем побороть это влияние с целью достижения low-latency.

Читать далее

В помощь разработчику: Vagrant

Давно установил VirtualBox, чтобы на домашней машине под Windows играться с Linux CentOS и исследовать различные настройки, конфигурации и программные пакеты. Но заметил, что много времени уходит на создание виртуалок и установку с нуля очередного образа CentOS, пусть даже и минимального. Захотелось больше гибкости и скорости в создании вируталок и их подготовке к работе.

И вот наткнулся на Vagrant и поигрался с ним за несколько дней выходных, обращаясь за руководством к имеющимся книжкам по теме, форумам и документации.

Читать далее

Как jcmd помогает настроить JVM для low-latency

Утилиту jcmd добавили в Java 7 и с тех пор она считается главной утилитой, с помощью которой вы отныне будете заглядывать внутрь JVM и замерять все параметры ее работы. Все остальные утилиты типа jps, jstack, jinfo и проч. считаются теперь устаревшими и скоро в каком-то из будущих релизов JDK будут удалены. Предполагается, что jcmd заменит их всех. Давайте посмотрим, как работает утилита, и что полезного с ее помощью можно узнать о работающем приложении и как эта информация может нам пригодиться для настройки JVM и самого приложения с целью достижения low-latency.

Читать далее

infoq.com: Интервью с создателями Shenandoah

Информационный сайт infoq.com встретился с работниками компании Red Hat Шипилевым и Кеннке и провел с ними интервью о сборщике мусора Shenandoah, который разрабатывается в Red Hat и предназначен для быстрой сборки мусора на больших объемах памяти.

Вот как бывает: серьезный сбой на Tokyo Stock Exchange

Недавно мы были свидетелями, как Новозеландскую биржу заддосили хакеры, так что ей пришлось приостанавливать торги. А сегодня глюк по-круче — на Токийской бирже сегодня произошел сбой системы выдачи рыночных данных. В результате сразу после начала торгового дня все торги были приостановлены, потом пришло сообщение, что биржа откроется все же после обеда, но потом решили вообще не открываться весь торговый день.

В результате все биржевые индексы Nikkei и TOPIX на сегодня не вычисляются, биржи в Нагое и Саппоро не работают, все альтернативные площадки (PTS), кроссинговые сети и dark pools, которые считают цены по ценам Токийской биржи тоже, но биржа деривативов в Осаке работает как обычно.

Это первый серьезный сбой с 2018 года, когда были остановлены торги лишь по некоторым акциям.

Сегодня праздничные дни во многих странах Азии. Китайская, гонконгская, тайваньская и корейская биржи не работали. Токийская биржа — единственная в азиатском регионе должна была сегодня вести торги, и случился вот такой epic fail. Настоящая потеря лица для Токио, как мирового финансового центра, так считают в СМИ. Впрочем, что это я, в сентябре 2008 года на Лондонской бирже и похуже инцидент был.

UPD, Oct.1: вот так выглядит извинение от работников биржи по-японски: moshiawaki gozaimasen deshita.

UPD, Oct.2: Сегодня Токийская биржа возобновляет работу как обычно. Причиной сбоя 1 октября оказалась дисковая NAS-система, которая вышла из строя, а резервная система не включилась, как от нее ожидалось, т.е. не сработал fail-over. Из-за этого перестали выдаваться рыночные данные (market data system) и перестала работать система наблюдения за торгами (surveillance system). А раз нет рыночных данных, нет смысла торговать.

Вот так, выход из строя копеечного рядового модуля памяти в NAS #1 привел к остановке всей биржевой системы страны!