Skip to content

Repository files navigation

Kairos

Рабочее место финансового аналитика: бэктест стратегий, событийный анализ, поиск прецедентов на языке PQL, журнал исследований. Магистерская дипломная работа.

Стек

  • Backend: Python 3.11, FastAPI.
  • БД: Postgres + PL/Python + самописные postgres-функции; Liquibase для миграций.
  • Frontend: React, TypeScript, Vite, lightweight-charts, TanStack Table, CodeMirror.
  • Инфраструктура: Docker Compose (Postgres + Liquibase).

Структура проекта:

  • docs/ — документация по проекту
  • backend/ — Python: main.py (точка входа), routers/ (REST по доменам), schemas/ (DTO), core/ (доменная логика), tests/, notebooks/ (для прототипирования).
  • frontend/ — React + Vite + lightweight-charts + TanStack Table. Плавающие виджеты на полотне.
  • db/changelog/ — Liquibase-changelog схемы Postgres.
  • docker/ — Dockerfile Postgres с включённым PL/Python и init-скрипт.
  • data/ - сырые данные, скачаны из внешних источников
  • scripts/ — Служебные скрипты: запуск проекта, загрузка данных и т д.

Установка

1. Python (через conda)

conda create -n data-core python=3.11
conda activate data-core
# Базовые научные пакеты для ноутбуков
conda install -c conda-forge pandas numpy plotly matplotlib jupyter ipywidgets openpyxl
# Runtime-зависимости бэкенда (fastapi, uvicorn, duckdb, psycopg)cd backend
pip install -e .cd ..

2. Frontend (Node.js + npm)

Node.js 20+ и npm.

cd frontend
npm install

Запуск проекта с нуля

После клонирования репозитория и установки Python/Node/Docker:

# 1. Поднять Postgres
docker compose up -d postgres
# 2. Накатить схему через Liquibase
docker compose --profile migrate run --rm liquibase update
# 3. Залить данные из папки `data`
python scripts/load_all_data.py
# 4. Проверка
docker compose --profile migrate run --rm liquibase status # должно быть 0 pending changesetscd backend && pytest tests/ -v

Альтернатива: восстановление из дампа бд

Дампы лежат в data/db/backup_<YYYYMMDD_HHMMSS>/full.dump. Восстановление из выбранного бэкапа:

docker cp data/db/backup_20260513_154704/full.dump data-core-postgres:/tmp/full.dump
docker exec data-core-postgres pg_restore -U postgres -d postgres \
--single-transaction /tmp/full.dump

Новый дамп создаётся скриптом:

python scripts/ops/backup_postgres.py

Запуск приложения

Postgres должен быть поднят. Дальше — backend + frontend.

python scripts/ops/run_services.py # оба сервиса
python scripts/ops/run_services.py --backend # только бэкенд
python scripts/ops/run_services.py --frontend # только фронт
  • Backend: http://127.0.0.1:8080/docs (Swagger).
  • Frontend: http://127.0.0.1:5173.

Что есть в приложении

В тулбаре сверху — переключатель активного исследования и кнопка «+ Добавить виджет». Доступные виджеты:

ВиджетНазначениеСпецификация
Price chartГрафик цены акции с маркерами дивидендов и событийSPEC_FRONTEND.md
Index chartIMOEX, RUONIA и другие индексыSPEC_FRONTEND.md
Event studyРасчёт CAR для события с фильтрацией выбросовSPEC_FRONTEND.md, EXPECTED_RETURN_MODELS.md
PQL EditorPQL-запросы к базе событийSPEC_PRECEDENT_LANGUAGE.md
EntityEditorРедактор стратегий, правил и окружений бэктестаSPEC_BACKTEST.md
BacktestEditorЗапуск прогонов, результаты прогонаSPEC_BACKTEST.md
Research JournalЭкспорт прогонов исследованияSPEC_RESEARCH.md

Концепция исследования как контейнера приватных стратегий/правил/окружений и прогонов — в SPEC_RESEARCH.md. Логические группы виджетов и ведущий график — в SPEC_FRONTEND.md.


Тесты

cd backend
pytest tests/ -v

Документация

Общее

  • GLOSSARY.md — единый словарь проекта

Подсистемы

  • SPEC_DATABASE.md — схема Postgres и миграции
  • SPEC_DATA_PROVIDERS.md — провайдеры котировок, дивидендов, ставок
  • SPEC_FRONTEND.md — фронтенд, виджеты, синхронизация графиков
  • SPEC_PRECEDENT_LANGUAGE.md — Спецификация запроса поиска прецендентов
  • SPEC_BACKTEST.md — движок бэктеста, стратегии, правила, окружения, прогоны
  • SPEC_RESEARCH.md — исследование как контекст работы

Методология

  • EXPECTED_RETURN_MODELS.md — модели ожидаемой доходности. Используются в методологии событийного анализа.
  • TAGS.md — система тегов событий

Прикладное

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages