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"]
}- Клонируйте репозиторий или скачайте файлы
- Установите зависимости:
pip install -r requirements.txt- Поместите 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 месяцев, весь период
- Автоматическая валидация корректности диапазона
- PNL по сделкам - Столбчатая диаграмма прибылей и убытков
- Накопленный PNL - Линейный график накопленной прибыли
- PNL по времени - Временной ряд с точками сделок
- Распределение PNL - Boxplot по стратегиям
- Общий PNL - Суммарная прибыль/убыток
- Средний PNL - Средняя прибыль на сделку
- Процент прибыльных - Доля прибыльных сделок
- Количество сделок - Общее число сделок
- Время удержания - Среднее время удержания позиции
- Профит-фактор - Отношение валовой прибыли к валовому убытку
- Математическое ожидание - Ожидаемая прибыль на сделку
- Коэффициент Шарпа - Отношение средней прибыли к стандартному отклонению
В разделе "Таблицы данных" можно:
- Выбрать колонки для отображения
- Настроить количество строк
- Скачать данные в формате CSV
В разделе "Настройки" можно:
- Автоматическая загрузка - При первом запуске автоматически загружаются настройки из example_settings.json
- Экспорт настроек - Сохранить текущие фильтры и настройки отображения в JSON файл
- Импорт настроек - Загрузить ранее сохраненные настройки из файла
- Предустановленные настройки - Быстро применить популярные комбинации:
- Топ-стратегии (лучшие 3 по PNL)
- Топ-монеты (лучшие 5 по PNL)
- Последний месяц
- Настройки по умолчанию (example_settings.json)
- Сброс настроек - Очистить все импортированные настройки
Что сохраняется в настройках:
- Выбранные символы (монеты)
- Выбранные стратегии
- Временной период (даты начала и окончания)
- Тип графика для отображения
- Колонки для отображения в таблице
- Максимальное количество строк в таблице
- Формула: Валовая прибыль / Валовая убыток
- Интерпретация:
-
1.0 - стратегия прибыльна
-
1.5 - хорошая стратегия
-
2.0 - отличная стратегия
-
- Пример: 1.22 означает, что на каждый доллар убытка приходится 1.22 доллара прибыли
- Формула: Средний PNL на сделку
- Интерпретация:
-
0 - стратегия прибыльна в долгосрочной перспективе
- < 0 - стратегия убыточна
-
- Пример: 9.24 USDT означает, что в среднем каждая сделка приносит 9.24 USDT
- Формула: Средняя прибыль / Стандартное отклонение
- Интерпретация:
-
1.0 - хорошая доходность с приемлемым риском
-
2.0 - отличная доходность с низким риском
-
- Пример: 0.0717 означает относительно низкую доходность на единицу риска
- Streamlit - Веб-фреймворк для создания интерактивных приложений
- Plotly - Библиотека для создания интерактивных графиков
- Pandas - Обработка и анализ данных
- Кэширование - Используется
@st.cache_dataдля оптимизации производительности
Приложение легко расширяется:
- Новые графики - Добавьте методы в класс
BacktestVisualizer - Дополнительные метрики - Расширьте методы в
BacktestDataLoader - Новые фильтры - Добавьте виджеты в боковую панель
- Подключение БД - Замените загрузку из JSON на подключение к базе данных
- Python 3.8+
- Streamlit 1.28.0+
- Plotly 5.17.0+
- Pandas 2.0.0+
- NumPy 1.24.0+
MIT License