К содержимому

Обратная связь

Вместе с сообщением отправится адрес этой страницы.

Насколько точен рейтинг ENSI.Score

64.0%

прогнозов, зафиксированных сайтом до матча, сбылись

Измерено на 815 матчах, сыгранных с 26 сентября 2025 г. по 25 сентября 2026 г.. Пересчитано 25 сентября 2026 г. по отчёту №169.

Цифры в сравнении с монеткой

Метрика ENSI.Score Монетка
Точность 0.6405 0.5000
Оценка Брайера 0.2229 0.2500
Log-loss 0.6365 0.6931

Точность считает матчи, в которых победил фаворит. Брайер и log-loss оценивают саму вероятность, и чем они ниже, тем лучше: прогнозист, который сказал 90 % и ошибся, наказывается сильнее того, кто сказал 51 % и тоже ошибся.

Игра Матчи Точность Оценка Брайера Log-loss
CS2 609 0.6273 0.2275 0.6473

Дисциплина появится здесь, когда у неё наберётся 300 собственных учтённых прогнозов.

Какую часть года это покрывает

22064 = 815 + 36 + 21213

Из матчей периода учесть можно было 22064: у 815 была вероятность, зафиксированная до начала, у 36 — вероятность, которая перестала описывать матч, а у 21213 её не было вовсе.

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

70 % — это семь раз из десяти?

Все прогнозы за год, отсортированные по выданной вероятности и разбитые на десять равных групп. Группа на диагонали оказывалась права ровно так часто, как обещала; полосы — диапазон, с которым группа ещё согласуется на уровне 95 %, и они широкие, потому что год матчей — это немного.

Группа Матчи Прогноз Фактически выиграно Разрыв, п. п. 95-процентный интервал
1 82 25.2% 26.8% +1.7 18.4% – 37.3%
2 82 36.4% 40.2% +3.8 30.3% – 51.1%
3 82 42.8% 47.6% +4.7 37.1% – 58.2%
4 82 46.9% 54.9% +8.0 44.1% – 65.2%
5 82 50.8% 61.0% +10.2 50.2% – 70.8%
6 81 55.4% 58.0% +2.6 47.2% – 68.2%
7 81 60.2% 60.5% +0.3 49.6% – 70.4%
8 81 65.4% 69.1% +3.7 58.4% – 78.1%
9 81 72.7% 72.8% +0.1 62.3% – 81.3%
10 81 82.7% 84.0% +1.3 74.5% – 90.4%

Как получается цифра

За пять–двадцать минут до начала матча вероятность победы первой команды рассчитывается по двум рейтингам ENSI.Score, которые в этот момент показаны на сайте, и записывается. Потом она никогда не правится — именно эту цифру показывает страница матча.

p1 = 1 / (1 + 10 ^ ((r2 − r1 − 0) / 400))

r1 и r2 — два рейтинга ENSI.Score в момент фиксации вероятности. Опубликованная модель — elo-v1: сдвиг 0 и масштаб 400.

Матч входит в цифры выше, если в пределах 365 дней периода он отвечает всем условиям:

  • Матч сыгран и завершён в пределах периода, и по счёту есть победитель.
  • Ничьи и матчи, решённые техническим поражением, исключены: прогнозировать было нечего.
  • Прогноз всё ещё описывает матч. Если после фиксации команды поменялись местами или начало перенесли, прогноз помечается и перестаёт учитываться — но остаётся виден как запись того, что было заявлено.
  • По уже завершённому матчу ничего не измеряется. Точность модели — это то, что она сказала заранее, и только это.

Полосы калибровки широкие намеренно. Чтобы отличить группу, которая обещает 70 %, от группы, которая выигрывает в 75 % случаев, нужно около 16 500 матчей — примерно год, — и пока их меньше, честнее показывать интервал, а не вердикт.

Запросы, из которых получена цифра

Опубликованная цифра пересчитывается по строкам, которые зафиксировал отчёт, поэтому её можно воспроизвести, даже если счёт исправили, матч перенесли или серию удалили:

php artisan e:elo-accuracy --report=169
select series_id, p1, y::int as y from elo_accuracy_report_rows where report_id = ?

Параметры: 169

Та же арифметика над данными в их текущем виде. На страницы она не попадает: если она расходится с отчётом, значит, входные данные изменились после публикации — это нужно знать, а не сглаживать.

php artisan e:elo-accuracy --live --window-days=365 --window-end=2026-09-25
select sp.series_id, sp.p1,
       (case when s.score_1 > s.score_2 then 1 else 0 end) as y
from series_predictions sp
join series s on s.id = sp.series_id
where sp.model = ? and sp.status = 'active'
  and s.date_end is not null
  and s.date_end >= (?::date - make_interval(days => ?::int - 1))
  and s.date_end  < (?::date + interval '1 day')
  and s.score_1 is not null and s.score_2 is not null and s.score_1 <> s.score_2
  and coalesce(s.forfeit_team_1, false) = false
  and coalesce(s.forfeit_team_2, false) = false
  and (?::int is null or s.game_id = ?)

Параметры: elo-v1, 2026-09-25, 365, 2026-09-25, null, null

Обе выборки — это входные данные. Арифметика над ними — точность, Брайер, log-loss и десять групп с интервалами — один блок SQL, который команда выполняет над любой из двух, поэтому отчёт и пересчёт не могут разойтись из-за того, что считали по-разному.

Хеш зафиксированных входных данных: f7a20c778b8fa41c8005e3a291112891

Где найти эти рейтинги

Вход