Strasmore Research
Market Recap

H1 2026 Market Recap Analysis

Matt ConnorBy Matt Connor Updated 2026-07-23

2026 की पहली छमाही दो अलग-अलग बाजारों का मिश्रण थी: पहली तिमाही में सभी प्रमुख index ETF गिर गए या स्थिर रहे, जबकि दूसरी तिमाही ने इस नुकसान की भरपाई कर दी। SPY छमाही के अंत में 8.8% ऊपर बंद हुआ; QQQ 18.7% ऊपर रहा; और IWM का 21.3% इस small-cap ETF के हमारे रिकॉर्ड में अब तक का सबसे अच्छा पहला भाग रहा — इसका विवरण नीचे दिया गया है, जिसे एक ही query में पिछले प्रत्येक वर्ष के विरुद्ध पुनर्गणना किया गया है। rates market की अपनी कहानी थी: 2s10s spread बिना कभी invert हुए, छमाही के दौरान 72 basis points से 30 तक flatten हो गया। यह पृष्ठ छमाही का पूरा ledger है — scoreboard, historical rank, monthly staircase, maturity के अनुसार पूरी yield curve, ग्यारह sectors, options tape का महीने-दर-महीने विकास, और छमाही के notable single names। यहाँ प्रत्येक संख्या एक stored query का परिणाम है; SQL देखने के लिए किसी भी panel को expand करें।

बोर्ड पर आधा हिस्सा

क्वेरीH1 2026: चार index ETFs के लिए half, Q1, और Q2 रिटर्न — एक ही query में
हर आंकड़े के पीछे का पूरा 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 इस आधे हिस्से का शांत नेतृत्वकर्ता रहा — छह महीनों में स्मॉल कैप ने हर लार्ज-कैप इंडेक्स को पीछे छोड़ दिया। तिमाही का विवरण Q2 सारांश में दिया गया है। आधे हिस्से के गणित पर एक टिप्पणी: छह महीनों के लिए SPY का 8.8% अकेले Q2 की तुलना में बहुत कम है, क्योंकि इस आधे हिस्से में गिरावट और सुधार दोनों शामिल हैं — -5.2% और 14.1% का चक्रवृद्धि प्रभाव वहीं पहुँचता है जो तालिका में दिया गया है, और कोई भी 'पहली छमाही का रिटर्न' शीर्षक चुपचाप उस पूरे उतार-चढ़ाव को समाहित करता है।

डेटा में हर पहली छमाही के मुकाबले यह छमाही

क्या 8.8% छमाही असामान्य है? नीचे दिए गए पैनल हर साल के मिनट डेटा के लिए एक ही पहली छमाही का रिटर्न — जनवरी से जून तक, नियमित घंटों के बाजार खुलने से बंद होने तक — पुनर्गणना करते हैं। प्रत्येक ETF जोड़ी के लिए एक ही क्वेरी का उपयोग किया जाता है और हर साल के लिए समान गणना की जाती है, फिर इस छमाही की तुलना अन्य छमाही से की जाती है। मिनट डेटा की सबसे पुरानी तारीख की पुष्टि नीचे दी गई कार्यप्रणाली में की गई है; रिकॉर्ड में मौजूद पहली पूर्ण पहली छमाही वह है जिसका उल्लेख रसीदों में है।

क्वेरीप्रत्येक first half: SPY और QQQ, प्रति वर्ष समान गणना (प्रति-वर्ष session counts)
हर आंकड़े के पीछे का पूरा 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
क्वेरीरैंक विवरण: इस half की तुलना प्रत्येक पिछले half से (SPY और QQQ; rank 1 = सर्वश्रेष्ठ; स्वयं को छोड़कर)
हर आंकड़े के पीछे का पूरा 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 ASC

2004 से अब तक, SPY की 8.8% छमाही 23 पहली छमाही में से 6 स्थान पर है (rank 1 = सर्वश्रेष्ठ) — यह ऊपरी तिहाई हिस्सा है, कोई रिकॉर्ड नहीं। QQQ की 18.7% छमाही 16 तुलनीय छमाही में से 3 स्थान पर है — QQQ श्रृंखला छोटी है — कुछ वर्षों तक फंड एक अलग रूट सिंबल के तहत ट्रेड किया गया था — और यदि किसी सिंबल के लिए एक सौ से कम पहली छमाही सत्र वाले वर्ष हैं, तो उन्हें तालिका में दिखाए गए सत्र-गणना गार्ड द्वारा बाहर कर दिया जाता है, इसलिए बहिष्करण (exclusions) स्पष्ट रूप से दिखाई देते हैं।

क्वेरीप्रत्येक first half: DIA और IWM, समान गणना
हर आंकड़े के पीछे का पूरा 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
क्वेरीरैंक विवरण: DIA और IWM की तुलना प्रत्येक पिछले first half से (rank 1 = सर्वश्रेष्ठ; स्वयं को छोड़कर)
हर आंकड़े के पीछे का पूरा 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 स्थान पर है। आधार सरल है: प्रत्येक कैलेंडर पहली छमाही के भीतर नियमित घंटों का ओपन-टू-क्लोज, हर साल समान गणना, और ऊपरी सीमा इस अवधि के अंत पर निर्धारित है ताकि बाद के वर्षों के डेटा को शामिल करने पर तुलना सेट चुपचाप न बढ़ जाए।

महीने दर महीने

क्वेरीमाहवार half रिटर्न (SPY और QQQ, एक ही query में समान गणना)
हर आंकड़े के पीछे का पूरा 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 इस छमाही में शिफ्ट होने के बजाय ट्विस्ट हुई। सबसे शुरुआती हिस्सा — जो पॉलिसी का बारीकी से अनुसरण करता है — लगभग स्थिर रहा; two-year में दो-तिहाई प्रतिशत अंक की वृद्धि हुई; और thirty-year में कोई खास बदलाव नहीं आया। यह पैनल पूरी कर्व को छमाही की शुरुआत और अंत के बीच प्रदर्शित करता है।

क्वेरीसात maturities: half के प्रारंभ और अंत में yield, और परिवर्तन
हर आंकड़े के पीछे का पूरा 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

यदि आप change कॉलम को ऊपर से नीचे तक पढ़ें, तो ट्विस्ट स्पष्ट है: छह महीनों में 1-month में -2 basis points का बदलाव आया, जबकि 2-year में 67 की वृद्धि हुई और 30-year में केवल 5 की वृद्धि हुई। एक parallel shift में सभी maturities एक साथ चलती हैं; इस छमाही में कर्व का मध्य भाग हिला, जबकि दोनों छोर स्थिर रहे — short rates पॉलिसी के पास टिके रहे, और long rates में बहुत कम रीप्राइसिंग हुई।

इससे ढलान (slope) पर क्या प्रभाव पड़ा

क्वेरीSlope विवरण: प्रारंभ, अंत, न्यूनतम — इस half में spread कभी invert नहीं हुआ
हर आंकड़े के पीछे का पूरा 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)

जब short end, long end की तुलना में तेज़ी से बढ़ता है, तो उसे flattening कहा जाता है: 124 के दौरान 2s10s spread 72 से घटकर 30 basis points पर आ गया — और इस छमाही का सबसे निचला स्तर 27 था, इसलिए curve बिना inverted हुए ही flatten हो गया। आगे क्या होगा, इस बारे में flatter curve का कोई "मतलब" है या नहीं, यह एक पूर्वानुमान है, और यह तालिका पूर्वानुमान नहीं लगाती है।

क्वेरी2s10s spread, half का प्रत्येक print
हर आंकड़े के पीछे का पूरा 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

Daily series से पता चलता है कि flattening कोई एक घटना नहीं बल्कि एक निरंतर प्रक्रिया थी — छमाही के दौरान 124 prints धीरे-धीरे नीचे आए, जिसमें spread साल की शुरुआत 72 basis points पर करके 30 पर समाप्त हुआ।

Sectors: index द्वारा छिपाया गया dispersion

बाजार के किन हिस्सों ने वास्तव में इस छमाही में मुनाफा कमाया? ग्यारह SPDR sector ETFs, आधी छमाही और एक तिमाही का विभाजन, एक क्वेरी।

क्वेरीग्यारह sector ETFs: H1 2026 रिटर्न, Q1 और Q2 विभाजन, और H1 dollar volume
हर आंकड़े के पीछे का पूरा 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

Dispersion ही मुख्य कहानी है: technology (XLK) ने 30.8% की बढ़त के साथ छमाही समाप्त की — जिसमें 42% की दूसरी तिमाही रही — जबकि communication services (XLC) -9.3% पर समाप्त हुआ, जिससे छह महीनों में सबसे अच्छे और सबसे खराब sector के बीच लगभग चालीस प्रतिशत अंकों का अंतर रहा। "the market" में निवेश करने का अर्थ था कि आपने इन दोनों छोरों को धारण किया। Energy, लंबी अवधि के निवेश के बारे में एक चेतावनी है: XLE एक स्वस्थ 18.8% छमाही दिखाता है — जो 36.9% की पहली तिमाही और उसके बाद -11% की दूसरी तिमाही से बना है। जब indexes गिरे थे, तब यह बाजार का सबसे मजबूत large sector था, और जब उन्होंने वापसी की, तब यह सबसे कमजोर sectors में से एक था। Financials (XLF) में इसके ठीक विपरीत स्थिति देखी गई: Q1 में -9.9%, फिर Q2 में 7.7%। एक एकल H1 आंकड़ा दोनों उतार-चढ़ाव को सपाट कर देता है; तिमाही विभाजन ही वास्तविक दृष्टिकोण है।

प्रत्येक सेक्टर में ट्रेड करने की लागत

रिटर्न टेबल हर जगह उपलब्ध हैं; लेकिन कोट टेप नहीं। यह पैनल एक पूर्ण प्रतिनिधि सत्र के दौरान प्रत्येक सेक्टर ETF के मीडियन बिड-आस्क स्प्रेड को मापता है — आधे साल में 123 सत्र, और यहाँ जून 29 को मापा गया है, जिसे इसी नाम से लेबल किया गया है — उस दिन के प्रत्येक NBBO अपडेट से।

क्वेरीsector ETF द्वारा median quoted spread, एक प्रतिनिधि session (June 29, 2026), regular hours
हर आंकड़े के पीछे का पूरा 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 लिक्विड हैं": किसी भी सेक्टर व्यू में प्रवेश करने की लागत प्रतिशत के सौवें हिस्से में मापी जाती है। व्यक्तिगत शेयरों के मुकाबले तुलना के लिए, 29 जून का गहन विश्लेषण उसी सत्र में एक कम लिक्विड नाम के स्प्रेड को इन स्तरों से सैकड़ों गुना अधिक मापता है।

आधे हिस्से में व्यापकता (Breadth)

आधे पैमाने पर व्यापकता दो स्तरों पर देखी जा सकती है। पहला स्तर: SPY ने इस आधे हिस्से के 123 में 59 गिरावट के मुकाबले 64 बढ़त दर्ज की — यह एक ठोस सकारात्मक आधे हिस्से के भीतर लगभग पचास-पचास (coin flip) दिनों का अनुपात है, जो दैनिक चार्ट पर धीरे-धीरे होने वाली बढ़त को दर्शाता है। दूसरा स्तर — जिसमें हर ticker शामिल है — मासिक पैमाने पर है: जून के advancer/decliner का विवरण जून के सारांश में है (वहाँ बढ़ने वाले tickers की तुलना में गिरने वाले अधिक थे), और तिमाही-सीमा की गणना Q2 के सारांश में दी गई है। छह महीने के पूरे-बाजार के advancer स्कैन के लिए आवश्यक डेटा इस पृष्ठ के क्वेरी बजट से अधिक है; इस सीमा को चुपचाप कम करने के बजाय यहाँ स्पष्ट किया गया है।

क्वेरीH1 में SPY sessions: up बनाम down
हर आंकड़े के पीछे का पूरा 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% हो गया, जो इस छमाही का उच्चतम महीना था। जून के ऑप्शंस वॉल्यूम का एक तिहाई हिस्सा उन कॉन्ट्रैक्ट्स में ट्रेड किया गया जो उसी दिन समाप्त हो रहे थे।

क्वेरीJanuary: whole-tape options contract volume और same-day-expiry share
हर आंकड़े के पीछे का पूरा 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')
क्वेरीFebruary: whole-tape options contract volume और same-day-expiry share
हर आंकड़े के पीछे का पूरा 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')
क्वेरीMarch: whole-tape options contract volume और same-day-expiry share
हर आंकड़े के पीछे का पूरा 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')
क्वेरीApril: whole-tape options contract volume और same-day-expiry share
हर आंकड़े के पीछे का पूरा 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')
क्वेरीMay: whole-tape options contract volume और same-day-expiry share
हर आंकड़े के पीछे का पूरा 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')
क्वेरीJune: whole-tape options contract volume और same-day-expiry share
हर आंकड़े के पीछे का पूरा 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')

व्यापार करने की लागत, मासिक नमूना

क्वेरीSPY median quoted spread, प्रति माह एक sample session (second Wednesdays), प्रत्येक NBBO update
हर आंकड़े के पीछे का पूरा 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, वसंत के नमूनों के दौरान लगभग उससे दोगुना, और जून के नमूने में 0.409 bps था — जो छह नमूनों में सबसे अधिक है। आधार: ये एकल लेबल वाले नमूना सत्र (प्रत्येक माह का दूसरा बुधवार) हैं, न कि पूरे महीने का औसत — छह महीने के पूरे कोट-टेप स्कैन के लिए इस पृष्ठ के क्वेरी बजट से अधिक डेटा की आवश्यकता होगी। नमूना तिथियां पैनल में दी गई हैं, और अमान्य कोट को वहां गिना गया है, उन्हें चुपचाप हटाया नहीं गया है।

छमाही के प्रमुख नाम

यह संपादकीय चयन नहीं, बल्कि मापा गया महत्व है: नीचे दी गई सूची तिमाही-आधारित डॉलर-वॉल्यूम लीडरबोर्ड के शीर्ष पर है। इसे यहाँ पुनर्गणना के साथ प्रस्तुत किया गया है ताकि इस पृष्ठ के पास अपना प्रमाण हो, और प्रत्येक नाम जो गहन विश्लेषण के लिए योग्य है, वह उससे जुड़ा हुआ है।

क्वेरीQ2 regular-hours dollar volume, whole tape (एक symbol सूची से बाहर)
हर आंकड़े के पीछे का पूरा 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 सारांश में भी है। उस लीडर सेट के छह एकल नामों के लिए, छमाही का विवरण इस प्रकार है:

क्वेरीleader set का half और Q2 रिटर्न तथा half dollar volume — ticker-filtered query
हर आंकड़े के पीछे का पूरा 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% का रिटर्न दिया — जबकि मेमोरी शेयरों ने कई गुना वृद्धि की, NVDA का रिटर्न केवल एक अंक (single digits) तक सीमित रहा; इसका जून का गहन विश्लेषण सत्र-दर-सत्र उस अंतर को दर्शाता है। TSLA इस सेट का एकमात्र गिरावट वाला शेयर है जो -8.2% पर है। जून में सूचीबद्ध हुआ मेगा-लिस्टिंग एक पुन: उपयोग किए गए सिंबल के तहत ट्रेड करता है और इकाई सत्यापन (entity verification) लंबित होने के कारण लीडर स्कैन से बाहर रखा गया है — इसके पहले महीने का अपना विस्तृत विवरण यहाँ है। आधार: लीडर SET का चयन Q2 के नियमित घंटों के डॉलर वॉल्यूम द्वारा किया गया है (ऊपर दिया गया स्कैन); रिटर्न कॉलम छमाही के हैं, जो पहले नियमित घंटों के खुलने से अंतिम नियमित घंटों के बंद होने तक के हैं।

IPO की लहर, महीने दर महीने

क्वेरीhalf के दौरान प्रति माह नई listings
हर आंकड़े के पीछे का पूरा 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 लिस्टिंग) में आई।

छमाही का कैलेंडर

क्वेरीH1 2026 का corporate calendar (सभी तीन month-end filing-index gaps)
हर आंकड़े के पीछे का पूरा 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 इंडेक्स में उन सभी महीने के अंत में डेटा लगभग शून्य है, जिनका अंतिम कैलेंडर दिन कार्यदिवस (weekday) था (55 फाइलिंग 31 मार्च को, 34 30 अप्रैल को, और 31 30 जून को इंडेक्स की गईं, जबकि आस-पास के दिनों में हजारों फाइलिंग थीं), इसलिए जब फीड बैकफिल हो जाता है, तब तक छमाही फाइलिंग की संख्या कम दिखाई देती है — महीने के अंत के इस अंतर का अपना नैदानिक नोट है

सत्र की रसीद

क्वेरीhalf में 123 sessions, tape से सत्यापित
हर आंकड़े के पीछे का पूरा 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

डेटा नोट्स

पूर्ण डेटा नोट्स
  • शॉर्ट इंटरेस्ट 15 जून के सेटलमेंट तक सीमित है (जनरेशन के समय तक — जून के अंत का प्रिंट लंबित है — पूर्ण विवरण June recap में है; यह पोस्ट डेटा आने पर पुन: उत्पन्न होगी)।
  • 2026 के तीन महीने के अंत के फाइलिंग-इंडेक्स दिन लगभग खाली हैं (31 मार्च, 30 अप्रैल, 30 जून — उस छमाही का प्रत्येक महीने का अंत जिसका अंतिम कैलेंडर दिन कार्यदिवस था); गणना के साथ ही इनका खुलासा किया गया है, जिसका विवरण the month-end gap note में है। पिछले वर्ष के महीने के अंत में हजारों फाइलिंग होती हैं, इसलिए यह एक फीड गैप है, फाइलिंग हॉलिडे नहीं।
  • हाफ स्केल पर लीडरबोर्ड सीमित है: छह महीने का मार्केट-वाइड स्कैन इस पेज द्वारा जनरेट किए गए क्वेरी बजट से अधिक है, इसलिए उल्लेखनीय नामों का सेट इनलाइन दिखाए गए क्वार्टर-स्केल लीडर स्कैन द्वारा चुना जाता है, और उस निश्चित सेट के लिए हाफ के रिटर्न की गणना की जाती है — इसका आधार वहां बताया गया है जहां इसका उपयोग किया जाता है। Q2 और June रीकैप अपने स्केल पर पूर्ण लीडर टेबल प्रदान करते हैं।
  • हाफ स्केल पर होल-मार्केट ब्रेड्थ भी सीमित है — डे-ग्रेन स्प्लिट दिखाया गया है; टिकर-ग्रेन काउंट मंथ और क्वार्टर स्केल पर उपलब्ध हैं, जो ब्रेड्थ सेक्शन में लिंक किए गए हैं।
  • QQQ हिस्ट्री सीरीज SPY से छोटी है: फंड कुछ वर्षों तक एक अलग रूट सिंबल के तहत ट्रेड किया गया था; सेशन-काउंट गार्ड उन वर्षों को स्पष्ट रूप से बाहर रखता है (प्रति वर्ष सेशन काउंट टेबल में दिए गए हैं)।
  • छह ऑप्शंस पैनल होल-टेप मंथली स्कैन हैं और स्प्रेड ट्रेंड प्रति माह एक लेबल किए गए सेशन का सैंपल लेता है — दोनों बैच पाथ पर चलते हैं; सैंपल बेस इनलाइन में बताए गए हैं।
  • माइक्रोस्ट्रक्चर June 29 deep-dive में उपलब्ध है।

कार्यप्रणाली

  • यह अवधि 1 जनवरी – 30 जून, 2026 है — 123 सत्र, जिन्हें देखे गए बार्स (bars) से सत्यापित किया गया है। रिटर्न की गणना प्रत्येक विंडो के भीतर नियमित घंटों के ओपन से लेकर अंतिम नियमित घंटों के क्लोज तक की जाती है, जो सभी दिखाए गए समान क्वेरीज़ में कंप्यूट किए गए हैं।
  • ऐतिहासिक तुलनाओं को जनरेशन के समय पूर्ण मिनट इतिहास के विरुद्ध LIVE पुनर्गणना (recompute) किया जाता है — इन्हें कभी भी स्टोर किए गए मानों से नहीं पढ़ा जाता है। गहराई सत्यापन (Depth verification): यहाँ उपयोग किए गए डिलेड व्यू (delayed view) में सबसे प्रारंभिक मिनट-बार तिथि बेस टेबल (सितंबर 2003) से मेल खाती है, जिसे लेखन के समय जांचा गया है, इसलिए फ़ाइल पर उपलब्ध पहला पूर्ण प्रथमार्ध (first half) 2004 का है। प्रत्येक इतिहास क्वेरी अपनी ऊपरी सीमा को इस अवधि के अंत पर पिन करती है (बाद के वर्षों के शामिल होने पर तुलना सेट बढ़ नहीं सकता है) और प्रति-वर्ष सत्र गणना के साथ एक न्यूनतम-सत्र गार्ड लागू करती है।
  • टाइमस्टैम्प कच्चे UTC बाउंड्स के साथ UTC में स्टोर किए गए हैं। मल्टी-ईयर इतिहास ब्लॉक पूर्वी दीवार घड़ी (9:30–15:59, प्रति पंक्ति परिवर्तित — दशकों तक एकमात्र DST-सुरक्षित परंपरा) पर नियमित घंटों को फ़िल्टर करते हैं; EDT-केवल रेंज में सिंगल-विंडो ब्लॉक समकक्ष कच्चे-UTC बैंड का उपयोग करते हैं। दोनों परंपराएं यहाँ बताई गई हैं।
  • जनरेशन गेटेड रीड-ओनली पाथ के माध्यम से चलता है; सार्वजनिक पेज कभी भी लाइव क्वेरी नहीं करता है। 5 जुलाई, 2026 तक वेयरहाउस की स्थिति।

यह स्थायी अर्धवार्षिक सारांश का पहला संस्करण है; पूर्ण-वर्ष संस्करण जनवरी में आएगा। तिमाही विवरण: Q2 2026। जिस मैक्रो के विरुद्ध आधा हिस्सा ट्रेड किया गया है, वह मैक्रो पिक्चर में है।