Визуализация данных Мосбиржи и не только
- четверг, 16 января 2025 г. в 00:00:05
Привет!
Хочу поделиться инструментом для визуализации данных Мосбиржи, Nasdaq, NYSE и AMEX. Графики можно посмотреть на странице finmap.org. Сейчас я занимаюсь этим проектом один, а планов много, например, добавить данные торгов стран Европы, Азии и Латинской Америки. Исходный код опубликован на GitHub. Очень надеюсь, что хабр-эффект всё ещё работает и здесь найдутся те, кто готов присоединиться к разработке. Пожалуйста, расскажите о проекте друзьям и знакомым.
Данные торгов представлены в виде treemap и histogram. В карточке каждой компании отображается краткое описание и новостная лента. В будущем я планирую добавить ленту микроблогов.
Для Московской биржи ценные бумаги можно сортировать по капитализации, объёму торгов и количеству сделок.
Сортировка по объёму торгов и количеству сделок позволяет найти самые ликвидные/спекулятивные бумаги. На данный момент на Мосбирже такими бумагами являются инструменты денежного рынка.
Доступна статистика по количеству компаний, представленных на бирже.
Можно перечислить акции в txt файле и использовать этот список как фильтр, например, для кастомизации новостной ленты. На картинке ниже фильтр для компаний из индекса S&P500.
Ещё одна функция, которая пока находится в зачаточном состоянии - анализ персонального портфеля. Создайте CSV-файл, перечислите в нём тикеры и количество акций. Далее нажмите кнопку 🛄 и выберете созданный CSV-файл. Treemap позволяет увидеть веса отдельных бумаг в портфеле, распределение по странам и секторам. Эта информация может быть использована для принятия решений о диверсификации. Данные обрабатываются на устройстве пользователя, на сервер эта информация не отправляется.
Раз уж мы на Хабре, несколько слов об архитектуре. На данный момент все затраты на инфраструктуру я покрываю из своего кармана, поэтому моя цель - максимально снизить расходы. В качестве хостинга используется Github Pages, фронтенд написан на javascript, для построения графиков используется библиотека Plotly.js. Применена "резиновая" вёрстка, а также технология Power Web Application, которая позволяет пользоваться веб-сайтом как полноценным приложением даже offline. Для обновления данных используется Github Actions, workflow написаны на bash и python.
Сервис обновления новостной ленты хостится в облаке AWS. Архитектура довольно стандартная, но так как Free Tier ограничен одним EC2 инстансом, я использую несколько бесплатных сервисов, которые разными методами реализуют одну и ту же функциональность. Сделано это для обеспечения отказоустойчивости.
User
⇓
Cloudfront
⇓
Firewall
(fallback) ⇙ ⇘ (primary)
API Gateway Application Load Balancer
⇓ ⇓
Google News Target Group
⇓
EC2 Instance
⇓
Google News
Кэширование настроено везде, где это возможно: у клиента, в Cloudfront и на стороне backend-сервиса. Сделано это, опять же, с целью уменьшить нагрузку и стоимость инфраструктуры.
Сейчас можно посмотреть визуализацию для Московской биржи, NASDAQ, NYSE и AMEX. Этот список будет пополняться. Я планирую добавить нотификации, больше графиков и аналитики, но сначала нужно унифицировать код, данные и довести до паритета функциональность для всех рынков.
Ещё в планах добавить сервис, который основываясь на информации о доходах и расходах пользователя, даст объективную оценку финансового состояния и предложит конкретные шаги как это состояние улучшить.
Буду ждать ваших отзывов и пул реквестов. С новым годом!