Strasmore Research
শেখা Matt Connorদ্বারা Matt Connor

Brier Score কীভাবে পূর্বাভাসের মান যাচাই করে

Brier score সম্ভাব্যতার পূর্বাভাসকে বাস্তব ফলাফলের সঙ্গে mean squared error হিসেবে মাপে। স্কোর যত কম, ফল তত ভালো; সবসময় 50% বললে স্কোর হয় 0.25।

Brier score সম্ভাব্যতার পূর্বাভাসকে বাস্তবে কী ঘটেছে তার সঙ্গে তুলনা করে মূল্যায়ন করে। আপনি যে সম্ভাব্যতা উল্লেখ করেছিলেন, তা থেকে ফলাফল বিয়োগ করুন—ঘটনা ঘটলে 1, না ঘটলে 0। এরপর ওই পার্থক্যের বর্গ নির্ণয় করুন এবং আপনার করা সব পূর্বাভাসের ক্ষেত্রে এই বর্গগুলোর গড় হিসাব করুন। স্কোর যত কম, ফল তত ভালো: 0 নিখুঁত রেকর্ড নির্দেশ করে। আর প্রতিটি বিষয়ে “50%” বললে যে স্কোর পাওয়া যায়, তা হলো 0.25।

Brier score কী?

পূর্বাভাস হলো সম্ভাব্যতা সম্পর্কে একটি দাবি। একটি সম্ভাব্যতা একা কখনও সঠিক বা ভুল হতে পারে না। আপনি কোনো ঘটনার সম্ভাবনা 30% বললেন, আর ঘটনাটি ঘটল। আপনি কি ভুল ছিলেন? এখনও বলা যায় না। আবহাওয়ার পূর্বাভাসদাতাদের জন্য 1950 সালে লেখা Glenn Brier-এর পদ্ধতি এই সমস্যার সমাধান করে। তিনি কোনো একক পূর্বাভাসের মূল্যায়ন না করে পুরো পূর্বাভাস-লগের একসঙ্গে স্কোর নির্ধারণ করেন।

এখানে 10টি পূর্বাভাসের একটি কাল্পনিক লগ দেওয়া হলো। কোনো সংখ্যাই বাজার থেকে নেওয়া নয়। শুধু হিসাবটি দেখানোর জন্য এগুলো তৈরি করা হয়েছে।

  • 90% বলা হয়েছিল, ঘটনাটি ঘটেছে। বর্গকৃত বিচ্যুতি 0.01।
  • 80% বলা হয়েছিল, ঘটনাটি ঘটেছে। 0.04।
  • 70% বলা হয়েছিল, ঘটনাটি ঘটেনি। 0.49।
  • 60% বলা হয়েছিল, ঘটনাটি ঘটেছে। 0.16।
  • 50% বলা হয়েছিল, ঘটনাটি ঘটেনি। 0.25।
  • 40% বলা হয়েছিল, ঘটনাটি ঘটেনি। 0.16।
  • 30% বলা হয়েছিল, ঘটনাটি ঘটেছে। 0.49।
  • 20% বলা হয়েছিল, ঘটনাটি ঘটেনি। 0.04।
  • 10% বলা হয়েছিল, ঘটনাটি ঘটেনি। 0.01।
  • 95% বলা হয়েছিল, ঘটনাটি ঘটেছে। 0.0025।

10টি বর্গকৃত বিচ্যোগের যোগফল 1.6525। এটিকে 10 দিয়ে ভাগ করলে Brier score হয় 0.165। এটাই পুরো হিসাব। যেকোনো Mac বা Linux মেশিনে আগে থেকেই থাকা python3-এ এই হিসাব চালানো যায়। কিছু ইনস্টল করতে হবে না। কোনো library-ও দরকার নেই।

  • 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)) executed trades 0.165 0.25

0.25 কেন অতিক্রম করার লক্ষ্য

সবকিছুর ক্ষেত্রে 50% সম্ভাবনা ধরে নিলে, ফল যা-ই হোক, প্রতিটি squared miss-এর মান হবে 0.25। এই নির্দিষ্ট 0.25 হলো যেকোনো yes-or-no প্রশ্নসমষ্টির জন্য no-information benchmark। Skill score এটিকে একটি সংখ্যায় রূপান্তর করে: 1 থেকে আপনার score-কে benchmark-এর score দিয়ে ভাগ করে পাওয়া অনুপাত বাদ দিতে হয়। 0.165-এর কাল্পনিক log থেকে skill score দাঁড়ায় 0.34।

একটি সতর্কতা ভুল scorekeeping-এর অনেক উদাহরণকে অকার্যকর করে দেয়। আপনি যে ঘটনাগুলোর পূর্বাভাস যাচাই করছেন, সেগুলো যদি মাত্র 10% ক্ষেত্রে ঘটে, তাহলে প্রতিবার 10% সম্ভাবনা উল্লেখ করলেও score হবে 0.09—যদিও পৃথক প্রশ্নগুলোর বিষয়ে আপনার কোনো জ্ঞানই না থাকে। প্রশ্নসমষ্টি যদি একদিকে বেশি ঝুঁকে থাকে, তাহলে 0.25-এর নিচের score দক্ষতার প্রমাণ নয়। সৎ benchmark হলো আপনি বাস্তবে যে প্রশ্নগুলোর উত্তর দিয়েছেন, সেগুলোর base rate।

ক্যালিব্রেশন ও আত্মবিশ্বাস একসঙ্গে মূল্যায়ন করা হয়

ক্যালিব্রেশন বলতে বোঝায়, আপনি যেসব পূর্বাভাসে 70% সম্ভাবনা বলেছেন, সেগুলোর কাছাকাছি 70% বাস্তবে ঘটছে কি না। পরিসংখ্যানবিদেরা যাকে resolution বলেন, confidence বা আত্মবিশ্বাস হলো কোনো তথ্য জানা থাকলে base rate থেকে আপনি কতটা সরে যেতে প্রস্তুত। একজন পূর্বাভাসদাতা প্রতিটি প্রশ্নে 50% বললে তিনি পুরোপুরি calibrated, কিন্তু সম্পূর্ণ অকার্যকর। Brier score দুটি বৈশিষ্ট্যই একসঙ্গে পরিমাপ করে: miscalibration হলে score বাড়ে, আর অর্জিত আত্মবিশ্বাস score কমায়।

stated probability অনুযায়ী তৈরি করা log-কে bucket-এ ভাগ করলে calibration check কেমন হয়, তা বোঝা যায়। Python-এ প্রতি bucket-এর জন্য একটি করে line থাকে, hits = [o for p, o in rows if p >= 0.8], তারপর hits-এর average নেওয়া হয়।

  • 10% থেকে 30% stated, average 20%: 3টির মধ্যে 1টি ঘটেছে, 33%।
  • 40% থেকে 50% stated, average 45%: 2টির মধ্যে 0টি ঘটেছে, 0%।
  • 60% থেকে 70% stated, average 65%: 2টির মধ্যে 1টি ঘটেছে, 50%।
  • 80% থেকে 95% stated, average 88%: 3টির মধ্যে 3টি ঘটেছে, 100%।

এই bucket-গুলো থেকে কিছু বোঝার জন্য 10টি পূর্বাভাস কোনোভাবেই যথেষ্ট নয়। প্রতি bucket-এ calibration যাচাই করতে শত শত resolved question প্রয়োজন। এই পৃষ্ঠার বাকি অংশে এমন একটি forecast log ব্যবহার করা হয়েছে, যাতে কয়েক মিলিয়ন পূর্বাভাস রয়েছে।

বাজারের নিজস্ব পূর্বাভাসের মূল্যায়ন

তালিকাভুক্ত প্রতিটি option-এর সঙ্গে এমন একটি সংখ্যা থাকে, যা ঘোষিত সম্ভাবনার মতো আচরণ করে। Delta দেখায়, অন্তর্নিহিত শেয়ারের দাম 1 ডলার পরিবর্তিত হলে option-এর দাম কতটা পরিবর্তিত হয়। কোনো contract মেয়াদপূর্তিতে in the money অবস্থায় শেষ হবে—অর্থাৎ যার তখন কিছু মূল্য থাকবে—নাকি মূল্যহীন হয়ে শেষ হবে, তা বিবেচনা করলে delta-এর পরম মান প্রায়ই in the money হওয়ার বাজার-নির্ধারিত সম্ভাবনার কাছাকাছি থাকে। এই মানটি AAPL-এর implied volatility নির্ধারণকারী একই volatility surface থেকে আসে। প্রতিটি contract-এর মেয়াদ শেষ হয়। তাই প্রতিটি পূর্বাভাসের কার্যকারিতা যাচাই করা যায়।

নিচের panel-এ January 2025 থেকে May 2026 পর্যন্ত মেয়াদপূর্তির প্রায় 1 মাস আগে পর্যবেক্ষণ করা প্রতিটি SPY option নেওয়া হয়েছে। সেগুলো ঘোষিত delta অনুযায়ী বিভিন্ন bucket-এ ভাগ করা হয়েছে। এরপর কতবার contract in the money অবস্থায় শেষ হয়েছে, তা গণনা করা হয়েছে।

কুয়েরি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
Run this yourself

দুটি series পাশাপাশি মিলিয়ে দেখুন। সর্বনিম্ন bucket-এ বাজার গড়ে 5.2% সম্ভাবনা দেখিয়েছিল। ওই contract-গুলো 3.7% ক্ষেত্রে in the money অবস্থায় শেষ হয়েছে। সর্বোচ্চ bucket-এ ঘোষিত 94% সম্ভাবনার বিপরীতে 96.5% contract in the money অবস্থায় শেষ হয়েছে। সব 10টি bucket জুড়ে বাস্তবে দেখা frequency ঘোষিত সম্ভাবনার কাছাকাছি রয়েছে। একটি calibration table-এর মূল কাজ এটাই: forecaster কী বলেছিল এবং বাস্তবে কী ঘটেছে, সেই ব্যবধান bucket ধরে প্রকাশ করা। একক গড়ের মধ্যে তা লুকিয়ে রাখা নয়।

বাজার কি মুদ্রা নিক্ষেপের চেয়ে ভালো ফল দেয়?

এবার স্কোরটি দেখা যাক। একই পদ্ধতিতে কয়েকটি বহুল পরিচিত নামের Brier score নির্ধারণ করা হয়েছে এবং ঠিক একই contract-এর ওপর হিসাব করা সমতল 50% baseline-এর পাশে রাখা হয়েছে।

কুয়েরিআন্ডারলাইং অনুযায়ী বাজারের ঘোষিত সম্ভাবনার Brier স্কোর
প্রতিটি সংখ্যার পেছনের সঠিক 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_brier
Run this yourself

অভিন্ন সেটের 28.54 thousandটি graded contract-এ NVDA-এর score হলো 0.1122, যেখানে সমতল baseline-এর score 0.256টি নামের মধ্যে সবচেয়ে দুর্বল, SPY, তবুও 0.1375-এ রয়েছে। এখানে options কোনো জাদুকরী সমাধান নয়। গভীরভাবে out-of-the-money contract-এর delta প্রায় 0.02 থাকে এবং সেগুলোর বেশিরভাগই মূল্যহীন অবস্থায় expire হয়। তাই সেগুলোর ফলাফল সঠিকভাবে অনুমান করা তুলনামূলক সহজ, এবং সেই সহজতার প্রভাব সংখ্যাটির মধ্যেই অন্তর্ভুক্ত থাকে। এটাই মূল কারণ যে একা উদ্ধৃত করা Brier score থেকে প্রায় কিছুই বোঝা যায় না।

একই পূর্বাভাসদাতা ভিন্ন প্রশ্নে ভিন্ন স্কোর পান

একই পদ্ধতিকে প্রশ্নের সমাধান হতে কতটা সময় বাকি তার ভিত্তিতে ভাগ করুন। সেই অনুযায়ী স্কোরও পরিবর্তিত হয়।

কুয়েরিমেয়াদপূরণের সময়সীমা জুড়ে বাজারের Brier স্কোর, 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
        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
Run this yourself

1 to 7 days মেয়াদি চুক্তিতে বাজারের delta ছিল 0.1084, আর 121 to 250 days মেয়াদি চুক্তিতে ছিল 0.1218। পূর্বাভাসদাতা এবং পদ্ধতি একই, কিন্তু প্রশ্নের দুটি সেট ভিন্ন। প্রথম সারিতে সমতল 50% baseline রয়েছে 0.25-এ, আর শেষ সারিতে রয়েছে 0.25-এ। তাই প্রতিটি time horizon-এ এটিই একমাত্র স্থির reference point। দুই পূর্বাভাসদাতার তুলনা করতে হলে একই সময়সীমায় একই প্রশ্নের ওপর তুলনা করতে হবে। তা না হলে দক্ষতার বদলে প্রশ্নের কঠিনতা তুলনা করা হবে।

প্রপের স্কোরিং রুল কেন গুরুত্বপূর্ণ

Mean absolute error—আপনার নির্ধারিত probability এবং প্রকৃত ফলাফলের মধ্যকার সরল দূরত্বের গড়—যুক্তিসঙ্গত বিকল্প বলে মনে হতে পারে, কিন্তু এটি পূর্বাভাসের মান খারাপভাবে পরিমাপ করে। ধরুন, আপনি সত্যিই বিশ্বাস করেন যে কোনো ঘটনার সম্ভাবনা 70%। 70% উল্লেখ করলে আপনার expected absolute error হবে 0.7 x 0.3 + 0.3 x 0.7 = 0.42। কিন্তু 100% উল্লেখ করলে তা কমে দাঁড়াবে 0.7 x 0 + 0.3 x 1 = 0.30। Absolute error ব্যবহারে সৎ অনুমান আপনাকে শাস্তি দেয়। আর যে metric অতিরিক্ত confidence দেখালে পুরস্কৃত করে, তা forecasting পরিমাপ করছে না।

Brier score-এ এই ত্রুটি নেই। আপনি যদি 70% বিশ্বাস করেন এবং 70% উল্লেখ করেন, আপনার expected score হবে 0.7 x 0.09 + 0.3 x 0.49 = 0.21। 100% উল্লেখ করলে তা বেড়ে 0.30 হবে। 60% উল্লেখ করলে তা বেড়ে 0.22 হবে। সর্বনিম্ন স্কোর ঠিক আপনার বিশ্বাসের সংখ্যাটির ওপর অবস্থান করে। যে rule-এর এই বৈশিষ্ট্য আছে, তাকে proper বলা হয়। এই কারণেই forecasting tournament-এ Brier default হয়ে উঠেছে।

Log score হলো আরেকটি প্রচলিত proper rule। যে ফলাফল ঘটেছে, তার জন্য আপনি যে probability নির্ধারণ করেছিলেন, তার natural log নিতে হয়। এরপর sign উল্টে দিতে হয়। কোনো ঘটনা ঘটার পর সেটির সম্ভাবনা 1% উল্লেখ করলে খরচ হবে 4.6। 0% উল্লেখ করলে খরচ হবে infinity। উদাহরণ হিসেবে তৈরি করা দশটি forecast-এ এর মান flat baseline-এর 0.693-এর বিপরীতে 0.483। Brier score 0 থেকে 1-এর মধ্যে থাকে, তাই scorecard হিসেবে এটি বেশি স্বাভাবিকভাবে বোঝা যায়। Log score-এর কোনো ঊর্ধ্বসীমা নেই। তাই tail outcome-এ ঝুঁকি বেশি থাকা grading-এর জন্য এটি উপযোগী।

ইভেন্ট কনট্র্যাক্টের ক্ষেত্রে এর অর্থ

কোনো ঘটনা ঘটলে $1 এবং না ঘটলে $0 প্রদান করে—এমন একটি event contract যে দামে লেনদেন হয়, সেই দামেই একটি সম্ভাব্যতার পূর্বাভাস অন্তর্ভুক্ত থাকে। Sixty two cents অর্থ 62% পূর্বাভাস, spread ও ফি বাদ দেওয়ার আগে। event contract-এর দামকে সম্ভাব্যতা হিসেবে বোঝার আমাদের গাইডে এই রূপান্তরটি ব্যাখ্যা করা হয়েছে। আর event contract কীভাবে নিষ্পত্তি হয় নিবন্ধে কনট্র্যাক্টের নিজস্ব ভাষায় “ঘটনাটি ঘটেছে” বলতে কী বোঝায়, তা ব্যাখ্যা করা হয়েছে।

এই দামটি একটি পূর্বাভাস, যার প্রকাশ্য অতীত রেকর্ড এবং নির্দিষ্ট নিষ্পত্তির তারিখ রয়েছে। তাই এটি এমন একটি benchmark, যা আপনার নিজস্ব লগকে অতিক্রম করতে হবে। একই সময়সীমায় একই প্রশ্নগুলোর ওপর আপনার পূর্বাভাসের স্কোর করুন। কোনো প্রশ্নসমষ্টিতে কোনো ট্রেডারের Brier score যদি ওই দামের Brier score-এর চেয়ে বেশি হয়, তাহলে সেই প্রশ্নসমষ্টিতে তার পরিমাপযোগ্য কোনো edge নেই—ট্রেডটির পেছনের বর্ণনা যতই আকর্ষণীয় হোক। betting odds থেকে vig বাদ দেওয়ার পর একই পরীক্ষা sports odds-এর ক্ষেত্রেও প্রযোজ্য। Rate market-এর ক্ষেত্রেও এটি প্রযোজ্য, যেখানে Fed rate odds নির্দিষ্ট resolution day-সহ একটি প্রশ্নের সম্ভাব্যতা দেয়।

এই প্যানেলগুলো কীভাবে market-এর মান নির্ধারণ করে

প্রতিটি কনট্র্যাক্টের daily options greeks record থেকে Delta নেওয়া হয়। শুধু observation day-এ volume থাকা এবং converged volatility solve পাওয়া কনট্র্যাক্টগুলো অন্তর্ভুক্ত করা হয়। কনট্র্যাক্টের expiration date-এ underlying-এর closing price থেকে ফলাফল নির্ধারণ করা হয়: সেই close strike-এর ওপরে থাকলে call-কে in the money ধরা হয়, আর strike-এর নিচে থাকলে put-কে in the money ধরা হয়। প্রকৃত settlement close-এর পর exercise decision-এর মাধ্যমে সম্পন্ন হয়। তাই strike-এর কয়েক penny-এর মধ্যে থাকা কনট্র্যাক্টগুলো এই সরলীকৃত পদ্ধতির বিপরীতে settle হতে পারে। এই প্যানেলের প্রতিটি কনট্র্যাক্ট ইতিমধ্যে expired। আর দীর্ঘমেয়াদি horizon bucket-গুলোতে window-এর আগের observation date-এর তথ্য ব্যবহার করতেই হয়। Observation date এবং expiry-এর মাঝখানে share split হলে strike ও settlement price ভিন্ন scale-এ চলে যেতে পারে। প্রতিটি bucket-এ sample count রাখার এটিও একটি কারণ।

Delta বাস্তব জগতের সম্ভাব্যতার পরিবর্তে risk-neutral probability-এর আনুমানিক পরিমাপ। Option price-এ অন্তর্ভুক্ত risk premium-এর কারণে এই দুই সম্ভাব্যতার মধ্যে পার্থক্য হয়। Calibration table সেই পার্থক্য মাপে; সেটিকে উপেক্ষা করে ধরে নেয় না যে দুইটি একই।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

কম Brier score কি ভালো?

হ্যাঁ। Brier score একটি error measurement। তাই 0 হলো নিখুঁত ফল, আর 1 হলো সবচেয়ে খারাপ সম্ভাব্য ফল। কোনো ঘটনা ঘটবে না জেনেও প্রতিটি প্রশ্নে 100% বললে এই score পাওয়া যায়। প্রতিটি প্রশ্নে 50% উত্তর দিলে যে score পাওয়া যায়, 0.25-এর নিচের যেকোনো score তার চেয়ে ভালো।

ভালো Brier score কত?

সবার জন্য প্রযোজ্য কোনো নির্দিষ্ট ভালো সংখ্যা নেই, কারণ score নির্ভর করে প্রশ্নগুলো কতটা কঠিন ছিল তার ওপর। আগামীকাল বৃষ্টি হবে কি না, সেই প্রশ্নে কোনো আবহাওয়াবিদ 0.10 score পেলে এবং ঘনিষ্ঠ নির্বাচনের পূর্বাভাসে কোনো রাজনৈতিক পূর্বাভাসদাতা 0.18 পেলে, তাদের সরাসরি তুলনা করা যায় না। একই সময়সীমায় একই প্রশ্নের উত্তর দেওয়া পূর্বাভাসদাতাদের মধ্যেই score তুলনা করুন।

Brier score 0.25 হলে তার অর্থ কী?

যে পূর্বাভাসদাতা সব প্রশ্নে 50% বলেন, তার score 0.25 হয়। কারণ ফল যা-ই হোক, প্রতিটি squared miss তখন 0.25 হয়। হ্যাঁ বা না ধরনের প্রশ্নের একটি সেটের জন্য এটি standard no-information benchmark। তবে প্রশ্নের সেটে কোনো একটি ফলের প্রাধান্য থাকলে benchmark হিসেবে base rate ব্যবহার করতে হয়।

Brier score এবং log score-এর মধ্যে পার্থক্য কী?

দুটিই proper scoring rule। অর্থাৎ আপনি যে probability সত্যিই বিশ্বাস করেন, সেটিই বললে উভয় score সর্বনিম্ন হয়। Brier score ভুলের square করে এবং 0 থেকে 1-এর মধ্যে থাকে। log score অতিরিক্ত আত্মবিশ্বাসের সঙ্গে করা ভুলকে অনেক বেশি শাস্তি দেয়। কোনো ঘটনা ঘটার পর সেটির probability 0% বললে খরচ infinity হয়।

option delta-কে কি probability হিসেবে পড়া যায়?

delta-এর absolute value বাজারে option-এর in the money অবস্থায় শেষ হওয়ার implied probability-এর কাছাকাছি থাকে। এটি real-world probability নয়, risk-neutral probability। উপরের panel-গুলোতে delta-কে একটি forecast হিসেবে মূল্যায়ন করা হয়েছে: এক অক্ষে বলা delta, আর অন্য অক্ষে সেই contract-গুলোর অংশ দেখানো হয়েছে যেগুলো বাস্তবে in the money অবস্থায় শেষ হয়েছে।


এখানের প্রতিটি panel-এর নিচে সঠিক SQL দেওয়া আছে। ফলে grading line by line audit করা যায়। একই প্রশ্নে বাজারের forecast-এর সঙ্গে নিজের forecast log-এর score তুলনা করতে Strasmore terminal-এ plain English-এ সংখ্যাগুলো চাইতে পারেন।

#prediction markets#forecasting#brier score#calibration#event contracts