২০২৬ সালের প্রথম ছয় মাস ছিল দুটি ভিন্ন বাজারের সমন্বয়: প্রথম প্রান্তিকে প্রতিটি প্রধান ইনডেক্স ETF হ্রাস পেয়েছে বা স্থিতিশীল ছিল, এবং দ্বিতীয় প্রান্তিকে তা কাটিয়ে উঠতে সক্ষম হয়েছে। SPY এই অর্ধবর্ষের শেষে 8.8% বৃদ্ধি পেয়েছে; QQQ বেড়েছে 18.7%; এবং IWM-এর 21.3% ছিল এই ছোট-ক্যাপ ETF-এর ইতিহাসে সেরা প্রথম ছয় মাস — এর বিস্তারিত তথ্য নিচে দেওয়া হলো, যা একটি কুয়েরির মাধ্যমে পূর্ববর্তী প্রতিটি বছরের সাথে তুলনা করে পুনরায় গণনা করা হয়েছে। সুদের হারের বাজার নিজস্ব চিত্র তুলে ধরেছে: 2s10s spread এই অর্ধবর্ষে কোনো ইনভারশন ছাড়াই 72 বেসিস পয়েন্ট থেকে 30 বেসিস পয়েন্টে সমতল হয়েছে। এই পৃষ্ঠাটি অর্ধবর্ষের পূর্ণাঙ্গ হিসাব প্রদান করে — স্কোরবোর্ড, ঐতিহাসিক র্যাঙ্কিং, মাসিক ধাপসমূহ, প্রতিটি মেচুরিটি অনুযায়ী সম্পূর্ণ ইল্ড কার্ভ, এগারোটি সেক্টর, অপশন টেপের মাসভিত্তিক বিবর্তন এবং এই অর্ধবর্ষের উল্লেখযোগ্য একক নামসমূহ। এখানে প্রতিটি সংখ্যা একটি সংরক্ষিত কুয়েরির ফলাফল; SQL দেখতে যেকোনো প্যানেল প্রসারিত করুন।
বোর্ডের অর্ধেক অংশ
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS h1_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY tickerদুইটি কোয়ার্টারের বিভাজনই এই অর্ধেকের প্রধান বৈশিষ্ট্য: SPY -5.2% এরপর 14.1%; QQQ -6.9% এরপর 26.5%। 21.3% সময়ে IWM ছিল এই অর্ধেকের নিরব নেতা — ছয় মাসে ছোট মূলধনের শেয়ারগুলো (small caps) প্রতিটি বড় মূলধনের (large-cap) সূচককে ছাড়িয়ে গেছে। কোয়ার্টারের বিস্তারিত তথ্য Q2 সারসংক্ষেপ এ রয়েছে। অর্ধেকের গাণিতিক হিসাব সম্পর্কে একটি নোট: ছয় মাসের জন্য SPY-এর 8.8% এর মান শুধুমাত্র Q2-এর তুলনায় অনেক কম, কারণ এই অর্ধেকের মধ্যে একটি পতন (drawdown) এবং একটি পুনরুদ্ধার (recovery) উভয়ই অন্তর্ভুক্ত — -5.2% এবং 14.1% এর চক্রবৃদ্ধি ফলাফল টেবিলের তথ্য অনুযায়ী এবং যেকোনো 'প্রথম অর্ধেকের রিটার্ন' শিরোনামে এই পুরো চক্রটিই অন্তর্ভুক্ত থাকে।
প্রতিটি প্রথম অর্ধেকের বিপরীতে এই অর্ধেকের অবস্থান
একটি 8.8% অর্ধাংশ কি অস্বাভাবিক? নিচের প্যানেলগুলো প্রতিটি বছরের মিনিটের হিসেব অনুযায়ী একই প্রথম অর্ধেকের রিটার্ন পুনরায় গণনা করে — জানুয়ারি থেকে জুন পর্যন্ত নিয়মিত সময়ের ওপেন থেকে ক্লোজ পর্যন্ত — প্রতিটি ETF জোড়ার জন্য একটি করে কুয়েরিতে। প্রতিটি বছরের জন্য একই গাণিতিক পদ্ধতি ব্যবহার করা হয়েছে এবং এরপর এই অর্ধাংশটিকে বাকিগুলোর বিপরীতে র্যাঙ্ক করা হয়েছে। মিনিটের ডেটা বা টেপের সবচেয়ে পুরনো তারিখটি নিচের পদ্ধতিতে যাচাই করা হয়েছে; রেকর্ডে থাকা প্রথম সম্পূর্ণ প্রথম অর্ধাংশটি হলো সেইটি যা রসিদ বা রসিদপত্রে উল্লেখ করা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
ticker,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 1) AS h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2003-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASCপ্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
count() AS halves_compared,
min(y) AS first_year,
anyIf(sessions, y = 2026) AS sessions_2026
FROM (
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
ticker,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2003-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASC2004 থেকে SPY-এর 8.8% হলো 23টি প্রথম অর্ধেকের মধ্যে 6তম র্যাঙ্ক (র্যাঙ্ক ১ = সেরা) — এটি উপরের এক-তৃতীয়াংশ, কোনো রেকর্ড নয়। QQQ-এর 18.7% হলো 16টি তুলনামূলক অর্ধেকের মধ্যে 3তম র্যাঙ্ক — QQQ সিরিজের সময়সীমা ছোট — কারণ ফান্ডটি কয়েক বছর ধরে অন্য একটি রুট সিম্বল ব্যবহার করেছিল — এবং কোনো সিম্বলের জন্য যদি একশোর কম প্রথম অর্ধেকের সেশন থাকে, তবে টেবিলের সেশন-কাউন্ট গার্ড অনুযায়ী তা বাদ দেওয়া হয়েছে, ফলে বাদ পড়া ডেটাগুলো স্পষ্টভাবে দেখা যাচ্ছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
ticker,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 1) AS h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('DIA', 'IWM')
AND window_start >= toDateTime('2003-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASCপ্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
count() AS halves_compared,
min(y) AS first_year,
anyIf(sessions, y = 2026) AS sessions_2026
FROM (
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
ticker,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('DIA', 'IWM')
AND window_start >= toDateTime('2003-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASCস্মল-ক্যাপ সারিটি এই অর্ধাংশের প্রধান আকর্ষণ: IWM হলো 2004 থেকে 23টি প্রথম অর্ধেকের মধ্যে 1তম র্যাঙ্ক — এই ফান্ডের জন্য এটি রেকর্ডে থাকা সেরা ফলাফল, যা টেবিলের প্রতিটি রিকভারি অর্ধাংশকেও ছাড়িয়ে গেছে। DIA-এর 8.4% হলো 23টি মধ্যে 4তম র্যাঙ্ক। সহজভাবে বললে এর ভিত্তি হলো: প্রতিটি ক্যালেন্ডার প্রথম অর্ধেকের মধ্যে নিয়মিত সময়ের ওপেন থেকে ক্লোজ পর্যন্ত রিটার্ন, প্রতি বছর একই গাণিতিক পদ্ধতি, এবং এই সময়ের শেষ প্রান্তকে ঊর্ধ্বসীমা হিসেবে ধরা হয়েছে যাতে পরবর্তী বছরগুলোর ডেটা যুক্ত করার ফলে তুলনার সেটটি নিঃশব্দে বড় না হয়ে যায়।
মাস ভিত্তিক বিশ্লেষণ
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start, ticker,
round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS month_return_pct,
round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY period_start, ticker
ORDER BY period_start, tickerবাজারের গতিপ্রকৃতি কিছুটা বৃদ্ধি পেয়ে, তারপর হ্রাস পেয়ে, আবার দ্রুত বৃদ্ধি পেয়ে এবং পুনরায় কিছুটা হ্রাস পেয়ে চলেছে: এপ্রিল ছিল এই অর্ধবার্ষিক সময়ের একটি গুরুত্বপূর্ণ মোড় (SPY 9.9%, QQQ 14.8% — এই ছয়টি মাসের মধ্যে QQQ-এর জন্য এটি ছিল সেরা মাস), এবং জুন মাসে SPY -1.2% মাত্রায় স্থিতিশীলভাবে শেষ হয়েছে। জুন মাসের বিস্তারিত বিশ্লেষণ এবং সেই সংখ্যাটির পেছনে বাজারের বিস্তৃতি সম্পর্কে জানতে এখানে দেখুন। মাস ভিত্তিক তালিকাটি লক্ষ্য করলে দেখা যায়: বছরটি প্রায় স্থিতিশীল অবস্থায় শুরু হয়েছিল (জানুয়ারিতে SPY 0.9%), ফেব্রুয়ারি (-0.5%) এবং মার্চ (-4.2%) মাসে বাজার নিম্নমুখী ছিল, এরপর এপ্রিল মাত্র একটি মাসেই এই ধারা পরিবর্তন করে দেয়, মে মাসে তা বৃদ্ধি পায় (4.9%), এবং জুন মাসে কিছুটা হ্রাস পায়। ছয়টি মাসের মধ্যে তিনটি মাস নেতিবাচক ছিল — একটি অর্ধবার্ষিক সময়ের জন্য এটি একটি ভারসাম্যপূর্ণ চিত্র, যা শেষ পর্যন্ত শক্তিশালী ইতিবাচক ফলাফল দিয়েছে। শেয়ার বাজারের অর্ধবার্ষিক ফলাফল সাধারণত এই ধরণেরই হয় এবং কোনো একটি নির্দিষ্ট মাসকে চূড়ান্ত সিদ্ধান্ত হিসেবে দেখা উচিত নয়।
সুদের হার: মেচিউরিটি অনুযায়ী সম্পূর্ণ কার্ভ
Treasury curve এই অর্ধবর্ষে কোনো নির্দিষ্ট দিকে সরে না গিয়ে বরং মোচড় বা twist নিয়েছে। একদম সামনের প্রান্তের মেচিউরিটিগুলো—যা পলিসির সাথে সবচেয়ে ঘনিষ্ঠভাবে সম্পর্কিত—খুবই সামান্য পরিবর্তিত হয়েছে; দুই বছরের হার ০.৬৬ শতাংশ পয়েন্ট বেড়েছে; আর ৩০ বছরের হার প্রায় অপরিবর্তিত রয়েছে। এই প্যানেলটি অর্ধবর্ষের শুরু এবং শেষের তুলনায় সম্পূর্ণ কার্ভটি তুলে ধরেছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT maturity, start_pct, end_pct, round((end_pct - start_pct) * 100, 0) AS change_bp FROM (
SELECT '1-month' AS maturity, (SELECT round(argMin(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS start_pct, (SELECT round(argMax(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS end_pct, 1 AS o
UNION ALL SELECT '3-month', (SELECT round(argMin(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), (SELECT round(argMax(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), 2
UNION ALL SELECT '1-year', (SELECT round(argMin(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), (SELECT round(argMax(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), 3
UNION ALL SELECT '2-year', (SELECT round(argMin(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), (SELECT round(argMax(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), 4
UNION ALL SELECT '5-year', (SELECT round(argMin(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), (SELECT round(argMax(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), 5
UNION ALL SELECT '10-year', (SELECT round(argMin(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), (SELECT round(argMax(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), 6
UNION ALL SELECT '30-year', (SELECT round(argMin(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), (SELECT round(argMax(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), 7
) ORDER BY oপরিবর্তনের কলামটি উপর থেকে নিচে পড়লে কার্ভের মোচড় বা twist স্পষ্টভাবে বোঝা যায়: ছয় মাসে ১-মাসের হার -2 basis point পরিবর্তিত হয়েছে, যেখানে ২-বছরের হার 67 বেড়েছে এবং ৩০-বছরের হার মাত্র 5 বেড়েছে। একটি parallel shift হলে প্রতিটি মেচিউরিটি একসাথে পরিবর্তিত হয়; কিন্তু এই অর্ধবর্ষে কার্ভের মাঝের অংশটি পরিবর্তিত হয়েছে এবং দুই প্রান্ত স্থির রাখা হয়েছে—স্বল্পমেয়াদী হার পলিসির কাছাকাছি স্থির ছিল এবং দীর্ঘমেয়াদী হার খুব সামান্য পরিবর্তিত হয়েছে।
এর ফলে ঢাল বা স্লোপ-এর কী পরিবর্তন হয়েছে
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
round((argMin(yield_10_year - yield_2_year, date)) * 100, 0) AS start_bp,
round((argMax(yield_10_year - yield_2_year, date)) * 100, 0) AS end_bp,
round(min((yield_10_year - yield_2_year)) * 100, 0) AS min_bp,
count() AS prints
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)স্বল্প মেয়াদী সুদের হার দীর্ঘ মেয়াদী সুদের হারের চেয়ে দ্রুত বৃদ্ধি পাওয়াকেই ফ্লাটেনিং বা সমতল হওয়া বলা হয়: 124 এর প্রিন্টগুলোতে 2s10s spread 72 থেকে 30 বেসিস পয়েন্টে নেমে এসেছে — এবং এই অর্ধবার্ষিক সময়ের সর্বনিম্ন প্রিন্ট ছিল 27, তাই কার্ভটি ইনভার্ট বা উল্টানো ছাড়াই সমতল হয়েছে। একটি সমতল কার্ভ ভবিষ্যতে কী ঘটবে সে সম্পর্কে কিছু "বোঝায়" কি না তা একটি পূর্বাভাস, এবং এই টেবিলটি কোনো পূর্বাভাস দেয় না।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT toString(date) AS d, round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)
ORDER BY dateদৈনিক সিরিজটি দেখায় যে এই ফ্লাটেনিং কোনো একক ঘটনা ছিল না বরং একটি ধীর প্রক্রিয়া ছিল — অর্ধবার্ষিক সময়ের মধ্যে 124 প্রিন্টে ধাপে ধাপে হ্রাস পেয়েছে, যেখানে স্প্রেড বছরের শুরুতে ছিল 72 বেসিস পয়েন্ট এবং শেষে ছিল 30।
সেক্টর: সূচকের আড়ালে থাকা বৈচিত্র্য
বাজারের কোন অংশগুলো প্রকৃতপক্ষে এই অর্ধেকের মুনাফা অর্জন করেছে? এগারোটি SPDR সেক্টর ETF-এর অর্ধেক এবং এক-চতুর্থাংশ বিভক্ত, একটি অনুসন্ধান।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY tickerবৈচিত্র্যই হলো মূল বিষয়: প্রযুক্তি (XLK) এই অর্ধেকের শেষে 30.8% বৃদ্ধি পেয়েছে — যার সাথে ছিল একটি 42% দ্বিতীয় প্রান্তিক — যেখানে কমিউনিকেশন সার্ভিসেস (XLC) শেষ করেছে -9.3%। এভাবে ছয় মাসে সেরা এবং সর্বনিম্ন সেক্টরের মধ্যে ব্যবধান ছিল প্রায় চল্লিশ শতাংশ। "বাজার" বা ইনডেক্স কেনা মানে এই দুই প্রান্তেরই মালিক হওয়া। দীর্ঘ সময়ের বিনিয়োগের ক্ষেত্রে এনার্জি (XLE) একটি সতর্কবার্তা: XLE একটি স্বাস্থ্যকর 18.8% অর্ধবার্ষিক ফলাফল দেখিয়েছে — যা একটি 36.9% প্রথম প্রান্তিক এবং পরবর্তীতে একটি -11% দ্বিতীয় প্রান্তিকের ওপর ভিত্তি করে গঠিত। সূচকগুলো যখন পড়ে গিয়েছিল সেই প্রান্তিকে এটি ছিল বাজারের সবচেয়ে শক্তিশালী বড় সেক্টর, এবং সূচকগুলো যখন পুনরুদ্ধার করেছিল সেই প্রান্তিকে এটি ছিল অন্যতম দুর্বলতম। ফিনান্সিয়ালস (XLF) ঠিক উল্টো চিত্র দেখিয়েছে: Q1-এ -9.9%, তারপর Q2-এ 7.7%। একটি মাত্র অর্ধবার্ষিক সংখ্যা এই উভয় পরিবর্তনকে সমতল করে দেয়; কিন্তু প্রান্তিক ভিত্তিক বিভাজনই হলো প্রকৃত চিত্র।
প্রতিটি সেক্টরে ট্রেড করার খরচ
রিটার্ন টেবিল সব জায়গায় পাওয়া যায়; কিন্তু কোট টেপ পাওয়া যায় না। এই প্যানেলটি প্রতিটি সেক্টর ETF-এর মিডিয়ান বিড-আস্ক স্প্রেড পরিমাপ করে। এটি একটি পূর্ণাঙ্গ রিপ্রেজেন্টেটিভ সেশনের ভিত্তিতে করা হয়েছে — অর্ধেকের মধ্যে 123টি সেশন, এবং এখানে ২৯ জুন তারিখটি পরিমাপ করা হয়েছে, যা সেই নামেই চিহ্নিত — ওই দিনের প্রতিটি NBBO আপডেট থেকে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 2) AS med_spread_bps,
round(count() / 1e6, 2) AS quote_updates_m,
countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND sip_timestamp >= toDateTime64('2026-06-29 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-29 20:00:00', 9)
GROUP BY ticker
ORDER BY med_spread_bpsএগারোটি কোটের প্রতিটিই মাত্র কয়েক বেসিস পয়েন্ট বা তার কম — সবচেয়ে কম 0.62 bps (XLV) এবং সবচেয়ে বেশি 2.23 bps (XLRE)। এর বাস্তব অর্থ হলো "সেক্টর ETF গুলো লিকুইড": যেকোনো সেক্টর ভিউতে প্রবেশ করার খরচ শতাংশের একশ ভাগের এক ভাগ হিসেবে পরিমাপ করা হয়। ইন্ডিভিজুয়াল স্টক বা একক শেয়ারের সাথে তুলনা করতে, ২৯ জুনের বিস্তারিত বিশ্লেষণ একই সেশনে একটি কম লিকুইডিটি সম্পন্ন স্টকের স্প্রেড এই লেভেলের তুলনায় শতগুণ বেশি দেখিয়েছে।
অর্ধবার্ষিক বাজারের ব্যাপকতা
অর্ধেক স্কেলে বাজারের ব্যাপকতা দুটি ভিন্ন মাত্রায় দেখা যাচ্ছে। প্রথমটি হলো বড় মাপের বিশ্লেষণ: SPY অর্ধবার্ষিক সময়ের 123 দিন জুড়ে 64টি দিন বৃদ্ধি পেয়েছে এবং 59টি দিন হ্রাস পেয়েছে — যা একটি শক্তিশালী ইতিবাচক অর্ধবার্ষিক সময়ের তুলনায় প্রায় সমপরিমাণ দিন বা একটি কয়েন ফ্লিপের মতো। দৈনিক চার্টে ক্রমাগত ঊর্ধ্বমুখী প্রবণতা এভাবেই দেখা যায়। দ্বিতীয়টি হলো সূক্ষ্ম মাপের বিশ্লেষণ — যেখানে প্রতিটি টিকার গণনা করা হয়েছে: জুন মাসের অ্যাডভান্সার/ডিক্লাইনার বিভাজন জুন মাসের সারসংক্ষেপে রয়েছে (সেখানে বৃদ্ধির চেয়ে পতনের টিকার সংখ্যা বেশি ছিল), এবং ত্রৈমাসিক সীমার গণনা Q2 এর সারসংক্ষেপে দেওয়া হয়েছে। ছয় মাসের সম্পূর্ণ বাজারের অ্যাডভান্সার স্ক্যান করার জন্য প্রয়োজনীয় ডেটা এই পৃষ্ঠার কোয়েরি বাজেটের চেয়ে বেশি; সেই সীমাবদ্ধতাটি এখানে প্রকাশ করা হলো।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT countIf(day_ret > 0) AS up_sessions,
countIf(day_ret < 0) AS down_sessions,
countIf(day_ret = 0) AS flat_sessions,
count() AS sessions_total
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 2) AS day_ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
)অপশন টেপ, মাস ভিত্তিক
একটি অর্ধ-বছরের তথ্য কেবল এটিই দেখাতে পারে: অপশন টেপ কীভাবে পরিবর্তিত হয়েছে। নিচের প্রতিটি প্যানেল একটি নির্দিষ্ট মাসের সম্পূর্ণ টেপ স্ক্যান — মোট চুক্তির পরিমাণ এবং সেই দিনের মেয়াদের (0DTE) চুক্তির পরিমাণ। প্রাপ্ত তথ্য অনুযায়ী: চুক্তির পরিমাণ জানুয়ারিতে 1316.1 মিলিয়ন থেকে বেড়ে জুন মাসে 1477.9 মিলিয়নে পৌঁছেছে — যা এই অর্ধ-বছরের সবচেয়ে ব্যস্ত অপশন মাস। একই দিনে মেয়াদের চুক্তির অনুপাত জানুয়ারিতে 26.5% থেকে বেড়ে জুন মাসে 34.3% এ পৌঁছেছে, যা এই অর্ধ-বছরের সর্বোচ্চ পরিমাণ। জুন মাসের অপশন ভলিউমের এক-তৃতীয়াংশ সেই দিনেই মেয়াদের চুক্তির মাধ্যমে লেনদেন হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-01-01 00:00:00')
AND window_start < toDateTime('2026-02-01 00:00:00')প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-02-01 00:00:00')
AND window_start < toDateTime('2026-03-01 00:00:00')প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-03-01 00:00:00')
AND window_start < toDateTime('2026-04-01 00:00:00')প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-04-01 00:00:00')
AND window_start < toDateTime('2026-05-01 00:00:00')প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-05-01 00:00:00')
AND window_start < toDateTime('2026-06-01 00:00:00')প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')লেনদেনের খরচ, মাসিক নমুনা অনুযায়ী
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session,
round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 3) AS med_spread_bps,
round(count() / 1e6, 2) AS quote_updates_m,
countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND ((sip_timestamp >= toDateTime64('2026-01-14 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-01-14 21:00:00', 9))
OR (sip_timestamp >= toDateTime64('2026-02-11 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-02-11 21:00:00', 9))
OR (sip_timestamp >= toDateTime64('2026-03-11 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-03-11 20:00:00', 9))
OR (sip_timestamp >= toDateTime64('2026-04-15 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-04-15 20:00:00', 9))
OR (sip_timestamp >= toDateTime64('2026-05-13 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-05-13 20:00:00', 9))
OR (sip_timestamp >= toDateTime64('2026-06-10 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-10 20:00:00', 9)))
GROUP BY session
ORDER BY session ASCপ্রতি মাসের দ্বিতীয় বুধবার SPY-এর মিডিয়ান কোটেড স্প্রেড: জানুয়ারি নমুনায় 0.145 bps, ফেব্রুয়ারিতে 0.144 bps, বসন্তকালীন নমুনাগুলোতে এর প্রায় দ্বিগুণ এবং জুন নমুনায় 0.409 bps — যা ছয়টি নমুনার মধ্যে সবচেয়ে বেশি। ভিত্তি হিসেবে জানানো হচ্ছে: এগুলো এককভাবে চিহ্নিত নমুনা সেশন (প্রতি মাসের দ্বিতীয় বুধবার), পুরো মাসের মিডিয়ান নয় — ছয় মাসের সম্পূর্ণ কোট-টেপ স্ক্যান করতে এই পৃষ্ঠার কুয়েরি বাজেট ছাড়িয়ে যাবে। নমুনার তারিখগুলো প্যানেলে দেওয়া আছে এবং অকার্যকর কোটগুলো সেখানে গণনা করা হয়েছে, সেগুলো বাদ দেওয়া হয়নি।
এই অর্ধবার্ষিকীর উল্লেখযোগ্য নামসমূহ
এটি সম্পাদকীয় পছন্দ নয়, বরং পরিমাপিত উল্লেখযোগ্যতা: নিচের তালিকাটি কোয়ার্টার-স্কেল ডলার-ভলিউম লিডারবোর্ডের শীর্ষে থাকা নামগুলোর সমষ্টি। এই পৃষ্ঠার তথ্যের সত্যতা নিশ্চিত করতে এটি পুনরায় গণনা করা হয়েছে এবং প্রতিটি নাম যা বিস্তারিত বিশ্লেষণ করা হয়েছে, তার সাথে লিঙ্ক যুক্ত করা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS dollar_bn,
round(100 * sum(toFloat64(close) * toFloat64(volume)) / max(sum(toFloat64(close) * toFloat64(volume))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-04-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8দ্বিতীয় প্রান্তিকে MU এর লেনদেন SPY এর তুলনায় বেশি ছিল ($2047.5 বিলিয়ন বনাম $2032 বিলিয়ন) — যা Q2 recap এ উল্লেখ করা হয়েছে। সেই লিডার সেটের ছয়টি একক নামের জন্য, অর্ধবার্ষিক ফলাফল হলো:
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT ticker,
round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
/ argMinIf(toFloat64(open), window_start, window_start >= toDateTime('2026-04-01 00:00:00') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'NVDA', 'TSLA', 'SNDK', 'AMD', 'INTC')
AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY tickerমেমরি এবং সেমিকন্ডাক্টর খাত এই অর্ধবার্ষিকীর আধিপত্য বিস্তার করেছে: ছয় মাসে SNDK 830.1% রিটার্ন দিয়েছে, MU 290% — এর জুনের প্রতিটি মুভমেন্ট এখানে বিশ্লেষণ করা হয়েছে — এবং INTC 269.3%। NVDA এই সেটের সবচেয়ে বড় লেনদেনকারী যার ছয় মাসের টার্নওভার ছিল $3287.9 বিলিয়ন এবং এর রিটার্ন ছিল 5.2% — মেমরি স্টকগুলোর বহুগুণ বৃদ্ধির বিপরীতে এটি ছিল এক অঙ্কের সংখ্যায়; এর জুনের বিস্তারিত বিশ্লেষণ প্রতিটি সেশনের ভিত্তিতে সেই পার্থক্য তুলে ধরেছে। TSLA এই সেটের একমাত্র নিম্নমুখী স্টক যা -8.2% রিটার্ন দিয়েছে। জুনের এই মেগা-লিস্টিংটি একটি পুনঃব্যবহৃত সিম্বল ব্যবহার করে লেনদেন করছে এবং সত্তা যাচাই না হওয়া পর্যন্ত এটি লিডার স্ক্যান থেকে বাদ রাখা হয়েছে — এর প্রথম মাসের প্রতিটি লেনদেনের বিস্তারিত এখানে রয়েছে। ভিত্তি: লিডার SET নির্বাচন করা হয়েছে Q2 রেগুলার-আওয়ার ডলার ভলিউম অনুযায়ী (উপরের স্ক্যান অনুযায়ী); রিটার্ন কলামগুলো অর্ধবার্ষিক, প্রথম রেগুলার-আওয়ার ওপেন থেকে শেষ রেগুলার-আওয়ার ক্লোজ পর্যন্ত।
অর্ধবার্ষিক IPO জোয়ার, মাস ভিত্তিক বিশ্লেষণ
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT toString(toStartOfMonth(listing_date)) AS m, count() AS listings
FROM global_markets.stocks_ipos
WHERE listing_date >= toDate('2026-01-01') AND listing_date <= toDate('2026-06-30')
GROUP BY m
ORDER BY mতালিকাভুক্তির জোয়ারটি ছিল অসম এবং শুরুর দিকে বেশি সক্রিয়: 47টি তালিকাভুক্তির মাধ্যমে ফেব্রুয়ারি ছিল এই অর্ধবার্ষিকীর সবচেয়ে ব্যস্ত মাস এবং 17টি ছিল সবচেয়ে শান্ত মাস — বিখ্যাত জুন মাসের মেগা-লিস্টিংটি একটি সাধারণ ভলিউমের মাসে এসেছিল (35টি তালিকাভুক্তির)।
অর্ধবার্ষিক ক্যালেন্ডার
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-01-01') AND ex_dividend_date <= toDate('2026-06-30')) AS ex_div_events,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-01-01') AND execution_date <= toDate('2026-06-30')) AS splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-01-01') AND listing_date <= toDate('2026-06-30')) AS ipos,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= toDate('2026-01-01') AND filing_date <= toDate('2026-06-30')) AS h1_filings,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-03-31')) AS filings_mar31,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-30')) AS filings_apr30,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30এই অর্ধবার্ষিক মৌসুমে 205টি কোম্পানি পাবলিকলি তালিকাভুক্ত হয়েছে — একটি তালিকাভুক্ত হওয়ার জোয়ার যার সবচেয়ে বড় জুনের অভিষেক নিয়ে রয়েছে নিজস্ব রসিদ-ভিত্তিক প্রতিবেদন — এর পাশাপাশি হয়েছে 830টি স্টক স্প্লিট এবং 28356টি এক্স-ডিভিডেন্ড ঘটনা। পরিমাপের জন্য বলা যায়, এই অর্ধবার্ষিক মৌসুমে প্রতিটি ট্রেডিং সেশনে গড়ে একটির বেশি নতুন তালিকাভুক্তকরণ ঘটেছে। ফাইলিংয়ের এই মোট সংখ্যাটি একটি ত্রিমাত্রিক প্রকাশের ইঙ্গিত দেয়: SEC ইনডেক্সে এমন প্রতিটি মাস শেষের দিন প্রায় শূন্য দেখাচ্ছে যার শেষ দিনটি ছিল কার্যদিবসে (মার্চ ৩১ তারিখে 55টি, এপ্রিল ৩০ তারিখে 34টি, এবং জুন ৩০ তারিখে 31টি ফাইলিং ছিল, যেখানে পার্শ্ববর্তী দিনগুলোতে ছিল হাজার হাজার ফাইলিং), তাই ফিড ব্যাকফিল না হওয়া পর্যন্ত অর্ধবার্ষিক ফাইলিংয়ের সংখ্যা প্রকৃত হারের চেয়ে কম প্রদর্শিত হয় — মাস শেষের এই ব্যবধান নিয়ে রয়েছে নিজস্ব রোগনির্ণয় নোট।
সেশনের রসিদ
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
(SELECT uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')) AS h1_sessionsডেটা নোটস
বিস্তারিত ডেটা নোটস
- Short interest ১৫ জুন settlement পর্যন্ত (এই তথ্যটি জেনারেট করার সময় পর্যন্ত প্রযোজ্য; জুন মাসের শেষ প্রিন্ট এখনো বাকি — বিস্তারিত তথ্য June recap এ পাবেন; সেই রিপোর্টটি আসলে এই পোস্টটি আপডেট করা হবে)।
- ২০২৬ সালের মাস-শেষ ফাইলিং-ইনডেক্স দিনের তিনটি দিন প্রায় খালি (৩১ মার্চ, ৩০ এপ্রিল, ৩০ জুন — যে ছয় মাসের শেষ দিনটি কার্যদিবস ছিল সেই মাসগুলোর প্রতিটি মাস-শেষ); এই তথ্যটি কাউন্টের সাথে সামঞ্জস্য রেখে দেওয়া হয়েছে এবং the month-end gap note এ এর কারণ ব্যাখ্যা করা হয়েছে। গত বছরের মাস-শেষগুলোতে হাজার হাজার ফাইলিং ছিল, তাই এটি একটি ফিড গ্যাপ, ফাইলিং ছুটির দিন নয়।
- Half scale-এর লিডারবোর্ড সীমাবদ্ধ: ছয় মাসের বাজার-ব্যাপী স্ক্যান এই পৃষ্ঠার জন্য নির্ধারিত কোয়েরি বাজেটের চেয়ে বেশি বড়; তাই উল্লেখযোগ্য নামগুলোর সেটটি ইনলাইন দেখানো quarter-scale লিডার স্ক্যান অনুযায়ী নির্বাচন করা হয়েছে এবং সেই নির্দিষ্ট সেটের জন্য অর্জিত রিটার্ন গণনা করা হয়েছে — এর ভিত্তি যেখানে প্রয়োজন সেখানে উল্লেখ করা হয়েছে। Q2 এবং June রিক্যাপে তাদের স্কেল অনুযায়ী পূর্ণাঙ্গ লিডার টেবিল রয়েছে।
- Half scale-এর whole-market breadth একইভাবে সীমাবদ্ধ — এখানে day-grain বিভাজন দেখানো হয়েছে; ticker-grain কাউন্টগুলো মাস এবং quarter স্কেলে রয়েছে, যা breadth সেকশনে লিঙ্ক করা হয়েছে।
- QQQ history series SPY-এর চেয়ে ছোট: ফান্ডটি কয়েক বছর একটি ভিন্ন রুট সিম্বলের অধীনে লেনদেন করা হয়েছে; session-count গার্ড সেই বছরগুলোকে দৃশ্যমানভাবে বাদ দেয় (প্রতি বছরের session count টেবিলে দেওয়া আছে)।
- ছয়টি options প্যানেল হলো whole-tape monthly স্ক্যান এবং spread trend প্রতি মাসে একটি লেবেলযুক্ত session-এর স্যাম্পল দেয় — উভয়ই batch path-এ চলে; স্যাম্পল বেস ইনলাইনে উল্লেখ করা হয়েছে।
- Microstructure সম্পর্কে বিস্তারিত June 29 deep-dive এ দেওয়া হয়েছে।
পদ্ধতি
- সময়কালটি হলো ১ জানুয়ারি – ৩০ জুন, ২০২৬ — 123টি সেশন, যা পর্যবেক্ষণ করা বার (bar) থেকে যাচাই করা হয়েছে। রিটার্ন বা মুনাফা প্রথমে প্রতিটি উইন্ডোর নিয়মিত সময়ের ওপেন থেকে শেষ নিয়মিত সময়ের ক্লোজ পর্যন্ত গণনা করা হয়, যা প্রদর্শিত একই কুয়েরি (query) দ্বারা সম্পন্ন করা হয়েছে।
- ঐতিহাসিক তুলনাগুলো জেনারেশনের সময় সম্পূর্ণ মিনিট হিস্টোরির বিপরীতে LIVE বা সরাসরি পুনরায় গণনা করা হয় — সংরক্ষিত মান থেকে কখনোই পড়া হয় না। ডেপথ ভেরিফিকেশন: এখানে বিলম্বিত ভিউতে ব্যবহৃত সবচেয়ে পুরনো মিনিট-বার তারিখটি বেস টেবিলের (সেপ্টেম্বর ২০০৩) সাথে মিলে যায়, যা লেখক তৈরির সময় যাচাই করা হয়েছে; তাই ফাইলে থাকা প্রথম সম্পূর্ণ অর্ধবর্ষ হলো ২০০৪ সালের। প্রতিটি হিস্টরি কুয়েরি এই সময়ের শেষ সীমাকে তার ঊর্ধ্বসীমা হিসেবে নির্ধারণ করে (পরবর্তী বছরগুলো অন্তর্ভুক্ত করার সময় তুলনা সেটটি বৃদ্ধি পায় না) এবং প্রতি বছরের সেশন সংখ্যা প্রদর্শিত একটি ন্যূনতম-সেশন গার্ড প্রয়োগ করে।
- টাইমস্ট্যাম্পগুলো কাঁচা UTC সীমার সাথে UTC ফরম্যাটে সংরক্ষিত। মাল্টি-ইয়ার হিস্টরি ব্লকগুলো ইস্টার্ন ওয়াল ক্লক অনুযায়ী নিয়মিত সময় ফিল্টার করে (৯:৩০–১৫:৫৯, প্রতিটি রো অনুযায়ী রূপান্তরিত — এটি কয়েক দশকের মধ্যে একমাত্র DST-নিরাপদ নিয়ম); EDT-অনলি রেঞ্জের মধ্যে সিঙ্গেল-উইন্ডো ব্লকগুলো সমতুল্য র র (raw)-UTC ব্যান্ড ব্যবহার করে। উভয় নিয়ম এখানে উল্লেখ করা হয়েছে।
- জেনারেশনটি গেটেড রিড-অনলি পাথ দিয়ে চালানো হয়; পাবলিক পেজ কখনোই লাইভ কুয়েরি করে না। ৫ জুলাই, ২০২৬ তারিখ পর্যন্ত ডেটা ওয়্যারহাউসের অবস্থা।
এটি নিয়মিত অর্ধ-বার্ষিক সারসংক্ষেপের প্রথম সংস্করণ; পূর্ণ-বার্ষিক সংস্করণ জানুয়ারিতে আসবে। ত্রৈমাসিক বিবরণ: Q2 2026। যে ম্যাক্রো তথ্যের বিপরীতে এই অর্ধ-বছরটি ট্রেড করা হয়েছে তা ম্যাক্রো পিকচার-এ রয়েছে।