কখন Equal Weight Optimization-কে ছাড়িয়ে যায়
নমুনা ছোট হলে optimized position sizing-এর চেয়ে equal weight ভালো হতে পারে। seeded Python simulation-এ crossover দেখা যায়, পরে নমুনা বাড়লে তা কমে আসে।
নমুনা এত ছোট হলে যে প্রত্যাশিত রিটার্ন নির্ভরযোগ্যভাবে নির্ধারণ করা যায় না, তখন optimized position sizing-এর চেয়ে equal weight ভালো ফল দেয়। আর ছোট নমুনাই ব্যতিক্রম নয়, বরং স্বাভাবিক পরিস্থিতি।
Optimizer এমন একটি ইনপুটের ওপর সঠিক গাণিতিক হিসাব প্রয়োগ করে, যা কেউই ভালোভাবে পরিমাপ করতে পারে না। 1/N portfolio বা equal weight কোনো কিছুই অনুমান করে না। তাই অনুমানগুলো ভুল হলে এটিই তুলনামূলকভাবে ভালোভাবে টিকে থাকে।
সমান ওজন কি সত্যিই optimization-কে ছাড়িয়ে যায়?
একটি নির্দিষ্ট পরিস্থিতিতে, হ্যাঁ। বিষয়গুলো একে একে দেখা যাক। Equal weight, যা 1/N হিসেবে লেখা হয়, Nটি পজিশনের মধ্যে মূলধন সমানভাবে ভাগ করে এবং কোনো ধরনের পূর্বাভাসের প্রয়োজন হয় না। Mean variance optimization এমন ওজন নির্ধারণ করে, যেখানে estimated variance-এর প্রতি একক ঝুঁকির বিপরীতে প্রত্যাশিত রিটার্ন সর্বোচ্চ হয়। Kelly criterion দীর্ঘমেয়াদে compound growth সর্বাধিক করে এমন ওজন নির্ধারণ করে; পরস্পরের সঙ্গে uncorrelated asset-এর ক্ষেত্রে এর ফল দাঁড়ায় প্রতিটি asset-এর expected excess return-কে তার variance দিয়ে ভাগ করে পাওয়া অনুপাতের সমানুপাতিক ওজন। আমাদের Kelly criterion অনুযায়ী position sizing গাইডে এই সূত্রটি বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
উভয় optimizer-এর একই ইনপুট প্রয়োজন: প্রতিটি asset-এর প্রত্যাশিত রিটার্ন। Sample থেকে সবচেয়ে দুর্বলভাবে যে পরিমাণটি অনুমান করা যায়, সেটিই এটি। স্বল্প সময়ের window থেকে volatility কার্যকর নির্ভুলতায় বের করা যায়। কিন্তু mean তা যায় না, এবং এই দুটির ব্যবধান যেকোনো price history-তেই দেখা যাওয়ার মতো বড়। নিচের panel-এ ব্যাপকভাবে ধারণ করা ছয়টি নাম নেওয়া হয়েছে। প্রতিটির জন্য 2015 থেকে 2024 পর্যন্ত প্রতিটি calendar year আলাদাভাবে মাপা হয়েছে। এরপর সর্বোচ্চ ও সর্বনিম্ন বার্ষিক estimate-এর ব্যবধান দেখানো হয়েছে। প্রতিটি নামের জন্য এটি দুবার করা হয়েছে: একবার annualized average daily return-এর ক্ষেত্রে, আরেকবার annualized volatility-এর ক্ষেত্রে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH prices AS
(
SELECT
ticker,
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND date >= '2015-01-01'
AND date < '2025-01-01'
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
yearly AS
(
SELECT
ticker,
toYear(date) AS yr,
avg(ret) * 252 * 100 AS mean_pct,
stddevPop(ret) * sqrt(252) * 100 AS vol_pct
FROM rets
WHERE isFinite(ret)
GROUP BY ticker, yr
HAVING count() >= 200
)
SELECT
ticker,
round(max(mean_pct) - min(mean_pct), 1) AS mean_estimate_range_pct,
round(max(vol_pct) - min(vol_pct), 1) AS vol_estimate_range_pct
FROM yearly
GROUP BY ticker
ORDER BY mean_estimate_range_pct DESCNVDA-এর ক্ষেত্রে, ওই দশ বছরে বার্ষিক mean estimate-এর পরিসর 184.7 percentage point। একই নামের একই বছরগুলোর volatility estimate-এর পরিসর 28.6 point। panel-এর সবচেয়ে স্থিতিশীল নাম KO-এর ক্ষেত্রেও বার্ষিক mean estimate 23.9 point জুড়ে পরিবর্তিত হয়েছে। কোনো পদ্ধতি যদি গত বছরের average return-কে চলতি বছরের expected return হিসেবে optimizer-কে দেয়, তাহলে সেটি এমন একটি সংখ্যা ইনপুট দিচ্ছে যার ওঠানামার পরিসর এতটাই বড়।
প্রত্যাশিত রিটার্ন অনুমান করতে কত দীর্ঘ নমুনা দরকার?
আনুমানিক গড় রিটার্নের standard error হলো সম্পদের volatility-কে বছরের হিসাবে sample length-এর বর্গমূল দিয়ে ভাগ করলে যা পাওয়া যায়। এখানে বছর গণনা করা হয়, observation নয়। তাই একই 12 মাসের hourly data নিলে daily data-এর তুলনায় কোনো অতিরিক্ত সুবিধা হয় না। 20 শতাংশ volatility-সম্পন্ন কোনো সম্পদের ক্ষেত্রে এই সূত্র প্রয়োগ করলে দেখা যায়, 1 বছরের history-তে standard error হয় বছরে 20 percentage points। 4 বছর হলে তা অর্ধেক হয়ে 10-এ নামে। এটি 1 point-এ নামাতে—অর্থাৎ প্রকৃত গড় রিটার্নে 2 points পার্থক্য থাকা দুটি সম্পদকে ranking করার আগে যে precision প্রয়োজন—4 শতাব্দীর data দরকার।
Volatility-এর ক্ষেত্রে বিষয়টি আলাদা। এর precision calendar span-এর বদলে observation-এর সংখ্যা বাড়ার সঙ্গে উন্নত হয়। তাই কয়েক মাসের daily data-ও volatility-র অনুমানকে কয়েক points-এর মধ্যে নিয়ে আসতে পারে। নিচের panel-এ একটি index fund-এর 20 বছরের daily return নির্দিষ্ট দৈর্ঘ্যের overlapping নয় এমন block-এ ভাগ করা হয়েছে। প্রতিটি block-এর মধ্যে দুটি estimate হিসাব করা হয়েছে। এরপর block থেকে block-এ estimate কতটা ছড়িয়ে পড়ে, তা দেখানো হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH prices AS
(
SELECT
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2005-01-01'
AND date < '2025-01-01'
GROUP BY date
),
rets AS
(
SELECT
date,
c / lagInFrame(c, 1) OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
numbered AS
(
SELECT
ret,
row_number() OVER (ORDER BY date ASC) AS i
FROM rets
WHERE isFinite(ret)
),
sweep AS
(
SELECT
arrayJoin([21, 63, 126, 252, 504]) AS n,
i,
ret
FROM numbered
),
blocks AS
(
SELECT
n,
intDiv(i - 1, n) AS blk,
avg(ret) * 252 * 100 AS mean_pct,
stddevPop(ret) * sqrt(252) * 100 AS vol_pct
FROM sweep
GROUP BY n, blk
HAVING count() = n
)
SELECT
concat(toString(n), ' sessions') AS sample_length,
round(stddevPop(mean_pct), 1) AS mean_estimate_spread_pct,
round(stddevPop(vol_pct), 1) AS vol_estimate_spread_pct,
count() AS window_count
FROM blocks
GROUP BY n
ORDER BY n ASC21 sessions দৈর্ঘ্যের block-এ mean estimate 53.7 percentage points জুড়ে ছড়ায়। একই block-এ মাপা volatility estimate-এর ক্ষেত্রে এই বিস্তার 10.9 points। Block-এর দৈর্ঘ্য 504 sessions করা হলে mean estimate-এর বিস্তার কমে 10.6 points হয়। এই হ্রাস square root-এর নিয়ম মেনে চলে: error অর্ধেক করতে data-এর পরিমাণ 4 গুণ করতে হয়।
নিজে চালাতে পারবেন এমন seeded simulation
তবে এর কোনোটিই প্রমাণ করে না যে estimation error এত বড় যে 1/N-কে জয় এনে দেবে। এই simulation তা দেখায়। এটি চালাতে শুধু একটি Python install দরকার। কোনো data file, download বা third-party package লাগবে না। আপনি যে parameters বেছে নেবেন, simulation সেগুলো থেকেই নিজস্ব returns তৈরি করবে। ফলে প্রকৃত উত্তর জানা থাকবে এবং উভয় allocation-এর ফলাফল তার সঙ্গে তুলনা করা যাবে।
- দুটি module,
import randomএবংimport statistics, import করুন। এর সঙ্গেfrom math import log-ও import করুন। পরের লাইনেrandom.seed(20260816)ব্যবহার করে seed সেট করুন। - পাঁচটি asset নির্ধারণ করুন। তাদের প্রকৃত annual expected return হবে যথাক্রমে 5, 6, 7, 8 এবং 9 percent। প্রতিটির প্রকৃত annual volatility হবে 20 percent এবং তাদের মধ্যে correlation থাকবে না।
mu_d = mu_a / 252এবংsd_d = sd_a / (252 ** 0.5)ব্যবহার করে এগুলোকে daily step-এ রূপান্তর করুন। [60, 125, 250, 500, 1000, 2500, 5000]sweep থেকে sample length T বেছে নিন।random.gauss(mu_d, sd_d)ব্যবহার করে প্রতিটি asset-এর জন্য Tটি daily return তৈরি করুন। এটিই হবে manager-এর কাছে থাকা সম্পূর্ণ history।statistics.meanব্যবহার করে প্রতিটি asset-এর mean এবংstatistics.stdevব্যবহার করে volatility estimate করুন। Optimizer-এর জানা তথ্য শুধু এই দুটি estimate।- পাঁচটি asset-এর প্রতিটির weight 0.2 নির্ধারণ করে equal-weight portfolio তৈরি করুন। এতে কোনো estimate ব্যবহার করা হয় না।
- প্রতিটি raw weight
mu_hat / (sd_hat ** 2)নির্ধারণ করে optimized portfolio তৈরি করুন। এরপর সব weight-কে raw weightগুলোর absolute value-এর যোগফল দিয়ে ভাগ করুন। এতে উভয় portfolio-র gross exposure সমান থাকে। - প্রকৃত parameters থেকে প্রতিটি asset-এর জন্য 2520টি daily return নিয়ে একটি নতুন out-of-sample path তৈরি করুন। কোনো allocation-ই এই path আগে দেখেনি।
- ওই path-এ উভয় portfolio-কে
log(1 + r)-এর average দিয়ে score করুন। এখানে r হলো ওই দিনের পাঁচটি asset return-এর weighted sum। - প্রতিটি T-এর জন্য 2000টি independent trial-এ steps 4 থেকে 9 পুনরাবৃত্তি করুন। কত শতাংশ trial-এ equal weight optimized weights-এর চেয়ে ভালো ফল করেছে, তা record করুন।
Short T থেকে long T পর্যন্ত sweep-এর ফল পড়ুন। Short T-এর ক্ষেত্রে equal weight অধিকাংশ trial-এ স্পষ্টভাবে জয়ী হয়। T বাড়ার সঙ্গে এই share ধারাবাহিকভাবে কমে। Long T-এর ক্ষেত্রে optimized weights অধিকাংশ trial-এ জয়ী হয়। মাঝামাঝি কোথাও দুই ফলাফল একে অপরকে অতিক্রম করে। Crossover point seed এবং প্রকৃত meanগুলোর ব্যবধানের সঙ্গে পরিবর্তিত হয়। কিন্তু দিকটি পরিবর্তিত হয় না। বেশি data optimizer-কে সুবিধা দেয়, আর কম data 1/N-কে সুবিধা দেয়। পুনরাবৃত্তি করতে random.seed(20260816)-এর ভেতরের integer পরিবর্তন করে আবার sweep চালান।
খারাপ mean estimate কীভাবে optimizer-এর প্রভাব বাড়ায়
ওজন নির্ধারণে estimate-গুলো কোথায় প্রবেশ করে, তা দেখুন। Estimated mean থাকে numerator-এ, আর estimated variance থাকে denominator-এ। Mean estimate দ্বিগুণ হলে ওজনও দ্বিগুণ হয়। Variance estimate এক-চতুর্থাংশ কমলে ওজন এক-তৃতীয়াংশ বেড়ে যায়। অনুকূল sample-এ দুই ধরনের ভুল একই দিকে কাজ করে: ভালো ফলাফলের ধারাবাহিকতা measured mean বাড়ায় এবং একই সময়সীমায় measured variance প্রায়ই কমিয়ে দেয়। Optimizer তখন ওই asset-কে গোষ্ঠীর সেরা বলে ধরে নিয়ে সেই অনুযায়ী position size নির্ধারণ করে। Out-of-sample পর্যায়ে assetটি আবার গোষ্ঠীর সাধারণ সদস্যে পরিণত হয়। Equal weight কখনও সেই অনুকূল sample দেখেনি।
এই সমস্যার তুলনামূলক মৃদু সংস্করণই simulation-এ দেখা যায়। পরস্পর uncorrelated পাঁচটি asset এমন একটি diagonal covariance matrix তৈরি করে, যেটি invert করার মতো জটিলতা রাখে না। বাস্তব portfolio-তে asset-গুলোর মধ্যে correlation থাকে। Asset-এর সংখ্যার তুলনায় সামান্য বেশি observation থেকে তৈরি sample covariance matrix প্রায় singular হয়ে থাকে। সেটিকে invert করলে input-এর ছোটখাটো ভুল অত্যন্ত বড় ওজনে রূপ নেয়। এভাবেই optimizer একটি নামের ক্ষেত্রে capital-এর কয়েক গুণ সমান long position এবং তার কাছাকাছি substitute-এ সমপরিমাণ offsetting short position তৈরি করতে পারে। এই ধরনের ওজন drawdown-এ কী প্রভাব ফেলে, তা আমাদের portfolio-তে concentration risk নোটে আলোচনা করা হয়েছে।
Input-ও স্থির থাকে না। নিচের panel-এ একটি broad index fund এবং একটি বড় consumer staples কোম্পানির rolling one year average daily return দেখানো হয়েছে। Return annualized করা হয়েছে এবং প্রতি মাসে sample নেওয়া হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH prices AS
(
SELECT
ticker,
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'KO')
AND date >= '2015-10-01'
AND date < '2025-01-01'
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
trailing AS
(
SELECT
ticker,
date,
avg(ret) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 251 PRECEDING AND CURRENT ROW) * 252 * 100 AS trailing_mean_pct,
row_number() OVER (PARTITION BY ticker ORDER BY date ASC) AS i
FROM rets
WHERE isFinite(ret)
)
SELECT
toString(toStartOfMonth(date)) AS month,
round(avgIf(trailing_mean_pct, ticker = 'SPY'), 1) AS spy_trailing_mean_pct,
round(avgIf(trailing_mean_pct, ticker = 'KO'), 1) AS ko_trailing_mean_pct
FROM trailing
WHERE i >= 252
AND date >= '2017-01-01'
GROUP BY month
ORDER BY month ASCএই দুই রেখার প্রতিটি point এমন একটি সংখ্যা, যেটিকে কোনো optimizer ওই তারিখে expected return হিসেবে গ্রহণ করতে পারত। SPY-এর প্রথম monthly reading হলো 17.7%, আর শেষ reading হলো 25.8%; মাঝখানে রয়েছে 96টি reading। KO একই সময়সীমা শুরু করে -0.4%-এ। Month by month এই series ব্যবহার করা কোনো weighting scheme এর প্রতিটি ওঠানামা উত্তরাধিকারসূত্রে গ্রহণ করে।
অর্ধেক Kelly এবং shrinkage কি সমস্যাটি সমাধান করে?
এগুলো সমস্যার তীব্রতা কমায়। বাস্তবে চারটি সংশোধনী দেখা যায়। প্রতিটি সংশোধনী তাত্ত্বিকভাবে সর্বোত্তম ফলনের কিছুটা ত্যাগ করে, যাতে অনুমানের প্রতি সংবেদনশীলতা কমে।
- Half Kelly প্রতিটি weight অর্ধেক করে। Kelly growth curve-এর সর্বোচ্চ বিন্দুর কাছে ঢাল কম, কিন্তু তার নিচে দ্রুত খাড়া হয়। তাই অর্ধেক stake নিলে তাত্ত্বিক growth rate-এর সামান্য অংশ ছাড়তে হয়, অথচ অতিরঞ্জিত edge-এর কারণে ক্ষতি অনেক বেশি কমে। Volatility targeting একই ধারণা denominator-এর ক্ষেত্রে প্রয়োগ করে। অর্থাৎ, short sample যে একমাত্র input দিতে পারে, তার ভিত্তিতে position size নির্ধারণ করা হয়।
- Shrinkage প্রতিটি estimated mean-কে estimates-এর cross-sectional average-এর দিকে টেনে আনে। Sample যত ছোট হয়, এই সমন্বয়ের পরিমাণ তত বাড়ে। এটি চূড়ান্ত পর্যায়ে নিলে প্রতিটি asset-এর expected return সমান হয়। Volatility-ও সমান হলে optimizer নিজে থেকেই equal weight প্রদান করে। Equal weight হলো সম্পূর্ণ shrunk portfolio।
- Constraints বলতে short selling নিষিদ্ধ করা এবং প্রতি position-এর জন্য সর্বোচ্চ সীমা নির্ধারণ করাকে বোঝায়। এগুলো একটি মাত্র সৌভাগ্যজনক estimate-কে কোনো weight অতিরিক্ত বাড়িয়ে দেওয়া থেকে আটকায়। এগুলো estimate উন্নত করে না; বরং ক্ষতি নিয়ন্ত্রণ করে।
- Expected returns পুরোপুরি বাদ দিলে minimum variance এবং risk parity অবশিষ্ট থাকে। এগুলো কেবল covariance ব্যবহার করে। Sample বাস্তবে যে input সরবরাহ করতে পারে, সেটিই এটি।
এই চারটির কোনোটিই sample-এ না থাকা তথ্য তৈরি করে না। এগুলো শুধু পরিবর্তন করে portfolio-র কতটা অংশ এমন তথ্যের ওপর নির্ভর করবে, যা আপনার কাছে নাও থাকতে পারে।
অপ্টিমাইজেশন কখন কার্যকর হয়
এই পরিবর্তন দুই দিকেই ঘটে। প্রকৃত গড়গুলোর মধ্যকার spread-এর তুলনায় T বড় হয়ে গেলে optimized allocation এগিয়ে যায় এবং সেই অবস্থান ধরে রাখে। spread যত বেশি হয়, এই পরিবর্তন তত আগে ঘটে। ডেটা যে ইনপুট সরবরাহ করে, সেগুলোর ক্ষেত্রে optimization-ই সঠিক পদ্ধতি। যেমন, expected return-এর তুলনায় covariance এবং hedge ratio অনেক বেশি নির্ভুলভাবে অনুমান করা যায়।
Equal weight-এরও নিজস্ব খরচ আছে। আপনার কাছে সত্যিই থাকা তথ্য এটি উপেক্ষা করে। ছোট universe-এ এটি যেকোনো optimizer-এর মতোই বেশি ঘনত্ব তৈরি করতে পারে। তাই এটিকে baseline হিসেবে বিবেচনা করুন। যে কোনো candidate weighting-কে এমন ডেটার ভিত্তিতে এই baseline-কে হারাতে হবে, যেটি weights নির্ধারণের সময় ব্যবহার করা হয়নি। একই sample-এ weights fit করে সেখানেই সেগুলোর performance score করা হলো backtesting-এ look-ahead bias-এর ভিন্ন রূপ। এতে প্রতিবারই optimizer-এর ফল অতিরঞ্জিত হয়। একটি মাত্র point estimate-এর পরিবর্তে measured edge-এর সম্ভাব্য পরিসর নির্ণয় করতে bootstrapped confidence intervals হলো standard tool।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Equal weight কি সত্যিই mean variance optimization-এর চেয়ে ভালো ফল দেয়?
সংক্ষিপ্ত নমুনায় প্রায়ই দেয়। Optimizer-এর প্রতিটি asset-এর expected return-এর একটি estimate দরকার। সেই estimate-এর standard error মোটামুটি asset-এর volatility-কে বছরের হিসাবে sample length-এর square root দিয়ে ভাগ করার সমান। এই error যতক্ষণ assetগুলোর প্রকৃত পার্থক্যের চেয়ে বড় থাকে, optimizer মূলত noise-কে সাজায়। Equal weight-এর ক্ষেত্রে ভুল হওয়ার মতো কোনো estimate নেই।
Expected return estimate করতে কতগুলো observation দরকার?
প্রায় সবার ধারণার চেয়েও বেশি। 20 শতাংশ volatility-সম্পন্ন কোনো asset-এর ক্ষেত্রে 1 বছরের daily data ব্যবহার করলে standard error বছরে প্রায় 20 percentage points থাকে। এই error অর্ধেক করতে calendar span 4 গুণ করতে হয়। একই বছরের মধ্যে intraday observation যোগ করলে কোনো লাভ হয় না। বিপরীতে, কয়েক মাসের data থেকেই volatility ব্যবহারযোগ্যভাবে estimate করা যায়।
Half Kelly কি কেবল একটি ছোট bet?
এটি অনুকূল শর্তে একটি ছোট bet। Kelly growth curve তার শীর্ষের কাছে সমতল থাকে। তাই stake অর্ধেক করলে theoretical growth rate-এর সামান্য অংশই ত্যাগ করতে হয়, অথচ path-এর volatility প্রায় অর্ধেক হয় এবং edge অতিরিক্ত করে estimate করার খরচ কমে।
1/N portfolio কী?
এটি এমন একটি portfolio, যেখানে Nটি position-এর প্রতিটিতে capital-এর সমান অংশ বিনিয়োগ করা হয় এবং নির্ধারিত সময়সূচি অনুযায়ী rebalance করা হয়। এতে return forecast বা covariance estimate—কোনোটিই দরকার হয় না। এই কারণেই যেসব weighting scheme-এর এসব estimate দরকার, সেগুলোর জন্য 1/N portfolio standard benchmark হিসেবে ব্যবহৃত হয়।
Panelগুলো কীভাবে তৈরি করা হয়েছে
তিনটি panel-ই daily close ব্যবহার করে এবং close-to-close simple return হিসাব করে। একই ticker ও তারিখের duplicate row থাকলে সেগুলো একটি close-এ সংহত করা হয়েছে। Average daily return-কে 252টি trading session দিয়ে গুণ করে mean annualize করা হয়েছে। Daily standard deviation-কে 252-এর square root দিয়ে গুণ করে volatility annualize করা হয়েছে। Yearly panel-এ কোনো calendar year তখনই রাখা হয়েছে, যখন সেখানে অন্তত 200টি session ছিল। Block panel-এ non-overlapping block ব্যবহার করা হয়েছে এবং প্রতিটি length-এর শেষে থাকা অসম্পূর্ণ block বাদ দেওয়া হয়েছে। এর window count column-এ প্রতিটি length থেকে উৎপন্ন block-এর সংখ্যা দেখানো হয়েছে। কোথাও dividend অন্তর্ভুক্ত করা হয়নি। তাই এগুলো price return, এবং dividend প্রদানকারী asset-এর mean-এর স্তর এখানে কম দেখানো হয়েছে। Panelগুলোর উদ্দেশ্য estimateগুলোর spread দেখানো, mean-এর স্তর নয়।
এখানে প্রতিটি panel-এর নিচে chart তৈরির exact SQL দেওয়া আছে, এবং simulation-এর seed-ও দেওয়া আছে। আপনার নিজস্ব name-এর তালিকায় একই estimate stability check চালাতে Strasmore terminal-এ plain English-এ অনুরোধ করুন।