Brier skoru hesaplama ve tahmin performansı ölçümü
Brier skoru, olasılık tahminlerinin gerçekleşen sonuçlara göre hata payını ölçer. Düşük skor daha başarılıdır. Her tahmine yüzde elli demek sıfır virgül yirmi beş puan getirir.
Brier skoru ve tahmin performansı
Brier skoru, bir olasılık tahminini gerçekleşen sonuçla kıyaslayarak derecelendirir. Belirtilen olasılık değerinden gerçekleşen sonucu (olay gerçekleştiyse 1, gerçekleşmediyse 0) çıkarın, elde edilen farkın karesini alın ve ardından tüm tahminleriniz için bu karelerin ortalamasını hesaplayın. Düşük skor daha iyidir: Sıfır mükemmel bir performansı temsil ederken, her tahmin için "yüzde elli" demek sıfır virgül yirmi beşlik bir skorla sonuçlanır.
Brier skoru nedir?
Bir tahmin, olasılık üzerine bir iddiadır ve tek bir olasılık kendi başına ne doğru ne de yanlış olabilir. Bir olaya yüzde otuz ihtimal verdiniz ve olay gerçekleşti. Yanıldınız mı? Henüz değil. Glenn Brier, bin dokuz yüz elli yılında hava durumu tahmincileri için kaleme aldığı çalışmasında, tek bir tahmini puanlamayı reddederek bu sorunu aşmıştır. Skor, tüm tahmin kaydını bir bütün olarak değerlendirir.
Aşağıda on tahminden oluşan hayali bir kayıt yer almaktadır. Bu rakamların hiçbiri bir piyasadan alınmamış olup, aritmetiği göstermek amacıyla uydurulmuştur.
- Yüzde doksan belirtildi, olay gerçekleşti. Karesel sapma sıfır virgül sıfır bir.
- Yüzde seksen belirtildi, gerçekleşti. Sıfır virgül sıfır dört.
- Yüzde yetmiş belirtildi, gerçekleşmedi. Sıfır virgül kırk dokuz.
- Yüzde altmış belirtildi, gerçekleşti. Sıfır virgül on altı.
- Yüzde elli belirtildi, gerçekleşmedi. Sıfır virgül yirmi beş.
- Yüzde kırk belirtildi, gerçekleşmedi. Sıfır virgül on altı.
- Yüzde otuz belirtildi, gerçekleşti. Sıfır virgül kırk dokuz.
- Yüzde yirmi belirtildi, gerçekleşmedi. Sıfır virgül sıfır dört.
- Yüzde on belirtildi, gerçekleşmedi. Sıfır virgül sıfır bir.
- Yüzde doksan beş belirtildi, gerçekleşti. Sıfır virgül sıfır sıfır iki beş.
On adet karesel sapmanın toplamı bir virgül altı beş iki beş eder. On ile bölündüğünde Brier skoru sıfır virgül bir altı beş olarak bulunur. Hesaplamanın tamamı bundan ibarettir ve herhangi bir Mac veya Linux makinesinde halihazırda yüklü olan python3 üzerinde çalışır. Kurulum gerektirmez, kütüphane ihtiyacı yoktur.
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))prints0.165 0.25
Neden 0,25 geçilmesi gereken rakamdır
Her şey için yüzde elli ihtimal verdiğinizi ve her hatalı tahminin karesinin, ne olursa olsun 0,25 ettiğini varsayın. Bu sabit 0,25 değeri, evet veya hayır şeklindeki her türlü soru seti için bilgi içermeyen bir referans noktasıdır; beceri skoru ise bunu tek bir rakama dönüştürür: bir eksi, sizin skorunuzun referans noktasının skoruna bölümü. 0,165 seviyesindeki kurgusal logaritma, 0,34'lük bir beceri skoruna denk gelir.
Bir uyarı, hatalı skor tutmanın çoğunu geçersiz kılar. Eğer değerlendirdiğiniz olaylar sadece yüzde on oranında gerçekleşiyorsa, her seferinde sabit yüzde on tahmininde bulunmak, bireysel sorular hakkında hiçbir şey bilmeseniz dahi 0,09'luk bir skor elde etmenizi sağlar. 0,25'in altındaki bir skor, dengesiz bir soru setinde beceri kanıtı sayılmaz. Dürüst referans noktası, aslında yanıtladığınız soruların temel gerçekleşme oranıdır.
Kalibrasyon ve güven birlikte derecelendirilir
Kalibrasyon, yüzde yetmiş olasılıkla gerçekleşeceğini öngördüğünüz olayların yaklaşık yüzde yetmişinin gerçekleşmesi anlamına gelir. İstatistikçilerin çözünürlük olarak adlandırdığı güven ise, bir konu hakkında bilgi sahibi olduğunuzda temel orandan ne kadar uzaklaşmaya istekli olduğunuzdur. Her soruya yüzde elli yanıtını veren bir tahminci mükemmel şekilde kalibre edilmiştir ancak tamamen işlevsizdir. Brier skoru her iki özelliği de aynı anda fiyatlar: yanlış kalibrasyon skoru yükseltirken, kazanılmış güven skoru düşürür.
Oluşturulan tahmin günlüğünü belirtilen olasılığa göre gruplandırmak, bir kalibrasyon kontrolünün nasıl göründüğünü ortaya koyar. Python dilinde bu, her bir grup için tek satır, hits = [o for p, o in rows if p >= 0.8], ardından hits ortalamasıdır.
- Yüzde on ila otuz arası belirtilen, ortalama yüzde yirmi: üçte biri gerçekleşti, yüzde otuz üç.
- Yüzde kırk ila elli arası belirtilen, ortalama yüzde kırk beş: ikide sıfır gerçekleşti, yüzde sıfır.
- Yüzde altmış ila yetmiş arası belirtilen, ortalama yüzde altmış beş: ikide bir gerçekleşti, yüzde elli.
- Yüzde seksen ila doksan beş arası belirtilen, ortalama yüzde seksen sekiz: üçte üç gerçekleşti, yüzde yüz.
On tahmin, bu gruplardan herhangi bir anlam çıkarmak için yeterli değildir. Kalibrasyon, her grup için yüzlerce sonuçlanmış soru gerektirir. Bu sayfanın geri kalanı, milyonlarca tahminden oluşan bir tahmin günlüğü kullanmaktadır.
Piyasanın kendi tahmininin derecelendirilmesi
Borsada işlem gören her opsiyon, belirtilen bir olasılık gibi davranan bir sayı taşır. Delta, dayanak hisse senedindeki bir dolarlık hareket için opsiyonun fiyatının ne kadar değiştiğini ölçer ve vadesinde ya kârda (değerli) ya da değersiz olarak sonuçlanan bir sözleşme için deltanın mutlak değeri, piyasanın opsiyonun kârda sonuçlanacağına dair ima ettiği olasılığa yakın seyreder. Bu değer, AAPL ima edilen oynaklığı belirleyen aynı yüzeyden türetilir. Her sözleşmenin bir vadesi olduğundan, bu tahminlerin her biri derecelendirilir.
Aşağıdaki panel, Ocak 2025'ten Mayıs 2026'ya kadar, vadesine yaklaşık bir ay kala gözlemlenen her SPY opsiyonunu alır, bunları belirtilen deltaya göre gruplandırır ve sözleşmenin ne sıklıkla kârda sonuçlandığını sayar.
Her verinin arkasındaki tam 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İki seriyi birbirine göre okuyun. En düşük grupta piyasa ortalama 5.2% belirtmiş ve bu sözleşmelerin 3.7% kadarı kârda sonuçlanmıştır. En yüksek grupta ise belirtilen 94% oranı, 96.5% oranında kârda sonuçlanma ile gerçekleşmiştir. Toplam 10 grup genelinde gerçekleşen frekans, belirtilen frekans ile aynı civarda seyretmektedir. Bir kalibrasyon tablosunun tüm işlevi budur: Tek bir ortalamanın içine gizlemek yerine, bir tahmincinin söyledikleri ile gerçekleşenler arasındaki farkı grup grup ortaya koyar.
Piyasa yazı-tura atışını geride bırakabiliyor mu?
Şimdi skorun kendisine bakalım. Aynı yapı, birkaç bilindik isim ve her bir ismin Brier skoru, tam olarak aynı sözleşmeler üzerinden hesaplanan yüzde ellilik düz baz çizgisinin yanına yerleştirildi.
Her verinin arkasındaki tam 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, aynı küme üzerinde yüzde ellilik düz baz çizgisinin 0.25 skoruna karşılık, 28.54 thousand adet sözleşme üzerinden 0.1122 skorunu elde etti. 6 isimleri arasındaki en zayıf performans olan SPY bile 0.1375 seviyesinde gerçekleşti. Opsiyonlar burada sihirli bir değnek değil. Kullanım fiyatının oldukça uzağındaki (deep out of the money) sözleşmeler sıfıra yakın deltalar taşır ve büyük oranda değersiz şekilde sona erer; bu, doğru tahmin edilmesi kolay bir durumdur ve bu kolaylık rakamın içine yedirilmiştir. Tek başına sunulan bir Brier skorunun neredeyse hiçbir şey ifade etmemesinin temel nedeni budur.
Aynı tahminci farklı sorular üzerinde farklı puanlar alır
Aynı yöntemi, sorunun çözümlenme süresine göre bölümlere ayırın; puanın bu süre altında nasıl değiştiğini gözlemleyin.
Her verinin arkasındaki tam 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_rankPiyasanın deltası, vadesine 1 to 7 days kalan sözleşmelerde 0.1084, vadesine 121 to 250 days kalan sözleşmelerde ise 0.1218 puan almıştır. Aynı tahminci, aynı yöntem, ancak iki farklı soru seti. Yüzde ellilik sabit baz çizgisi, ilk satırda 0.25, son satırda ise 0.25 seviyesinde yer alır; bu da onu her vade boyunca tek sabit referans noktası yapar. İki tahminci arasındaki herhangi bir karşılaştırma, aynı zaman diliminde aynı sorular üzerinden yapılmalıdır; aksi takdirde karşılaştırılan şey yetenek değil, soru zorluğudur.
Uygun puanlama kuralları neden önemlidir
Ortalama mutlak hata, yani olasılığınız ile gerçekleşen sonuç arasındaki yalın mesafenin ortalaması, makul bir alternatif gibi görünse de kötü bir notlandırma sağlar. Bir olayın gerçekleşme olasılığının yüzde yetmiş olduğuna içtenlikle inandığınızı varsayalım. Yüzde yetmiş dediğinizde beklenen mutlak hatanız 0,7 x 0,3 + 0,3 x 0,7 = 0,42 olur. Bunun yerine yüzde yüz derseniz hata 0,7 x 0 + 0,3 x 1 = 0,30 değerine düşer. Mutlak hata altında dürüst rakam size maliyet çıkarır; güveni abartmanız karşılığında sizi ödüllendiren bir metrik, tahmin başarısını ölçmüyor demektir.
Brier skoru böyle bir açığa sahip değildir. Yüzde yetmişe inanıp yüzde yetmiş dediğinizde beklenen skorunuz 0,7 x 0,09 + 0,3 x 0,49 = 0,21 olur. Yüzde yüz derseniz skor 0,30'a yükselir. Yüzde altmış derseniz 0,22'ye çıkar. Minimum değer tam olarak inandığınız rakamın üzerindedir. Bu özelliğe sahip bir kurala uygun (proper) denir ve Brier skorunun tahmin turnuvalarında varsayılan standart haline gelmesinin nedeni budur.
Logaritmik skor, yaygın kullanılan diğer bir uygun kuraldır: Gerçekleşen sonuca atadığınız olasılığın doğal logaritmasını alın ve işaretini tersine çevirin. Gerçekleşen bir olay için yüzde bir olasılık vermek dört virgül altı birim maliyet getirirken, yüzde sıfır demek sonsuz maliyet getirir. Kurgusal on tahminlik logaritmik hesaplamada sonuç, sabit baz çizgisi için sıfır virgül altı yüz doksan üç iken, sıfır virgül dört yüz seksen üç olarak gerçekleşir. Brier skoru sıfır ile bir arasında kalır ve bu durum bir puan tablosu olarak daha doğal okunur. Logaritmik skor ise sınırsızdır; bu da riskin uç değerlerde yoğunlaştığı notlandırmalar için uygundur.
Etkinlik sözleşmeleri için anlamı
Bir şeyin gerçekleşmesi durumunda bir dolar, gerçekleşmemesi durumunda sıfır dolar ödeyen bir etkinlik sözleşmesi, halihazırda bir olasılığı ifade eden bir fiyattan işlem görür. Spread ve komisyonlar çıkarılmadan önce altmış iki sent, yüzde altmış ikilik bir tahmine karşılık gelir. Olasılık olarak etkinlik sözleşmesi fiyatları rehberimiz bu dönüşümü, etkinlik sözleşmeleri nasıl sonuçlanır ise sözleşmenin kendi ifadeleriyle "gerçekleşti" ibaresinin ne anlama geldiğini açıklamaktadır.
Söz konusu fiyat, kamuya açık bir geçmiş performansa ve bir vade tarihine sahip bir tahmindir; bu da onu kendi kayıtlarınızın geçmesi gereken bir kıyaslama noktası haline getirir. Kendi tahminlerinizi aynı sorular üzerinde ve aynı zaman diliminde puanlayın. Brier skoru piyasa fiyatının üzerinde kalan bir işlemcinin, işleme eşlik eden anlatısı ne kadar ikna edici olursa olsun, ilgili soru seti üzerinde ölçülebilir bir avantajı yoktur. Aynı test, bahis oranlarından vig'i çıkardığınızda spor bahisleri oranlarına ve Fed faiz oranları ile bilinen bir çözüm gününe sahip sorular için tarihli bir olasılık sunan faiz piyasalarına da uygulanabilir.
Bu paneller piyasayı nasıl derecelendiriyor?
Delta, her sözleşme için günlük opsiyon greeks kayıtlarından elde edilir. Yalnızca gözlem gününde işlem hacmi olan ve volatilite çözümü yakınsayan sözleşmeler dahil edilir. Sonuç, sözleşmenin vade tarihindeki dayanak varlığın kapanış fiyatından okunur: Bir call opsiyonu, kapanış fiyatı kullanım fiyatının üzerinde olduğunda kârda (in the money) sayılır; put opsiyonu ise kapanış fiyatı kullanım fiyatının altında olduğunda kârda sayılır. Gerçek uzlaşma, kapanıştan sonra bir kullanım kararı ile gerçekleşir; bu nedenle kullanım fiyatına çok yakın seviyelerde kapanan sözleşmeler bu basitleştirmeye göre uzlaşabilir. Bu panellerdeki her sözleşmenin vadesi dolmuştur ve daha uzun vadeli gruplar zorunlu olarak pencere içindeki daha erken gözlem tarihlerinden beslenir. Gözlem tarihi ile vade tarihi arasında gerçekleşen bir hisse bölünmesi, kullanım fiyatı ile uzlaşma fiyatını farklı ölçeklere taşıyacağından, her grubun kendi örneklem sayısını taşımasının bir diğer nedeni de budur.
Delta, gerçek dünya olasılığından ziyade riskten arındırılmış bir olasılığı yaklaşık olarak hesaplar. İkisi arasındaki fark, opsiyon fiyatlarına gömülü risk priminden kaynaklanır ve kalibrasyon tablosu, bu farkı varsayımlarla yok saymak yerine ölçen araçtır.
SSS
Daha düşük bir Brier skoru daha mı iyidir?
Evet. Brier skoru bir hata ölçümüdür; bu nedenle sıfır mükemmel bir kaydı, bir ise gerçekleşmeyen her şeye yüzde yüz olasılık vererek elde edilen en kötü sonucu temsil eder. Sıfır virgül yirmi beşin altındaki her değer, her soruya yüzde elli yanıtı vererek elde edeceğiniz skordan daha iyidir.
İyi bir Brier skoru nedir?
Skor soruların zorluk derecesine bağlı olduğundan, evrensel olarak kabul görmüş iyi bir sayı yoktur. Yarın yağmur yağacağına dair sıfır virgül on skor alan bir hava durumu tahmincisi ile çekişmeli seçimler üzerine sıfır virgül on sekiz skor alan bir siyasi tahminci birbiriyle kıyaslanamaz. Skorları yalnızca aynı zaman diliminde aynı soruları yanıtlayan tahminciler arasında karşılaştırın.
Sıfır virgül yirmi beş Brier skoru ne anlama gelir?
Bu, her şeye yüzde elli olasılık veren bir tahmincinin skorudur; çünkü sonuç ne olursa olsun, karesi alınan her sapma sıfır virgül yirmi beş eder. Bu, evet veya hayır sorularından oluşan bir set için standart bilgi içermeyen kıyaslama noktasıdır; ancak dengesiz bir soru setinde kıyaslama noktası olarak temel oranın kullanılması gerekir.
Brier skoru, log skorundan nasıl farklıdır?
Her ikisi de uygun skorlama kurallarıdır; yani her biri, gerçekten inandığınız olasılığı belirttiğinizde minimize edilir. Brier, sapmanın karesini alır ve sıfır ile bir arasında kalır. Log skoru, kendinden emin olunan ancak hatalı tahminleri çok daha ağır cezalandırır; gerçekleşen bir olaya sıfır yüzde olasılık verilmesi sonsuz maliyet doğurur.
Opsiyon deltası bir olasılık olarak okunabilir mi?
Deltanın mutlak değeri, opsiyonun kârda (in the money) kapanacağına dair piyasanın zımni olasılığına yakındır ve bu gerçek dünyadaki bir olasılıktan ziyade riskten arındırılmış bir olasılıktır. Yukarıdaki paneller bunu bir tahmin olarak derecelendirir: bir eksende belirtilen delta, diğer eksende ise bu sözleşmelerden fiilen kârda kapananların oranı yer alır.
Buradaki her panel, altında yer alan SQL koduyla birlikte sunulmaktadır; böylece derecelendirme satır satır denetlenebilir. Kendi tahmin günlüğünüzü aynı sorular üzerinde piyasanınkiyle kıyaslamak için Strasmore terminalinden verileri yalın bir dille talep edin.