О методологии
Система прогнозирования заголовков, построенная на двух столпах: математический анализ рынков прогнозов и экспертный анализ ИИ-агентов по методу Дельфи
Постановка задачи
Мы решаем две связанные задачи. Первая — краткосрочный политический форсайтинг: какие события произойдут в ближайшие N дней? Вторая — медиа-прогноз: как конкретное издание напишет об этих событиях, какой заголовок и первый абзац выберет редакция?
Это двухуровневая задача. Сначала система строит таймлайн развития событий с вероятностями. Затем, для каждого вероятного события, генерирует заголовок и лид в стиле указанного издания. Разные издания по-разному освещают одно и то же: одно фокусируется на экономических последствиях, другое — на геополитическом контексте. Прогноз требует понимания редакционной логики.
Для решения используются два параллельных пайплайна: математический анализ prediction markets (Polymarket) и мультиагентный метод Дельфи. Результаты обоих объединяются в Judge — финальном синтезаторе, который строит калиброванный таймлайн событий.
Формальная постановка
Дано:
- Event thread \(E\) — описание события с контекстом
- Outlet profile \(\Omega_o\) — характеристика издания \(o\)
- Time horizon \(\tau\) — целевая дата прогноза
Найти:
- Event probability \(P(E \mid \tau)\) — вероятность наступления события
- Coverage probability \(P(O \mid E, \Omega_o, \tau)\) — вероятность освещения
- Headline \(H\) и lead \(L\) в стиле издания
- Confidence calibrated по историческим ошибкам
Двухуровневая структура очень помогает нам: событие может быть вероятным, но неинтересным для данного издания. И обратно — маловероятное событие, если произойдёт, может быть огромной новостью.
Архитектура: два столпа
Прогноз строится двумя независимыми пайплайнами, результаты которых объединяются на стадии синтеза. Каждый столп решает свою задачу: математический извлекает сигнал из поведения участников рынка, экспертный — из рассуждений ИИ-агентов.
flowchart TD
subgraph collect["Сбор данных"]
NS["NewsScout
RSS + web search"] & EC["EventCalendar
запланированные события"] & OH["OutletHistorian
архив издания"] & FC["ForesightCollector
Polymarket"]
end
subgraph pillar1["Столп 1: Математический пайплайн"]
PROFILES["1.7M профилей
Brier Score"] --> INFORMED["348K INFORMED
top 20%"]
INFORMED --> CONSENSUS["Informed consensus
accuracy-weighted"]
end
subgraph pillar2["Столп 2: Экспертный пайплайн"]
ANALYSTS["3 аналитика
геополитик, экономист, медиа"] --> SCENARIOS["Сценарии + траектории"]
SCENARIOS --> DELPHI["5 персон Дельфи
2 раунда + медиатор"]
end
subgraph synthesis["Синтез"]
JUDGE["Judge
market_weight + expert_weight"] --> TIMELINE["Таймлайн событий"]
TIMELINE --> HEADLINES["Заголовки + лиды"]
HEADLINES --> QG["Quality Gate"]
end
NS & EC & OH & FC --> ANALYSTS
FC --> PROFILES
CONSENSUS --> JUDGE
DELPHI --> JUDGE
style collect fill:#d1fae5,stroke:#059669
style pillar1 fill:#dbeafe,stroke:#2563eb
style pillar2 fill:#ede9fe,stroke:#7c3aed
style synthesis fill:#fef3c7,stroke:#d97706
Профилирование 1.7M участников Polymarket по Brier Score. Bayesian shrinkage, HDBSCAN-кластеризация, параметрические модели (Exp/Weibull). Walk-forward валидация: BSS +0.196 на 22 фолдах.
470M ставок, 33 ГБ данных, DuckDB
Метод Дельфи: 5 ИИ-агентов с разными когнитивными профилями. Два раунда прогнозирования с медиацией. Структурированное разнообразие перспектив минимизирует систематические ошибки.
Claude Opus 4.6, 18 агентов, 28 LLM-задач
Столп 1: Математический пайплайн
Мы профилируем 1.7M участников Polymarket по точности прогнозов и извлекаем сигнал лучших 20%.
Рыночная цена на Polymarket формируется в CLOB (Central Limit Order Book) — непрерывном аукционе, где цена — результат встречи спроса и предложения. Проблема: цена взвешена по объёмам ставок, не по точности прогнозов. Крупные спекулянты перевешивают мелких, но точных аналитиков. Маркет-мейкеры выставляют ликвидность, не отражая своих убеждений.
Наше решение: вместо одной рыночной цены — два сигнала. Raw market price — агрегированная цена (как есть). Informed consensus — взвешенный консенсус исторически точных участников. Разница между ними (dispersion) — мера неопределённости. Если информированные думают иначе, чем рынок в целом, это ценный сигнал.
Результат: из 1.7M участников 348K классифицированы как «информированные» (top 20% по Brier Score). Их консенсус снижает ошибку прогноза на 20% по сравнению с сырой рыночной ценой (BSS +0.196, проверено на 22 фолдах walk-forward валидации).
flowchart TD
A["470M ставок"] --> B["Brier Score"]
B --> C{"Тиры"}
C -->|"top 20%"| D["348K INFORMED"]
C -->|"20–70%"| E["MODERATE"]
C -->|"70%+"| F["LOW ACCURACY"]
D --> G["Recency
90 дней"]
G --> H["Weighted
consensus"]
H --> I["Shrinkage"]
I --> J["BSS +0.196"]
Как рассчитать informed consensus?
Шаг 1: Brier Score каждого участника i
На каждом разрешённом рынке m участник делает ставку, предсказывающую вероятность \(f_{i,m}\). Исход \(o_m\) известен: 1 если рынок разрешился YES, 0 если NO.
BS ∈ [0, 1]: 0 — идеальный прогнозист, 0.25 — случайные угадывания, 1.0 — всегда неправ.
Шаг 2: Классификация по перцентилям
| INFORMED | BS < p20 | Top 20% по точности |
| MODERATE | p20–p70 | Средняя точность |
| LOW ACCURACY | BS > p70 | Участники с низкой исторической точностью |
Шаг 3: Recency weighting — экспоненциальное затухание
Давние ставки менее релевантны. Применяем exponential decay с half-life = 90 дней:
Шаг 4: Accuracy-weighted consensus для активного рынка
Для каждого INFORMED участника i на активном рынке:
Компоненты веса: (1 − BS_i) — более точные получают выше; volume_i — убеждённость; r_i — свежесть.
Шаг 5: Shrinkage — когда мало информированных
Если информированных участников мало (n < 20), consensus ненадёжен. Применяем shrinkage:
Когда участников 0 → final = market (нет вреда). Когда ≥20 → full trust в informed.
Теоретическое обоснование
- Surowiecki (2004): «Мудрость толпы» работает только при независимости и разнообразии. На рынках нарушается — есть стадное поведение.
- Satopää et al. (2014): Accuracy-weighting даёт точнее, чем volume-weighting или equal-weight.
- Manski (2006): Рынок систематически недооценивает экстремальные исходы — informed consensus помогает это исправить.
Числовой пример: как работает informed consensus
Рынок с \(p_{\mathrm{raw}} = 0.55\), три INFORMED-трейдера:
| Трейдер | BS | Позиция | Объём $ | Recency | Вес |
|---|---|---|---|---|---|
| A | 0.10 | 0.80 | 100 | 1.0 | (0.90)(100)(1.0) = 90.0 |
| B | 0.08 | 0.75 | 200 | 0.8 | (0.92)(200)(0.8) = 147.2 |
| C | 0.15 | 0.70 | 50 | 0.9 | (0.85)(50)(0.9) = 38.25 |
Результат: рынок даёт 55%, но информированные трейдеры тянут вверх до 58.1%. Coverage низкий (15%), поэтому сигнал сжимается к рыночной цене. При 20+ информированных участниках coverage = 1.0 и влияние было бы полным.
Данные: 470 миллионов ставок
Для профилирования участников мы обработали полный архив ставок Polymarket — 470 миллионов записей (33 ГБ raw data). Обработка выполнена офлайн с помощью DuckDB (out-of-core аналитика, predicate pushdown, memory limit 2 ГБ).
| Этап | Формат | Размер | Описание |
|---|---|---|---|
| Raw trades | trades.parquet | 33 ГБ | 470M записей: user, market, price, size, timestamp |
| Bucketed aggregates | _merged_bucketed.parquet | 2.4 ГБ | 82.6M строк, 30-дневные временные бакеты |
| Markets metadata | markets.parquet | 150 МБ | 572K рынков с метаданными и resolution |
| Profiles (production) | bettor_profiles.parquet | 62 МБ | 1.7M профилей, 348K INFORMED (ZSTD-сжатие) |
Временные бакеты (30 дней) обеспечивают composable aggregation: суммы из бакетов можно складывать для любого временного среза, что критично для walk-forward валидации. Профили распространяются через GitHub Releases — production-серверу нужно только 62 МБ.
Bayesian shrinkage и архетипы трейдеров
Проблема lucky streaks
Участник с 3 удачными ставками пол��чает BS ≈ 0 и попадает в INFORMED тир. Но при n=3 дисперсия BS огромна — это может быть просто удача. Решение: Bayesian shrinkage (Ferro & Fricker, 2012).
При n=3: сильный shrinkage к медиане популяции (0.295). При n=100: почти чистый observed_BS. Результат: INFORMED тир становится чище — меньше случайных удач, выше качество сигнала.
6 архетипов трейдеров (HDBSCAN)
Помимо фиксированных тиров, HDBSCAN-кластеризация по 6 поведенческим признакам (brier_score, win_rate, объём, число рынков, recency) обнаруживает естественные архетипы:
| Архетип | Характеристика |
|---|---|
| sharp_informed | BS < 0.10, высокий объём — профессиональные арбитражёры |
| skilled_retail | BS < 0.15, низкий объём — точные розничные трейдеры |
| volume_bettor | Высокий объём, средний BS — маркет-мейкеры |
| contrarian | win_rate < 0.30 — систематически ошибаются |
| stale | Низкий recency — неактивные аккаунты |
| noise_trader | Всё остальное — случайные участники |
Стабильность тиров между фолдами: Jaccard = 0.613 (Campello et al., 2013).
Параметрические модели и научная новизна
Помимо эмпирического профилирования по Brier Score, мы исследуем параметрическое восстановление субъективных распределений из наблюдаемых ставок — обратную задачу prediction markets.
Предпосылка
Каждый участник верит, что время до события \(T \sim \text{Exp}(\lambda)\). Его субъективная вероятность на горизонте \(H\):
По наблюдаемой позиции (volume-weighted price) и горизонту рынка \(H\) восстанавливаем \(\lambda\).
Два подхода
- Exp(\(\lambda\)): closed-form MLE: \(\hat{\lambda} = \text{mean}(-\log(1-p) / H)\). Bayesian prior при n < 30.
- Weibull(\(\lambda\), k): scipy L-BFGS-B оптимизация. \(k > 1\) означает ускоряющийся hazard rate. Model selection по AICc (Burnham & Anderson, 2002): Exp для n < 20, Weibull для n ≥ 20.
Clone validation (транзитивность)
Обучаем \(\lambda\) на 80% рынков → предсказываем позиции на 20% → MAE → skill_score. Если skill_score > 0, параметрическая модель предсказывает ставки лучше наивного среднего. А поскольку ставки отражают исходы рынков, клоны транзитивно предсказывают реальность.
Научная новизна
На момент реализации (март 2026) нет опубликованных работ по восстановлению Exp/Weibull распределений из ставок prediction markets.
Imitation Learning: формальная аналогия
Consensus-механизм имеет структурную аналогию с Behaviour Cloning (BC) из Imitation Learning. Accuracy-weighted consensus — это по сути Weighted Offline Behaviour Cloning: мы учимся у лучших трейдеров (экспертных демонстраций), взвешивая их действия по качеству.
Это эквивалентно минимизации взвешенного MSE: \(\min_p \sum_i w_i (p - \pi_i(s))^2\), решение которой — именно weighted mean (Genest & Zidek 1986, Cooke 1991). Фреймирование через IL открывает доступ к инструментам из ML-литературы: DAgger для итеративного улучшения, offline RL для оптимальных весов.
Столп 2: Экспертный пайплайн
Второй столп системы — классический метод Дельфи, структурированная техника группового прогнозирования, разработанная RAND Corporation в 1963 году (Dalkey & Helmer), адаптированная для ИИ-агентов.
Ключевая идея: один эксперт имеет слепые пятна. Несколько независимых экспертов с разными взглядами дают более калиброванный прогноз.
В нашей системе роль экспертов выполняют пять ИИ-агентов на базе Claude Opus 4.6 (Anthropic). Каждый имеет уникальный когнитивный профиль: реалист оценивает базовые ставки и исторические аналогии, геостратег — силовые балансы и интересы, экономист — потоки капитала и санкции, медиа-эксперт — новостную ценность и редакционную логику, адвокат дьявола — пропущенные риски и чёрных лебедей. Разнообразие перспектив минимизирует систематические ошибки одной точки зрения.
Процесс состоит из двух раундов прогнозирования. Раунд 1 — агенты независимо анализируют события. Раунд 2 — они видят аргументы друг друга (без знания авторства) и пересматривают оценки. Итоговая вероятность — взвешенная медиана с калибровкой по Brier Score каждого агента.
flowchart LR
subgraph r1["Раунд 1: независимая оценка"]
P1["Реалист"] & P2["Геостратег"] & P3["Экономист"] & P4["Медиа"] & P5["Адвокат
дьявола"]
end
subgraph med["Медиация"]
M["Медиатор
синтез + контраргументы"]
end
subgraph r2["Раунд 2: пересмотр"]
R1["Реалист'"] & R2["Геостратег'"] & R3["Экономист'"] & R4["Медиа'"] & R5["Адвокат'"]
end
P1 & P2 & P3 & P4 & P5 --> M
M --> R1 & R2 & R3 & R4 & R5
style r1 fill:#ede9fe,stroke:#7c3aed
style med fill:#fef3c7,stroke:#d97706
style r2 fill:#ede9fe,stroke:#7c3aed
| Эксперт | Фокус анализа | Ключевой вопрос |
|---|---|---|
| Реалист-аналитик | Базовые ставки, исторические аналогии, политические риски, инерция институтов | «Как часто подобное происходило раньше?» |
| Геостратег | Силовые балансы, стратегические интересы, альянсы, международные отношения | «Кому выгодно? (Cui bono?)» |
| Экономист | Потоки капитала, санкции, фискальная политика, товарные рынки | «Следуй за деньгами» |
| Медиа-эксперт | Новостная ценность, редакционная логика, гейткипинг, медийный насыщенность | «Что попадёт в выпуск?» |
| Адвокат дьявола | Пропущенные риски, pre-mortem анализ, контраргументы, чёрные лебеди | «Что может пойти не так?» |
Почему именно эти пять?
Состав вдохновлён исследованиями Tetlock и его Good Judgment Project (2005–2015). Успешные долгосрочные прогнозисты используют множество источников информации и открыты к альтернативным интерпретациям. Мы формализовали эту процедуру в пять когнитивных стилей, каждый с чётким промптом.
Исследование AIA Forecaster (Schoenegger et al., 2024) показало: простое усреднение нескольких запусков одной модели даёт слабое улучшение. Ключ — в структурированном разнообразии: когда каждый агент анализирует проблему через свою призму, они ловят разные аспекты и компенсируют слепые пятна друг друга.
DeLLMphi (Zhao et al., 2024) подтвердил: структурированная медиация между раундами (не просто показать чужие оценки, а заставить переосмыслить аргументы) даёт улучшение на 10–18%.
Синтез: как Judge объединяет сигналы
Результаты обоих столпов — informed probability от Polymarket и экспертные оценки от Дельфи — объединяются в стадии Judge. Итог: ранжированный таймлайн событий с калиброванными вероятностями.
flowchart LR
subgraph inputs["Входные сигналы"]
PM["Informed consensus
Polymarket"]
DL["Экспертные оценки
5 персон Дельфи"]
end
subgraph judge["Judge"]
MW["Market weight
formula"] --> AGG["Агрегация
вероятностей"]
AGG --> CALIB["Калибровка
Platt scaling"]
end
subgraph output["Результат"]
TL["Таймлайн
3 горизонта"] --> FR["Фрейминг
стиль издания"]
FR --> HL["Заголовки
+ лиды"]
HL --> QG["Quality Gate"]
end
PM --> MW
DL --> AGG
CALIB --> TL
style inputs fill:#d1fae5,stroke:#059669
style judge fill:#fef3c7,stroke:#d97706
style output fill:#dbeafe,stroke:#2563eb
Informed probability входит как «виртуальная шестая персона» с динамическим весом, зависящим от ликвидности рынка, волатильности и горизонта:
Market weight formula
| w₀ = 0.15 | Базовый вес (15% от финальной оценки) |
| f_liq = max(0.5, min(log₁₀(liq)/6, 1.5)) | Фактор ликвидности: чем больше объём, тем надёжнее |
| f_vol = 1/(1 + σ₇ₐ) | Фактор волатильности: стабильная цена → выше доверие |
| r_dist | Флаг надёжности распределения (0.0 или 1.0) |
| f_horizon | 1.0 (≤90д), 0.75 (90-180д), 0.5 (>180д) |
Полный pipeline: 9 стадий прогнозирования
Процесс разделён на 9 стадий. Некоторые выполняются параллельно — система запускает до 5 агентов одновременно для ускорения.
Стадия 1: Сбор данных
Четыре коллектора работают параллельно: NewsScout (RSS-фиды + web search), EventCalendar (запланированные политические и экономические события), OutletHistorian (архив целевого издания за последние дни), ForesightCollector (активные контракты Polymarket и Metaculus). Результат: ~200 новостных сигналов.
Стадия 2: Кластеризация событий
TF-IDF векторизация с tri-gram tokenization, cosine similarity matrix, HDBSCAN (min_cluster_size=3). Выбор HDBSCAN вместо K-means: число кластеров заранее неизвестно, шумовые статьи автоматически отсеиваются (Campello et al., 2013). Результат: 15-30 событийных нитей из ~200 статей.
Стадия 3: Анализ траекторий
Три аналитика (геополитический, экономический, медийный) параллельно строят сценарии. Перекрёстная матрица определяет каузальные связи: как событие A влияет на вероятность события B. Это позволяет учитывать цепочки последствий.
Стадия 4: Дельфи — раунд 1
Пять экспертных персон независимо оценивают вероятность каждого события: Реалист (base rates), Геостратег (баланс сил), Экономист (денежные потоки), Медиа-эксперт (новостная ценность), Адвокат дьявола (чёрные лебеди). Анонимность: персоны не видят оценки друг друга.
Стадия 5: Дельфи — раунд 2
Медиатор не просто показывает чужие оценки — он синтезирует аргументы, выделяет точки разногласий и формулирует контраргументы. Это заставляет персон переосмыслить позиции, а не просто сдвинуться к среднему (Zhao et al., 2024).
Стадия 6: Консенсус и таймлайн
Judge агрегирует оценки в предсказанный таймлайн на трёх горизонтах: 1-2 дня (оперативный режим, высокий вес), 3-4 дня (смешанный режим), 5-7 дней (структурный режим, низкий вес). Калибрует вероятности, интегрирует сигналы prediction markets через market weight formula.
Стадия 7: Фрейминг
Анализ редакционного стиля целевого издания: жанр, типичная длина заголовков, лексика, тональность, характерные углы подачи. Для каждого события определяется фрейм: угроза, возможность, кризис, рутина или сенсация.
Стадия 8: Генерация заголовков
StyleReplicator генерирует заголовки и первые абзацы в стиле целевого издания. Каждый заголовок стилизуется под конкретный формат: длина, лексика, тональность соответствуют профилю СМИ.
Стадия 9: Quality Gate
Алгоритмическая проверка (без LLM): факт-чек заголовка по source data, стилевая consistency (длина, лексика, тональность vs. профиль издания). Заголовки ниже порога отбраковываются.
Общее время: 15-40 минут. Стоимость: $5-15 за полный прогноз (зависит от числа событий и режима). 18 агентов, 28 LLM-задач.
Walk-Forward валидация
Любой метод требует доказательства. Мы провели строгую ретроспективную валидацию informed consensus на полном архиве Polymarket — 435 тысяч разрешённых рынков.
Протокол walk-forward evaluation моделирует реальную эксплуатацию: система строит профили только на данных из прошлого, затем прогнозирует на новых рынках, сдвигает окно вперёд и повторяет. Никакой утечки будущего в прошлое.
Результат: 22 из 22 фолдов показали положительный BSS — informed consensus стабильно точнее сырой рыночной цены. Средний BSS = +0.196 означает снижение ошибки прогноза на 19.6% по сравнению с тем, что показывает рынок «как есть».
Доверительный интервал не пересекает ноль — результат устойчив. 1000 bootstrap-ресемплов по фолдам.
Фолды 17–21 содержат <2000 тестовых рынков и высокую дисперсию. Даже при исключении — результат уверенно положительный.
Протокол и ключевые фолды
Параметры протокола
| Burn-in | 180 дней (построение начальных профилей) |
| Шаг | 60 дней (сдвиг окна) |
| Тестовое окно | 60 дней (неперекрывающиеся) |
| Мин. ставок | 5 (порог для профилирования) |
| Shrinkage strength | k = 15 (Bayesian prior) |
Ключевые фолды
| Fold | Train | Test | Informed | BSS |
|---|---|---|---|---|
| 0 | 1,110 | 183 | 101 | +0.014 |
| 5 | 3,165 | 944 | 625 | +0.075 |
| 9 (пик) | 14,004 | 4,354 | 34,156 | +0.273 |
| 12 | 33,747 | 15,791 | 119,241 | +0.223 |
| 16 | 270,724 | 161,693 | 248,909 | +0.125 |
Inverted-U pattern: BSS растёт с накоплением данных (фолды 0→9), достигает пика на фолдах 9–11, затем снижается. По мере роста ликвидности рынок становится эффективнее, и информированный сигнал теряет ценность. Это соответствует гипотезе рыночной эффективности (Fama, 1970).
Обнаружение и исправление temporal leak
В ходе валидации мы обнаружили temporal leak: pre-aggregated позиции участников включали ставки, сделанные после временного среза T. Это классический look-ahead bias — система «подглядывала» в будущее.
Решение: bucketed partial aggregates
Один скан 33 ГБ raw trades → 2.4 ГБ файл с 30-дневными бакетами.
Для любого среза T позиция восстанавливается из бакетов до T.
Суммы composable — средние нет, поэтому храним
weighted_price_sum и
total_usd отдельно.
Результат: clean > leaked
| Метрика | С утечкой | Без утечки |
|---|---|---|
| Mean BSS (фолды 0–14) | +0.092 | +0.117 |
| Median BSS | +0.054 | +0.095 |
| Время (per fold) | ~15 мин | ~4 сек |
| Всего | 5+ часов | 82 мин |
| Память (пик) | OOM (7.4 ГБ) | 4.6 ГБ |
Ключевой вывод: clean BSS выше, чем leaked. Утечка будущих данных не помогала — она добавляла шум в профили, разбавляя информированный сигнал. Это подтверждает, что наш метод работает на честных данных, а не эксплуатирует артефакты.
Ablation study: простота побеждает
Мы проверили, улучшают ли литературные методы наш базовый подход. Single-pass evaluation: 5 конфигураций в одном прогоне, 22 фолда, bootstrap CI (1000 ресемплов).
| Вариант | BSS mean | BSS median | BSS > 0 | 95% CI |
|---|---|---|---|---|
| Baseline | +0.196 | +0.159 | 100% | [+0.135, +0.260] |
| Volume gate ($10K–$100K) | +0.071 | +0.054 | 95.5% | [+0.040, +0.102] |
| Gate + extremize (d=1.5) | +0.047 | +0.028 | 68.2% | [+0.022, +0.075] |
| Gate + timing score | +0.071 | +0.054 | 95.5% | [+0.040, +0.102] |
| Все три вместе | +0.047 | +0.028 | 68.2% | [+0.022, +0.075] |
Интерпретация
- Baseline оптимален. Простое accuracy-weighted усреднение с Bayesian shrinkage — лучший вариант.
- Volume gate вредит (−64%). Фильтрация по ликвидности убирает информативные рынки — большинство рынков Polymarket ниже $100K.
- Extremizing вредит (−76%). Метод Satopää et al. (2014) предполагает независимых экспертов. На Polymarket информированные трейдеры коррелированы (видят одни сигналы), и экстремизация усиливает шум.
- Timing score — нулевой эффект. Внутри INFORMED тира timing не различает качество прогнозистов.
- Отрицательный результат ценен: система не требует тюнинга гиперпараметров — простейшая модель работает лучше всех.
Horizon-aware прогнозирование
Не все события одинаково предсказуемы. Завтрашнее заседание парламента предсказать проще, чем последствия через неделю. Система учитывает это, разделяя прогноз на три временных горизонта.
| Горизонт | Вес в оценке | Характеристика |
|---|---|---|
| 1-2 дня | Высокий | Оперативный режим. Ближайшие события — больше данных, выше точность. Основная часть прогноза. |
| 3-4 дня | Средний | Смешанный режим. Сценарии развития + каузальные цепочки. |
| 5-7 дней | Низкий | Структурный режим. Опирается на тренды, выше неопределённость. |
Как горизонт влияет на агрегацию?
Каждый эксперт даёт оценки отдельно по каждому горизонту. Judge агрегирует их с horizon-weighted voting: ближние события получают больший вес, дальние — меньший. Это предотвращает ситуацию, когда спекулятивный прогноз на неделю вытесняет обоснованный прогноз на завтра.
Калибровка по горизонтам: если модель говорит «60% на горизонте 7 дней», это должно означать, что в 60% аналогичных случаев событие действительно происходит. Система отслеживает Brier Score отдельно по каждому горизонту и корректирует веса.
Валидация и метрики
Система оценивается по трём компонентам: калибровка вероятностей, семантическое сходство заголовков и стилевая аутентичность. Это первая опубликованная walk-forward оценка профилей трейдеров Polymarket.
Взвешенное мнение исторически точных трейдеров снижает ошибку на 19.6% по сравнению с сырой рыночной ценой. Подробности — в секции Walk-Forward выше.
Стандартная метрика для прогнозов вероятностей. BS = 0.20 означает, что модель на 20% ошибается в среднем. Цель v1.0: BS < 0.20 (уровень Metaculus-сообщества).
Сравнивает сгенерированный заголовок с фактически опубликованным через контекстные эмбеддинги. Более точно, чем n-gram метрики (ROUGE, BLEU), для коротких текстов.
Отдельная LLM-модель оценивает, насколько хорошо заголовок соответствует стилю издания (длина, лексика, структура, тональность). Шкала 1–5.
Подробная формула CompositeScore и Murphy decomposition
CompositeScore — взвешенная комбинация
| TopicMatch | {0.0, 0.5, 1.0} | 0 = промах; 0.5 = верная тема, неверный исход; 1.0 = попадание |
| SemanticSim | [0.0, 1.0] | BERTScore F1 vs. лучший совпадающий реальный заголовок |
| StyleMatch | [0.0, 1.0] | LLM-as-judge (1–5 → /5) |
Пороги: ≥0.70 отличный, 0.50–0.69 хороший, 0.30–0.49 частичное, <0.30 промах.
Brier Score и BSS (Brier Skill Score)
BSS = 0.20 означает 20% улучшение vs. случайного прогноза (BS = 0.25).
Murphy Decomposition — диагностика ошибок
- Reliability > 0.05: система переоценивает уверенность → требуется Platt scaling
- Resolution < 0.10: система слишком осторожна → нужна экстремизация вероятностей
- Uncertainty: неизбежная ошибка, зависит от самой задачи
Benchmark: как мы сравниваемся с другими
| Случайное угадывание | BS = 0.25 | Baseline |
| Metaculus (сообщество) | BS = 0.182 | Broad participation |
| GPT-4.5 (ForecastBench) | BS = 0.101 | ICLR 2025 |
| Суперпрогнозисты (GJP) | BS = 0.068–0.086 | Tetlock, 15 лет |
Источники: ForecastBench (arxiv 2409.19839), Good Judgment Project, Metaculus.
Сравнение с литературой
Наши результаты контекстуализируются относительно ключевых исследований prediction markets.
| Исследование | Находка | Наш результат |
|---|---|---|
| Satopää et al. (2014) | Extremizing +10–20% в турнирах прогнозистов | Extremizing вредит (−76% BSS) — на Polymarket трейдеры коррелированы |
| Akey et al. (2025) | Top 1% участников Polymarket захватывает 84% прибыли | Подтверждает tier-based profiling: малая доля трейдеров информативна |
| Mitts & Ofir (2026) | Flagged traders: 69.9% win rate, $143M аномальной прибыли | Независимое подтверждение: информированные трейдеры существуют и систематически точнее |
| Clinton & Huang (2024) | Polymarket 67% accuracy vs PredictIt 93% | Volume gate не универсален — фильтрация по ликвидности может удалять информативные рынки |
| Bürgi et al. (2025) | Цены точнее ближе к разрешению рынка | Обосновывает recency weighting (half-life 90 дней) и timing score |
Технологический стек
Delphi Press работает в двух режимах — Web UI для пользователей с собственными API-ключами и Claude Code mode для разработчиков.
Пользователь вводит свой OpenRouter API Key, выбирает издание и дату. Система запускает асинхронный pipeline, прогресс показывается в реальном времени через Server-Sent Events.
Разработчик клонирует репозиторий и запускает команду /predict.
Пять персон работают как субагенты Claude Code. Покрывает базовый pipeline,
но не все функции Web UI (пресеты, SSE-прогресс, история прогнозов).
graph TB
User["Пользователь"]
Web["Web UI
FastAPI + Jinja2"]
Worker["Worker
ARQ + Redis"]
DB["SQLite
SQLAlchemy 2.0"]
LLM["LLM
OpenRouter"]
User -->|POST /api/v1/predictions| Web
Web -->|enqueue| Worker
Worker -->|read/write| DB
Worker -->|call| LLM
Web -->|SSE| User
style Web fill:#dbeafe,stroke:#2563eb
style Worker fill:#dbeafe,stroke:#2563eb
Полный список зависимостей и компонентов
| Компонент | Использование |
|---|---|
| FastAPI | HTTP API с async/await |
| ARQ | Async task queue на Redis |
| Redis | Очередь задач, pub/sub для прогресса |
| SQLAlchemy 2.0 | ORM с async support (aiosqlite) |
| Pydantic v2 | Валидация данных и JSON serialization |
| Claude Opus 4.6 | 5 экспертных персон + медиатор + судья |
| OpenRouter API | Роутинг к Claude, GPT-4, Gemini, Llama |
| Tailwind CSS v4 | Frontend: OKLCH дизайн-система |
| Newsreader/Source Sans 3 | Typography (headings / body text) |
| DuckDB | Out-of-core аналитика, walk-forward eval (470M trades) |
| pyarrow + ZSTD | Parquet storage, сжатие профилей (33 ГБ → 62 МБ) |
| Docker Compose | Production: app + worker + redis + nginx |
Исходный код: GitHub. Python 3.12+, полностью типизирован, 100% async I/O.
Источники и литература
Основная методология базируется на классических и современных исследованиях по прогнозированию, LLM-агентам и рынкам прогнозов.
- Dalkey & Helmer (1963). «An Experimental Application of the Delphi Method to the Use of Experts.» RAND Corporation.
- Rowe & Wright (2001). «Expert opinions in forecasting: the role of the Delphi technique.» Technological Forecasting and Social Change.
- Schoenegger et al. (2024). «AIA Forecaster: Accuracy Improvement through LLM Ensemble.» ICML.
- Zhao et al. (2024). «DeLLMphi: Delphi-style Iterative Refinement with Large Language Models.» NeurIPS.
- Tetlock & Gardner (2015). «Superforecasting: The Art and Science of Prediction.» Crown.
- Surowiecki (2004). «The Wisdom of Crowds.» Doubleday.
- Satopää et al. (2014). «Combining Multiple Probability Predictions Using Their Cumulative Distribution Functions.» International Journal of Forecasting.
- Manski (2006). «Interpreting Probability Statements from Markets: The Case of Mortgage-Backed Securities.» The Economic Journal.
- Wolfers & Zitzewitz (2004). «Prediction Markets.» Journal of Economic Literature.
- Gneiting & Raftery (2007). «Strictly Proper Scoring Rules, Prediction, and Estimation.» JASA.
- Murphy (1971). «A New Vector Partition of the Probability Score.» Journal of Applied Meteorology.
- Ye et al. (2024). «ForecastBench: A Comprehensive Benchmark of Forecasting Capabilities of Language Models.» ICLR 2025 (arxiv 2409.19839).
- Zhang* et al. (2020). «BERTScore: Evaluating Text Generation with BERT.» ICLR 2020.
- Lin (2004). «ROUGE: A Package for Automatic Evaluation of Summaries.» ACL Text Summarization Workshop.
- Zhong et al. (2023). «LLMs as Factual Reasoners: Evaluating their Free-text Justifications.» ICLR 2023 Oral.
- Liu et al. (2023). «G-Eval: NLG Evaluation using GPT-4 with Better Human Alignment.» EMNLP 2023.
- Ferro & Fricker (2012). «Sampling Uncertainty and Confidence Intervals for the Brier Score.» Weather and Forecasting.
- Burnham & Anderson (2002). «Model Selection and Multimodel Inference.» Springer.
- Campello et al. (2013). «Density-Based Clustering Based on Hierarchical Density Estimates.» PAKDD.
- Akey, Grégoire, Harvie & Martineau (2025). «Who Wins and Who Loses in Prediction Markets? Evidence from Polymarket.» SSRN 6443103.
- Mitts & Ofir (2026). «From Iran to Taylor Swift: Informed Trading in Prediction Markets.» Harvard Law Corporate Governance Forum.
- Bürgi, Deng & Whelan (2025). «Makers and Takers: The Economics of the Kalshi Prediction Market.» CEPR.
- Clinton & Huang (2024). «Polymarket Accuracy Study.» Vanderbilt University.
- Genest & Zidek (1986). «Combining Probability Distributions: A Critique and an Annotated Bibliography.» Statistical Science.
- Cooke (1991). «Experts in Uncertainty.» Oxford University Press.
Замечание
Delphi Press — исследовательский прототип. Все прогнозы имеют ошибку. Система предназначена для изучения методов мультиагентного прогнозирования.