Model Confidence Set (MCS): একক বিজয়ী ঠিক না করে forecast model তুলনা
Model Confidence Set কীভাবে sequential test ও time-dependent bootstrap ব্যবহার করে এমন forecast model ধরে রাখে, যাদের পারফরম্যান্স আলাদা করা যায় না—তা জানুন।
এই গাইডেModel Confidence Set কোন প্রশ্নের উত্তর দেয়?
সংক্ষিপ্ত সারাংশ
Model Confidence Set (MCS) একটি নির্দিষ্ট forecast procedure-এর পরিবারকে তুলনা করে এবং বেছে নেওয়া loss function অনুযায়ী যেসব candidate-কে inferior প্রমাণ করা যায়নি, তাদের একসঙ্গে রাখে। sample দিয়ে candidate-গুলোর পার্থক্য বোঝা না গেলে একাধিক model থাকতে পারে; ফলটি candidate family, forecasting design, loss এবং inference পদ্ধতির ওপর নির্ভর করে।
Model Confidence Set কোন প্রশ্নের উত্তর দেয়?
ধরা যাক, আপনার কাছে পরের দিনের volatility forecast করার একাধিক procedure আছে। তাদের error এক নয়, কিন্তু sample ছোট বা noisy হওয়ায় কোন procedure-এর expected loss সবচেয়ে কম তা বোঝা যাচ্ছে না। যে procedure-এর average loss সবচেয়ে কম, সেটিকেই বেছে নিলে এমন ব্যবধানেও জোর করে winner ঠিক করা হয়, যা sampling variation থেকেই আসতে পারে। MCS একটি set-valued উত্তর দেয়: নির্দিষ্ট performance criterion অনুযায়ী বর্তমান data কোন candidate-কে inferior বলতে পারছে না?
MCS শুরু হয় candidate set \(\mathcal M_0\), একটি loss বা অন্য criterion এবং confidence level দিয়ে। এটি পর্যায়ক্রমে পরীক্ষা করে যে এখনো তুলনায় থাকা candidate-গুলোর predictive ability সমান কি না। test reject হলে elimination rule তুলনামূলকভাবে দুর্বল candidate-কে বাদ দেয়; এরপর ছোট set-এ আবার test হয়। শেষে যে candidate-গুলো থাকে, সেগুলোই MCS। Hansen, Lunde এবং Nason নির্দিষ্ট collection-এর সেরা model বা model-গুলোকে confidence level-এ অন্তর্ভুক্ত করার জন্য এই set প্রস্তাব করেন; data অনির্দিষ্ট হলে parameter confidence interval যেমন একাধিক মান ধরে রাখতে পারে, ধারণাটি তেমন (২০১১ paper).
এখানে “best” কেবল তুলনার ভেতরে প্রযোজ্য। কোন candidate অন্তর্ভুক্ত হয়েছে, target কী, forecast horizon কত, প্রতিটি forecast origin-এ কোন তথ্য ছিল এবং কোন criterion নেওয়া হয়েছে—এসবের ওপর best model নির্ভর করে। কোনো candidate-কে সত্যিকার data-generating process ধরে নেওয়া MCS-এর শর্ত নয়। একই best expected loss-যুক্ত একাধিক candidate-ও থাকতে পারে। MCS retained model সঠিক হওয়ার Bayesian probability দেয় না।
Candidate family ও forecasting প্রশ্ন আগে স্থির করুন
Loss গণনার আগে \(\mathcal M_0\) সংজ্ঞায়িত করুন। Candidate হতে পারে fitted model-সহ তার estimation ও forecast-update rule, অথবা কোনো statistical model ছাড়াই একটি forecast procedure। উদাহরণস্বরূপ, শুধু “GARCH” বললে candidate পুরোপুরি নির্দিষ্ট হয় না: error distribution, rolling window, parameter update এবং forecast horizon বদলালে আলাদা procedure তৈরি হয়।
প্রতিটি candidate-কে একই forecast origin, একই target ও horizon-এর জন্য তখনকার প্রাপ্য তথ্য দিয়েই পূর্বাভাস দিতে হবে। এক দিনের conditional variance forecast-এর loss আর পাঁচ দিনের volatility forecast-এর loss সরাসরি তুলনাযোগ্য নাও হতে পারে, কারণ target ও unit আলাদা। common evaluation sample নিন, missing observation কীভাবে align করেছেন তা বলুন, এবং data vintage, initial estimation window, recursive বা rolling update schedule ও revised input-এর ব্যবহার নথিভুক্ত করুন। Multi-step horizon overlap করলে ভিন্ন origin-এর loss একই realized target period ভাগ করে নিতে পারে।
ফল দেখার আগে scoring criterion ঠিক করুন। Point forecast-এর জন্য squared error, absolute error বা decision-specific loss নিলে model ranking আলাদা হতে পারে। Variance forecast-এর ক্ষেত্রে noisy volatility proxy-এর উপযোগী loss লাগতে পারে; quantile forecast-এর জন্য quantile score দরকার। এক loss-এ ভালো MCS অন্য loss-এও ভালো হবে, এমন নিশ্চয়তা নেই। একই evaluation result দেখে candidate list ছোট করলে, পাওয়া set-টি সেই অপ্রকাশিত screening-এর শর্তাধীন হবে; পুরো search-কে তা আর প্রতিফলিত করবে না।
Common forecast থেকে paired loss contrast তৈরি করুন
Forecast origin \(t\)-এ করা forecast-এর realized target \(y_{t+h}\), আর candidate \(i\)-এর forecast \(\hat y_{i,t+h|t}\) হোক। আগে থেকে বেছে নেওয়া loss function \(L\) দিয়ে প্রতিটি common origin-এ প্রতিটি candidate-এর loss হিসাব করুন:
\[ L_{i,t}=L(y_{t+h},\hat y_{i,t+h|t}) \]
কম loss-কে ভালো ধরে candidate \(i\) ও \(j\)-এর paired contrast লিখুন:
\[ d_{ij,t}=L_{i,t}-L_{j,t}, \qquad \bar d_{ij}=\frac{1}{P}\sum_{t=1}^{P}d_{ij,t} \]
এখানে \(P\) হলো common forecast origin-এর সংখ্যা। এই sign convention-এ \(\bar d_{ij}>0\) হলে sample-এ candidate \(i\)-এর average loss \(j\)-এর চেয়ে বেশি, আর \(\bar d_{ij}<0\) হলে \(i\) এগিয়ে। Pairing গুরুত্বপূর্ণ, কারণ দুই candidate একই realized outcome-এর মুখোমুখি হয়। একই market shock উভয়ের loss বাড়াতে পারে, কিন্তু contrast একই তারিখে তাদের আপেক্ষিক ফল আলাদা করে।
বর্তমান set \(\mathcal M\)-এর equal predictive ability (EPA) null এভাবে লেখা যায়:
\[ H_{0,\mathcal M}:\quad \mu_{ij}=E[d_{ij,t}]=0 \quad \text{for every } i,j\in\mathcal M \]
এটি বর্তমান set-এর একটি joint hypothesis; আলাদা আলাদা pairwise test চালিয়ে পছন্দমতো ফল বেছে নেওয়া নয়। MCS framework একাধিক candidate তুলতে joint equivalence test এবং elimination rule ব্যবহার করে। Null hypothesis-এর অর্থ এই নয় যে প্রত্যেক তারিখে forecast একই।
বর্তমান set test করে model বাদ দেওয়ার নিয়ম নির্ধারণ করুন
MCS একটি set-level test ও elimination step পালাক্রমে চালায়। শুরুতে \(\mathcal M=\mathcal M_0\) রেখে বেছে নেওয়া \(\alpha\) level-এ EPA test করুন। test reject না করলে বর্তমান set-ই report করে থামুন। reject করলে আগে থেকে নির্ধারিত elimination rule-এ একটি candidate বাদ দিয়ে ছোট set-এ আবার test করুন। MCS-এর assumptions মানা হলে survivors হলো \((1-\alpha)\) MCS।
মূল paper-এ দুটি পরিচিত statistic আছে। Range statistic standardized pairwise loss contrast-এর সর্বোচ্চ মান খোঁজে:
\[ T_{R,\mathcal M}=\max_{i,j\in\mathcal M}|t_{ij}|, \qquad t_{ij}=\frac{\bar d_{ij}}{\widehat{\mathrm{se}}(\bar d_{ij})} \]
এর সঙ্গে মানানসই elimination rule অন্য candidate-এর তুলনায় সবচেয়ে বেশি standardized disadvantage থাকা model বাদ দেয়। আরেকটি statistic প্রতিটি candidate-কে বর্তমান set-এর গড় performance-এর সঙ্গে তুলনা করে:
\[ T_{\max,\mathcal M}=\max_{i\in\mathcal M}t_{i\cdot}, \qquad d_{i\cdot,t}=\frac{1}{|\mathcal M|}\sum_{j\in\mathcal M}d_{ij,t} \]
এখানে \(t_{i\cdot}\) হলো \(d_{i\cdot,t}\)-এর mean-কে তার standard error দিয়ে ভাগ করা মান। সংশ্লিষ্ট rule set average-এর তুলনায় সর্বোচ্চ standardized excess loss-যুক্ত candidate বাদ দেয়। Statistic ও elimination rule একসঙ্গে বেছে নিতে হয়। ফল দেখার পর যে জুটি সবচেয়ে ছোট set তৈরি করে সেটি বেছে নেবেন না। MCS paper ব্যাখ্যা করে, reject করা test ও বাদ দেওয়া candidate-এর rule-কে কেন সামঞ্জস্যপূর্ণ হতে হয় (Hansen, Lunde ও Nason).
Bootstrap-এ time dependence সংরক্ষণ করুন
Maximum statistic-এর distribution candidate-গুলোর loss contrast-এর যৌথ পরিবর্তনের ওপর নির্ভর করে। প্রতিটি model বা date-কে independent observation ধরলে দুই ধরনের dependence ভাঙতে পারে: পরপর তারিখের loss সম্পর্কিত হতে পারে, আর একই তারিখে model-গুলোর loss paired থাকে। তাই MCS bootstrap-এ set-level statistic-এর null distribution আনুমানিক হিসাবের সময় যৌথ time-series structure সংরক্ষণ করা দরকার।
একটি উপায় হলো সব candidate-এর loss বা contrast vector-কে একসঙ্গে রেখে aligned time block resample করা। Stationary bootstrap-এ block length random হয় এবং পরের block-টি random starting date থেকে শুরু হতে পারে। Politis ও Romano weakly dependent stationary observation-এর জন্য এই পদ্ধতি প্রস্তাব করেন (১৯৯৪ paper). MCS paper-এর implementation appendix block bootstrap ব্যাখ্যা করে এবং stationary bootstrap-কে বিকল্প হিসেবে উল্লেখ করে। প্রতিটি model-এর loss series আলাদাভাবে resample করলে same-date pairing নষ্ট হয়ে comparison বদলে যেতে পারে।
Average block length, bootstrap variant, EPA null-এর অধীনে centering, replication সংখ্যা এবং forecast horizon uncertainty estimate-কে প্রভাবিত করে। Overlapping multi-step forecast loss difference-এর dependence দীর্ঘ করতে পারে, কিন্তু সব target ও sample-এর জন্য একটিই universal block length নেই। Design ব্যাখ্যা করুন এবং যুক্তিসঙ্গত dependence setting বদলালে সিদ্ধান্ত টেকে কি না দেখুন। Bootstrap output assumptions-এর অধীনে approximation; এটি look-ahead, বারবার দেখা holdout, nonstationary score behavior বা বাদ পড়া candidate family ঠিক করে না।
চারটি model-এর কাল্পনিক তুলনা অনুসরণ করুন
ধরা যাক, A, B, C এবং D একই volatility target-কে 120টি common daily forecast origin-এ forecast করে। Squared-error loss-এর average যথাক্রমে 1.20, 1.23, 1.45 ও 1.90; unit হলো illustrative squared percentage-point। এই গড়ে A প্রথম এবং D শেষ হলেও শুধু ranking দিয়ে বোঝা যায় না যে পার্থক্যটি sampling uncertainty-এর চেয়ে বড় কি না।
A ও B-এর mean paired loss difference \(1.20-1.23=-0.03\)। Dependence-aware standard error যদি \(0.04\) হয়, তবে pairwise statistic \(-0.03/0.04=-0.75\)। এই এক contrast থেকে A ও B-এর মধ্যে স্পষ্ট statistical difference বলা যায় না। MCS এখানেই থামে না; set-level statistic চারটি candidate-এর joint contrast বিবেচনা করে।
ধাপ দেখাতে ধরা যাক, পুরো 120-origin loss series-এ block-bootstrap MCS, \(T_R\), \(\alpha=0.05\) এবং সামঞ্জস্যপূর্ণ worst-candidate elimination rule ব্যবহার করেছে। Hypothetical full-family p-value 0.018, তাই D বাদ পড়ল; এরপর \(\{A,B,C\}\) set-এর p-value 0.11। 0.11 > 0.05 হওয়ায় আর reject না করে procedure থামে; illustrative 95% MCS হলো \(\{A,B,C\}\)। C-এর average loss A-র চেয়ে বেশি হলেও C থেকে যায়, কারণ এই joint test-এ তার inferiority প্রমাণিত হয়নি।
এখানকার p-value-গুলো ধাপ বোঝানোর জন্য বানানো; চারটি average loss বা A–B contrast থেকে এগুলো পুনরায় হিসাব করা যায় না। বাস্তব ফলের জন্য origin-স্তরের সম্পূর্ণ loss series, candidate forecast, bootstrap design এবং elimination sequence দরকার। কোন ধাপে কোন candidate কেন বাদ গেছে তা দেখার জন্য এই input ও sequence সংরক্ষণ করুন। <!-- learn:illustration -->

টিকে থাকা set-কে অতিরঞ্জিত না করে ব্যাখ্যা করুন
95% confidence level-এর MCS, তার regularity ও testing assumptions-এর অধীনে, নির্দিষ্ট candidate set-এ সেরা model-কে stated asymptotic coverage-এ অন্তর্ভুক্ত করার জন্য নির্মিত। এর মানে এই নয় যে retained প্রতিটি model-এর best হওয়ার probability 95%। Confidence statement হলো repeated sample-এ procedure-এর coverage; model label-এর posterior distribution নয়।
EPA test reject না হওয়া মানে candidate-গুলোর expected loss একদম সমান, তা প্রমাণ নয়। Evaluation period ছোট, loss contrast volatile, বা candidate-গুলো কাছাকাছি হলে test-এর power সীমিত হতে পারে। বড় surviving set বলতে data-তে বিকল্পগুলো আলাদা করার তথ্য কম থাকতে পারে। MCS candidate-গুলোকে পরস্পরের সঙ্গে তুলনা করে, বাধ্যতামূলক external benchmark-এর সঙ্গে নয়; তাই surviving model-গুলো absolute অর্থে খারাপ হলেও set থাকতে পারে।
Set-এর সীমা শুরুতে অন্তর্ভুক্ত \(\mathcal M_0\)-এর মধ্যেই। আরও ভালো forecasting procedure candidate family-তে না থাকলে MCS সেটি খুঁজে পাবে না। Evaluation sample দেখে আগে কোনো model বাদ দিলে nominal coverage সেই unreported screening হিসাব করে না। Candidate family কীভাবে তৈরি এবং screen করা হয়েছে তা জানান। একাধিক candidate-এর expected loss সমানভাবে সর্বনিম্ন হলে একাধিকটি থাকা পদ্ধতির সঙ্গে সামঞ্জস্যপূর্ণ, failure নয়।
Pairwise test ও benchmark test থেকে MCS আলাদা
Diebold–Mariano test একই outcome-এ দুই forecast procedure-এর paired loss difference নিয়ে কাজ করে। MCS একটি set-কে sequentially test করে এবং joint elimination procedure থেকে টিকে যাওয়া candidate জানায়। একাধিক DM test চালিয়ে nonsignificant pair রেখে দিলেই MCS-এর সমতুল্য হয় না; joint bootstrap ও coherent elimination rule গুরুত্বপূর্ণ।
Clark–West test nested forecast model-এর squared-error comparison-এ estimation noise-এর প্রভাব সংশোধন করে। MCS-এর জন্য candidate-গুলো nested হওয়া প্রয়োজন নেই এবং user-selected loss ব্যবহার করা যায়, তবে common forecast design দরকার।
White’s Reality Check ও Hansen’s Superior Predictive Ability test জিজ্ঞেস করে, searched family-র অন্তত একটি candidate কি নির্দিষ্ট benchmark-কে হারায়। MCS benchmark-free এবং এক benchmark-এর বিরুদ্ধে পরীক্ষা না করে তুলনামূলকভাবে superior candidate-দের set বর্ণনা করে। সব পদ্ধতিতেই search ও dependence সঠিকভাবে জানানো জরুরি, কিন্তু null hypothesis আলাদা। দেখুন Reality Check ও SPA guide, White (2000) এবং Hansen (2005).
Design পুনরুৎপাদনযোগ্যভাবে report করুন, trading value আলাদা রাখুন
একটি reproducible MCS report-এ সব candidate procedure, common target ও horizon, information cutoff, forecast origin, estimation schedule, evaluation date, missing-data treatment, loss formula এবং কোন দিকটি ভালো তা থাকতে হবে। Significance level, test statistic ও elimination rule, bootstrap type, block length, centering method, replication সংখ্যা, প্রতিটি ধাপের p-value এবং final membership জানান। Average loss ও contrast context হিসেবে দিন, কিন্তু rank table দিয়ে joint inference প্রতিস্থাপন করবেন না।
Volatility evaluation-এ observed proxy কীভাবে তৈরি এবং সেটি noisy বা revised কি না লিখুন। Multi-step forecast-এ target window overlap এবং dependence method প্রকাশ করুন। Loss, sample period বা bootstrap setting যুক্তিসঙ্গতভাবে বদলালে membership কতটা বদলায় দেখান, যদি সিদ্ধান্তে তার প্রভাব থাকে। বাদ পড়া candidate ও procedure sequence ছাড়া একটি ছোট p-value set পুনরুৎপাদনের জন্য যথেষ্ট নয়।
MCS একটি criterion-এ forecast procedure-এর relative ranking দেয়। এটি causality, data-generating model বা retained forecast থেকে profitable trade হবে—কোনোটাই প্রমাণ করে না। Forecast-কে position-এ রূপ দিতে threshold, sizing, turnover, execution timing, spread, fee, slippage, financing, borrow এবং risk constraint লাগে। Frozen decision process-কে উপযুক্ত পরবর্তী data-তে পরীক্ষা করে net trading outcome আলাদাভাবে report করুন। Noisy volatility proxy-তে loss choice নিয়ে পড়ুন QLIKE বনাম squared-error guide.
সাধারণ প্রশ্ন
Q1MCS কি একটিমাত্র সেরা model বেছে নেয়?
অবশ্যই নয়। Data আলাদা করতে পারলে এক candidate থাকতে পারে, আর inferiority প্রমাণ না হলে একাধিক model থাকতে পারে। একাধিক survivor-এর মধ্যে deploy করার জন্য আলাদা decision rule দরকার।
Q2MCS-এ থাকা model সঠিক হওয়ার probability কি 95%?
না। Confidence level method-এর assumptions-এ নির্দিষ্ট candidate family-র সেরা model-কে repeated sample-এ অন্তর্ভুক্ত করার coverage বোঝায়। এটি model সত্য হওয়ার posterior probability নয়।
Q3Volatility forecast ছাড়াও MCS ব্যবহার করা যায়?
হ্যাঁ। Meaningful common criterion ও উপযুক্ত sampling design থাকলে forecast, econometric model বা অন্য procedure তুলনা করা যায়। ফল candidate set ও loss-এর ওপর নির্ভর করে।
Q4আমি যত model চেষ্টা করেছি MCS কি সব নিজে থেকেই হিসাব করে?
শুধু তখনই, যখন প্রকৃত search candidate family ও evaluation procedure-এ প্রতিনিধিত্ব করা হয়েছে। গোপন screening বা evaluation data বারবার ব্যবহারের সমস্যা MCS চালালেই মেটে না।
উৎস ও আরও পড়ুন
সমস্যা জানান
এই নিবন্ধের লিংকসহ একটি ইমেল তৈরি হবে। পাঠানোর পরেই Mark প্রতিবেদনটি পাবে
দ্রুত যাচাই
গাইডটি পড়ার পর 3টি প্রশ্নে নিজেকে যাচাই করুন
প্রশ্ন 01
Model Confidence Set কী report করে?
ব্যাখ্যা দেখতে একটি উত্তর বেছে নিন