Development системы мониторинга P&L торгового бота
P&L мониторинг — это не просто «сколько заработали». Это реальтайм-система, которая отвечает на вопросы: почему сегодня хуже вчера, какая стратегия тянет портфель вниз, когда срабатывает daily loss limit. Без правильного P&L учёта бот — чёрный ящик с непредсказуемым исходом.
Типы P&L: realized, unrealized, total
Realized P&L: прибыль от закрытых сделок. Факт — деньги зафиксированы.
Unrealized P&L (mark-to-market): текущая переоценка открытых позиций по рыночной цене. Меняется с каждым тиком.
Total P&L: realized + unrealized. Но для управления рисками их важно разделять — unrealized может испариться.
Fee-adjusted P&L: реальная доходность после всех комиссий. Бот с 60% win rate может быть убыточным, если средний win слишком мал относительно комиссии.
Правильный расчёт
Стандартная ошибка — считать P&L как текущая цена × размер − цена входа × размер. Это игнорирует:
- Funding rate для перпетуальных фьючерсов (может съедать 20%+ прибыли)
- Slippage при исполнении (отличие execution price от planned price)
- Maker/taker fees (разные для разных ордер тайпов)
- Бorrow rate для маржинальной торговли
Временные срезы и attribution
Мониторинг P&L требует разбивки по времени и источникам:
| Срез | Назначение |
|---|---|
| Intraday (по часам) | Видеть в течение дня, когда активна торговля |
| Daily | Основной operational метрик |
| Weekly/Monthly | Оценка стратегической эффективности |
| Rolling 30/90 дней | Устранение сезонности |
P&L Attribution: разбивка P&L по источникам. Сколько принесла стратегия A, сколько B, сколько потеряли на funding, сколько на комиссиях. Без attribution непонятно, что оптимизировать.
Benchmark comparison: сравнение с пассивной стратегией Buy & Hold. Если бот заработал 15% за месяц, а BTC вырос на 25% — стратегия проигрывает рынку.
Ключевые метрики
Sharpe Ratio: (доходность − безрисковая ставка) / стандартное отклонение. Выше 2.0 — хорошо для торгового бота. Показывает доходность на единицу риска.
Maximum Drawdown: максимальное падение от пика до дна. Если drawdown достигает 20% — это сигнал, что что-то идёт не так.
Calmar Ratio: годовая доходность / максимальный drawdown. Позволяет сравнивать стратегии с разным риском.
Win Rate vs Profit Factor: win rate без контекста бесполезен. Profit Factor = сумма выигрышей / сумма проигрышей. PF > 1.5 — хороший ориентир.
Реализация хранилища данных
P&L данные требуют быстрых запросов по временным диапазонам и агрегациям. Варианты:
TimescaleDB (PostgreSQL extension): оптимизирован для time-series данных, SQL-интерфейс, автоматические гипертаблицы для партиционирования по времени. Хорошо для сложных аналитических запросов.
InfluxDB: специализированная time-series база, отличная производительность для записи/чтения, Flux query language. Менее гибкая аналитика чем SQL.
PostgreSQL без расширений: работает, но при больших объёмах (миллионы тиков) требует ручного партиционирования.
Структура данных:
CREATE TABLE pnl_snapshots (
timestamp TIMESTAMPTZ NOT NULL,
bot_id UUID NOT NULL,
strategy_id UUID,
realized_pnl NUMERIC(18,8),
unrealized_pnl NUMERIC(18,8),
fees_paid NUMERIC(18,8),
funding_paid NUMERIC(18,8),
PRIMARY KEY (timestamp, bot_id)
);
Визуализация и алертинг
Equity curve: основной график — кумулятивная доходность во времени. Сравнение нескольких стратегий на одном графике, подсветка drawdown периодов.
Daily P&L bars: столбчатая диаграмма по дням, цветовая дифференциация прибыльных/убыточных дней.
Drawdown chart: visualisation текущей и исторической просадки.
Alerts по P&L: если дневной убыток превышает threshold — алерт в Telegram/Discord/email. Это часть системы управления рисками, не просто мониторинг.
Хорошая система P&L мониторинга отвечает за 15-20% ценности всего проекта торгового бота — именно она даёт понимание, что происходит и куда двигаться.







