Điểm Brier: Chấm điểm dự báo thế nào
Điểm Brier đo dự báo xác suất bằng sai số bình phương trung bình so với kết quả thực tế. Điểm càng thấp càng tốt; luôn nói 50% sẽ được 0,25.
Điểm Brier đánh giá một dự báo xác suất dựa trên kết quả thực tế. Lấy xác suất bạn đã nêu, trừ đi kết quả (1 nếu sự kiện xảy ra, 0 nếu không xảy ra), bình phương chênh lệch đó, rồi tính trung bình các bình phương qua tất cả dự báo bạn đã đưa ra. Điểm càng thấp càng tốt: 0 là thành tích hoàn hảo, còn 0,25 là điểm bạn nhận được nếu luôn nói “50%” cho mọi sự kiện.
Điểm Brier là gì?
Một dự báo là một nhận định về xác suất. Bản thân một xác suất không thể được xem là đúng hay sai. Bạn cho rằng một sự kiện có khả năng xảy ra 30%, và sự kiện đó đã xảy ra. Bạn có dự báo sai không? Chưa thể kết luận. Glenn Brier đã viết về vấn đề này cho các chuyên gia dự báo thời tiết vào năm 1950. Ông không chấm điểm từng dự báo riêng lẻ. Thay vào đó, điểm số được tính cho toàn bộ nhật ký dự báo cùng lúc.
Dưới đây là một nhật ký giả định gồm mười dự báo. Không có con số nào lấy từ thị trường. Các con số chỉ được tạo ra để minh họa phép tính.
- Nêu xác suất 90%, sự kiện đã xảy ra. Sai số bình phương là 0.01.
- Nêu xác suất 80%, sự kiện đã xảy ra. Sai số là 0.04.
- Nêu xác suất 70%, sự kiện không xảy ra. Sai số là 0.49.
- Nêu xác suất 60%, sự kiện đã xảy ra. Sai số là 0.16.
- Nêu xác suất 50%, sự kiện không xảy ra. Sai số là 0.25.
- Nêu xác suất 40%, sự kiện không xảy ra. Sai số là 0.16.
- Nêu xác suất 30%, sự kiện đã xảy ra. Sai số là 0.49.
- Nêu xác suất 20%, sự kiện không xảy ra. Sai số là 0.04.
- Nêu xác suất 10%, sự kiện không xảy ra. Sai số là 0.01.
- Nêu xác suất 95%, sự kiện đã xảy ra. Sai số là 0.0025.
Tổng mười sai số bình phương là 1.6525. Chia cho mười, ta có điểm Brier là 0.165. Đó là toàn bộ phép tính. Bạn có thể chạy phép tính này bằng python3, vốn đã được cài sẵn trên mọi máy Mac hoặc Linux. Không cần cài đặt thêm thư viện hay phần mềm nào.
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))các giao dịch đã thực hiện0.165 0.25.
Vì sao 0,25 là mức cần vượt qua
Giả sử xác suất cho mọi sự kiện đều là 50%, thì bình phương sai số luôn bằng 0,25, bất kể kết quả thực tế ra sao. Mức 0,25 cố định này là chuẩn không có thông tin cho bất kỳ tập hợp câu hỏi có/không nào. Skill score chuyển kết quả đó thành một con số: lấy 1 trừ đi điểm của bạn chia cho điểm chuẩn. Nhật ký giả định có điểm 0,165 tương ứng với skill score là 0,34.
Có một điểm cần lưu ý để tránh nhiều cách chấm điểm sai. Nếu các sự kiện được đánh giá chỉ xảy ra 10% số lần, việc luôn đưa ra xác suất cố định 10% sẽ cho điểm 0,09, dù bạn hoàn toàn không biết gì về từng câu hỏi. Điểm dưới 0,25 không phải bằng chứng cho thấy bạn có kỹ năng khi tập câu hỏi có xác suất xảy ra không cân xứng. Chuẩn trung thực phải là tỷ lệ cơ sở của chính những câu hỏi bạn đã trả lời.
Hiệu chuẩn và độ tin cậy được đánh giá đồng thời
Hiệu chuẩn nghĩa là trong tất cả những dự báo bạn gán xác suất 70%, gần 70% trong số đó thực sự xảy ra. Độ tin cậy, mà các nhà thống kê gọi là resolution, cho biết bạn sẵn sàng lệch bao xa khỏi xác suất cơ sở khi có thêm thông tin. Một người dự báo trả lời 50% cho mọi câu hỏi sẽ có hiệu chuẩn hoàn hảo nhưng hoàn toàn vô dụng. Brier score đánh giá cả hai đặc tính cùng lúc: hiệu chuẩn kém làm điểm số tăng, còn độ tin cậy có cơ sở giúp điểm số giảm.
Phân nhóm log giả lập theo xác suất đã nêu cho thấy một phép kiểm tra hiệu chuẩn diễn ra như thế nào. Trong Python, mỗi nhóm có một dòng, hits = [o for p, o in rows if p >= 0.8], sau đó là giá trị trung bình của hits.
- Xác suất nêu từ 10% đến 30%, trung bình 20%: 1 trong 3 trường hợp xảy ra, tương đương 33%.
- Xác suất nêu từ 40% đến 50%, trung bình 45%: 0 trong 2 trường hợp xảy ra, tương đương 0%.
- Xác suất nêu từ 60% đến 70%, trung bình 65%: 1 trong 2 trường hợp xảy ra, tương đương 50%.
- Xác suất nêu từ 80% đến 95%, trung bình 88%: 3 trong 3 trường hợp xảy ra, tương đương 100%.
Mười dự báo là chưa đủ để rút ra bất kỳ kết luận nào từ các nhóm đó. Phép kiểm tra hiệu chuẩn cần hàng trăm câu hỏi đã có kết quả trong mỗi nhóm. Phần còn lại của trang này sử dụng một log dự báo gồm hàng triệu câu hỏi.
Đánh giá dự báo của chính thị trường
Mỗi quyền chọn niêm yết đều có một con số hoạt động như một xác suất được công bố. Delta đo mức thay đổi của giá quyền chọn khi cổ phiếu cơ sở thay đổi một dollar. Với một hợp đồng hoặc kết thúc ở trạng thái có lãi (có giá trị khi đáo hạn), hoặc trở nên vô giá trị, giá trị tuyệt đối của delta thường gần với xác suất do thị trường hàm ý rằng hợp đồng sẽ kết thúc ở trạng thái có lãi. Chỉ báo này được tính từ cùng một bề mặt biến động ngụ ý với biến động ngụ ý của AAPL. Mọi hợp đồng đều đáo hạn, nên mọi dự báo đó đều được kiểm chứng.
Biểu đồ dưới đây lấy toàn bộ quyền chọn SPY được quan sát khoảng một tháng trước khi đáo hạn, trong giai đoạn từ tháng 1 năm 2025 đến tháng 5 năm 2026, phân nhóm theo delta được công bố và đếm số lần hợp đồng kết thúc ở trạng thái có lãi.
Câu lệnh SQL chính xác đằng sau mỗi con số
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 bucketHãy đối chiếu hai chuỗi dữ liệu. Ở nhóm thấp nhất, thị trường đưa ra mức trung bình 5.2%, trong khi các hợp đồng đó kết thúc ở trạng thái có lãi 3.7% số lần. Ở nhóm cao nhất, mức 94% được công bố đi kèm với tỷ lệ 96.5% hợp đồng kết thúc ở trạng thái có lãi. Trên toàn bộ 10 nhóm, tần suất thực tế nằm trong cùng khoảng với mức được công bố. Đó là mục đích của bảng calibration: cho thấy chênh lệch giữa điều mà một bên dự báo nói ra và điều thực sự xảy ra, theo từng nhóm, thay vì che khuất chênh lệch đó trong một mức trung bình duy nhất.
Thị trường có thắng được một lần tung đồng xu?
Tiếp theo là chính điểm số. Cùng một phương pháp tính, một số tên tuổi quen thuộc, với Brier score của từng tên được đặt cạnh baseline cố định 50%, tính trên đúng cùng các hợp đồng.
Câu lệnh SQL chính xác đằng sau mỗi con số
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 ghi nhận điểm số 0.1122 trên 28.54 thousand hợp đồng được chấm điểm, so với mức 0.25 của baseline cố định trên cùng tập hợp. Trong số 6 tên tuổi, cái yếu nhất là SPY, vẫn đạt 0.1375. Quyền chọn không có gì thần kỳ ở đây. Các hợp đồng deep out-of-the-money có delta gần 0.02 và phần lớn đáo hạn vô giá trị. Đây là một dự báo tương đối dễ đưa ra, và mức độ dễ này đã được phản ánh trong con số. Đó là lý do chính khiến một Brier score được trích dẫn riêng lẻ gần như không cho bạn biết điều gì.
Cùng một nhà dự báo có điểm số khác nhau tùy câu hỏi
Tách cùng một phương pháp theo thời điểm câu hỏi được giải đáp, và điểm số sẽ thay đổi theo từng nhóm.
Câu lệnh SQL chính xác đằng sau mỗi con số
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 của thị trường đạt 0.1084 trên các hợp đồng còn 1 to 7 days và 0.1218 trên các hợp đồng còn 121 to 250 days. Cùng một nhà dự báo, cùng một phương pháp, nhưng áp dụng cho hai nhóm câu hỏi khác nhau. Mức cơ sở cố định 50% nằm ở 0.25 trong hàng đầu tiên và 0.25 trong hàng cuối cùng. Vì vậy, đây là mốc tham chiếu duy nhất không đổi qua mọi khung thời gian. Mọi so sánh giữa hai nhà dự báo phải dựa trên cùng các câu hỏi trong cùng một khoảng thời gian. Nếu không, phép so sánh sẽ phản ánh độ khó của câu hỏi thay vì năng lực dự báo.
Vì sao các quy tắc chấm điểm đúng đắn quan trọng
Sai số tuyệt đối trung bình, tức khoảng cách tuyệt đối trung bình giữa xác suất bạn đưa ra và kết quả thực tế, thoạt nghe có vẻ là một lựa chọn hợp lý nhưng lại chấm điểm rất tệ. Giả sử bạn thực sự tin rằng một sự kiện có xác suất xảy ra là 70%. Nếu đưa ra mức 70%, sai số tuyệt đối kỳ vọng của bạn là 0.7 x 0.3 + 0.3 x 0.7 = 0.42. Nếu đưa ra mức 100%, sai số này giảm còn 0.7 x 0 + 0.3 x 1 = 0.30. Theo sai số tuyệt đối, con số trung thực lại khiến bạn chịu thiệt. Một thước đo khuyến khích bạn phóng đại mức độ chắc chắn thì không đo lường đúng chất lượng dự báo.
Brier score không có điểm yếu này. Nếu tin rằng xác suất là 70% và đưa ra mức 70%, điểm số kỳ vọng là 0.7 x 0.09 + 0.3 x 0.49 = 0.21. Nếu đưa ra mức 100%, điểm số tăng lên 0.30. Nếu đưa ra mức 60%, điểm số tăng lên 0.22. Mức thấp nhất nằm đúng tại con số bạn tin là đúng. Một quy tắc có tính chất này được gọi là quy tắc đúng đắn (proper). Đây là lý do Brier score trở thành tiêu chuẩn mặc định trong các cuộc thi dự báo.
Log score là quy tắc đúng đắn phổ biến còn lại. Cách tính là lấy log tự nhiên của xác suất bạn gán cho kết quả đã xảy ra, rồi đổi dấu. Nếu gán xác suất 1% cho một sự kiện nhưng sự kiện đó xảy ra, chi phí là 4.6; nếu gán 0%, chi phí là vô cực. Trong bộ mười dự báo giả định, log score đạt 0.483, so với 0.693 của đường cơ sở cố định. Brier score luôn nằm trong khoảng từ 0 đến 1, nên phù hợp hơn với cách trình bày dạng bảng điểm. Log score không bị giới hạn trên, phù hợp với việc chấm điểm trong đó các kết quả ở phần đuôi phân phối chứa đựng rủi ro.
Điều này có ý nghĩa gì đối với event contract
Một event contract trả $1 nếu một sự kiện xảy ra và $0 nếu không xảy ra sẽ giao dịch ở mức giá đã thể hiện một xác suất. Mức giá 62 cent tương ứng với dự báo 62%, trước khi loại trừ spread và phí. Hướng dẫn của chúng tôi về giá event contract dưới dạng xác suất trình bày cách quy đổi này. Bài viết về cách event contract được tất toán giải thích ý nghĩa của việc “sự kiện đã xảy ra” theo chính ngôn ngữ của hợp đồng.
Mức giá đó là một dự báo có lịch sử công khai và ngày tất toán cụ thể. Vì vậy, đây là benchmark mà nhật ký dự báo của bạn phải vượt qua. Hãy chấm điểm các dự báo cho cùng nhóm câu hỏi trong cùng một khoảng thời gian. Nếu Brier score của một trader cao hơn Brier score hàm ý từ mức giá, trader đó không có lợi thế được đo lường trên nhóm câu hỏi này, bất kể câu chuyện đi kèm giao dịch có thuyết phục đến đâu. Có thể áp dụng cùng phép kiểm định này cho odds thể thao sau khi bạn loại vig khỏi betting odds, cũng như cho các thị trường lãi suất, nơi odds lãi suất Fed cung cấp xác suất theo một ngày cụ thể cho câu hỏi có ngày xác định kết quả.
Cách các bảng này đánh giá thị trường
Delta được lấy từ dữ liệu daily options greeks của từng hợp đồng. Chỉ những hợp đồng có volume trong ngày quan sát và có kết quả tính volatility hội tụ mới được đưa vào. Kết quả được xác định từ mức đóng cửa của tài sản cơ sở vào ngày expiration của hợp đồng: call được xem là in the money khi mức đóng cửa cao hơn strike; put được xem là in the money khi mức đóng cửa thấp hơn strike. Việc tất toán thực tế được thực hiện thông qua quyết định exercise sau khi thị trường đóng cửa. Vì vậy, các hợp đồng chỉ cách strike vài cent có thể được tất toán khác với cách đơn giản hóa này. Tất cả hợp đồng trong các bảng này đã hết hạn. Các nhóm kỳ hạn dài hơn tất yếu sử dụng những ngày quan sát sớm hơn trong khoảng thời gian được xét. Nếu xảy ra stock split giữa ngày quan sát và ngày expiration, strike và giá tất toán sẽ được thể hiện trên hai thang đo khác nhau. Đây là thêm một lý do khiến mỗi nhóm đều kèm theo số lượng mẫu.
Delta xấp xỉ xác suất trung lập với rủi ro, không phải xác suất trong thế giới thực. Hai loại xác suất này khác nhau do risk premium được tích hợp trong giá quyền chọn. Bảng calibration là công cụ đo lường khác biệt đó thay vì mặc định bỏ qua nó.
Câu hỏi thường gặp
Điểm Brier thấp hơn có tốt hơn không?
Có. Điểm Brier đo lường sai số, nên 0 là kết quả hoàn hảo còn 1 là mức tệ nhất. Mức 1 xảy ra khi dự báo 100% cho mọi sự kiện nhưng tất cả đều không xảy ra. Mọi điểm dưới 0,25 đều tốt hơn mức bạn nhận được nếu trả lời 50% cho mọi câu hỏi.
Điểm Brier bao nhiêu được xem là tốt?
Không có một mức tốt chung cho mọi trường hợp, vì điểm số phụ thuộc vào độ khó của các câu hỏi. Không thể xếp hạng một nhà dự báo thời tiết đạt 0,10 với dự báo mưa ngày mai và một nhà dự báo chính trị đạt 0,18 với các cuộc bầu cử sít sao. Chỉ nên so sánh điểm số giữa các nhà dự báo trả lời cùng một nhóm câu hỏi trong cùng một khoảng thời gian.
Điểm Brier 0,25 có ý nghĩa gì?
Đó là điểm của một nhà dự báo luôn đưa ra xác suất 50%, vì khi đó bình phương sai số luôn là 0,25, bất kể kết quả thực tế. Đây là mốc chuẩn không có thông tin đối với một tập hợp câu hỏi có hoặc không. Tuy nhiên, nếu tập câu hỏi có tỷ trọng kết quả chênh lệch, tỷ lệ cơ sở sẽ là mốc chuẩn phù hợp hơn.
Điểm Brier khác điểm log như thế nào?
Cả hai đều là quy tắc chấm điểm đúng. Điều này có nghĩa là điểm số được tối ưu khi bạn đưa ra đúng xác suất mà mình thực sự tin tưởng. Điểm Brier bình phương sai số và luôn nằm trong khoảng từ 0 đến 1. Điểm log phạt nặng hơn nhiều đối với các dự báo sai nhưng quá tự tin. Nếu đưa ra xác suất 0% cho một sự kiện thực tế xảy ra, mức phạt là vô hạn.
Có thể xem delta của quyền chọn là một xác suất không?
Giá trị tuyệt đối của delta gần với xác suất hàm ý của thị trường rằng quyền chọn sẽ kết thúc ở trạng thái có lãi (in the money). Đây là xác suất trung lập với rủi ro, không phải xác suất trong thế giới thực. Các biểu đồ trên chấm delta như một dự báo: delta được đưa ra nằm trên một trục, còn tỷ lệ hợp đồng thực tế kết thúc ở trạng thái có lãi nằm trên trục còn lại.
Mỗi biểu đồ tại đây đều đi kèm chính xác câu lệnh SQL bên dưới. Vì vậy, quy trình chấm điểm có thể được kiểm tra đến từng dòng. Để chấm nhật ký dự báo của bạn so với dự báo của thị trường trên cùng một nhóm câu hỏi, hãy yêu cầu các số liệu bằng tiếng Anh trên terminal Strasmore.