Cara Mengira Brier Score Untuk Menilai Ramalan
Skor Brier menilai ketepatan ramalan kebarangkalian sebagai ralat kuasa dua min berbanding hasil sebenar. Nilai lebih rendah adalah lebih baik, dengan sifar ialah skor sempurna.
Skor Brier dan Ketepatan Ramalan
Skor Brier menilai ramalan kebarangkalian berdasarkan apa yang benar-benar berlaku. Ambil kebarangkalian yang anda nyatakan, tolak dengan hasil sebenar (1 jika peristiwa itu berlaku, 0 jika tidak), kuasa duakan perbezaan tersebut, kemudian puratakan nilai kuasa dua itu bagi setiap ramalan yang anda buat. Nilai yang lebih rendah adalah lebih baik: 0 merupakan rekod yang sempurna, dan 0.25 ialah skor yang anda peroleh dengan menyatakan "50%" bagi setiap perkara.
Apakah itu Brier score?
Ramalan adalah tuntutan mengenai kebarangkalian, dan satu kebarangkalian tidak boleh dianggap betul atau salah secara sendirian. Anda menyatakan sesuatu mempunyai tiga puluh peratus kemungkinan dan ia berlaku. Adakah anda salah? Belum lagi. Glenn Brier, yang menulis untuk peramal cuaca pada tahun 1950, mengatasi masalah itu dengan menolak untuk menilai mana-mana ramalan tunggal. Skor ini menilai keseluruhan log ramalan sekaligus.
Berikut adalah log rekaan bagi sepuluh ramalan. Tiada satu pun nombor ini datang daripada pasaran; ia dicipta untuk menunjukkan pengiraan aritmetik tersebut.
- 90% dinyatakan, peristiwa berlaku. Kesilapan kuasa dua 0.01.
- 80% dinyatakan, berlaku. 0.04.
- 70% dinyatakan, tidak berlaku. 0.49.
- 60% dinyatakan, berlaku. 0.16.
- 50% dinyatakan, tidak berlaku. 0.25.
- 40% dinyatakan, tidak berlaku. 0.16.
- 30% dinyatakan, berlaku. 0.49.
- 20% dinyatakan, tidak berlaku. 0.04.
- 10% dinyatakan, tidak berlaku. 0.01.
- 95% dinyatakan, berlaku. 0.0025.
Sepuluh kesilapan kuasa dua tersebut dijumlahkan menjadi 1.6525. Bahagikan dengan sepuluh dan Brier score adalah 0.165. Itulah keseluruhan pengiraannya, dan ia berjalan dalam python3 yang sudah tersedia pada mana-mana mesin Mac atau Linux. Tiada apa yang perlu dipasang, tiada pustaka diperlukan.
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
Mengapa 0.25 ialah angka yang perlu diatasi
Katakan lima puluh peratus bagi setiap perkara dan setiap kesilapan kuasa dua ialah 0.25, walau apa pun yang berlaku. Angka 0.25 tetap itu ialah penanda aras tanpa maklumat bagi mana-mana set soalan ya atau tidak, dan skor kemahiran menukarkannya kepada satu angka: satu tolak skor anda dibahagikan dengan penanda aras tersebut. Log rekaan pada 0.165 menghasilkan skor kemahiran sebanyak 0.34.
Satu amaran membatalkan banyak sistem pemarkahan yang buruk. Jika peristiwa yang anda gredkan hanya berlaku sepuluh peratus daripada masa tersebut, menyatakan sepuluh peratus rata setiap kali akan mendapat skor 0.09 walaupun tidak mengetahui apa-apa langsung tentang soalan individu. Skor di bawah 0.25 bukanlah bukti kemahiran pada set soalan yang tidak seimbang. Penanda aras yang jujur ialah kadar asas bagi soalan yang sebenarnya anda jawab.
Penentukuran dan keyakinan dinilai bersama
Penentukuran bermaksud daripada semua perkara yang anda ramalkan pada tahap 70%, hampir 70% daripadanya benar-benar berlaku. Keyakinan, yang dipanggil resolusi oleh ahli statistik, ialah sejauh mana anda sanggup beralih daripada kadar asas apabila anda mengetahui sesuatu perkara. Seorang peramal yang menyatakan 50% bagi setiap soalan adalah tertentukur dengan sempurna tetapi tidak berguna sama sekali, dan skor Brier menilai kedua-dua sifat ini serentak: penentukuran yang salah akan meningkatkan skor tersebut, manakala keyakinan yang berasas akan menurunkannya.
Mengumpulkan log ramalan mengikut kebarangkalian yang dinyatakan menunjukkan rupa bentuk pemeriksaan penentukuran. Dalam Python, ini adalah satu baris bagi setiap kumpulan, hits = [o for p, o in rows if p >= 0.8], kemudian purata bagi hits.
- 10% hingga 30% dinyatakan, purata 20%: 1 daripada 3 berlaku, 33%.
- 40% hingga 50% dinyatakan, purata 45%: 0 daripada 2 berlaku, 0%.
- 60% hingga 70% dinyatakan, purata 65%: 1 daripada 2 berlaku, 50%.
- 80% hingga 95% dinyatakan, purata 88%: 3 daripada 3 berlaku, 100%.
Sepuluh ramalan tidak mencukupi untuk membuat sebarang kesimpulan daripada kumpulan tersebut. Penentukuran memerlukan ratusan soalan yang telah selesai bagi setiap kumpulan. Bahagian seterusnya halaman ini menggunakan log ramalan yang mengandungi berjuta-juta data.
Menilai ramalan pasaran itu sendiri
Setiap opsyen tersenarai membawa angka yang bertindak seperti kebarangkalian yang dinyatakan. Delta mengukur sejauh mana harga opsyen berubah bagi setiap pergerakan satu dolar dalam saham asas, dan bagi kontrak yang berakhir sama ada in the money (mempunyai nilai pada tarikh luput) atau tidak bernilai, nilai mutlak delta berada hampir dengan kebarangkalian tersirat pasaran bahawa ia akan berakhir in the money. Ia terhasil daripada permukaan yang sama yang menetapkan volatiliti tersirat AAPL. Setiap kontrak akan luput, jadi setiap ramalan tersebut akan dinilai.
Panel di bawah mengambil setiap opsyen SPY yang diperhatikan kira-kira sebulan sebelum tarikh luput, dari Januari 2025 hingga Mei 2026, mengumpulkan kesemuanya mengikut delta yang dinyatakan, dan mengira kekerapan kontrak tersebut berakhir in the money.
SQL tepat di sebalik setiap nombor
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 bucketBandingkan kedua-dua siri tersebut. Dalam kumpulan terendah, pasaran menyatakan purata 5.2% dan kontrak tersebut berakhir in the money sebanyak 3.7% daripada jumlah keseluruhan. Dalam kumpulan tertinggi, 94% yang dinyatakan hadir dengan 96.5% berakhir in the money. Merentasi kesemua 10 kumpulan, kekerapan yang direalisasikan berada dalam julat yang sama dengan apa yang dinyatakan. Itulah tugas utama jadual penentukuran: ia mendedahkan jurang antara apa yang dikatakan oleh peramal dan apa yang sebenarnya berlaku, kumpulan demi kumpulan, dan bukannya menyembunyikannya di dalam satu purata tunggal.
Adakah pasaran mengatasi lambungan syiling?
Sekarang, skor itu sendiri. Dengan pembinaan yang sama, beberapa nama yang dikenali ramai, skor Brier bagi setiap nama diletakkan bersebelahan dengan garis dasar rata lima puluh peratus yang dikira ke atas kontrak yang sama persis.
SQL tepat di sebalik setiap nombor
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_brierSkor NVDA adalah 0.1122 bagi 28.54 thousand kontrak yang dinilai, berbanding garis dasar rata sebanyak 0.25 pada set yang sama. Nama yang paling lemah antara 6 nama tersebut, iaitu SPY, masih berada pada tahap 0.1375. Opsyen bukanlah magis di sini. Kontrak yang jauh di luar wang (deep out of the money) membawa delta hampir 0.02 dan kebanyakannya luput tanpa nilai, yang merupakan ramalan mudah untuk ditepatkan, dan kemudahan itu telah diserap ke dalam angka tersebut. Itulah sebab utama skor Brier yang dipetik secara sendirian tidak memberikan sebarang makna.
Peramal yang sama mencatatkan skor berbeza bagi soalan yang berbeza
Bahagikan kaedah yang sama mengikut tempoh masa soalan tersebut diselesaikan dan lihat bagaimana skor berubah di bawahnya.
SQL tepat di sebalik setiap nombor
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_rankDelta pasaran mencatatkan skor 0.1084 pada kontrak dengan tempoh matang 1 to 7 days dan 0.1218 pada kontrak dengan tempoh matang 121 to 250 days. Peramal yang sama, kaedah yang sama, dua set soalan yang berbeza. Garis dasar rata lima puluh peratus berada pada 0.25 dalam baris pertama dan 0.25 dalam baris terakhir, yang menjadikannya satu-satunya rujukan tetap merentas setiap tempoh. Sebarang perbandingan antara dua peramal perlu dilakukan ke atas soalan yang sama dalam tempoh masa yang sama, atau ia sebenarnya membandingkan tahap kesukaran soalan dan bukannya kemahiran.
Mengapa peraturan pemarkahan yang tepat adalah penting
Mean absolute error, iaitu purata jarak mudah antara kebarangkalian anda dan hasil sebenar, kedengaran seperti alternatif yang munasabah tetapi ia memberikan gred yang buruk. Andaikan anda benar-benar percaya sesuatu peristiwa mempunyai kemungkinan tujuh puluh peratus. Nyatakan tujuh puluh peratus dan ralat mutlak jangkaan anda ialah 0.7 x 0.3 + 0.3 x 0.7 = 0.42. Nyatakan seratus peratus sebaliknya dan ia jatuh kepada 0.7 x 0 + 0.3 x 1 = 0.30. Di bawah ralat mutlak, angka yang jujur merugikan anda, dan metrik yang memberi ganjaran kerana melebih-lebihkan keyakinan bukanlah cara mengukur ramalan.
Brier score tidak mempunyai kelemahan sedemikian. Percayai tujuh puluh peratus dan nyatakan tujuh puluh peratus, maka skor jangkaan anda ialah 0.7 x 0.09 + 0.3 x 0.49 = 0.21. Nyatakan seratus peratus dan ia meningkat kepada 0.30. Nyatakan enam puluh peratus dan ia meningkat kepada 0.22. Nilai minimum terletak tepat pada angka yang anda percayai. Peraturan dengan sifat tersebut dipanggil sebagai tepat (proper), dan itulah sebabnya Brier menjadi pilihan utama dalam kejohanan ramalan.
Log score ialah satu lagi peraturan tepat yang biasa digunakan: ambil logaritma semula jadi bagi kebarangkalian yang anda tetapkan kepada hasil yang berlaku, kemudian terbalikkan tandanya. Menyatakan satu peratus pada sesuatu yang berlaku menelan kos 4.6, dan menyatakan sifar peratus menelan kos infiniti. Bagi sepuluh ramalan yang dibuat-buat, log score berjumlah 0.483 berbanding 0.693 untuk garis dasar rata. Brier kekal antara 0 dan 1, yang lebih mudah dibaca sebagai kad skor. Log score tidak mempunyai had, yang sesuai untuk penggredan di mana risiko tertumpu pada bahagian ekor taburan.
Implikasi terhadap kontrak acara
Kontrak acara yang membayar $1 jika sesuatu berlaku dan $0 jika tidak, didagangkan pada harga yang sudah pun menyatakan kebarangkalian. Enam puluh dua sen adalah ramalan 62%, sebelum spread dan yuran ditolak. Panduan kami mengenai harga kontrak acara sebagai kebarangkalian merangkumi penukaran tersebut, dan cara kontrak acara diselesaikan merangkumi maksud "ia berlaku" mengikut terma kontrak itu sendiri.
Harga tersebut merupakan ramalan dengan rekod prestasi awam dan tarikh penyelesaian, yang menjadikannya penanda aras yang perlu diatasi oleh log anda sendiri. Nilai ramalan anda berdasarkan soalan yang sama dalam tempoh masa yang sama. Pedagang yang skor Brier-nya lebih tinggi daripada harga tersebut tidak mempunyai kelebihan yang terukur pada set soalan itu, tidak kira betapa baik naratif yang dikaitkan dengan dagangan tersebut. Ujian yang sama boleh digunakan pada odds sukan sebaik sahaja anda membuang vig daripada odds pertaruhan, dan pada pasaran kadar, di mana odds kadar Fed memberikan anda kebarangkalian bertarikh untuk soalan dengan hari penyelesaian yang diketahui.
Cara panel ini menggred pasaran
Delta diperoleh daripada rekod greeks opsyen harian bagi setiap kontrak. Hanya kontrak yang mempunyai volum pada hari pemerhatian dan penyelesaian volatiliti yang menumpu sahaja disertakan. Hasilnya dibaca daripada harga tutup aset asas pada tarikh luput kontrak: call dikira sebagai in the money apabila harga tutup tersebut berada di atas strike, manakala put apabila ia berada di bawah. Penyelesaian sebenar dijalankan melalui keputusan pelaksanaan selepas waktu tutup, jadi kontrak yang berada dalam lingkungan beberapa sen daripada strike boleh diselesaikan berdasarkan penyelarasan ini. Setiap kontrak dalam panel ini telah pun luput, dan baldi tempoh yang lebih panjang semestinya diambil daripada tarikh pemerhatian yang lebih awal dalam tempoh tersebut. Pecahan saham yang berlaku antara tarikh pemerhatian dan tarikh luput akan menyebabkan strike dan harga penyelesaian berada pada skala yang berbeza, satu lagi sebab setiap baldi membawa kiraan sampelnya sendiri.
Delta menganggarkan kebarangkalian neutral risiko dan bukannya kebarangkalian dunia sebenar. Kedua-duanya berbeza mengikut premium risiko yang terbenam dalam harga opsyen, dan jadual penentukuran ialah instrumen yang mengukur perbezaan tersebut dan bukannya menganggap ia tidak wujud.
Soalan Lazim
Adakah Brier score yang lebih rendah lebih baik?
Ya. Brier score ialah ukuran ralat, jadi 0 adalah rekod yang sempurna dan 1 adalah yang paling buruk, yang diperoleh dengan menyatakan 100% pada setiap perkara yang tidak berlaku. Sebarang skor di bawah 0.25 adalah lebih baik daripada skor yang anda peroleh dengan menjawab 50% bagi setiap soalan.
Apakah Brier score yang dianggap baik?
Tiada nombor baik yang universal, kerana skor bergantung pada tahap kesukaran soalan tersebut. Peramal cuaca dengan skor 0.10 bagi ramalan hujan esok dan peramal politik dengan skor 0.18 bagi pilihan raya yang sengit tidak boleh dibandingkan antara satu sama lain. Bandingkan skor hanya antara peramal yang menjawab soalan yang sama dalam tempoh masa yang sama.
Apakah maksud Brier score 0.25?
Ia adalah skor bagi peramal yang menyatakan 50% bagi segala-galanya, kerana setiap kesilapan yang dikuasaduakan adalah 0.25 tidak kira apa pun hasilnya. Ia merupakan penanda aras tanpa maklumat yang standard bagi set soalan ya atau tidak, walaupun set soalan yang tidak seimbang memerlukan kadar asas sebagai penanda arasnya.
Bagaimanakah Brier score berbeza daripada log score?
Kedua-duanya adalah peraturan pemarkahan yang wajar, bermakna setiap satunya diminimumkan apabila anda menyatakan kebarangkalian yang anda benar-benar percayai. Brier mengkuasaduakan kesilapan dan kekal antara 0 dan 1. Log score menghukum kesilapan yang dilakukan dengan penuh keyakinan dengan lebih berat, dan pernyataan 0% pada sesuatu yang akhirnya berlaku akan menelan kos infiniti.
Bolehkah option delta dibaca sebagai kebarangkalian?
Nilai mutlak delta berada hampir dengan kebarangkalian tersirat pasaran bahawa opsyen tersebut tamat dalam keadaan in the money, dan ia merupakan kebarangkalian neutral risiko dan bukannya kebarangkalian dunia sebenar. Panel di atas menilainya sebagai ramalan: delta yang dinyatakan pada satu paksi, dan bahagian kontrak yang sebenarnya tamat in the money pada paksi yang lain.
Setiap panel di sini disertakan dengan SQL tepat di bawahnya, jadi penggredan boleh diaudit baris demi baris. Untuk memarkahkan log ramalan anda sendiri berbanding ramalan pasaran bagi soalan yang sama, minta nombor tersebut dalam bahasa Inggeris yang mudah di terminal Strasmore.