Skip to content

wisetree911/sz-finances

Repository files navigation

SZfinancEZ — это сервис для анализа инвестиционного портфеля с использованием реальных данных MOEX

Проект демонстрирует:

  • проектирование REST API
  • асинхронный backend
  • работу с реальными финансовыми данными (MOEX)
  • расчёт PnL и другие метрики по истории сделок (FIFO)

Архитектура

  • Backend API (FastAPI)
    • Auth (JWT access/refresh)
    • Портфели / Активы / Сделки
    • Модуль аналитики
  • Price updater microservice
    • Достает данные из MOEX API
    • Обновляет в PostgreSQL
    • Публикует обновления через Redis
  • PostgreSQL - основное хранилище
  • Redis
    • Cache
    • Pub/Sub (в разработке)

QUICKSTART

cp .env.example .env docker compose up -d --build

После запуска Swagger будет доступен по http://localhost:8000/docs

Идея проекта

  • Автоматически собирать цены активов с MOEX через API
  • Хранить данные в БД
  • Позволять пользователю создавать портфели и позиции и управлять ими

Предоставлять аналитику по:

  • структуре портфеля
  • распределению по секторам
  • динамике стоимости Предоставлять удобный API

Функционал на данный момент

  • архитектура с разделением api, services, repositories, models, shemas
  • набор эндпоинтов (аналитика и CRUDы)
  • история сделок
  • правильная по FIFO аналитика расчета PNL-ов по истории сделок
  • отдельный модуль аналитики
  • 3 вида аналитических сводок
  • отдельный сервис price_updater для обновления динамики цен активов
  • авторизация/аутентификация JWT / Oauth2

Используемые технологии и инструменты

• Python 3.11 • FastAPI • WebSocket • Pydantic • aiohttp • asyncio • PostgreSQL • SQLAlchemy 2.0 (async) • Alembic • Redis • Logging • API iss.moex • Auth JWT (Access/Refresh)

В планах:

  • custom exceptions
  • обеспечение скорости модуля аналитики raw sql запросами
  • улучшение микросервиса price_updater
  • система задач/воркеров
  • добавление новых источников данных
  • микрсервис на Python/Go для импорта портфеля из Т-инвестиций
  • frontend клиент (react, next.js)

Releases

No releases published

Packages

 
 
 

Contributors

Languages