Что такое оценка Brier score и как ее рассчитать
Оценка Brier score измеряет точность вероятностных прогнозов через среднеквадратичную ошибку. Низкий показатель указывает на качество. Значение ноль целых двадцать пять сотых
Оценка Brier score
Оценка Brier score позволяет оценить точность вероятностного прогноза в сравнении с фактическим результатом. Для расчета необходимо взять заявленную вероятность, вычесть из нее результат (единица, если событие произошло, и ноль, если нет), возвести полученную разность в квадрат, а затем вычислить среднее значение этих квадратов для всех сделанных прогнозов. Чем ниже показатель, тем лучше результат: ноль означает идеальный прогноз, а ноль целых двадцать пять сотых — результат, который вы получаете, если присваиваете вероятность пятьдесят процентов любому событию.
Что такое оценка Брайера?
Прогноз — это утверждение о вероятности, и одна вероятность сама по себе не может быть верной или ошибочной. Вы оценили вероятность события в тридцать процентов, и оно произошло. Ошиблись ли вы? Пока нет. Гленн Брайер, писавший для метеорологов в тысяча девятьсот пятидесятом году, решил эту проблему, отказавшись оценивать каждый прогноз по отдельности. Данная оценка оценивает весь журнал прогнозов целиком.
Ниже приведен вымышленный журнал из десяти прогнозов. Ни одно из этих чисел не взято с рынка; они придуманы для демонстрации арифметики.
- Заявлено девяносто процентов, событие произошло. Квадрат ошибки ноль целых одна сотая.
- Заявлено восемьдесят процентов, произошло. Ноль целых четыре сотых.
- Заявлено семьдесят процентов, не произошло. Ноль целых сорок девять сотых.
- Заявлено шестьдесят процентов, произошло. Ноль целых шестнадцать сотых.
- Заявлено пятьдесят процентов, не произошло. Ноль целых двадцать пять сотых.
- Заявлено сорок процентов, не произошло. Ноль целых шестнадцать сотых.
- Заявлено тридцать процентов, произошло. Ноль целых сорок девять сотых.
- Заявлено двадцать процентов, не произошло. Ноль целых четыре сотых.
- Заявлено десять процентов, не произошло. Ноль целых одна сотая.
- Заявлено девяносто пять процентов, произошло. Ноль целых двадцать пять десятитысячных.
Сумма десяти квадратов ошибок составляет одна целая шесть тысяч пятьсот двадцать пять десятитысячных. Разделите на десять, и оценка Брайера составит ноль целых сто шестьдесят пять тысячных. Это весь расчет, и он выполняется на языке python3, который уже предустановлен на любом компьютере с Mac или Linux. Ничего не нужно устанавливать, никаких библиотек.
rows = [(0.90, 1), (0.80, 1), (0.70, 0), (0.60, 1), (0.50, 0), (0.40, 0), (0.30, 1), (0.20, 0), (0.10, 0), (0.95, 1)]brier = sum((p - o) * (p - o) for p, o in rows) / len(rows)flat = sum((0.5 - o) * (0.5 - o) for _, o in rows) / len(rows)print(round(brier, 3), round(flat, 3))сделки0.165 0.25
Почему 0,25 — это ориентир, который нужно превзойти
Предположим, вероятность любого события составляет пятьдесят процентов, а величина каждой ошибки в квадрате равна 0,25, независимо от исхода. Это фиксированное значение 0,25 служит эталоном отсутствия информации для любого набора вопросов с ответами «да» или «нет». Показатель мастерства (skill score) преобразует это в единую величину: единица минус отношение вашего результата к результату эталона. Условный логарифмический показатель 0,165 дает значение мастерства, равное 0,34.
Одно предостережение позволяет избежать множества ошибок в оценке результатов. Если события, которые вы оцениваете, происходят только в десяти процентах случаев, то прогноз в десять процентов на каждый случай дает оценку 0,09, при этом вы не обладаете никакими знаниями об отдельных вопросах. Оценка ниже 0,25 не является доказательством мастерства при работе с несбалансированным набором вопросов. Честным эталоном является базовая частота событий в тех вопросах, на которые вы фактически ответили.
Калибровка и уверенность оцениваются в совокупности
Калибровка означает, что из всех событий, которым вы присвоили вероятность семьдесят процентов, около семидесяти процентов действительно происходят. Уверенность, которую статистики называют разрешающей способностью, показывает, насколько далеко вы готовы отойти от базового уровня вероятности, когда обладаете дополнительной информацией. Прогнозист, который на любой вопрос отвечает «пятьдесят процентов», идеально откалиброван, но совершенно бесполезен. Оценка Брайера учитывает оба этих свойства одновременно: отсутствие калибровки повышает её значение, а обоснованная уверенность — снижает.
Распределение накопленных данных по заявленной вероятности показывает, как выглядит проверка калибровки. На языке Python это одна строка на группу, hits = [o for p, o in rows if p >= 0.8], а затем среднее значение hits.
- Заявлено от десяти до тридцати процентов, среднее двадцать процентов: произошло одно из трёх, тридцать три процента.
- Заявлено от сорока до пятидесяти процентов, среднее сорок пять процентов: произошло ноль из двух, ноль процентов.
- Заявлено от шестидесяти до семидесяти процентов, среднее шестьдесят пять процентов: произошло одно из двух, пятьдесят процентов.
- Заявлено от восьмидесяти до девяноста пяти процентов, среднее восемьдесят восемь процентов: произошло три из трёх, сто процентов.
Десяти прогнозов недостаточно для того, чтобы сделать какие-либо выводы на основе этих групп. Для калибровки требуются сотни завершённых вопросов по каждой группе. В остальной части этой страницы используется журнал прогнозов, содержащий миллионы таких записей.
Оценка рыночного прогноза
Каждый биржевой опцион содержит показатель, который ведет себя как заявленная вероятность. Дельта измеряет, насколько меняется цена опциона при изменении цены базовой акции на один доллар. Для контракта, который либо закрывается «в деньгах» (имеет стоимость на момент экспирации), либо обесценивается, абсолютное значение дельты близко к подразумеваемой рынком вероятности того, что опцион окажется «в деньгах». Этот показатель рассчитывается на основе той же поверхности, которая определяет подразумеваемую волатильность AAPL. Срок действия каждого контракта истекает, поэтому каждый такой прогноз подлежит проверке.
В приведенной ниже таблице собраны все опционы на SPY, наблюдавшиеся примерно за месяц до экспирации в период с января две тысячи двадцать пятого года по май две тысячи двадцать шестого года. Они распределены по группам в соответствии с заявленной дельтой, после чего подсчитана частота, с которой контракты закрывались «в деньгах».
Точный SQL-код для каждого числа
WITH settle AS
(
SELECT
date AS settle_date,
any(toFloat64(underlying_close)) AS settle_px
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2025-01-01'
AND date < '2026-08-01'
GROUP BY date
),
scored AS
(
SELECT
toUInt8(floor(abs(toFloat64(g.delta)) * 10)) AS bucket,
abs(toFloat64(g.delta)) AS stated,
startsWith(lower(toString(g.option_type)), 'c') AS is_call,
if(is_call,
s.settle_px > toFloat64(g.strike_price),
s.settle_px < toFloat64(g.strike_price)) AS finished_itm
FROM global_markets.options_greeks AS g
INNER JOIN settle AS s ON s.settle_date = g.expiration_date
WHERE g.underlying_symbol = 'SPY'
AND g.date >= '2025-01-01'
AND g.date < '2026-06-01'
AND g.expiration_date <= '2026-07-31'
AND g.days_to_expiry BETWEEN 28 AND 35
AND g.iv_converged = 1
AND g.volume > 0
AND abs(g.delta) > 0.02
AND abs(g.delta) < 0.98
)
SELECT
concat(toString(bucket * 10), ' to ', toString(bucket * 10 + 10), '%') AS stated_bucket,
round(avg(stated) * 100, 1) AS stated_pct,
round(avg(finished_itm) * 100, 1) AS finished_itm_pct,
count() AS sample_size
FROM scored
GROUP BY bucket
ORDER BY bucketСравните два ряда данных. В группе с самыми низкими значениями рынок заявлял в среднем 5.2%, и эти контракты закрывались «в деньгах» в 3.7% случаев. В группе с самыми высокими значениями заявленные 94% сопровождались закрытием «в деньгах» в 96.5% случаев. По всем 10 группам фактическая частота находится примерно на том же уровне, что и заявленная. В этом и заключается основная задача калибровочной таблицы: она выявляет разрыв между прогнозом и реальностью по каждой группе отдельно, вместо того чтобы скрывать его внутри единого среднего значения.
Обыгрывает ли рынок подбрасывание монеты?
Теперь о самих результатах. Используя ту же методику для нескольких известных компаний, мы сопоставили Brier score для каждой из них с базовым уровнем в пятьдесят процентов, рассчитанным по тем же самым контрактам.
Точный SQL-код для каждого числа
WITH settle AS
(
SELECT
underlying_symbol AS sym,
date AS settle_date,
any(toFloat64(underlying_close)) AS settle_px
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'TSLA')
AND date >= '2025-01-01'
AND date < '2026-08-01'
GROUP BY sym, settle_date
),
scored AS
(
SELECT
g.underlying_symbol AS symbol,
abs(toFloat64(g.delta)) AS stated,
startsWith(lower(toString(g.option_type)), 'c') AS is_call,
if(is_call,
s.settle_px > toFloat64(g.strike_price),
s.settle_px < toFloat64(g.strike_price)) AS finished_itm
FROM global_markets.options_greeks AS g
INNER JOIN settle AS s
ON s.sym = g.underlying_symbol AND s.settle_date = g.expiration_date
WHERE g.underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'TSLA')
AND g.date >= '2025-01-01'
AND g.date < '2026-06-01'
AND g.expiration_date <= '2026-07-31'
AND g.days_to_expiry BETWEEN 28 AND 35
AND g.iv_converged = 1
AND g.volume > 0
AND abs(g.delta) > 0.02
AND abs(g.delta) < 0.98
)
SELECT
symbol,
round(avg((stated - finished_itm) * (stated - finished_itm)), 4) AS market_brier,
round(avg((0.5 - finished_itm) * (0.5 - finished_itm)), 4) AS coin_flip_brier,
formatReadableQuantity(count()) AS graded_contracts
FROM scored
GROUP BY symbol
ORDER BY market_brierNVDA показывает результат 0.1122 по 28.54 thousand оцененным контрактам, тогда как базовый уровень на том же наборе данных составляет 0.25. Даже самый слабый из 6 инструментов, SPY, демонстрирует показатель 0.1375. Опционы здесь не являются магическим инструментом. Контракты deep out of the money имеют дельту около 0,02 и в большинстве случаев истекают обесцененными, что легко спрогнозировать, и эта простота уже заложена в итоговую цифру. Именно по этой причине Brier score, взятый в отрыве от контекста, практически не несет полезной информации.
Один и тот же прогнозист получает разные оценки по разным вопросам
Разделите идентичный метод в зависимости от того, как далеко во времени находится момент разрешения вопроса, и вы увидите, как меняется оценка.
Точный SQL-код для каждого числа
WITH settle AS
(
SELECT
date AS settle_date,
any(toFloat64(underlying_close)) AS settle_px
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2025-01-01'
AND date < '2026-08-01'
GROUP BY date
),
scored AS
(
SELECT
multiIf(g.days_to_expiry <= 7, 1,
g.days_to_expiry <= 14, 2,
g.days_to_expiry <= 30, 3,
g.days_to_expiry <= 60, 4,
g.days_to_expiry <= 120, 5,
6) AS horizon_rank,
abs(toFloat64(g.delta)) AS stated,
startsWith(lower(toString(g.option_type)), 'c') AS is_call,
if(is_call,
s.settle_px > toFloat64(g.strike_price),
s.settle_px < toFloat64(g.strike_price)) AS finished_itm
FROM global_markets.options_greeks AS g
INNER JOIN settle AS s ON s.settle_date = g.expiration_date
WHERE g.underlying_symbol = 'SPY'
AND g.date >= '2025-01-01'
AND g.date < '2026-06-01'
AND g.expiration_date <= '2026-07-31'
AND g.days_to_expiry BETWEEN 1 AND 250
AND g.iv_converged = 1
AND g.volume > 0
AND abs(g.delta) > 0.02
AND abs(g.delta) < 0.98
)
SELECT
multiIf(horizon_rank = 1, '1 to 7 days',
horizon_rank = 2, '8 to 14 days',
horizon_rank = 3, '15 to 30 days',
horizon_rank = 4, '31 to 60 days',
horizon_rank = 5, '61 to 120 days',
'121 to 250 days') AS horizon,
round(avg((stated - finished_itm) * (stated - finished_itm)), 4) AS market_brier,
round(avg((0.5 - finished_itm) * (0.5 - finished_itm)), 4) AS coin_flip_brier,
count() AS sample_size
FROM scored
GROUP BY horizon_rank
ORDER BY horizon_rankДельта рынка получила оценку 0.1084 по контрактам со сроком исполнения 1 to 7 days и 0.1218 по контрактам со сроком исполнения 121 to 250 days. Тот же прогнозист, тот же метод, два разных набора вопросов. Базовый уровень в пятьдесят процентов находится на отметке 0.25 в первой строке и 0.25 в последней, что делает его единственным фиксированным ориентиром для любого временного горизонта. Любое сравнение двух прогнозистов должно проводиться по одним и тем же вопросам в рамках одного и того же периода, иначе это будет сравнение сложности вопросов, а не мастерства.
Почему важны правила надлежащей оценки
Средняя абсолютная ошибка, представляющая собой среднее значение простого расстояния между вашей вероятностью и фактическим исходом, кажется разумной альтернативой, но оценивает результат неверно. Предположим, вы искренне считаете, что вероятность события составляет семьдесят процентов. Укажите семьдесят процентов, и ваша ожидаемая абсолютная ошибка составит ноль целых сорок две сотых. Укажите вместо этого сто процентов, и она снизится до ноля целых тридцати сотых. При использовании абсолютной ошибки честная оценка обходится вам дороже, а метрика, которая поощряет завышение уверенности, не является инструментом для оценки качества прогнозирования.
Оценка Брайера лишена такого изъяна. Если вы верите в семьдесят процентов и указываете семьдесят процентов, ваш ожидаемый балл составит ноль целых двадцать одна сотая. Если вы укажете сто процентов, он вырастет до ноля целых тридцати сотых. Если вы укажете шестьдесят процентов, он вырастет до ноля целых двадцати двух сотых. Минимум достигается ровно на том значении, в которое вы верите. Правило, обладающее таким свойством, называется надлежащим, и именно поэтому оценка Брайера стала стандартом в турнирах по прогнозированию.
Логарифмическая оценка — это еще одно распространенное надлежащее правило: возьмите натуральный логарифм вероятности, которую вы присвоили произошедшему событию, а затем измените знак на противоположный. Указание одного процента для события, которое произошло, стоит четыре целых шесть десятых, а указание ноля процентов стоит бесконечность. Для вымышленного прогноза из десяти пунктов логарифмическая оценка составит ноль целых четыреста восемьдесят три тысячных против ноля целых шестисот девяноста трех тысячных для базового сценария. Оценка Брайера остается в диапазоне от ноля до единицы, что более естественно воспринимается как система баллов. Логарифмическая оценка не ограничена, что подходит для случаев, когда риски сосредоточены в «хвостах» распределения.
Что это означает для событийных контрактов
Событийный контракт, который выплачивает один доллар при наступлении события и ноль долларов в противном случае, торгуется по цене, которая уже отражает вероятность. Шестьдесят два цента означают прогноз в шестьдесят два процента до вычета спреда и комиссий. Наше руководство по ценам событийных контрактов как вероятностям описывает этот пересчет, а материал о том, как исполняются событийные контракты, разъясняет, что именно подразумевается под «наступлением события» в формулировках контракта.
Эта цена представляет собой прогноз с публичной историей результатов и датой исполнения, что делает её ориентиром, который должен превзойти ваш собственный журнал сделок. Оценивайте свои прогнозы по тем же вопросам и на том же временном интервале. Трейдер, чей показатель Brier score оказывается выше рыночной цены, не обладает измеримым преимуществом по данному набору вопросов, независимо от того, насколько убедительным кажется обоснование сделки. Тот же тест применим к спортивным коэффициентам после того, как вы уберете маржу из букмекерских котировок, а также к рынкам процентных ставок, где вероятности по ставке ФРС дают вам датированную вероятность для события с известным днем разрешения.
Как эти панели оценивают рынок
Дельта рассчитывается на основе ежедневных данных по грекам опционов для каждого контракта. В расчет включаются только контракты, по которым в день наблюдения был объем торгов и удалось вычислить волатильность. Исход определяется по цене закрытия базового актива в день истечения контракта: call-опцион считается в деньгах (in the money), если цена закрытия выше страйка, а put-опцион — если ниже. Реальное исполнение происходит после принятия решения об экспирации по окончании торгов, поэтому контракты, цена которых оказалась в пределах нескольких центов от страйка, могут быть исполнены иначе, чем в рамках данного упрощения. Все контракты в этих панелях уже истекли, а корзины с более длинным горизонтом неизбежно используют более ранние даты наблюдения в рамках периода. Дробление акций (сплит), произошедшее между датой наблюдения и экспирацией, привело бы к несоответствию масштабов страйка и цены исполнения, что является еще одной причиной, по которой для каждой корзины указан размер выборки.
Дельта аппроксимирует риск-нейтральную вероятность, а не вероятность реального мира. Они различаются на величину премии за риск, заложенную в цены опционов, и калибровочная таблица является инструментом, который измеряет эту разницу, вместо того чтобы игнорировать её.
Часто задаваемые вопросы
Считается ли более низкий показатель Brier score лучшим результатом?
Да. Brier score — это показатель ошибки, поэтому ноль означает идеальный прогноз, а единица — наихудший результат, который получается при стопроцентной уверенности в событии, которое не произошло. Любое значение ниже ноль целых двадцати пяти сотых лучше результата, который вы получили бы, отвечая пятьдесят процентов на каждый вопрос.
Какой показатель Brier score считается хорошим?
Универсального хорошего числа не существует, так как показатель зависит от сложности вопросов. Нельзя сравнивать синоптика с результатом ноль целых одна десятая по прогнозу дождя на завтра и политического аналитика с результатом ноль целых восемнадцать сотых по прогнозу исхода выборов. Сравнивайте показатели только между аналитиками, отвечающими на одни и те же вопросы в течение одного и того же периода.
Что означает Brier score, равный ноль целых двадцати пяти сотым?
Это результат аналитика, который отвечает пятьдесят процентов на всё, поскольку любая ошибка в квадрате в этом случае равна ноль целых двадцати пяти сотым, независимо от исхода. Это стандартный эталон отсутствия информации для набора вопросов с ответами «да» или «нет», хотя для несбалансированного набора вопросов в качестве эталона необходимо использовать базовый уровень вероятности.
Чем Brier score отличается от log score?
Оба показателя являются правильными правилами оценки, что означает, что каждый из них достигает минимума, когда вы указываете вероятность, в которую действительно верите. Brier возводит ошибку в квадрат и остается в диапазоне от нуля до единицы. Log score гораздо строже наказывает за уверенные, но ошибочные прогнозы, а указание нуля процентов для события, которое в итоге происходит, приводит к бесконечным потерям.
Можно ли рассматривать дельту опциона как вероятность?
Абсолютное значение дельты близко к рыночной подразумеваемой вероятности того, что опцион будет исполнен в деньгах (in the money), при этом данная вероятность является риск-нейтральной, а не реальной. На графиках выше она оценивается как прогноз: заявленная дельта по одной оси и доля контрактов, которые фактически были исполнены в деньгах, по другой.
Каждая панель здесь сопровождается точным SQL-запросом, поэтому оценку можно проверить построчно. Чтобы оценить собственный лог прогнозов в сравнении с рыночными по тем же вопросам, запросите данные на обычном языке в терминале Strasmore.