Методология — как мы считаем винрейт, P&L и ROI

Каждое число рядом с трейдером на PNL Mama — на главной странице, в профиле трейдера, на SEO-странице обзора — считается одной и той же функцией. Если на главной у трейдера 52% винрейта, то и его собственная страница согласна, и мета-теги, которые индексирует Google. Эта страница описывает формулу.

Как мы проверяем каждый сигнал

  1. Захват. Каждое сообщение, которое трейдер публикует в своём публичном Telegram-канале — текст плюс любой скриншот графика — сохраняется как есть, с точной меткой времени публикации. Эта метка — якорь для всего дальнейшего.
  2. Чтение. Наша модель извлечения достаёт монету, направление (лонг/шорт), вход, тейк-профиты, стоп-лосс и плечо. Если число нарисовано на графике, его считывает OCR. Мы не выдумываем недостающие цены; пропуски идут в шаг 3.
  3. Стандартизация. Когда трейдер публикует неполный план, мы применяем одни и те же значения по умолчанию к каждому сигналу, чтобы их можно было сравнивать: стоп-лосс = вход × (1 − 1/плечо), плечо = 10× если не указано, вход по рынку и три синтетических тейк-профита на 33% / 66% / 100% расстояния от входа до стопа.
  4. Гейт по проскальзыванию. Если к моменту появления поста рынок уже прошёл более 70% пути от входа до TP1, ни один честный подписчик не смог бы войти по этой цене — сигнал помечается как MISSED и исключается из винрейта.
  5. Бэктест. Уцелевшие сигналы прогоняются по реальным поминутным свечам OHLC с биржи. Цена входа — открытие свечи минуты публикации. Симулируемая позиция использует фиксированную маржу $100 на плече сигнала — общий масштаб для PnL в USDT по трейдерам, а не совет по размеру позиции.
  6. Запись. Каждая закрытая сделка получает реализованный PnL в USDT (с учётом плеча) и ROI %. Эти сделки питают числа винрейта, P&L и ROI ниже.

Что считается закрытой сделкой

Сигнал считается закрытым, только когда его статус — один из: CLOSED_FULL, CLOSED_PARTIAL, TIMED_OUT.

  • CLOSED_FULL — достигнуты все уровни тейк-профита либо позицию закрыл стоп-лосс.
  • CLOSED_PARTIAL — достигнут хотя бы TP1, остаток позиции закрылся позже.

Активные, ожидающие и ошибочные сигналы исключаются из винрейта и P&L.

Как классифицируется закрытая сделка

У каждой закрытой сделки есть результат — прибыль или убыток в USDT, с учётом плеча. Этот результат относит сделку к одной из четырёх корзин:

  • Победа — закрылась в плюс.
  • Убыток — закрылась в минус.
  • В ноль — закрылась в безубыток. Не победа, но и не убыток — всё равно учитывается в общем числе закрытых сделок.
  • Исключена — закрыта, но результат посчитать не удалось (редко). Выбрасывается из статистики.

Винрейт

Винрейт — доля побед среди закрытых сделок: Винрейт = победы ÷ все закрытые сделки × 100%. «Все закрытые сделки» — это победы + убытки + безубыток, всё, чей исход известен. Округляется до двух знаков после запятой.

P&L и ROI

  • P&L (USDT) — суммарная прибыль или убыток по всем закрытым сделкам. Каждая симулируется с одной и той же маржой $100 (шаг 5), и складываются только реализованные результаты — открытые позиции это число не двигают.
  • ROI % — среднее по ROI каждой сделки (с плечом). Это средняя доходность на сигнал — каждая сделка с равным весом, без реинвестирования. Не портфельная доходность.

Какой период мы считаем

По умолчанию — последние 30 дней, по дате публикации сигнала. В профиле трейдера окно можно поменять: например, только прошлая неделя или всё время.

Что мы (пока) не учитываем

  • Размер позиции — каждая сделка симулируется с одними и теми же $100 (шаг 5), чтобы трейдеров можно было сравнивать в одном масштабе. Мы не знаем реальный размер счёта трейдера и сколько он вложил в конкретный сигнал.
  • Биржевое проскальзывание и комиссии — мы используем цены из сигнала и не вычитаем реальные издержки исполнения. На живой бирже результат будет чуть хуже.
  • Частичные закрытия — если трейдер достиг первого тейк-профита и закрыл остаток вручную, мы всё равно считаем сделку полной победой. Более строгая методология дала бы винрейт чуть ниже нашего.

Полная реализация — в core/stats_service.py; эта страница и тот файл обновляются вместе.

← Назад к трейдерам