Skip to content

xsa-dev/AnalizeDashboard

Repository files navigation

Backtest Dashboard

Streamlit-приложение для визуализации результатов бэктестов из JSON-файлов.

English version: README_EN.md

Возможности

  • 📊 Интерактивные графики - Визуализация PNL, накопленного PNL, распределений и временных рядов
  • 🔍 Фильтрация данных - Выбор монет, стратегий и временных периодов для анализа
  • 📅 Временные фильтры - Анализ данных за конкретные периоды с быстрым выбором
  • 📈 Анализ стратегий - Сравнительный анализ эффективности стратегий
  • 💰 Метрики - Детальная статистика по стратегиям и символам
  • 📋 Таблицы данных - Просмотр и экспорт данных в CSV
  • ⚙️ Управление настройками - Сохранение и загрузка конфигураций фильтров с автоматической загрузкой настроек по умолчанию. Руководство

Структура данных

Приложение работает с JSON-файлами, содержащими результаты бэктестов в следующем формате:

{
  "trades": [
    {
      "id": "...",
      "strategy_name": "CloudScalper2024",
      "symbol": "UNI-USDT",
      "exchange": "Bybit Spot",
      "type": "long",
      "entry_price": 6.37,
      "exit_price": 6.24,
      "qty": 778.2,
      "fee": 9.81,
      "size": 4957.18,
      "PNL": -109.21,
      "PNL_percentage": -2.20,
      "holding_period": 24300.0,
      "opened_at": 1749335400000.0,
      "closed_at": 1749359700000.0
    }
  ],
  "considering_timeframes": ["4h", "1m", "30m"]
}

Установка

  1. Клонируйте репозиторий или скачайте файлы
  2. Установите зависимости:
pip install -r requirements.txt
  1. Поместите JSON-файлы с результатами бэктестов в папку input/batch-backtest-09-2025/

Запуск

streamlit run app.py

Приложение будет доступно по адресу: http://localhost:8501

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

AnalizeDashboard/
├── app.py                 # Основное Streamlit-приложение
├── data_loader.py         # Модуль для загрузки и обработки данных
├── visualizations.py      # Модуль для создания графиков
├── requirements.txt       # Зависимости Python
├── README.md             # Документация
├── example_settings.json  # Пример файла настроек
├── test_settings.json     # Тестовый файл настроек
├── SETTINGS_GUIDE.md      # Руководство по управлению настройками
├── TESTING_GUIDE.md       # Руководство по тестированию
└── input/
    └── batch-backtest-09-2025/  # Папка с JSON-файлами
        ├── *.json
        └── ...

Использование

Фильтрация данных

В боковой панели можно выбрать:

  • Монеты - Одна или несколько криптовалют для анализа
  • Стратегии - Одна или несколько торговых стратегий
  • Временной период - Анализ данных за конкретные даты:
    • Выбор начальной и конечной даты
    • Быстрые кнопки: последний месяц, 3 месяца, 6 месяцев, весь период
    • Автоматическая валидация корректности диапазона

Типы графиков

  1. PNL по сделкам - Столбчатая диаграмма прибылей и убытков
  2. Накопленный PNL - Линейный график накопленной прибыли
  3. PNL по времени - Временной ряд с точками сделок
  4. Распределение PNL - Boxplot по стратегиям

Метрики

  • Общий PNL - Суммарная прибыль/убыток
  • Средний PNL - Средняя прибыль на сделку
  • Процент прибыльных - Доля прибыльных сделок
  • Количество сделок - Общее число сделок
  • Время удержания - Среднее время удержания позиции
  • Профит-фактор - Отношение валовой прибыли к валовому убытку
  • Математическое ожидание - Ожидаемая прибыль на сделку
  • Коэффициент Шарпа - Отношение средней прибыли к стандартному отклонению

Экспорт данных

В разделе "Таблицы данных" можно:

  • Выбрать колонки для отображения
  • Настроить количество строк
  • Скачать данные в формате CSV

Управление настройками

В разделе "Настройки" можно:

  • Автоматическая загрузка - При первом запуске автоматически загружаются настройки из example_settings.json
  • Экспорт настроек - Сохранить текущие фильтры и настройки отображения в JSON файл
  • Импорт настроек - Загрузить ранее сохраненные настройки из файла
  • Предустановленные настройки - Быстро применить популярные комбинации:
    • Топ-стратегии (лучшие 3 по PNL)
    • Топ-монеты (лучшие 5 по PNL)
    • Последний месяц
    • Настройки по умолчанию (example_settings.json)
  • Сброс настроек - Очистить все импортированные настройки

Что сохраняется в настройках:

  • Выбранные символы (монеты)
  • Выбранные стратегии
  • Временной период (даты начала и окончания)
  • Тип графика для отображения
  • Колонки для отображения в таблице
  • Максимальное количество строк в таблице

Ключевые метрики

Профит-фактор (Profit Factor)

  • Формула: Валовая прибыль / Валовая убыток
  • Интерпретация:
    • 1.0 - стратегия прибыльна

    • 1.5 - хорошая стратегия

    • 2.0 - отличная стратегия

  • Пример: 1.22 означает, что на каждый доллар убытка приходится 1.22 доллара прибыли

Математическое ожидание (Expected Value)

  • Формула: Средний PNL на сделку
  • Интерпретация:
    • 0 - стратегия прибыльна в долгосрочной перспективе

    • < 0 - стратегия убыточна
  • Пример: 9.24 USDT означает, что в среднем каждая сделка приносит 9.24 USDT

Коэффициент Шарпа (Sharpe Ratio)

  • Формула: Средняя прибыль / Стандартное отклонение
  • Интерпретация:
    • 1.0 - хорошая доходность с приемлемым риском

    • 2.0 - отличная доходность с низким риском

  • Пример: 0.0717 означает относительно низкую доходность на единицу риска

Технические детали

  • Streamlit - Веб-фреймворк для создания интерактивных приложений
  • Plotly - Библиотека для создания интерактивных графиков
  • Pandas - Обработка и анализ данных
  • Кэширование - Используется @st.cache_data для оптимизации производительности

Расширение функциональности

Приложение легко расширяется:

  1. Новые графики - Добавьте методы в класс BacktestVisualizer
  2. Дополнительные метрики - Расширьте методы в BacktestDataLoader
  3. Новые фильтры - Добавьте виджеты в боковую панель
  4. Подключение БД - Замените загрузку из JSON на подключение к базе данных

Требования

  • Python 3.8+
  • Streamlit 1.28.0+
  • Plotly 5.17.0+
  • Pandas 2.0.0+
  • NumPy 1.24.0+

Лицензия

MIT License

About

Quantitative Trading Analysis Dashboard

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages