Прохладная история про один «биржевой» терминал с дорогой ежемесячной подпиской и как работать с его API
 Публичный пост
19 июня 2021     642   

Дисклаймер: В статье не про новостной портал, а про то, что они продают (далее просто “терминал”, меньше прямых упоминаний - меньше рисков). В статье рассказывается про терминал, базовая стоимость которого зависит от подписки, кол-ва терминалов на компанию, начинается где-то между $1,5к-$2к в мес. По вопросам пишите vdmsurin@gmail.com

Дисклаймер2 : По мнению читателей, статья жестоко издевается над читателями, без минимальных подводок о чем это все и, вообще, нету истории и не понятно. Прочитать и задать вопросики этим читателям мешает специальная кастовая система vas3k. Но если вы победите кастовую систему Клуба и сможете задать вопрос - welcome. А если победите себя и закажете демодоступ, то сейлз вам лучше расскажет что это за штука

Читайте в любом порядке - в конце каждой части можно перейти к Links

TL; DR

Самый распиаренный “биржевой” терминал использует концепцию “индекс-поле” aka "ключ-значение" для хранения большинства данных. Т.е. в идеале вам нужно всего лишь два списка: список индексов и список полей, на пересечении этот ваш data extraction. All the great things are simple!
xbbg - python библиотека, где расписано как подключаться

перейти к Links

чуть более длинный TL; DR

Индексом считается все, что угодно, от конкретной акции до показателя ВВП или сконструированного портфеля (фича с портфелями открывается по запросу в тех. поддержку, выкатят для всех через пару лет). Основные поля бывают 3 видов:

  • последнее значение – BDP (работает связь “многие ко многим” даже в Excel). Вот тут pure "ключ-значение", я использую BDP для проверки коннекта в excel и быстрого экспорта мелких полей. Но даже здесь бан до конца месяца реально получить, если загрузить большую матрицу на вход
  • исторические значение – BDH (работает связь “многие ко многим” даже в Excel). Тут уже больше "составной ключ", потому что надо передать параметры startdate и enddate. Но output в виде единного dataframe даже в Excel, что довольно таки сносно
  • bulk данных любой структуры – BDS (самая сложномасштабируемая тема. В Excel максимум можно получить связь "один к одному"). Тоже "составной ключ". Output в виде dataframe, который нужно сцеплять снизу с похожими, а сцеплять сбоку разные поля между собой не получится

Из-за текущей специфики работы, мне пришлось научиться агрессивно (но так, чтобы не забанили) использовать наиболее сложный тип данных в терминале – BDS. Тут место для шуточки про #BDSM. Для этого я пользуюсь python библиотекой xbbg для коннекта к терминалу, pandas для подгрузки списков inputs и сохранения outputs, time для задержки в развитии чтобы не устраивать атаки на слабые старые датацентры, их ведь всего 2 и этого колличества иногда не хватает

перейти к Links

Самый распиаренный

Существует шаблонная вселенная мисье-финансье, которую активно продвигают во всех сериалах и фильмах о “настоящих” финансах. Вы знаете эти образы:

  • true bunkers bankers с подтяжечками и сигарами раньше
  • в жилеточках patagonia и jull сейчас

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

Если вы смотрите хотя бы иногда контент про финансы, то вы видели Это в качестве нативной рекламы в различных шоу:
Например, в сериале Миллиарды

без объяснений зачем терминал у PM (portfolio manager), который лично подскакивает ко всем кабанчиком обкашлять вопросики. Причем, инсайдерскую инфу он через терминал получать не мог, потому что в случае любого кипиша, терминал сразу шлет копию в SEC со всеми timestamps. По этой причине терминал используют для подтверждения сделок
без объяснений зачем терминал у PM (portfolio manager), который лично подскакивает ко всем кабанчиком обкашлять вопросики. Причем, инсайдерскую инфу он через терминал получать не мог, потому что в случае любого кипиша, терминал сразу шлет копию в SEC со всеми timestamps. По этой причине терминал используют для подтверждения сделок

Или в фильме Предел риска

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

Или вот, смотрите вы социальную драму про то, как “герои не делают это”, а у них на фоне видите (кроме странных скриншотов таблиц и графиков, разумеется):

я бы очень рекомендовал остановить просмотр этого сериала на первой серии и не ждать этого момента,потому что дальше сюжетообразущей конвой стали отношения и больше ничего. А наиболее перспективная героиня на работе пинается всеми подряд, не смотря на свой эффект высокой базы (индустриальный нетворк)
я бы очень рекомендовал остановить просмотр этого сериала на первой серии и не ждать этого момента,потому что дальше сюжетообразущей конвой стали отношения и больше ничего. А наиболее перспективная героиня на работе пинается всеми подряд, не смотря на свой эффект высокой базы (индустриальный нетворк)

перейти к Links

“Биржевой”, или “почему оно выглядит именно так”

Началось все в 1981 году за 4 года до первой Windows (поэтому интерфейс “специфичный” и своя клавиатура. Создали бы терминал сегодня, обязательно взяли бы лучшее у Mac OS).

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

  • золотой парашют фаундера из банка
  • навыки в банковском IT
  • нетворк

Т.е. терминал задумывался как OTC (внебиржевой) коннектор для своих (банки) к котировкам своих (банки) на облигации. Короче, терминал приносил пользователям модное data transparency до того как это стало мейнстримом

И можете поверить, чуть ли не единственная, уникальная, интересно работающая тема в терминале – FI (fixed income). Reuters пытались их вытеснить, но в итоге столкнулись с ответной попыткой интервенции в FX сегмент (валюты). Логичным продолжением того, что в терминале все в порядке с FI является то, что их калькуляторы на различные двуногие деривативы интеерсны пользователям. Правда, вас никто не запрайсит по таким ценам "как в калькуляторе", но можно пытаться вычислить fee контрагента, ведь у него такой же калькулятор

перейти к Links

Хранение данных в терминале

В итоге, с костылями и дырами в данных, терминал становится одним из провайдеров данных для ваших дальнейших small/mid data market research. Кроме внутренней новостной ленты RSS, остальные данные хранятся в виде индексов и запрашиваемых полей к ним (даже стат данные из открытых источников, типа GDP).
Например, для запроса цены по Microsoft, это будет индекс “MSFT US Equity” и поле PX_LAST.

  • Список доступных полей к “индексам” хранится в функции FLDS (т.е. fields. В компании догадались сокращать слова и назвали это “мнемоник” aka “mnemonic”)
  • Список доступных индексов хранятся в функции SECF (есть еще специфичные функции с фильтрами по классам активов, EQS для equity и SRCH для облигаций)

Можно запрашивать данные через функции:

  • BDP (B data point) “скажи мне последнюю доступную(!) цену по акции microsoft”
  • BDH (B Data history) “скажи мне цены по акции microsoft за период”
  • BDS (B data structure) “скажи мне top 20 держателей акции microsoft” самый сложноватый, потому что потом еще нужно метчить индекс и данные и как-то дальше со всем этим работать
  • Еще есть query (BQL – B query language) “строишь запрос, терминал все считает и выдает результат” (не использую)

(!) шутка в том, что если вы не покупали у каждой биржи доступ к real-time, задержка на цену акции будет как в Google Finance – 15 минут

перейти к Links

Script kiddie level – делаем все в Excel

Ищем пересечение двух списков: indexes и fields для извлечения данных

В функции SECF смотрим какие индексы есть с “microsoft”. Видим, что кроме акции и ADR есть Corp (облигации) и CDS (ставки на дефолт) и ETP(аналог ETF). Microsoft – популярная тема
В функции SECF смотрим какие индексы есть с “microsoft”. Видим, что кроме акции и ADR есть Corp (облигации) и CDS (ставки на дефолт) и ETP(аналог ETF). Microsoft – популярная тема

В функции FLDS  смотрим какие есть поля с “price” для индекса MSFT US Equity
В функции FLDS смотрим какие есть поля с “price” для индекса MSFT US Equity

BDP – спокойно можно протянуть формулу влево и вправо на весь массив
BDP – спокойно можно протянуть формулу влево и вправо на весь массив

BDH =BDH(B2,B3,B1,BToday()) Возвращает исторические значения PX_LAST к индексу MSFT US Equity c 5/19/2021 по сегодня
BDH =BDH(B2,B3,B1,BToday()) Возвращает исторические значения PX_LAST к индексу MSFT US Equity c 5/19/2021 по сегодня

BDS  Шутка в том, что запрос идентичен BDP, только возвращает вам целый массив, а не поле для 1 индекса
BDS Шутка в том, что запрос идентичен BDP, только возвращает вам целый массив, а не поле для 1 индекса

Поле TOP_20_HOLDERS_PUBLIC_FILINGS вернет вам топ 20 ходлеров MSFT из их открытых источников
Поле TOP_20_HOLDERS_PUBLIC_FILINGS вернет вам топ 20 ходлеров MSFT из их открытых источников

Выяснить top 20 hodlers возможно, как правило, из-за того что они заполняют форму 13F (но о позиции вы узнаете с опозданием)

У терминала есть особенность – никто не знает его лимиты запросов к API, даже индусы из тех.поддержки не скажут сколько же у вас осталось. Если вы простой смертный, в Excel у вас выходит ошибка “NA limit monthly”. Если вы шустрый смертный и запрашиваете кучу полей одновременно с открытием файла, то они блокируют вам excel-addon целиком на конкретном ПК + выносят мозг через тех.поддержку в духе “ wow such much requests for our manual Pakistan datacenters. Are you ohuel tam?? You are big&sirius bunker, go&buy our additional data subscriptions” Лимиты обновляются каждый месяц

перейти к Links

Indie script kiddie level

Тут, по ощущениям, лимиты API выше, чем в Excel. Условно, OHLC tick data просто руками получиться выцарапать с трудом, а тут можно пытаться и дней 100 вам дадут. Но если вы забили лимиты API в excel, придется ждать след месяца.

Сначала нужно настроить SDK для python, сделать нужно на одном ПК 1 раз (делал каждый раз на новом месте работы).
Need to install manually as shown:

  • API Library
  • Downlaod C++ Experimental Release (for latest python API version 3.14.0, this can only be downloaded thru WAPI in terminal).
  • Copy blpapi3_32.dll and blpapi3_64.dll under bin folder to Тerminal BLPAPI_ROOT folder, normally blp/DAPI

Предварительная настройка терминала – вообще самая болезненная тема, это касается не только API. Это как с мебелью ikea – в процессе страдаешь, эмоционально привязываешься и из-за этого тебе нравится любой результат (продажники называют это мягче – “лего для взрослых”), а люди по другую сторону баррикад от сейлзов называют это bias

Использую вот эту python библиотеку (там же они рассказывают, как настраивать SDK)

С BDP и BDH fields не сложно, потому что вам возвращается запрос в один data frame, а для BDS вот jupyter notebook. Каждый field = новый csv файл, потому что структура у всех запрашиваемых BDS fields может быть своя

перейти к Links

P.S. Вышло много, если тут зайдет, нужен будет кто-нибудь, кто чекнет англ текст после grammarly

BW,
Vadim

Связанные посты
25 комментариев 👇
Anton Kushnikov, Fullstack Developer 20 июня в 05:23

Ничо не понятно, но очень интересно! Как в итоге с этим терминалом работать, а главное нахуя?

@takheer, ❤❤❤
обожаю такие комменты

  Развернуть 1 комментарий
Gleb Kudriavtcev, Руководитель продуктов 20 июня в 08:16

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

В заголовке написано «история», но никакой истории я не увидел.

  Развернуть 1 комментарий
Захар Кириллов, Амбассадор ЕРАМ в Клубе 20 июня в 10:25

Такая статья могла появиться только тут в Клубе )

  Развернуть 1 комментарий
Yaroslav Lunev, Адвокат дьвола 20 июня в 07:41

што то на погромистском, где деньги, Лебовски?

  Развернуть 1 комментарий

@Yardy, деньги в иксах, иксы в активах, активы в рыночке, доступ к инфе о рыночке у поставщиков данных

  Развернуть 1 комментарий

@vad,

  Развернуть 1 комментарий

@Yardy, ну и, короче, вот такой стариковский аналог coinmarketcap.com этот ваш терминал

  Развернуть 1 комментарий

@vad, эт понятно, я думал, что просто ради котировок сейчас они теряют актуальность, а оперативный доступ к новостям обеспечивает твитор, зачастую даже быстрее блу, если быть подписанным на нужные акки

  Развернуть 1 комментарий

@Yardy, ну смотри. Есть концепция про "глубокий интернет", типа теневые двачи форумы vs остальной интернет. В этой концепции большинство обитает где-то на верхних слоях и не шарят где реально делишки крутятся. Тут также

Котировки не актуальны для физиков и физиков действительно большинство в рынке каких-нибудь акций. Да в целом с таким risk on и bull run в equity цены не актуальны ни для кого в equity. Провайдеру информации о ценах главное тут научиться зашивать спред прямо в котировки, чтобы делать "бесплатный" доступ давать лучший доступ своим пользователям и питаться энергией солнца

Но, попробуй облигацию, купить опцион - выйдет уже подороже. Благодаря этому барьеру входа существует ниша более дорогих по AUM игроков. Кроме любителей FIRE существуют страховые компании, которым куда-то надо втыкать свои миллиони

  Развернуть 1 комментарий
Владимир Кулагин, Квантовый аналитик, CFA, страх и ужас программистов (манагер то бишь) 20 июня в 06:41

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

Я по итогу забил на Блум и взял более программно лояльный Томсон инфинитив. Прямой конкурент Блума с гораздо более прогрессивным подходом к данным.

  Развернуть 1 комментарий

@Whispered, у меня не падает интеграция с excel из-за python (либо не замечал и списывал на другие причины). Проблем установить excel add-on не возникает даже у базовых it специалистов из бэкофиса. Лимиты просто общие - вот это проблема, да (вот у меня сейчас лимитов нет и там и там, потому, что качали большую матрицу через excel)

Eikon лучше, да, особенно datastream. BBG- это старик-жмот, который уже не особо готов делиться pure data (BQL и BQNT <GO> тому подтверждение)

Ещё надо понимать что для чего:
- BBG - для межбанка. Про это отдельно написано в статье. (Условно, они договариваются с barclays об индексах, pricing бондов тоже сначала появляется в bbg, затем попадает в Reuters)
- В то время как у eikon стратегия скупки сегментальных data aggregators дает свои плоды, data stream - топ (что позволяет eikon сначала заманивать клиентов за 300 bucks, а затем довешивать до стоимости дороже BBG и это иногда тоже некомфортно)

  Развернуть 1 комментарий

Я по итогу забил на Блум и взял более программно лояльный Томсон инфинитив. Прямой конкурент Блума с гораздо более прогрессивным подходом к данным.

Но можно ли там покупать билеты на самолет и смотреть отзывы на рестораны? А в bbg можно (не помню какая именно команда, FLTS что ли)!

  Развернуть 1 комментарий

@werth, про обзоры - DINE

а что там в FX? рейтерс - топ? или свопы на libor считают в bbg?

  Развернуть 1 комментарий

@vad, я больше про спот, так что за свопы не скажу. Но Reuters/FXAll - топ, да

  Развернуть 1 комментарий

@werth, а можешь рассказать про работу со спот в мини посте? 99% не поймут, поэтому збс идея :)

  Развернуть 1 комментарий

@vad, да я больше по price distribution, с прайсингом дел почти не имею, поэтому не думаю, что особо что-то интересное могу рассказать.

  Развернуть 1 комментарий

@werth, все равно интересно. FX - самая емкая тема же, особенно USD-EUR

price distribution - вот это или что-то еще?

  Развернуть 1 комментарий

@vad, это вся инфраструктура от клиента до прайсера и букинга

  Развернуть 1 комментарий

@werth, без понятия вообще что это. Можешь попробовать на пальцах объяснить? спасибо

  Развернуть 1 комментарий
Глеб Реутов, Делаю селфдрайвинг робота в гараже :) 19 июня в 19:13

Что ж это за загадочный терминал? Тунберг? Блумквист? Бумбер?

  Развернуть 1 комментарий

@badasme,

бумер  -<br>
тачка такая (картинка пугает своими размерами, извините)
бумер -
тачка такая (картинка пугает своими размерами, извините)

  Развернуть 1 комментарий

@badasme, вторая ссылка в посте :)

  Развернуть 1 комментарий
  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб