Как я маркетдату агрегировал. Визуализация данных Nasdaq, LSE и MOEX

6134a0118d6655b9db1aac552f1bf718.jpg

В предыдущей статье я рассказал о finmap.org — инструменте визуализации данных Мосбиржи и американских площадок. Спасибо хабравчанам за отзывы и предложения. Отдельная благодарность за донаты, вы помогаете покрыть затраты на AWS. Благодаря вашим идеям, в finmap.org появилась строка поиска по тикеру, а в portfolio можно отобразить американские ETF.

Американские ETF в портфолио (finmap.org)
Американские ETF в портфолио (finmap.org)

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

Мосбиржа, количество бумаг по секторам (finmap.org)
Мосбиржа, количество бумаг по секторам (finmap.org)

Помимо MOEX, Nasdaq, NYSE и AMEX я добавил данные торгов Лондонской биржи. Датафайлы приведены к общему формату, это сильно упростило разработку. Отображение исторических данных в виде гистограммы теперь доступно для всех площадок.

Лондонская биржа, histogram и treemap (finmap.org)
Лондонская биржа, histogram и treemap (finmap.org)

В ближайшее время я планирую добавить ещё несколько площадок. Моя цель — агрегировать на finmap.org как можно больше данных. Пожалуйста, напишите в комментариях какие биржи/страны вы хотели бы видеть?

Backend

Многие спрашивали как агрегируются данные. Для Мосбиржи я использую MOEX ISS, для всех американских площадок — Nasdaq API, для Лондонской биржи — api.londonstockexchange.com.

Скриннеры Nasdaq и Лондонской биржи
Скриннеры Nasdaq и Лондонской биржи

Для автоматизации используется Github Actions. Workflow вызывает curl, который через API забирает данные в виде Json, далее Json процессится с помощью jq. Никакого больше python. Jq выполняется быстрее и предустановлен в большинстве linux-дистрибутивов, нет необходимости поднимать виртуальное окружение, устанавливать зависимости. Код опубликован здесь:

  • Update Market Data: US

  • Update Market Data: LSE

  • Update Market Data: MOEX

Данные для построения histogram обновляются раз в сутки:

  • Update Histogram Datafiles

Курс рубля я беру с Мосбиржи, других валют — Frankfurter API:

  • Update Currency Exchange Rates

Данные о стоимости нефти берутся из U.S. Energy Information Administration:

  • Update Oil Prices

Что дальше?

В следующем обновлении я добавлю как минимум ещё одну площадку. Репозиторий будет разделён, чтобы сократить время выполнения workflows и сделать их запуск более управляемым.

Это все новости на данный момент. Пожалуйста, напишите в комментариях что думаете о проекте, что хотели бы видеть. Звёздочки в github и плюсы в карму приветствуются, заранее спасибо!

Ссылки

  • Исходный код: https://github.com/finmap‑org/finmap‑org

  • Сообщить о багах, оставить предложения: Github Issues

  • Поддержать проект рублём: Boosty

  • Patreon

© Habrahabr.ru