михаил коржов
все кейсы

платформа · 7 дней

Статистика для трейдеров

Трейдеры видят, какой сетап приносит деньги, а какой сливает счёт

стек react · typescript · fastapi · postgres · docker · playwright

HUD: матрица сетапов
метрики по каждой сделке
34
экранов платформы
12
источника данных
4
автотестов, метрики сверены с Excel
1289

Задача

Трейдер вёл сделки в таблицах и не видел, какие сетапы приносят деньги, а какие тихо съедают депозит.

Решение

Платформа импортирует сделки из четырёх источников, склеивает фрагменты, считает 34 метрики по каждой сделке и показывает, где течёт счёт.

Как это работает

  1. Графики счёта

    Графики счёта

    Эквити с лимитом пропа пунктиром, P&L по дням календарём, серии плюсов и минусов. Видно, в какие дни и после каких серий счёт проседает.

  2. Журнал сделок

    Журнал сделок

    Биржа отдаёт выход кусками: шесть строк склеиваются в одну сделку. Статистика считается по сделкам, а не по фрагментам, поэтому винрейт честный.

  3. Monte Carlo

    Monte Carlo

    5 000 перемешиваний истории против лимита пропа. Ответ: вероятность вылета и размер позиции, при котором она ниже.

Что проработано

  • Импорт из 4 источников

    Hash Hedge, Binance, MOEX и Т-⁠Банк: файл экспорта или API, журнал собирается сам.

  • 34 метрики по сделке

    Винрейт, профит-⁠фактор, expectancy, SQN, MAE/MFE по свечам Binance.

  • Кэш отчётов и очередь задач

    Отчёт HUD кэшируется до изменения данных, тяжёлые задачи идут через очередь на Postgres.

  • Личные кабинеты и защита данных

    Ключи бирж зашифрованы, чужой счёт отдаёт 404 — это закреплено тестами.

  • Monte Carlo и what-⁠if

    5 000 серий сделок и пересчёт статистики с другими правилами выхода.

Как устроено

интерфейс
React · TypeScript · Vite · 12 экранов
HUD и журнал на одной странице, без перезагрузок между фильтрами
сервер
FastAPI · JWT · воркер
загрузка свечей упирается в лимиты биржи, поэтому живёт в воркере и не тормозит интерфейс
данные
PostgreSQL · Alembic · очередь SKIP LOCKED
одна база и для данных, и для очереди: перезапуск не теряет задачи, отдельный брокер не нужен
инфраструктура
Docker Compose · Caddy · HTTPS
выкатка и откат одной командой, сертификаты обновляются сами
качество
1289 автотестов · сверка с Excel-эталоном · проба нагрузки
метрики сравниваются с эталоном на каждом прогоне, регресс ловится до релиза

Как шла работа и что проверял

Этапы

  1. Бриф, ТЗ, архитектура

    день 1

  2. Дизайн-⁠система, авторизация, импорт

    день 2

  3. Движок метрик, HUD, журнал; числа сверены с Excel-⁠журналом трейдера

    дни 3–4

  4. Графики, Monte Carlo, биржи

    день 5

  5. Автотесты, проба нагрузки, кэш отчётов

    день 6

  6. Деплой, HTTPS, первые пользователи

    день 7

Проверки

  • 1289 автотестов

    Парсеры экспортов, склейка сделок, движок метрик, what-⁠if, изоляция счетов и безопасность API, расчёты интерфейса.

  • Сверка с Excel-⁠эталоном

    Метрики сравниваются с журналом трейдера; при переносе 71 сделки челленджа итог 535,06 совпал с журналом.

  • Проба нагрузки

    Скрипт гоняет одновременных пользователей по счёту на 1063 сделки. После пробы добавлены кэш отчёта, пагинация в SQL и несколько воркеров.

  • Изоляция данных

    Отдельные тесты проверяют, что чужой счёт недоступен и ключи бирж не уходят наружу.

Обсудим вашу задачу?

30 минут созвона. Срок и цену называю в тот же день.