Brier Score: Forecastला गुण कसे द्यावेत
Brier score संभाव्यतेच्या अंदाजांची प्रत्यक्ष परिणामांशी mean squared errorने तुलना करतो. कमी score चांगला; नेहमी 50% म्हणाल्यास score 0.25 मिळतो.
Brier scoreमध्ये संभाव्यतेचा अंदाज प्रत्यक्ष घडलेल्या परिणामाशी तुलना करून मोजला जातो. तुम्ही सांगितलेली संभाव्यता घ्या आणि त्यातून प्रत्यक्ष परिणाम वजा करा. घटना घडली असल्यास परिणाम 1, आणि घडली नसल्यास 0 असतो. मिळालेल्या फरकाचा वर्ग करा. त्यानंतर तुम्ही केलेल्या प्रत्येक अंदाजासाठी ही प्रक्रिया करून त्या सर्व वर्गांची सरासरी काढा. कमी score चांगला असतो: 0 म्हणजे परिपूर्ण नोंद, तर प्रत्येक गोष्टीबाबत “50%” असे म्हणाल्यास मिळणारा score 0.25 असतो.
Brier score म्हणजे काय?
Forecast हा संभाव्यतेविषयीचा दावा असतो. एक संभाव्यता स्वतःहून बरोबर किंवा चूक ठरू शकत नाही. तुम्ही एखादी घटना घडण्याची शक्यता 30% सांगितली आणि ती घटना घडली. तुम्ही चुकीचे होता का? अजून नाही. 1950 मध्ये हवामानाचा अंदाज देणाऱ्यांसाठी लिहिताना Glenn Brier यांनी यावर उपाय म्हणून कोणत्याही एका forecastला गुण देण्यास नकार दिला. हा score संपूर्ण नोंदीचे एकत्रित मूल्यमापन करतो.
खाली दहा forecastची काल्पनिक नोंद दिली आहे. यापैकी कोणताही आकडा बाजारातून घेतलेला नाही. गणना समजावून सांगण्यासाठी हे आकडे तयार केले आहेत.
- 90% सांगितले, घटना घडली. Squared miss 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.
दहा squared missची बेरीज 1.6525 आहे. ही बेरीज दहाने भागल्यावर Brier score 0.165 येतो. एवढीच संपूर्ण गणना आहे. ही गणना कोणत्याही Mac किंवा Linux मशीनसोबत आधीपासून उपलब्ध असलेल्या python3मध्ये चालते. काहीही install करण्याची गरज नाही आणि librariesही आवश्यक नाहीत.
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
0.25 हा गाठायचा आकडा का आहे
प्रत्येक गोष्टीबाबत 50% शक्यता सांगा. मग प्रत्येक चुकीच्या अंदाजासाठी squared error 0.25 असेल, काहीही घडले तरी. हा स्थिर 0.25 म्हणजे होय किंवा नाही अशा कोणत्याही प्रश्नसमूहासाठी माहिती नसतानाचा benchmark आहे. Skill score हे त्याचे एका आकड्यात रूपांतर करते: 1 वजा तुमचा score भागिले benchmarkचा score. काल्पनिक logमधील 0.165 या scoreचा skill score 0.34 येतो.
एक महत्त्वाची अट चुकीच्या scorekeepingमधील अनेक त्रुटी दूर करते. तुम्ही तपासत असलेल्या घटना केवळ 10% वेळा घडत असतील, तर प्रत्येक वेळी सरळ 10% सांगितल्यास individual प्रश्नांबाबत काहीही माहिती नसतानाही score 0.09 येतो. 0.25 पेक्षा कमी score हा असमतोल प्रश्नसमूहावर कौशल्य असल्याचा पुरावा नाही. योग्य benchmark म्हणजे तुम्ही प्रत्यक्ष उत्तर दिलेल्या प्रश्नांचा base rate.
समायोजन आणि आत्मविश्वास यांचे एकत्रित मूल्यमापन केले जाते
समायोजन म्हणजे तुम्ही 70% म्हटलेल्या सर्व घटनांपैकी जवळपास 70% प्रत्यक्षात घडणे. सांख्यिकीशास्त्रज्ञ ज्याला resolution म्हणतात तो आत्मविश्वास म्हणजे एखादी माहिती मिळाल्यावर तुम्ही base rateपासून किती दूर जाण्यास तयार आहात. प्रत्येक प्रश्नाला 50% असे उत्तर देणारा forecaster उत्तमरीत्या calibrated असतो, पण पूर्णपणे निरुपयोगी असतो. Brier score या दोन्ही गुणधर्मांचे एकाच वेळी मूल्यांकन करतो: चुकीचे समायोजन score वाढवते, तर योग्य आत्मविश्वास score कमी करतो.
तुम्ही सांगितलेल्या probabilityनुसार तयार केलेल्या logचे buckets केल्यास calibration check कसा दिसतो हे स्पष्ट होते. Pythonमध्ये प्रत्येक bucketसाठी एक ओळ असते, hits = [o for p, o in rows if p >= 0.8], त्यानंतर hitsची सरासरी काढली जाते.
- 10% ते 30% stated, सरासरी 20%: 3 पैकी 1 घटना घडली, 33%.
- 40% ते 50% stated, सरासरी 45%: 2 पैकी 0 घटना घडल्या, 0%.
- 60% ते 70% stated, सरासरी 65%: 2 पैकी 1 घटना घडली, 50%.
- 80% ते 95% stated, सरासरी 88%: 3 पैकी 3 घटना घडल्या, 100%.
या bucketsमधून निष्कर्ष काढण्यासाठी दहा forecasts पुरेसे नाहीत. Calibrationसाठी प्रत्येक bucketमध्ये शेकडो resolved questions आवश्यक असतात. या पृष्ठाच्या उर्वरित भागात लाखो forecasts असलेला log वापरला आहे.
बाजाराच्या स्वतःच्या अंदाजाचे मूल्यमापन
प्रत्येक सूचीबद्ध optionसोबत घोषित संभाव्यतेप्रमाणे वागणारी एक संख्या असते. Underlying शेअरची किंमत one dollarने बदलल्यास optionच्या किंमतीत किती बदल होतो, हे delta मोजतो. करार expiryवेळी in the money म्हणजेच काही मूल्य असलेला किंवा worthless ठरणारा असेल, तर deltaचे absolute value हा करार in the money राहण्याची बाजाराच्या implied probabilityच्या जवळपास असतो. हा अंदाज AAPLची implied volatility ठरवणाऱ्या त्याच पृष्ठभागावरून येतो. प्रत्येक कराराची expiry होते. त्यामुळे या प्रत्येक अंदाजाचे मूल्यमापन करता येते.
खालील panelमध्ये expiryच्या साधारण one month आधी निरीक्षणात आलेले प्रत्येक SPY option घेतले आहेत. हे option January 2025 ते May 2026 या कालावधीतील आहेत. त्यांना stated deltaनुसार गटबद्ध केले आहे आणि प्रत्येक करार किती वेळा in the money राहिला, याची मोजणी केली आहे.
प्रत्येक आकड्यामागील अचूक 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दोन्ही seriesची परस्पर तुलना करा. सर्वात खालच्या गटात बाजाराने सरासरी 5.2% असा अंदाज व्यक्त केला. त्या करारांपैकी 3.7% करार in the money राहिले. सर्वात वरच्या गटात 94% असा अंदाज व्यक्त झाला आणि 96.5% करार in the money राहिले. सर्व 10 गटांमध्ये प्रत्यक्ष वारंवारता घोषित अंदाजाच्या जवळपासच आहे. Calibration tableचे संपूर्ण उद्दिष्ट हेच असते: forecasterने काय सांगितले आणि प्रत्यक्षात काय घडले यातील फरक प्रत्येक गटानुसार स्पष्ट करणे, तो एका सरासरी आकड्यात लपवून न ठेवणे.
बाजार नाणेफेकीपेक्षा चांगला अंदाज लावतो का?
आता स्वतःचा स्कोअर पाहूया. हीच पद्धत वापरून काही परिचित कंपन्यांची नावे घेतली आहेत. प्रत्येक नावाचा Brier score नेमक्या त्याच contractsवर मोजलेल्या सपाट 50% baselineच्या शेजारी दिला आहे.
प्रत्येक आकड्यामागील अचूक 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एकसारख्या संचातील 28.54 thousand graded contractsवर NVDAचा स्कोअर 0.1122 आहे. याच संचावर flat baselineचा स्कोअर 0.25 आहे. 6 नावांपैकी सर्वांत कमकुवत नाव SPY असून त्याचा स्कोअर तरीही 0.1375 इतका आहे. येथे options जादूची कांडी नाहीत. Deep out-of-the-money contractsमध्ये delta साधारणतः 0.02 असतो आणि ते बहुतेक वेळा worthless expire होतात. त्यामुळे त्यांचा अंदाज बरोबर लावणे सोपे असते आणि ही सुलभता स्कोअरमध्ये प्रतिबिंबित होते. म्हणूनच केवळ 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बाजाराच्या deltaला 0.1084 कालावधी शिल्लक असलेल्या contractsवर 1 to 7 days गुण मिळाले आणि 0.1218 कालावधी शिल्लक असलेल्या contractsवर 121 to 250 days गुण मिळाले. अंदाजकर्ता तोच आणि पद्धतही तीच; मात्र प्रश्नांचे दोन वेगवेगळे संच आहेत. स्थिर 50% baseline पहिल्या रकान्यात 0.25 आणि शेवटच्या रकान्यात 0.25 आहे. त्यामुळे प्रत्येक कालावधीसाठी तोच एक स्थिर संदर्भबिंदू राहतो. दोन अंदाजकर्त्यांची तुलना करताना समान कालावधीत समान प्रश्नांचा वापर करणे आवश्यक आहे. अन्यथा कौशल्याऐवजी प्रश्नांची अवघडपणा मोजली जाईल.
योग्य scoring rules महत्त्वाच्या का आहेत
Mean absolute error म्हणजे तुमच्या संभाव्यतेचा आणि प्रत्यक्ष निकालाचा साधा फरक याची सरासरी. हा एक वाजवी पर्याय वाटतो, पण तो चुकीचे प्रोत्साहन देतो. समजा, एखादी घटना घडण्याची संभाव्यता तुम्हाला प्रत्यक्षात 70% वाटते. 70% नमूद केल्यास अपेक्षित 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मध्ये प्रामाणिक अंदाज दिल्याची किंमत मोजावी लागते. आत्मविश्वासाचा अतिरेक करण्यासाठी बक्षीस देणारे मेट्रिक forecasting मोजत नाही.
Brier scoreमध्ये अशी त्रुटी नाही. 70% संभाव्यता मानून 70% नमूद केल्यास अपेक्षित score 0.7 x 0.09 + 0.3 x 0.49 = 0.21 असतो. 100% नमूद केल्यास तो 0.30पर्यंत वाढतो. 60% नमूद केल्यास तो 0.22पर्यंत वाढतो. किमान score नेमका तुमच्या विश्वासातील संभाव्यतेवर मिळतो. हा गुणधर्म असलेल्या नियमाला योग्य म्हणजे proper म्हटले जाते. त्यामुळे forecasting tournamentsमध्ये Brier हा default score बनला.
Log score हा दुसरा प्रचलित proper rule आहे. तुम्ही दिलेल्या संभाव्यतेचा, प्रत्यक्षात घडलेल्या निकालासाठी, natural log घ्या आणि त्याचे चिन्ह उलटा. प्रत्यक्षात घडणाऱ्या घटनेसाठी 1% नमूद केल्यास score 4.6 इतका येतो. 0% नमूद केल्यास score infinity होतो. उदाहरणार्थ घेतलेल्या दहा forecastमध्ये log score flat baselineच्या 0.693च्या तुलनेत 0.483 येतो. Brier score 0 ते 1 दरम्यान राहतो, त्यामुळे तो scorecard म्हणून अधिक सहज समजतो. Log scoreला कमाल मर्यादा नाही. शेवटच्या टोकांवरील संभाव्यतांमध्ये जोखीम जास्त असते, त्यामुळे gradingसाठी तो अधिक योग्य ठरतो.
इव्हेंट contractsसाठी याचा अर्थ
एखादी घटना घडल्यास $1 आणि घटना घडली नाही तर $0 देणारा event contract अशा किमतीवर व्यवहारित होतो, जी आधीच संभाव्यता दर्शवते. Spread आणि fees वजा करण्यापूर्वी बासष्ट cents म्हणजे 62%चा अंदाज. event contract pricesचे probabilitiesमध्ये रूपांतर यावरील आमच्या मार्गदर्शकात हे रूपांतर समजावले आहे. तसेच event contractsचा settlement कसा होतो यात contractच्या स्वतःच्या शब्दांनुसार “घटना घडली” याचा अर्थ स्पष्ट केला आहे.
ही किंमत सार्वजनिक track record आणि settlement date असलेला अंदाज असतो. त्यामुळे तुमच्या स्वतःच्या logने ओलांडायचा benchmark ती ठरते. त्याच कालावधीत त्याच प्रश्नांवर तुमच्या अंदाजांचे मूल्यमापन करा. एखाद्या traderचा Brier score या किंमतीच्या Brier scoreपेक्षा जास्त असेल, तर त्या प्रश्नसमूहात त्याला मोजता येईल असा edge नाही. Tradeला जोडलेली कथा कितीही चांगली असली तरी हे लागू राहते. betting oddsमधून vig काढून टाकल्यानंतर हीच चाचणी sports oddsवरही लागू होते. Rate marketsमध्येही ती लागू होते, जिथे Fed rate odds ज्ञात resolution day असलेल्या प्रश्नासाठी निश्चित तारखेची probability देतात.
ही panels marketचे मूल्यमापन कशा पद्धतीने करतात
प्रत्येक contractसाठी Delta हा daily options greeks recordमधून घेतला जातो. Observation dayला volume असलेले आणि converged volatility solve मिळालेले contractsच समाविष्ट केले जातात. Contractच्या expiration dateला underlyingच्या closing priceवरून outcome ठरवला जातो: तो close strikeच्या वर असल्यास call in the money मानला जातो; strikeच्या खाली असल्यास put in the money मानला जातो. प्रत्यक्ष settlement closeनंतरच्या exercise decisionद्वारे होते. त्यामुळे strikeच्या काही penniesच्या आसपास असलेले contracts या साधीकरणाच्या विरुद्ध settle होऊ शकतात. या panelsमधील प्रत्येक contract आधीच expire झालेला आहे. तसेच, longer horizon bucketsमध्ये या windowमधील आधीच्या observation datesमधील माहिती अपरिहार्यपणे वापरली जाते. Observation date आणि expiry यांच्या दरम्यान share split झाल्यास strike आणि settlement price वेगवेगळ्या scalesवर येतील. प्रत्येक bucketसोबत sample count देण्याचे हे आणखी एक कारण आहे.
Delta ही real-world probabilityऐवजी risk-neutral probabilityचे अनुमान देते. Option pricesमध्ये अंतर्भूत असलेल्या risk premiumमुळे या दोन्ही probability वेगळ्या असतात. Calibration table हा फरक गृहीत धरून दुर्लक्षित करण्याऐवजी मोजण्याचे साधन आहे.
वारंवार विचारले जाणारे प्रश्न
कमी Brier score अधिक चांगला असतो का?
होय. Brier score हे त्रुटी मोजण्याचे परिमाण आहे. त्यामुळे 0 हा परिपूर्ण परिणाम असतो, तर 1 हा सर्वांत खराब संभाव्य परिणाम असतो. जे काही घडलेच नाही त्यासाठी 100% शक्यता सांगितल्यास 1 मिळतो. प्रत्येक प्रश्नासाठी 50% उत्तर दिल्यास मिळणाऱ्या scoreपेक्षा 0.25पेक्षा कमी कोणताही score चांगला असतो.
चांगला Brier score किती असतो?
सर्वांसाठी लागू होईल असा एकच चांगला आकडा नाही, कारण score हा प्रश्न किती कठीण होते यावर अवलंबून असतो. उद्याच्या पावसासाठी 0.10 score असलेल्या हवामान अंदाजकर्त्याची close electionsसाठी 0.18 score असलेल्या राजकीय अंदाजकर्त्याशी थेट तुलना करता येत नाही. समान कालावधीत समान प्रश्नांची उत्तरे देणाऱ्या अंदाजकर्त्यांमध्येच scoresची तुलना करा.
Brier score 0.25 म्हणजे काय?
प्रत्येक प्रश्नासाठी 50% शक्यता सांगणाऱ्या अंदाजकर्त्याचा हा score असतो. कारण परिणाम काहीही असो, प्रत्येक squared error 0.25 असतो. होय किंवा नाही अशा प्रश्नांच्या संचासाठी हा standard no-information benchmark आहे. मात्र प्रश्नसंचात एका बाजूचा कल असल्यास benchmark म्हणून base rate वापरावा लागतो.
Brier score आणि log scoreमध्ये काय फरक आहे?
दोन्ही proper scoring rules आहेत. म्हणजेच, तुम्हाला प्रत्यक्षात वाटत असलेली probability सांगितल्यावर दोन्ही score किमान राहतात. Brier scoreमध्ये त्रुटीचा वर्ग केला जातो आणि तो 0 ते 1 दरम्यान राहतो. Log scoreमध्ये अतिआत्मविश्वासाने केलेल्या चुकीच्या अंदाजांना अधिक कठोर दंड मिळतो. प्रत्यक्षात घडलेल्या घटनेसाठी 0% शक्यता सांगितल्यास त्याची किंमत infinity असते.
Option deltaचा अर्थ probability म्हणून लावता येतो का?
Deltaचे absolute value हे option in the money संपण्याची market-implied probability याच्या जवळ असते. ही real-world probability नसून risk-neutral probability असते. वरील panelsमध्ये deltaचा forecast म्हणून आढावा घेतला आहे: एका अक्षावर सांगितलेला delta आणि दुसऱ्या अक्षावर प्रत्यक्षात in the money संपलेल्या त्या contractsचा हिस्सा दाखवला आहे.
येथील प्रत्येक panelच्या खाली त्यासाठी वापरलेले अचूक SQL दिलेले आहे. त्यामुळे gradingची प्रत्येक ओळ तपासता येते. त्याच प्रश्नांवर marketच्या forecast logशी तुमचा स्वतःचा forecast log तपासण्यासाठी Strasmore terminalवर plain Englishमध्ये आकडे मागवा.