Я попробовал обыграть букмекера с помощью AI
Двенадцать моделей прогнозировали The International 2026 и выбирали виртуальные ставки. Ни одна не вышла в плюс. После турнира я разобрал, на чём они теряли деньги и чем им помогали коэффициенты.
Перед финальным матчем The International 2026, крупнейшего ежегодного турнира по Dota 2, я собрал 48 прогнозов на эту серию от двенадцати LLM в четырёх режимах. Модели изучали статистику по доте, личные встречи и выборы героев. В режиме фиксированного контекста они получали готовые данные, а в агентском режиме каждая самостоятельно искала информацию в интернете. Все 48 прогнозов отдавали преимущество Team Vision, которую фаворитом считал и букмекер. В итоге она проиграла Team Spirit.
hy3, например, оценила шансы Team Vision в 78%. В объяснении всё выглядело довольно убедительно: команда уже обыгрывала Team Spirit, выше в Elo, лучше выглядит на турнире. Но в конце модель всё-таки оставила такой вариант:
«Лучший шанс Spirit — апсет 3:2».
То есть сценарий, который в итоге случился, в ответе буквально был. Только Spirit модель оставила 22%, уверенно предпочтя VISION. И это довольно знакомое ощущение от работы с LLM: читаешь объяснение, вроде всё разумно, риски учтены, даже неожиданный исход предусмотрен. Но насколько точно LLM оценивают вероятности в целом?
По одному финалу этого не понять. События с вероятностью 22% иногда должны происходить, иначе с вероятностями что-то не так. Поэтому я посмотрел на весь турнир, отдельно разобрал ставки и проверил, что меняется, если дать моделям инструменты или показать мнение букмекера.
Как я это устроил
Проект назвал Midas, в честь предмета из доты, который превращает крипа в дополнительное золото. Крип — это внутриигровой юнит, за убийство которого герой получает золото и опыт для прокачки. Идея была простая: выдать нескольким моделям данные о командах и проверить, смогут ли они найти преимущество перед букмекерской линией. Все ставки виртуальные.
Взял 14 серий основной стадии TI 2026, с 20 по 23 августа. Для тех, кто не следит за дотой: серия состоит из отдельных игр, они же карты. Обычно играют до двух побед, гранд-финал — до трёх. Кроме победителя серии можно выбрать фору по картам. Например, ставка на команду с форой −1,5 в серии до двух побед проходит только при счёте 2:0. Победа 2:1 для неё уже проигрыш.
Каждая из двенадцати моделей отвечала в четырёх режимах:
- Фиксированный контекст без коэффициентов. Модель получает собранные данные и оценивает вероятности.
- Фиксированный контекст с коэффициентами. Получает те же данные и букмекерские коэффициенты, оценивает вероятности и выбирает ставки.
- Агент без коэффициентов. Самостоятельно собирает данные с помощью инструментов и оценивает вероятности. Искать коэффициенты запрещено.
- Агент с коэффициентами. Собирает данные, смотрит букмекерские коэффициенты, оценивает вероятности и выбирает ставки.
В готовом контексте были Elo, последние результаты, личные встречи, драфты, нагрузка команд и турнирная сетка. Агент мог обращаться к OpenDota, Liquipedia, поиску и чтению страниц. Варианты без коэффициентов нужны по довольно очевидной причине: если заранее показать модели, кого считает фаворитом букмекер, потом будет сложно понять, откуда взялась её собственная оценка.
В ответ я просил распределение вероятностей точного счёта: например, 2:0, 2:1, 1:2 и 0:2. Из него уже можно получить вероятность победы команды и проверить форы. В режимах с ценами модель также выбирала ставки и их размер.
- 666
- зачётных прогнозов
- 14 серий · 4 режима
- 12
- моделей
- каждая в четырёх режимах
- 8 012
- вызовов инструментов
- в 466 агентских траекториях
- $25,51
- стоимость по логам
- без отдельной стоимости поиска
666 — это отобранные прогнозы до матчей. Вызовы инструментов и $25,51 относятся ко всему сохранённому эксперименту, включая повторы и ошибки. Деньги здесь — сумма записанного usage, без отдельной стоимости поиска и позднего прогона Astra.
И сразу ограничение, которое дальше будет очень заметно: 666 прогнозов — это всё ещё только 14 исходов серий. Если двенадцать моделей несколько раз поставили на один матч, дополнительных матчей от этого не появилось.
Модели, отбор запусков и ограничения сравнения
Участвовали deepseek-v4-flash, deepseek-v4-pro, gemini-3.7-flash, glm-5.3, gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra, grok-4.6, hy3, kimi-k3, minimax-3 и qwen3.8-max. Температура — 1.0, reasoning — максимальный из доступных в каждой интеграции.
Из 1 206 запусков 883 относились к прогнозам до начала серии. Отбор успешных канонических запусков оставил 670: для каждого задания выбирался первый успешный прогон, если его явно не признали недействительным. Последние решения аудита исключили ещё два загрязнённых агентских запуска, проверка времени — два опоздавших. Осталось 666, в медиане за 4,8 часа до сохранённого старта.
Два опоздания нашлись при подготовке статьи: флаг post_start не сработал, когда в лайв-трекере отсутствовало время старта. Скрипт теперь отдельно сравнивает время ответа со стартом, а при его отсутствии — с расписанием. Запуски 907 и 910 исключены.
Кто лучше оценивал вероятности
Начну с того, что угадать победителя для ставки недостаточно. При коэффициенте 2,0 нужно выигрывать чаще чем в половине случаев, чтобы выйти в плюс. При 1,5 — чаще чем в двух третях. Поэтому ответ «эта команда скорее выиграет» мало что даёт, пока не понятно, насколько именно скорее.
Это хорошо видно на minimax-3. Если объединить четыре режима на общем для всех моделей наборе из 52 заданий, она выбрала победителя правильно в 35 ответах, чаще любой другой модели. А по качеству вероятностей оказалась девятой.
Качество я считал через Brier score: берём вероятность победы, вычитаем фактический исход — 1 при победе, 0 при поражении, — возводим разницу в квадрат и усредняем. Чем меньше результат, тем лучше. Если команда проиграла, прогноз 70% получит ошибку 0,49, а 51% — примерно 0,26. Победителя обе оценки выбрали неверно, но первая сильнее переоценила его шансы.
Постоянное «50 на 50» даёт Brier 0,25. У ранней сохранённой букмекерской линии получилось 0,1964.
| # | Модель и режим | Brier ↓ | Δ к рынку | Серий |
|---|---|---|---|---|
| — | Ранняя линияПервый сохранённый снимок | 0,1964 | — | 14 |
| 1 | deepseek-v4-flashАгент · с ценами | 0,1983 | +0,0018 | 14 |
| 2 | deepseek-v4-proФикс. контекст · с ценами | 0,1994 | +0,0030 | 14 |
| 3 | grok-4.6Агент · с ценами | 0,2031 | +0,0067 | 14 |
| 4 | hy3Фикс. контекст · с ценами | 0,2050 | +0,0086 | 14 |
| 5 | gpt-5.6-lunaФикс. контекст · с ценами | 0,2066 | +0,0102 | 14 |
| 6 | qwen3.8-maxФикс. контекст · с ценами | 0,2083 | +0,0119 | 14 |
| 7 | deepseek-v4-proАгент · с ценами | 0,2100 | +0,0082 | 12 |
| 8 | glm-5.3Фикс. контекст · без цен | 0,2104 | +0,0140 | 14 |
| 9 | deepseek-v4-proФикс. контекст · без цен | 0,2121 | +0,0157 | 14 |
| 10 | glm-5.3Агент · с ценами | 0,2127 | +0,0139 | 13 |
| 11 | qwen3.8-maxФикс. контекст · без цен | 0,2133 | +0,0168 | 14 |
| 12 | gpt-5.6-solФикс. контекст · с ценами | 0,2134 | +0,0170 | 14 |
| — | Поздняя линияПоследний сохранённый снимок | 0,2155 | — | 13 |
Все 48 результатов по моделям и режимам
| # | Модель и режим | Brier ↓ | Δ к рынку | Серий |
|---|---|---|---|---|
| — | Ранняя линияПервый сохранённый снимок | 0,1964 | — | 14 |
| 1 | deepseek-v4-flashАгент · с ценами | 0,1983 | +0,0018 | 14 |
| 2 | deepseek-v4-proФикс. контекст · с ценами | 0,1994 | +0,0030 | 14 |
| 3 | grok-4.6Агент · с ценами | 0,2031 | +0,0067 | 14 |
| 4 | hy3Фикс. контекст · с ценами | 0,2050 | +0,0086 | 14 |
| 5 | gpt-5.6-lunaФикс. контекст · с ценами | 0,2066 | +0,0102 | 14 |
| 6 | qwen3.8-maxФикс. контекст · с ценами | 0,2083 | +0,0119 | 14 |
| 7 | deepseek-v4-proАгент · с ценами | 0,2100 | +0,0082 | 12 |
| 8 | glm-5.3Фикс. контекст · без цен | 0,2104 | +0,0140 | 14 |
| 9 | deepseek-v4-proФикс. контекст · без цен | 0,2121 | +0,0157 | 14 |
| 10 | glm-5.3Агент · с ценами | 0,2127 | +0,0139 | 13 |
| 11 | qwen3.8-maxФикс. контекст · без цен | 0,2133 | +0,0168 | 14 |
| 12 | gpt-5.6-solФикс. контекст · с ценами | 0,2134 | +0,0170 | 14 |
| 13 | gemini-3.7-flashФикс. контекст · без цен | 0,2143 | +0,0179 | 14 |
| 14 | minimax-3Фикс. контекст · без цен | 0,2145 | +0,0181 | 14 |
| 15 | gemini-3.7-flashФикс. контекст · с ценами | 0,2149 | +0,0185 | 14 |
| 16 | gpt-5.6-terraФикс. контекст · с ценами | 0,2155 | +0,0191 | 14 |
| — | Поздняя линияПоследний сохранённый снимок | 0,2155 | — | 13 |
| 17 | qwen3.8-maxАгент · с ценами | 0,2156 | +0,0192 | 14 |
| 18 | kimi-k3Фикс. контекст · без цен | 0,2157 | +0,0193 | 14 |
| 19 | gpt-5.6-solАгент · с ценами | 0,2164 | +0,0200 | 14 |
| 20 | glm-5.3Фикс. контекст · с ценами | 0,2166 | +0,0202 | 14 |
| 21 | gpt-5.6-lunaАгент · с ценами | 0,2172 | +0,0207 | 14 |
| 22 | hy3Фикс. контекст · без цен | 0,2175 | +0,0211 | 14 |
| 23 | kimi-k3Фикс. контекст · с ценами | 0,2175 | +0,0211 | 14 |
| 24 | gemini-3.7-flashАгент · с ценами | 0,2185 | +0,0221 | 14 |
| 25 | gpt-5.6-terraФикс. контекст · без цен | 0,2187 | +0,0222 | 14 |
| 26 | gpt-5.6-terraАгент · с ценами | 0,2193 | +0,0229 | 14 |
| 27 | minimax-3Фикс. контекст · с ценами | 0,2204 | +0,0240 | 14 |
| 28 | hy3Агент · с ценами | 0,2204 | +0,0240 | 14 |
| 29 | gpt-5.6-lunaФикс. контекст · без цен | 0,2212 | +0,0248 | 14 |
| 30 | grok-4.6Фикс. контекст · с ценами | 0,2227 | +0,0263 | 14 |
| 31 | deepseek-v4-flashФикс. контекст · без цен | 0,2244 | +0,0280 | 14 |
| 32 | grok-4.6Фикс. контекст · без цен | 0,2281 | +0,0317 | 14 |
| 33 | gpt-5.6-solФикс. контекст · без цен | 0,2288 | +0,0324 | 14 |
| 34 | kimi-k3Агент · с ценами | 0,2289 | +0,0299 | 13 |
| 35 | deepseek-v4-flashФикс. контекст · с ценами | 0,2301 | +0,0337 | 14 |
| 36 | minimax-3Агент · с ценами | 0,2359 | +0,0394 | 14 |
| 37 | gemini-3.7-flashАгент · без цен | 0,2435 | +0,0470 | 14 |
| 38 | deepseek-v4-proАгент · без цен | 0,2462 | +0,0498 | 14 |
| 39 | qwen3.8-maxАгент · без цен | 0,2496 | +0,0532 | 14 |
| 40 | grok-4.6Агент · без цен | 0,2502 | +0,0538 | 14 |
| 41 | minimax-3Агент · без цен | 0,2515 | +0,0551 | 14 |
| 42 | glm-5.3Агент · без цен | 0,2551 | +0,0587 | 14 |
| 43 | deepseek-v4-flashАгент · без цен | 0,2618 | +0,0654 | 14 |
| 44 | gpt-5.6-terraАгент · без цен | 0,2622 | +0,0634 | 13 |
| 45 | gpt-5.6-solАгент · без цен | 0,2623 | +0,0659 | 14 |
| 46 | hy3Агент · без цен | 0,2631 | +0,0667 | 14 |
| 47 | kimi-k3Агент · без цен | 0,2682 | +0,0717 | 14 |
| 48 | gpt-5.6-lunaАгент · без цен | 0,2723 | +0,0653 | 13 |
В каждой строке — отдельное сочетание модели и режима. Brier посчитан по всем его зачётным прогнозам, с одинаковым весом каждого ответа. Число серий различается из-за исключённых и отсутствующих прогнозов, поэтому рядом указано, сколько серий вошло в расчёт. Для сравнения с рынком используются те же серии, что и у этой комбинации.
Brier score по 14 сериям. Для режимов усреднены отдельные прогнозы моделей; число справа — количество прогнозов. Пунктир — постоянные 50%.
Из всех 48 сочетаний модели и режима раннюю линию не обошло ни одно. Даже у лучшего варианта Brier 0,1983 против рыночных 0,1964 на тех же сериях. Это мы ещё выбираем лучший результат уже после турнира, зная, какая конфигурация удачно выступила.
Но больше всего меня заинтересовал агент без коэффициентов. У него 0,2570 — хуже постоянных 50%. Получается, модель ходила за дополнительной информацией, что-то читала, тратила токены и в среднем отвечала хуже. Что она там нашла-то?
Что агенты делали в интернете
В режимах без коэффициентов самостоятельный сбор информации ухудшил прогнозы всех двенадцати моделей по log loss. Это ещё одна метрика вероятностей, которая сильнее наказывает уверенные ошибки. Для каждой пары я оставил одинаковые серии.
Log loss: меньше — лучше. Режимы без коэффициентов, для каждой модели — одни и те же серии. Справа указано увеличение ошибки.
Числа в таблице
| Модель | Фиксированный контекст | Агент |
|---|---|---|
| grok-4.6 | 0,646 | 0,694 |
| gemini-3.7-flash | 0,617 | 0,679 |
| gpt-5.6-sol | 0,645 | 0,718 |
| deepseek-v4-pro | 0,611 | 0,684 |
| minimax-3 | 0,618 | 0,695 |
| qwen3.8-max | 0,614 | 0,694 |
| deepseek-v4-flash | 0,634 | 0,718 |
| gpt-5.6-luna | 0,648 | 0,740 |
| hy3 | 0,627 | 0,725 |
| glm-5.3 | 0,608 | 0,706 |
| gpt-5.6-terra | 0,613 | 0,718 |
| kimi-k3 | 0,621 | 0,734 |
Инструменты при этом заметно меняли ответы: средний сдвиг вероятности между готовым контекстом и агентом был около 8,8 процентного пункта. Медианный агентский запуск длился чуть больше двух минут, самый долгий — почти четырнадцать.
Для поиска использовался Firecrawl. В его выдаче набралось 7 716 ссылок, из них 2 243 на YouTube. Почти 29%. Это именно ссылки в выдаче, по ним нельзя утверждать, что агенты посмотрели видео. Liquipedia в 153 случаях из 1 184 возвращала редирект вида #REDIRECT [[1w Team]]. Вызов инструмента успешно состоялся, а вместо данных о команде приехала инструкция перейти на другую страницу.
Один пресс-релиз об Iron Wing читали тринадцать раз в разных запусках. Всего запросов на чтение страниц было 220, уникальных страниц — 126. Тут напрашивается общий кеш. Хотя бесконечных циклов почти не было: точных повторов внутри одного запуска нашлось всего 39 на все 8 012 вызовов.
Ещё оказалось, что запрет искать коэффициенты не гарантирует, что они не попадут в контекст. kimi-k3, например, получила цену Kalshi прямо в поисковом превью обычной статьи: фаворит торговался по 52 цента. Для проверки загрязнения в режиме агента без коэффициентов использовалась deepseek-v4-flash как llm-as-a-judge: она проверяла траектории на попадание коэффициентов в контекст. Загрязнённые запуски исключались по последнему решению аудита. Аудит тоже мог ошибаться: два его решения я отменил после ручной проверки.
Сами по себе эти находки ещё не объясняют всё ухудшение. Готовый контекст уже был собран под задачу, а агенту предстояло самостоятельно найти полезное среди того, что вернули инструменты. Плюс промпты различались. Но считать количество вызовов мерой глубины исследования после такого хочется заметно меньше.
Стоило показать агентам коэффициенты, и результат улучшался у всех двенадцати моделей. Тут уже стало любопытно, что именно улучшалось: понимание доты или согласие с букмекером?
На 162 парах ответов одной модели по одной серии среднее расстояние до ранней линии сократилось с 10,8 до 6,3 процентного пункта. В 116 парах из 162 вариант с ценами оказался ближе к рынку. Это не доказывает копирование: в запрос попадали цены на момент запуска, а сравниваю я с ранними. Но наблюдаемый эффект вполне конкретный — получив коэффициенты, модели меньше спорили с линией и ошибались меньше.
Я отдельно вытащил ответы, где модель без цен выбирала фаворитом противоположную команду:
| Режим без коэффициентов | Таких ответов | Победил фаворит модели | Серий |
|---|---|---|---|
| Готовый контекст | 40 | 13 | 7 |
| Агент | 49 | 11 | 8 |
У агента из 49 таких ответов правильными оказались 11. На этих же ответах Brier модели — 0,3175, рынка — 0,2311. То есть дело не только в пересечении условной границы 50%: сами вероятности тоже хуже. Но это 49 ответов всего по восьми сериям, а не 49 независимых попыток поймать ошибку букмекера.
Выбрать выигравшего андердога иногда получалось. Систематического преимущества в таких разногласиях я здесь не увидел.
Сколько стоили эти прогнозы
Общие $25,51 мало говорят о цене хорошего прогноза: туда попали и повторы, и ошибки, и ответы между картами. Поэтому я отдельно посчитал стоимость зачётных ответов для первых трёх сочетаний из лидерборда. У каждого по четырнадцать серий.
| Модель и режим | Brier ↓ | За 14 ответов |
|---|---|---|
| deepseek-v4-flash Агент · с коэффициентами | 0,1983 | $0,088 |
| deepseek-v4-pro Готовый контекст · с коэффициентами | 0,1994 | $0,174 |
| grok-4.6 Агент · с коэффициентами | 0,2031 | $0,703 |
Стоимость всех моделей во всех режимах
| Модель и режим | Всего | За ответ |
|---|---|---|
| deepseek-v4-flashФикс. контекст · без ценЗачётных ответов: 14 | $0,033 | $0,0023 |
| deepseek-v4-flashФикс. контекст · с ценамиЗачётных ответов: 14 | $0,057 | $0,0041 |
| deepseek-v4-flashАгент · без ценЗачётных ответов: 14 | $0,073 | $0,0052 |
| deepseek-v4-flashАгент · с ценамиЗачётных ответов: 14 | $0,088 | $0,0063 |
| deepseek-v4-proФикс. контекст · без ценЗачётных ответов: 14 | $0,151 | $0,0108 |
| deepseek-v4-proФикс. контекст · с ценамиЗачётных ответов: 14 | $0,174 | $0,0124 |
| deepseek-v4-proАгент · без ценЗачётных ответов: 14 | $0,294 | $0,0210 |
| deepseek-v4-proАгент · с ценамиЗачётных ответов: 12 | $0,323 | $0,0269 |
| gemini-3.7-flashФикс. контекст · без ценЗачётных ответов: 14 | $0,074 | $0,0053 |
| gemini-3.7-flashФикс. контекст · с ценамиЗачётных ответов: 14 | $0,090 | $0,0064 |
| gemini-3.7-flashАгент · без ценЗачётных ответов: 14 | $0,409 | $0,0292 |
| gemini-3.7-flashАгент · с ценамиЗачётных ответов: 14 | $0,517 | $0,0369 |
| glm-5.3Фикс. контекст · без ценЗачётных ответов: 14 | $0,377 | $0,0269 |
| glm-5.3Фикс. контекст · с ценамиЗачётных ответов: 14 | $0,452 | $0,0323 |
| glm-5.3Агент · без ценЗачётных ответов: 14 | $0,920 | $0,0657 |
| glm-5.3Агент · с ценамиЗачётных ответов: 13 | $1,279 | $0,0984 |
| gpt-5.6-lunaФикс. контекст · без ценЗачётных ответов: 14 | $0,072 | $0,0052 |
| gpt-5.6-lunaФикс. контекст · с ценамиЗачётных ответов: 14 | $0,078 | $0,0056 |
| gpt-5.6-lunaАгент · без ценЗачётных ответов: 13 | $0,152 | $0,0117 |
| gpt-5.6-lunaАгент · с ценамиЗачётных ответов: 14 | $0,188 | $0,0134 |
| gpt-5.6-solФикс. контекст · без ценЗачётных ответов: 14 | $0,045 | $0,0032 |
| gpt-5.6-solФикс. контекст · с ценамиЗачётных ответов: 14 | $0,044 | $0,0032 |
| gpt-5.6-solАгент · без ценЗачётных ответов: 14 | $0,263 | $0,0188 |
| gpt-5.6-solАгент · с ценамиЗачётных ответов: 14 | $0,266 | $0,0190 |
| gpt-5.6-terraФикс. контекст · без ценЗачётных ответов: 14 | $0,068 | $0,0048 |
| gpt-5.6-terraФикс. контекст · с ценамиЗачётных ответов: 14 | $0,082 | $0,0058 |
| gpt-5.6-terraАгент · без ценЗачётных ответов: 13 | $0,186 | $0,0143 |
| gpt-5.6-terraАгент · с ценамиЗачётных ответов: 14 | $0,228 | $0,0163 |
| grok-4.6Фикс. контекст · без ценЗачётных ответов: 14 | $0,418 | $0,0298 |
| grok-4.6Фикс. контекст · с ценамиЗачётных ответов: 14 | $0,570 | $0,0407 |
| grok-4.6Агент · без ценЗачётных ответов: 14 | $0,598 | $0,0427 |
| grok-4.6Агент · с ценамиЗачётных ответов: 14 | $0,703 | $0,0502 |
| hy3Фикс. контекст · без ценЗачётных ответов: 14 | $0,042 | $0,0030 |
| hy3Фикс. контекст · с ценамиЗачётных ответов: 14 | $0,044 | $0,0031 |
| hy3Агент · без ценЗачётных ответов: 14 | $0,065 | $0,0046 |
| hy3Агент · с ценамиЗачётных ответов: 14 | $0,084 | $0,0060 |
| kimi-k3Фикс. контекст · без ценЗачётных ответов: 14 | $0,650 | $0,0465 |
| kimi-k3Фикс. контекст · с ценамиЗачётных ответов: 14 | $0,754 | $0,0539 |
| kimi-k3Агент · без ценЗачётных ответов: 14 | $2,227 | $0,1591 |
| kimi-k3Агент · с ценамиЗачётных ответов: 13 | $1,968 | $0,1514 |
| minimax-3Фикс. контекст · без ценЗачётных ответов: 14 | $0,065 | $0,0046 |
| minimax-3Фикс. контекст · с ценамиЗачётных ответов: 14 | $0,092 | $0,0066 |
| minimax-3Агент · без ценЗачётных ответов: 14 | $0,153 | $0,0109 |
| minimax-3Агент · с ценамиЗачётных ответов: 14 | $0,247 | $0,0176 |
| qwen3.8-maxФикс. контекст · без ценЗачётных ответов: 14 | $0,408 | $0,0292 |
| qwen3.8-maxФикс. контекст · с ценамиЗачётных ответов: 14 | $0,493 | $0,0352 |
| qwen3.8-maxАгент · без ценЗачётных ответов: 14 | $1,057 | $0,0755 |
| qwen3.8-maxАгент · с ценамиЗачётных ответов: 14 | $1,314 | $0,0939 |
Все четырнадцать ответов Flash в агентском режиме с коэффициентами обошлись меньше чем в девять центов. Grok в том же режиме стоила почти в восемь раз дороже и оказалась чуть ниже в рейтинге. Разрыв по качеству небольшой, и выше я уже выбрал лучшие результаты после турнира, так что делать из этого общий рейтинг выгодности моделей я бы не стал. Но в этом эксперименте за первое место среди LLM много платить не пришлось.
С режимами разница тоже заметная. На 166 парах «одна модель, одна серия» агент без коэффициентов обходился в среднем в 2,67 раза дороже готового контекста. При этом самостоятельный поиск ухудшил качество прогнозов всех двенадцати моделей по log loss, как на графике выше. Дополнительные вызовы и токены здесь себя не оправдали.
Это стоимость по сохранённым логам модельных вызовов. Отдельной оплаты поиска в ней нет, как нет повторов и неудачных попыток, которые вошли в общие $25,51.
А двенадцать мнений чем-нибудь помогли?
Вернёмся к Spirit. На пути к титулу она выиграла пять из шести серий. Перед финалом нижней сетки против Yandex рынок давал ей около 69%, а модели на готовом контексте без коэффициентов — в среднем 47%. Только одна из двенадцати считала Spirit фаворитом. Перед гранд-финалом рынок давал 43%, модели — 31%, и на стороне Spirit уже не осталось никого.
Вероятность победы Team Spirit перед каждой серией. Модели — среднее по 12 прогнозам на фиксированном контексте без коэффициентов. Spirit выиграла пять серий из шести; единственное поражение — первая встреча с VISION на этом графике.
Числа в таблице
| Соперник | Модели | Рынок |
|---|---|---|
| Iron Wing | 62.0% | 49.3% |
| VISION | 27.6% | 35.3% |
| Liquid | 48.9% | 59.3% |
| BoomBoys | 60.4% | 64.7% |
| Yandex | 46.6% | 68.5% |
| VISION · финал | 31.0% | 42.9% |
В гранд-финале все двенадцать моделей во всех четырёх режимах считали VISION фаворитом — это те самые 48 прогнозов из начала статьи. Но победила Spirit. В серии Liquid — Yandex все 48 прогнозов тоже отдавали преимущество команде, которая в итоге проиграла. Букмекер в обоих матчах считал фаворитом ту же команду, что и модели. При этом модели в среднем давали ей ещё более высокую вероятность победы, чем букмекер.
В объяснениях повторялись Elo, личные встречи, форма, усталость после нижней сетки. И когда это пишет одна модель, воспринимаешь как одну оценку. Когда примерно то же самое формулируют двенадцать разных моделей, каждая своими словами, уже кажется, что гипотезу неплохо проверили. Хотя исходные данные у них общие, и держаться все эти объяснения могут на одном и том же неудачном предположении.
На готовом контексте без цен средняя попарная корреляция вероятностей — 0,943. Высокое сходство само по себе ожидаемо: матчи одни и те же. Полезнее проверить, сколько даёт усреднение. Brier среднего прогноза двенадцати моделей — 0,2169, средний Brier отдельной модели — 0,2183. Улучшение всего около 0,6%.
Попробовал и смешать этот средний прогноз с рыночным в пропорции 50/50. Получилось 0,2038 против 0,1964 у самой линии. Взял также доли моделей 25% и 75% — обе смеси хуже рынка. Это проверка на уже сыгранных четырнадцати сериях, но даже в таком простом варианте полезная добавка к цене пока не обнаружилась.
Если одна модель завышает шансы команды, а другая занижает, усреднение может приблизить прогноз к реальности. Но если все переоценивают одну и ту же команду, средний прогноз сохраняет эту ошибку. На этом турнире усреднение двенадцати ответов дало лишь небольшое улучшение, поэтому их единодушие я бы не считал поводом больше доверять прогнозу.
Куда делись виртуальные деньги
В режимах с коэффициентами модели выбрали 510 рассчитанных ставок на 45 разных пунктов линии. Суммарно поставили 508 условных единиц, потеряли 143. Доходность по сумме ставок — −28,2%. При одинаковой сумме на каждую ставку было бы −36,3%. Ни одна модель не закончила в плюсе.
Прибыль / сумма записанных ставок. Объединены два режима с коэффициентами; число рядом с ROI — количество ставок. Ставки разных моделей часто относятся к одному исходу.
По такой таблице легко решить, что модели примерно равномерно плохо ставили весь турнир. Поэтому я разложил прибыль по сериям, и там нашлась куда более интересная вещь:
| Какие серии | Ставок | Поставлено | Прибыль |
|---|---|---|---|
| Пять побед Spirit | 177 | 173,1 | -140,9 |
| Остальные девять серий | 333 | 334,9 | -2,1 |
Пять серий, выигранных Spirit, дали −140,9 единицы при общем результате −143,0. Остальные девять вместе — всего −2,1. Это суммы уже с учётом выигрышных ставок, поэтому называть первую строку «долей всех проигрышей» было бы неверно.
Особенно показательно, что происходило перед двумя последними матчами. Все 39 модельных ставок на серию Yandex — Spirit проиграли, потеряно 38,05 единицы. В гранд-финале поставили ещё 66,2 и потеряли 64,4. При этом Spirit перед матчем с Yandex была фаворитом букмекера. Она выиграла, как и ожидал рынок, но модели выбрали ставки, которые при таком результате проиграли.
Но списать всё на последний матч тоже не получается: если убрать гранд-финал, останется -17,8% доходности. А если убрать ещё и единодушный промах на Liquid — Yandex — -14,7%.
Spirit я, конечно, выделил уже после турнира, зная чемпиона. Из этого нельзя получить правило для следующего TI. Зато становится понятнее, почему число ставок так обманчиво: несколько общих ошибок многократно повторились у разных моделей и в разных режимах. 510 строк в базе выглядят солиднее, чем четырнадцать матчей, на которых всё это держится.
Была и более приземлённая проблема. Модели 112 раз выбрали фору −1,5, и все эти ставки проиграли. Когда убираешь повторы, остаётся всего десять разных исходов на десяти сериях. В четырёх из них выбранная команда даже выиграла — со счётом 2:1. Правильно выбрать победителя оказалось вполне совместимо с проигранной ставкой на него. На этой форе потеряли 86,3 единицы.
Если разделить ставки по коэффициенту 2,0, картина тоже довольно выразительная:
| Коэффициент | Ставок | Поставлено | ROI |
|---|---|---|---|
| Меньше 2,0 | 236 | 257,3 | +2,9% |
| От 2,0 | 274 | 250,7 | −60,0% |
На каждую группу ушло примерно по половине суммы. Первая заработала 7,5 единицы, вторая потеряла 150,5. В дорогие исходы входят и форы на крупную победу фаворита, поэтому дело не сводится к ставкам на андердогов. А правило «брать только ниже двойки» пока было бы подбором удобной границы после результата.
По собственным оценкам моделей средняя ожидаемая доходность выбранных ставок была около +16,3%. То есть они считали, что нашли довольно щедрые цены. Просто для расчёта ожидания надо знать вероятность события, а именно с ней здесь и были проблемы.
Что было со ставками в режимах без коэффициентов
Там после ответа модели ставки выбирал код: брал её вероятность и историческую цену, считал p × коэффициент − 1 и ставил одинаковую сумму, если результат превышал 0,06. Получилось 226 ставок с ROI −30,8%.
Эта проверка всё ещё зависит от вероятностей модели. Кроме того, два портфеля различаются набором исходов и размерами ставок, поэтому разница ROI не измеряет отдельно пользу LLM при выборе ставки.
Помог ли выбор размера ставки?
Размер ставки модели выбирали только в двух режимах с коэффициентами: на готовом контексте и при самостоятельном поиске. Можно было поставить от 0,5 до 2 условных единиц. Поэтому здесь я сравниваю только ставки из этих двух режимов: оставил те же выбранные исходы с теми же коэффициентами и пересчитал результат, поставив на каждый поровну.
С одинаковыми ставками доходность получилась -36,3%, с выбранными моделями суммами — -28,2%. Причём улучшение было у всех 12 моделей, если сравнивать каждую с её же набором ставок. Ниже результаты всех моделей; здесь объединены оба режима с коэффициентами, как и на графике доходности:
| Модель | Ставить поровну | Суммы от модели |
|---|---|---|
| deepseek-v4-flash | -37,5% | -32,5% |
| deepseek-v4-pro | -30,2% | -19,6% |
| gemini-3.7-flash | -39,6% | -33,2% |
| glm-5.3 | -38,9% | -34,5% |
| gpt-5.6-luna | -35,1% | -27,3% |
| gpt-5.6-sol | -41,7% | -33,7% |
| gpt-5.6-terra | -44,6% | -32,2% |
| grok-4.6 | -36,9% | -31,0% |
| hy3 | -36,2% | -25,2% |
| kimi-k3 | -42,2% | -31,4% |
| minimax-3 | -25,2% | -21,3% |
| qwen3.8-max | -26,0% | -18,4% |
То есть распределение денег между выбранными ставками уменьшило потери. До прибыли этого не хватило, но одинаковая сумма на каждый исход дала бы ещё более грустный результат.
Считать это доказанным умением управлять риском я бы пока не стал. На исходы с коэффициентами от 2 модели в среднем выделяли меньше денег, а именно там были основные потери. Плюс они часто выбирали одни и те же исходы, так что могли все выиграть от уменьшения сумм на одних и тех же неудачных ставках. На следующем турнире мне было бы интересно повторить это сравнение.
В объяснениях всё выглядело лучше
После истории с финалом я поискал upset в остальных ответах. Нашлось 71 объяснение с упоминанием апсета. В 63 из них фаворитом всё равно осталась команда, которую предпочитал рынок. То есть неожиданную победу в тексте модели вполне допускали, но свои основные оценки из-за этого не меняли.
С momentum, примерно «команда набрала ход», вышло забавнее. Слово встречалось в 84 объяснениях; победитель там был выбран правильно в 52,4% случаев. Без него — в 64,8%. Можно было бы запретить моделям писать про моментум и радоваться улучшенному промпту, но я сначала проверил, какие матчи они так описывали.
Представим, что одна модель часто пишет momentum и в целом прогнозирует хуже, а другая редко использует это слово и чаще оказывается права. Если смешать их ответы, покажется, что momentum связан с ошибками. Хотя мы могли просто заметить разницу между двумя моделями. То же самое может происходить, если слово чаще встречается в прогнозах на сложные матчи или в режиме, который в целом работает хуже.
Поэтому я проверил, остаётся ли связь слова с ошибкой после поправки на то, какая модель отвечала, какой матч прогнозировала и в каком режиме работала. Для momentum корреляция упала с +0,103 до +0,031 — стала близкой к нулю. У experience знак поменялся с +0,084 на −0,056, а связь упоминания Elo с меньшей ошибкой почти исчезла. Получается, первоначальные числа во многом отражали различия между моделями, матчами и режимами. Само наличие слова оказалось гораздо менее полезной подсказкой о качестве прогноза.
Поэтому словарь плохих прогнозов из этого не получился. А вот привычку доверять процентам за подходящие аналитические слова, как по мне, стоит пересмотреть. Упомянуть риск апсета довольно легко; правильно оценить его вероятность — задача посложнее.
Слова, корреляции и как они посчитаны
| Слово | Ответов | До поправки | После поправки |
|---|---|---|---|
| Elo | 312 | −0,054 | −0,005 |
| draft | 205 | +0,026 | +0,088 |
| momentum | 84 | +0,103 | +0,031 |
| experience | 42 | +0,084 | −0,056 |
| upset | 71 | −0,058 | +0,089 |
«После поправки» — связь, оставшаяся после удаления средних различий между матчами, моделями и режимами. Например, поправка учитывает, что какая-то модель и чаще использует слово, и в целом сильнее ошибается. Исследовано 19 слов и групп слов; здесь пять примеров с частотой не меньше 40 ответов.
Взято видимое поле reasoning из 666 зачётных ответов, без внутренних reasoning-токенов и поисковых траекторий. Проверены 19 слов и групп слов; например, draft включает drafts и drafting. Поиск не зависит от регистра, границы слов учитываются: form внутри performance не считается.
Для расчёта каждый ответ получает два числа: 1, если слово встретилось, и 0, если нет; второе число — ошибка Brier. Столбец «До поправки» показывает связь между ними. Для столбца «После поправки» скрипт сначала убирает из обоих показателей средние различия, связанные с матчем, моделью и режимом, а затем считает связь между оставшимися отклонениями. Так мы проверяем, говорит ли слово что-то об ошибке сверх того, что уже можно объяснить этими тремя факторами. Расчёт независимо проверяется другим способом в скрипте для публичных данных.
А если взять Astra?
Уже после турнира я прогнал gpt-6-astra на тех же четырнадцати сериях: фиксированный контекст, варианты с коэффициентами и без, reasoning=max, температура 1.0. Всего 28 ответов.
Взял сохранённые контексты исходных прогонов gpt-5.6-sol и восстановил коэффициенты на те же моменты по исходному правилу выбора цены. Хеши и снимки проверяет скрипт. Sol поэтому здесь удобна для прямого сравнения:
| Режим | Brier Astra ↓ | Brier Sol ↓ | Ранняя линия ↓ |
|---|---|---|---|
| Без коэффициентов | 0,2258 | 0,2288 | 0,1964 |
| С коэффициентами | 0,2180 | 0,2134 | 0,1964 |
Без коэффициентов Astra немного обошла Sol, с коэффициентами — уступила. Рынок точнее обоих вариантов. В гранд-финале Astra дважды дала VISION 69%, оставив Spirit 31%. Общую историю с недооценкой будущего чемпиона новая модель тоже повторила.
Доходность виртуальных ставок Astra: -34,1% без коэффициентов в запросе и -33,5% с коэффициентами. В первом случае ставки выбирал код, во втором — модель.
Но Astra отвечала уже после турнира, и его результаты могли попасть в её обучающие данные. Поэтому даже с тем же сохранённым контекстом нельзя гарантировать, что она оценивала шансы, не зная исходов матчей. Сравнение с моделями, которые отвечали до матчей, может оказаться не вполне честным. Этот прогон я оставляю отдельной ретроспективной проверкой и в основной лидерборд не добавляю.
Насколько устойчиво первое место?
В основном лидерборде победила deepseek-v4-flash в режиме агента с коэффициентами: Brier 0,1983. Следом идёт deepseek-v4-pro с фиксированным контекстом и коэффициентами: 0,1994. Разница — всего 0,0011. Мне хотелось понять, насколько этот порядок зависит от конкретных матчей.
Для этого я по очереди убрал из расчёта одну серию и заново составил рейтинг всех 48 сочетаний модели и режима. Сначала посчитал его без первого матча, затем вернул первый и убрал второй — и так для всех четырнадцати. Сохранённые прогнозы и результаты не менялись. Каждый раз исключались все ответы об одном матче, а Brier считался по оставшимся зачётным ответам каждой комбинации, как в таблице выше.
| Модель и режим | Первых мест |
|---|---|
| deepseek-v4-proФикс. контекст · с ценами | 7 из 14 |
| deepseek-v4-flashАгент · с ценами | 4 из 14 |
| grok-4.6Агент · с ценами | 3 из 14 |
Flash в агентском режиме с коэффициентами сохранила первое место лишь в 4 проверках из 14. В остальных вперёд выходили Pro с фиксированным контекстом или Grok в агентском режиме, оба с коэффициентами. Для смены лидера было достаточно исключить один матч. При этом наборы ответов у комбинаций немного различаются: пропущенные прогнозы эта проверка не восстанавливает.
Эти числа показывают, насколько рейтинг зависит от состава уже сыгранных матчей. Семь первых мест у Pro не означают, что у неё шанс 50% стать лучшей на следующем турнире. Чтобы проверить это, нужны новые матчи и прогнозы, сделанные до их начала.
В следующем эксперименте я бы снова взял много моделей и проверил каждую во всех режимах. Модели совершенствуются, да и сами режимы я бы уже реализовал по-другому с учётом этого опыта. Поэтому нынешний рейтинг для меня — результат конкретного эксперимента, а не список участников следующего. Flash здесь оказалась лучшей среди моделей, а ранняя букмекерская линия — точнее неё. Что получится с новыми моделями и переработанными режимами, ещё предстоит проверить.
С названием Midas я, кажется, угадал. Мифический Мидас чуть не умер от голода, потому что превращал в золото даже еду. Если бы я решил кормиться с прогнозов нейронок, золотое прикосновение мне бы для этого не понадобилось.