Strasmore Research
Market Recap

Marktrückblick erstes Halbjahr 2026

Matt ConnorBy Matt Connor Updated 2026-07-24

Das erste Halbjahr 2026 bestand aus zwei unterschiedlichen Marktphasen: Einem ersten Quartal, in dem jeder große Index-ETF fiel oder stagnierte, und einem zweiten Quartal, das diese Verluste mehr als ausglich. Der SPY schloss das Halbjahr mit einem Plus von 8.8% ab; der QQQ stieg um 18.7%; und die 21.3% von IWM war das beste erste Halbjahr, das dieser Small-Cap-ETF in unseren Daten verzeichnet hat — der Beleg ist unten aufgeführt, neu berechnet im Vergleich zu jedem vorangegangenen Jahr in einer Abfrage. Der Zinsmarkt zeigte ein eigenes Bild: Der 2s10s spread flachte im Verlauf des Halbjahres von 72 Basispunkten auf 30 ab, ohne jemals zu invertieren. Diese Seite ist die vollständige Bilanz des Halbjahres — die Ergebnisliste, der historische Rang, die monatliche Entwicklung, die gesamte Zinskurve nach Laufzeit, die elf Sektoren, die monatliche Entwicklung der Optionsdaten und die bemerkenswerten Einzelwerte des Halbjahres. Jede Zahl hier ist das Ergebnis einer gespeicherten Abfrage; erweitern Sie jedes Panel für das SQL.

Die Halbjahresbilanz

AbfrageH1 2026: Halb-, Q1- und Q2-Renditen der vier Index-ETFs – berechnet in einer Abfrage
Das exakte SQL hinter jeder Zahl
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

Die Aufteilung in zwei Quartale prägt die Struktur des Halbjahres: SPY -5.2% dann 14.1%; QQQ -6.9% dann 26.5%. IWM war der stille Anführer des Halbjahres bei 21.3% — Small Caps übertrafen jeden Large-Cap-Index über die sechs Monate hinweg. Die Details zum Quartal finden Sie im Q2-Rückblick. Ein Hinweis zur Arithmetik der Halbjahreswerte: Die 8.8% von SPY für die sechs Monate ist deutlich geringer als die alleinige Q2-Performance, da das Halbjahr einen Drawdown und eine Erholung umfasst — die Kombination aus -5.2% und 14.1% ergibt den Wert in der Tabelle, und jede Schlagzeile zur „Rendite des ersten Halbjahres“ verschlüsselt stillschweigend diesen vollständigen Zyklus.

Die erste Hälfte im Vergleich zu allen anderen ersten Halbjahresperioden

Ist eine 8.8% Hälfte ungewöhnlich? Die folgenden Tabellen berechnen dieselbe Rendite der ersten Hälfte neu — von der Eröffnung bis zum Schluss der regulären Handelszeiten, jeweils von Januar bis Juni — für jedes Jahr der Minutendaten. Dies geschieht in einer Abfrage pro ETF-Paar mit identischer Arithmetik für jedes Jahr. Anschließend wird diese Hälfte mit dem Rest verglichen. Das früheste Datum der Minutendaten wird in der untenstehenden Methodik verifiziert; die erste vollständige erste Hälfte in den Aufzeichnungen ist diejenige, die in den Belegen genannt wird.

AbfrageJedes erste Halbjahr im Tape: SPY und QQQ, identisch nach Jahr neu berechnet (jährliche Sitzungsanzahl angezeigt)
Das exakte SQL hinter jeder Zahl
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
AbfrageRanking-Ergebnisse: Dieses Halbjahr im Vergleich zu allen vorangegangenen (SPY und QQQ; Rang 1 = best; Selbstvergleich ausgeschlossen)
Das exakte SQL hinter jeder Zahl
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

Die 8.8% Rendite von SPY liegt bei 6 von 23 ersten Halbjahresperioden seit 2004 (Rang 1 = bestes Ergebnis) — dies entspricht dem oberen Drittel, ist aber kein Rekord. Die 18.7% Rendite von QQQ liegt bei 3 von 16 vergleichbaren Halbjahresperioden — die QQQ-Serie ist kürzer — der Fonds handelte über einen Zeitraum von Jahren unter einem anderen Tickersymbol. Zudem wird jedes Jahr mit weniger als einhundert Sitzungen in der ersten Hälfte durch eine in der Tabelle gezeigte Sitzungsanzahl-Sperre ausgeschlossen, sodass Ausschlüsse sichtbar und nicht stillschweigend erfolgen.

AbfrageJedes erste Halbjahr im Tape: DIA und IWM, gleiche Arithmetik
Das exakte SQL hinter jeder Zahl
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
AbfrageRanking-Ergebnisse: DIA und IWM im Vergleich zu jedem vorangegangenen ersten Halbjahr (Rang 1 = best; Selbstvergleich ausgeschlossen)
Das exakte SQL hinter jeder Zahl
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

Die Zeile für Small-Caps ist die wichtigste Information: IWM liegt bei 1 von 23 ersten Halbjahresperioden seit 2004 — dies ist das beste Ergebnis in der Historie für diesen Fonds und liegt vor jeder anderen Erholungsphase in der Tabelle. Die 8.4% Rendite von DIA liegt bei 4 von 23. Die Grundlage ist einfach: die Rendite von der Eröffnung bis zum Schluss der regulären Handelszeiten innerhalb jeder Kalender-Halbjahresperiode, mit identischer Arithmetik für jedes Jahr. Die Obergrenze ist auf das Ende dieses Zeitraums festgelegt, damit der Vergleichssatz nicht unbemerkt wächst, wenn spätere Jahre hinzugefügt werden.

Monat für Monat

AbfrageDas Halbjahr, Monat für Monat (SPY und QQQ, identisch in einer Abfrage neu berechnet)
Das exakte SQL hinter jeder Zahl
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

Die Kurse stiegen leicht an, fielen, sanken stark, stiegen stark an, sanken leicht: Der April markierte den Wendepunkt der ersten Hälfte (SPY 9.9%, QQQ 14.8% — der beste Monat für QQQ in diesem Halbjahr), und der Juni schloss für den SPY ruhig bei -1.2% ab. Eine Zusammenfassung des Juni unter Berücksichtigung der Marktbreite hinter diesem ruhigen Wert finden Sie hier. Die monatliche Analyse der Tabelle: Das Jahr begann nahezu unverändert (SPY 0.9% im Januar), sank im Februar (-0.5%) und März (-4.2%), bevor der April den Trend in einem einzigen Monat umkehrte, der Mai ihn fortsetzte (4.9%) und der Juni sich abschwächte. Drei der sechs Monate waren negativ – eine Gleichverteilung der Monatszahlen für ein Halbjahr, das solide positiv abschloss. Dies entspricht dem üblichen Verlauf von Aktienhalbjahren und ist wichtig zu beachten, wenn ein einzelner Monat als abschließendes Urteil interpretiert wird.

Zinsen: Die gesamte Kurve, nach Laufzeiten analysiert

Die Treasury-Kurve hat sich im Halbjahr eher gedreht als verschoben. Das kurzfristige Ende – die Laufzeiten, die die Geldpolitik am engsten abbilden – bewegte sich kaum; die zweijährliche Rendite stieg um zwei Drittel eines Prozentpunkts; die dreißigjährige blieb nahezu unverändert. Das Panel stellt die gesamte Kurve dem Vergleich vom Anfang des Halbjahres zum Ende gegenüber.

AbfrageSieben Laufzeiten: Rendite zu Beginn vs. Ende des Halbjahrs und die Veränderung
Das exakte SQL hinter jeder Zahl
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

Liest man die Spalte der Veränderungen von oben nach unten, ist die Drehung unverkennbar: Der 1-Monats-Satz bewegte sich in sechs Monaten um -2 Basispunkte, während der 2-Jahres-Satz um 67 stieg und der 30-Jahres-Satz nur um 5. Eine Parallelschub bewegt alle Laufzeiten gemeinsam; dieses Halbjahr hat die Mitte der Kurve bewegt und beide Enden fixiert – die kurzfristigen Zinsen blieben nahe der Geldpolitik, die langfristigen Zinsen wurden kaum neu bewertet.

Auswirkungen auf die Steigung

AbfrageSlope-Ergebnisse: Start, Ende, Minimum – der Spread war in diesem Halbjahr nie invertiert
Das exakte SQL hinter jeder Zahl
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)

Eine Verflachung bedeutet, dass das kurzfristige Ende schneller steigt als das langfristige Ende: Der 2s10s spread sank über 124 Druckpunkte von 72 auf 30 Basispunkte – der niedrigste Wert in der Hälfte lag bei 27, sodass die Kurve flacher wurde, ohne jemals zu invertieren. Ob eine flachere Kurve eine Vorhersage für die zukünftige Entwicklung darstellt, ist eine Prognose, und diese Tabelle erstellt keine Prognosen.

AbfrageDer 2s10s spread, jeder Wert des Halbjahrs
Das exakte SQL hinter jeder Zahl
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

Die tägliche Serie zeigt, dass die Verflachung kein einzelnes Ereignis, sondern ein schleichender Prozess war – 124 Druckpunkte sanken im Verlauf der Hälfte, wobei der spread mit 72 Basispunkten begann und bei 30 endete.

Sektoren: Die Dispersion, die der Index verbarg

Welche Marktanteile haben im ersten Halbjahr tatsächlich Gewinne erzielt? Die elf SPDR Sector ETFs, aufgeteilt in Halbjahr und Quartal, eine Abfrage.

AbfrageDie elf Sektor-ETFs: H1 2026 Rendite, Q1 und Q2 Split sowie H1 Dollar-Volumen
Das exakte SQL hinter jeder Zahl
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

Die Dispersion ist der entscheidende Faktor: Technologie (XLK) schloss das Halbjahr mit einem Plus von 30.8% ab – mit einem 42% zweiten Quartal – während Communication Services (XLC) bei -9.3% landete. Dies entspricht einer Differenz von etwa vierzig Prozentpunkten zwischen dem besten und dem schlechtesten Sektor innerhalb von sechs Monaten. Eine Positionierung im „Markt“ bedeutete, beide Extreme zu halten. Der Energiesektor (XLE) dient als Warnung vor langfristigen Trends: XLE zeigt ein gesundes 18.8% Halbjahr – aufgebaut aus einem 36.9% ersten Quartal, gefolgt von einem -11% zweiten. In dem Quartal, in dem die Indizes fielen, war er der stärkste Large-Cap-Sektor und gehörte in dem Erholungsquartal zu den schwächsten. Finanzwerte (XLF) entwickelten sich genau umgekehrt: -9.9% im ersten Quartal, dann 7.7% im zweiten Quartal. Eine einzige Zahl für das erste Halbjahr glättet diese Schwankungen; die Aufteilung nach Quartalen bietet die ehrlichere Sicht.

Die Kosten für den Handel in den einzelnen Sektoren

Renditetabellen sind weit verbreitet; Kurslisten hingegen nicht. Diese Übersicht misst den medianen Bid-Ask-Spread jedes Sektor-ETF über eine vollständige repräsentative Sitzung hinweg — 123 Sitzungen in der Hälfte, wobei hier der 29. Juni gemessen wurde, wie entsprechend gekennzeichnet — basierend auf jedem NBBO-Update dieses Tages.

AbfrageMedianer angebotener spread nach Sektor-ETF, eine repräsentative Sitzung (29. Juni 2026), reguläre Handelszeiten
Das exakte SQL hinter jeder Zahl
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

Alle elf Kurse liegen bei wenigen Basispunkten oder weniger — der günstigste liegt bei 0.62 bps (XLV), der höchste bei 2.23 bps (XLRE). Dies ist die praktische Bedeutung von „Sektor-ETFs sind liquide“: Die Kosten für die Eröffnung einer Sektor-Position werden in Hundertsteln eines Prozents gemessen. Zum Vergleich mit Einzelaktien: Der Tiefenanalyse vom 29. Juni zeigt für eine illiquide Aktie am selben Tag einen Spread, der um ein Vielfaches höher liegt als diese Werte.

Marktdurchdringung über ein halbes Jahr

Die Marktdurchdringung auf halber Skala zeigt hier zwei verschiedene Nuancen. Die grobe Nuance: Der SPY verzeichnete 64 steigende Tage gegenüber 59 fallenden Tagen über den Zeitraum von 123 — das entspricht fast einem Münzwurf bei den täglichen Kursen unter einem insgesamt deutlich positiven Halbjahr, was typisch für einen langsamen, stetigen Aufwärtstrend ist. Die feine Nuance — alle Ticker berücksichtigt — zeigt sich auf Monatsebene: Die Aufwärts-/Abwärtsverhältnisse für Juni finden sich in der Juni-Zusammenfassung (dort fielen mehr Ticker als sie stiegen), und die Zählung für die Quartalsgrenze steht in der Q2-Zusammenfassung. Eine vollständige Analyse der Marktdurchdringung über sechs Monate überschreitet das Abfragebudget dieser Seite; diese Grenze wird hier explizit angegeben, anstatt die Daten stillschweigend einzuschränken.

AbfrageSPY Sitzungen Up vs. Down über das Halbjahr, eine kostengünstige Auswertung
Das exakte SQL hinter jeder Zahl
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
)

Der Optionsmarkt, Monat für Monat

Ein Halbjahresbericht zeigt die Entwicklung des Optionshandels. Jede untenstehende Grafik stellt eine vollständige Analyse eines Monats dar – das gesamte Kontraktvolumen sowie der Anteil, der am jeweiligen Verfallsdatum (0DTE) gehandelt wurde. Das Ergebnis: Das Volumen stieg von 1316.1 Millionen Kontrakten im Januar auf 1477.9 Millionen im Juni – dem aktivsten Optionsmonat des Halbjahres. Der Anteil der am selben Tag fälligen Kontrakte stieg von 26.5% im Januar auf 34.3% im Juni, dem höchsten Wert des Halbjahres. Ein Drittel des Optionsvolumens im Juni wurde mit Kontrakten gehandelt, die am selben Tag fällig wurden.

AbfrageJanuar: Gesamtvolumen der Optionskontrakte und Anteil der Same-Day-Expiry (eine Abfrage)
Das exakte SQL hinter jeder Zahl
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')
AbfrageFebruar: Gesamtvolumen der Optionskontrakte und Anteil der Same-Day-Expiry (eine Abfrage)
Das exakte SQL hinter jeder Zahl
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')
AbfrageMärz: Gesamtvolumen der Optionskontrakte und Anteil der Same-Day-Expiry (eine Abfrage)
Das exakte SQL hinter jeder Zahl
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')
AbfrageApril: Gesamtvolumen der Optionskontrakte und Anteil der Same-Day-Expiry (eine Abfrage)
Das exakte SQL hinter jeder Zahl
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')
AbfrageMai: Gesamtvolumen der Optionskontrakte und Anteil der Same-Day-Expiry (eine Abfrage)
Das exakte SQL hinter jeder Zahl
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')
AbfrageJuni: Gesamtvolumen der Optionskontrakte und Anteil der Same-Day-Expiry (eine Abfrage)
Das exakte SQL hinter jeder Zahl
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')

Die Handelskosten, monatlich stichprobenartig erhoben

AbfrageSPY Median-Spread pro Monat anhand einer markierten Stichprobensitzung (jeweils 2. Mittwoch), jedes NBBO-Update
Das exakte SQL hinter jeder Zahl
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

Der mediane angebotene Spread von SPY am zweiten Mittwoch eines jeden Monats: 0.145 bps in der Stichprobe vom Januar, 0.144 im Februar, etwa doppelt so hoch in den Stichproben des Frühjahrs und 0.409 bps in der Stichprobe vom Juni – der höchste Wert der sechs Monate. Hinweis: Es handelt sich um Mediane einzelner, markierter Stichprobentage (der zweite Mittwoch eines jeden Monats) und nicht um monatliche Mediane – eine sechsmonatige Analyse des gesamten Quote-Tapes würde das Abfragebudget dieser Seite überschreiten. Die Stichprobendaten sind in der Tabelle aufgeführt; ungültige Kurse werden dort mitgezählt und nicht stillschweigend entfernt.

Die bedeutendsten Namen des Halbjahres

Gemessene Bedeutsamkeit, keine redaktionelle Auswahl: Die folgende Liste umfasst die Spitzenreiter des Quartals nach Handelsvolumen in Dollar. Die Daten wurden hier neu berechnet, um die Nachvollziehbarkeit zu gewährleisten. Jeder Name, der eine detaillierte Analyse erhalten hat, ist verlinkt.

AbfrageQ2 Dollar-Volumen im regulären Handel, Gesamtmarkt (ein Symbol zur Verifizierung ausgeschlossen)
Das exakte SQL hinter jeder Zahl
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 verzeichnete ein höheres Handelsvolumen als SPY im zweiten Quartal (2047.5 Milliarden Dollar gegenüber 2032 Milliarden Dollar) – dies entspricht den Daten aus dem Q2 Recap. Für die sechs Einzelwerte in dieser Spitzenliste gilt für das Halbjahr:

AbfrageHalbjahres- und Q2-Renditen der Top-Performer plus Halbjahr Dollar-Volumen – eine Ticker-gefilterte Abfrage
Das exakte SQL hinter jeder Zahl
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

Der Speicher- und Halbleitersektor dominiert das Halbjahr: SNDK erzielte eine Rendite von 830.1% in sechs Monaten, MU 290% – die detaillierte Analyse zu Juni finden Sie hier – und INTC 269.3%. NVDA ist mit einem Halbjahresumsatz von 3287.9 Milliarden Dollar der volumenstärkste Wert der Liste und erzielte eine Rendite von 5.2%. Während die Speicherwerte ihr Kapital vervielfachten, lag NVDA im einstelligen Bereich; die Juni-Analyse dokumentiert diese Divergenz Sitzung für Sitzung. TSLA ist der einzige Wert in dieser Liste mit einem Minus von -8.2%. Die Mega-Listung aus dem Juni wird unter einem wiederverwendeten Ticker gehandelt und ist in den Leader-Scans ausgeschlossen, bis die Identität der Einheit verifiziert ist – der erste Monat ist in einem separaten Bericht dokumentiert. Basis: Die Leader-SET wird nach dem Dollar-Handelsvolumen während der regulären Handelszeiten im zweiten Quartal ausgewählt (siehe Scan oben); die Renditespalten beziehen sich auf das Halbjahr, vom ersten regulären Handelsbeginn bis zum letzten regulären Handelsende.

Die IPO-Welle des ersten Halbjahres, Monat für Monat

AbfrageNeue Börsengänge pro Monat über das Halbjahr
Das exakte SQL hinter jeder Zahl
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

Die Börsengang-Welle war auf das erste Quartal konzentriert und verlief ungleichmäßig: Der Februar war mit 47 Börsengängen der aktivste Monat des Halbjahres, während der März mit 17 der ruhigste war — das bekannte Mega-Listing im Juni fand in einem Monat mit ansonsten durchschnittlichem Volumen statt (35 Börsengänge).

Der Kalender des ersten Halbjahres

AbfrageUnternehmenskalender H1 2026 (alle drei Monatsend-Filing-Index-Lücken ausgewiesen)
Das exakte SQL hinter jeder Zahl
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 Unternehmen gingen in diesem Halbjahr an die Börse. Diese Welle von Börsengängen beinhaltete den größten Debüt im Juni, zu dem es einen eigenen Bericht pro Einzelnotierung gibt. Hinzu kamen 830 Aktiensplits und 28356 Ex-Dividenden-Termine. Zum Vergleich: Das entspricht mehr als einem neuen Börsengang pro Handelstag im gesamten Halbjahr. Die Gesamtzahl der Einreichungen weist eine dreifache Diskrepanz auf: Der SEC-Index weist bei jedem Monatsende des Halbjahres, dessen letzter Kalendertag auf einen Wochentag fiel, fast keine Einträge auf (55 Einreichungen am 31. März, 34 am 30. April und 31 am 30. Juni, im Gegensatz zu Tausenden an den angrenzenden Tagen). Daher sind die Einreichungszahlen für das Halbjahr unterbewertet, bis der Feed die Daten nachgeliefert hat — die Monatsend-Lücke wird in einer separaten Diagnose erläutert.

Der Sitzungsprotokoll

Abfrage123 Sitzungen im Halbjahr, verifiziert aus dem Tape
Das exakte SQL hinter jeder Zahl
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

Datenhinweise

Vollständige Datenhinweise
  • Die Short Interest bezieht sich auf den Settlement-Stand vom 15. Juni zum Zeitpunkt der Erstellung (der Print für Ende Juni steht noch aus — vollständige Informationen im Juni-Rückblick; dieser Beitrag wird aktualisiert, sobald die Daten vorliegen).
  • Drei Index-Stichtage für Einreichungen zum Monatsende 2026 sind nahezu leer (31. März, 30. April, 30. Juni — jedes Monatsende des Halbjahres, dessen letzter Kalendertag ein Wochentag war); die Informationen werden zusammen mit den Zählungen angegeben, die Ursache wird in der Notiz zur Monatsend-Lücke erläutert. Monatsenden des Vorjahres weisen Tausende von Einreichungen auf; es handelt sich also um eine Datenlücke im Feed und nicht um einen Feiertag.
  • Das Leaderboard im Halbjahresmaßstab ist begrenzt: Ein marktweiter Scan über sechs Monate überschreitet das Abfragebudget dieser Seite. Daher wird der Satz der relevanten Namen durch den im Text gezeigten Quartals-Scan bestimmt, und die Renditen des Halbjahres werden für diesen festen Satz berechnet — die Grundlage wird an der entsprechenden Stelle angegeben. Die Q2 und Juni Rückblicke enthalten die vollständigen Leader-Tabellen in ihrem jeweiligen Maßstab.
  • Die Marktbreite im Halbjahresmaßstab ist ebenfalls begrenzt — die Aufteilung nach Tagesgranularität wird angezeigt; die Zählungen auf Ticker-Ebene sind auf Monats- und Quartalsbasis verfügbar und im Abschnitt zur Marktbreite verlinkt.
  • Die QQQ-Historie ist kürzer als die von SPY: Der ETF wurde über mehrere Jahre unter einem anderen Stamm-Symbol gehandelt; die Begrenzung der Sitzungsanzahl schließt diese Jahre sichtbar aus (die Sitzungsanzahlen pro Jahr sind in der Tabelle aufgeführt).
  • Die sechs Options-Panels sind monatliche Scans des gesamten Tape; die Spread-Trend-Stichprobe nutzt eine markierte Sitzung pro Monat — beide werden über den Batch-Pfad ausgeführt; die Stichprobenbasis wird im Text angegeben.
  • Details zur Mikrostruktur finden Sie im Deep-Dive vom 29. Juni.

Methodik

  • Der Zeitraum umfasst den 1. Januar bis zum 30. Juni 2026 — 123 Sitzungen, verifiziert durch beobachtete Bars. Die Renditen werden vom Eröffnungskurs bis zum Schlusskurs der regulären Handelszeiten innerhalb jedes Zeitfensters berechnet, basierend auf den gezeigten Abfragen.
  • Historische Vergleiche werden zum Zeitpunkt der Erstellung LIVE gegen die vollständige Minutengeschichte neu berechnet; es werden keine gespeicherten Werte verwendet. Überprüfung der Datentiefe: Das früheste Datum der Minuten-Bar in der hier verwendeten verzögerten Ansicht entspricht dem Basistabellen-Datum (September 2003), was bei der Erstellung geprüft wurde. Daher ist das erste vollständige erste Halbjahr aus dem Jahr 2004 verfügbar. Jede historische Abfrage setzt ihre Obergrenze am Ende dieses Zeitraums fest (der Vergleichssatz kann durch die Aufnahme späterer Jahre nicht wachsen) und wendet eine Mindestsitzungs-Sicherung mit den gezeigten Sitzungszahlen pro Jahr an.
  • Zeitstempel sind in UTC mit rohen UTC-Grenzwerten gespeichert. Mehrjährige historische Blöcke filtern die regulären Handelszeiten nach der Eastern-Wall-Clock (9:30–15:59, zeilenweise konvertiert – die einzige DST-sichere Konvention über Jahrzehnte hinweg); Blöcke mit einem einzelnen Zeitfenster in EDT-Bereichen nutzen das entsprechende rohe UTC-Band. Beide Konventionen sind hier angegeben.
  • Die Erstellung erfolgt über den gesperrten Read-only-Pfad; die öffentliche Seite führt niemals Live-Abfragen aus. Warehouse-Status vom 5. Juli 2026.

Dies ist die erste Ausgabe des regelmäßigen halbjährlichen Rückblicks; die vollständige Jahresausgabe folgt im Januar. Details zum Quartal: Q2 2026. Die Makro-Daten, gegen die das Halbjahr gehandelt wurde, finden Sie in der Makro-Übersicht.