Strasmore Research
Marktrückblicke Matt ConnorVon Matt Connor

Marktrückblick Woche 20. Juli 2026

Index-Tafel, Sektor-Streuung, wöchentliche Breite und Geldflüsse nach dem Juli-Optionsverfall – alle Zahlen aus gespeicherten Abfragen.

Die Woche vom 20. Juli 2026 war die erste vollständige Woche nach dem monatlichen Verfall der Juli-Optionen und umfasste 5 Sitzungen ohne Schlusskurs darin. Die Veränderung von SPY von Schlusskurs zu Schlusskurs in der Woche betrug -0.59%, und gemessen von Eröffnung bis Schluss im Vergleich zum vorausgehenden Jahr von Wochen belegte sie den 43-Rang von 53. Jede der folgenden Zahlen stammt aus einer gespeicherten Abfrage, und jedes Fenster ist auf exakte Daten festgelegt, sodass eine erneute Ausführung des SQL dieselben Werte liefert.

Die Woche an der Tafel

Die wöchentlichen Veränderungen reichen vom regulären Schlusskurs am Freitag, den 17. Juli, bis zu dem am Freitag, den 24. Juli. Die letzte Spalte enthält die Vorwoche, sodass beide nebeneinander stehen. Die Zeilen sind alphabetisch geordnet.

AbfrageSPY / QQQ / DIA / IWM: Woche vom 20. Juli vs. Schluss vom 17. Juli, mit Veränderung der Vorwoche
Das exakte SQL hinter jeder Zahl
SELECT ticker,
    round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00'), 2) AS prior_week_close,
    round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'), 2) AS week_close,
    round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00')
         / argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00') - 1) * 100, 2) AS week_change_pct,
    round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
         / argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') - 1) * 100, 2) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
  AND ((window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')
    OR (window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
    OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
GROUP BY ticker
ORDER BY ticker

Auf die Woche gesehen: DIA bewegte sich um -0.38%, IWM um -0.98%, QQQ um -1.59% und SPY um -0.59% auf einen Schlusskurs von $738.85. Die Werte der Vorwoche in derselben alphabetischen Reihenfolge waren -0.95%, -0.63%, -4.17% und -1.55%. Wie weit die vier Indizes auseinanderliegen, ist das Erste, was eine Anzeigetafel misst, und es ist nicht immer gering.

Die Woche im Vergleich zum rollierenden Jahr

Eine einzelne Wochenzahl sagt wenig ohne die zugrundeliegende Verteilung. Dieses Panel berechnet jede rollierende Woche nach identischer Logik, von Eröffnung bis Schluss der regulären Sitzung, und ordnet diese Woche darin ein.

AbfrageSPY-Woche im trailing-year-Kontext (open-to-close Wochenrenditen)
Das exakte SQL hinter jeder Zahl
SELECT round(anyIf(ret, wk = toDate('2026-07-20')), 2) AS week_open_to_close_pct,
       arrayCount(x -> x > anyIf(ret, wk = toDate('2026-07-20')), groupArrayIf(ret, wk != toDate('2026-07-20'))) + 1 AS rank_best,
       count() AS weeks_compared,
       toString(min(wk)) AS first_week,
       anyIf(sessions_measured, wk = toDate('2026-07-20')) AS sessions_this_week
FROM (
    SELECT toStartOfWeek(toDate(toTimeZone(window_start, 'America/New_York')), 1) AS wk,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_measured,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2025-07-21 00:00:00')
      AND window_start < toDateTime('2026-07-25 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 wk
    HAVING sessions_measured >= 3
)

Auf diese Weise gemessen erzielte SPY -1.1% und belegte Rang 43 von 53 Wochen, die bis 2025-07-21 zurückreichen. Beachten Sie die Definitionslücke: Diese Zahl beginnt mit der ersten Eröffnung der regulären Sitzung der Woche, die Tafel oben beginnt mit dem Schluss der Vorwoche. Beide werden überall dort gekennzeichnet, wo sie erscheinen.

Fünf Sitzungen, ein Bogen

AbfrageSPY nach Sitzung: Schluss, Veränderung und Aktienvolumen, 20.–24. Juli
Das exakte SQL hinter jeder Zahl
SELECT toString(d) AS date,
       round(c, 2) AS spy_close,
       round((c / prev_c - 1) * 100, 2) AS change_pct,
       round(shares_m, 1) AS spy_shares_m
FROM (
    SELECT d, c, shares_m,
           lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS c,
               toFloat64(sum(volume)) / 1e6 AS shares_m
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY d
    )
)
WHERE d >= '2026-07-20'
ORDER BY date

Sitzung für Sitzung betrug die Veränderung des SPY -0.15% am Montag, 0.84% am Dienstag, -0.12% am Mittwoch, -1.22% am Donnerstag und 0.08% am Freitag, mit Schlusskurs bei $738.85 bei 40.1 Millionen Aktien. Der Wert vom Montag wird gemessen am Schlusskurs vom 17. Juli, der Sitzung unmittelbar vor dem Berichtszeitraum.

Breite, Sitzung für Sitzung

Ein Indexstand ist eine einzelne Zahl. Die Breite zählt, wie viele Aktien mit ihm mitgezogen sind, und sie ist die Zahl, die entscheidet, ob eine grüne Woche breit oder schmal war.

AbfrageGewinner und Verlierer pro Sitzung, Namen mit $5M+ gehandelt, 20.–24. Juli
Das exakte SQL hinter jeder Zahl
SELECT toString(d) AS date, advancers, decliners, unchanged, measured_names
FROM (
    SELECT d,
           countIf(c > prev_c) AS advancers,
           countIf(c < prev_c) AS decliners,
           countIf(c = prev_c) AS unchanged,
           count() AS measured_names
    FROM (
        SELECT d, c, dv,
               lagInFrame(c) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
        FROM (
            SELECT ticker,
                   toDate(toTimeZone(window_start, 'America/New_York')) AS d,
                   argMax(toFloat64(close), window_start) AS c,
                   sum(toFloat64(close) * toFloat64(volume)) AS dv
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
                OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
              AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
            GROUP BY ticker, d
        )
    )
    WHERE d >= '2026-07-20' AND prev_c > 0 AND dv >= 5000000
    GROUP BY d
)
ORDER BY date

Am Montag stiegen 1268 von 3945 gemessenen Titeln und 2632 fielen. Bis Freitag lautete die Aufteilung 2273 gestiegen gegenüber 1635 gefallen, von insgesamt 3950. Titel ohne Schlusskurs auf beiden Seiten einer Sitzung werden ausgeschlossen, weshalb die gemessene Anzahl von Tag zu Tag leicht schwankt.

Dieselbe Frage, einmal über die gesamte Woche gestellt:

AbfrageWochenbreite: regulärer Schluss 24. Juli vs. regulärer Schluss 17. Juli, Namen mit $5M+ in der Woche gehandelt
Das exakte SQL hinter jeder Zahl
SELECT
    countIf(cw > cp AND liquid) AS advancers,
    countIf(cw < cp AND liquid) AS decliners,
    countIf(cw = cp AND liquid) AS unchanged,
    countIf(liquid) AS measured_names,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(cw > cp AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, cp, cw, dv >= 5000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0
    )
)

Von 6100 Titeln, die die Fünf-Millionen-Dollar-Regelstunden-Umsatzhürde überschritten, schlossen 2437 über ihrem Schlusskurs vom 17. Juli und 3630 darunter, ein Anteil der steigenden Titel von 40%. Der Liquiditätsfilter setzte weitere 5099 Titel zurück, die während der Woche unter dieser Hürde handelten. Sie werden hier gezählt und nicht stillschweigend verworfen.

Das Sektor-Ranking

Die elf SPDR-Sektor-ETFs, Schlusskurs vom 17. Juli bis zum 24. Juli, gereiht vom besten zum schlechtesten.

AbfrageSektor-ETFs, Veränderung gesamte Woche: Schluss 24. Juli vs. Schluss 17. Juli
Das exakte SQL hinter jeder Zahl
SELECT sector, week_pct, round(max(week_pct) OVER () - week_pct, 2) AS points_behind_best
FROM (
    SELECT multiIf(ticker = 'XLK', 'Technology', ticker = 'XLC', 'Communications', ticker = 'XLE', 'Energy',
                   ticker = 'XLF', 'Financials', ticker = 'XLI', 'Industrials', ticker = 'XLB', 'Materials',
                   ticker = 'XLP', 'Staples', ticker = 'XLRE', 'Real Estate', ticker = 'XLU', 'Utilities',
                   ticker = 'XLV', 'Health Care', 'Consumer Discretionary') AS sector,
           round((cw / cp - 1) * 100, 2) AS week_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0
    )
)
ORDER BY week_pct DESC

Energy lag an der Spitze der Tabelle bei 3.33%. Consumer Discretionary lag am unteren Ende bei -5.2%, 8.53 Prozentpunkte dahinter. Diese Lücke ist die wöchentliche Sektorstreuung, und sie ist für sich genommen lesenswert: Eine Woche, in der alle elf innerhalb eines Punktes voneinander liegen, ist ein völlig anderer Markt als einer, in dem der Spread in den zweistelligen Bereich läuft.

Wohin die Dollars flossen

AbfrageTop-Namen nach Dollarvolumen in regulären Handelszeiten, gesamte Woche 20.–24. Juli
Das exakte SQL hinter jeder Zahl
SELECT ticker, week_dollar_bn, round(100 * week_dollar_bn / max(week_dollar_bn) OVER (), 1) AS pct_of_leader
FROM (
    SELECT ticker,
           round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS week_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY week_dollar_bn DESC
    LIMIT 8
)
ORDER BY week_dollar_bn DESC

MU verzeichnete 158.1 Milliarden Dollar Umsatz in den regulären Handelszeiten über die fünf Sitzungen, vor SPY mit 133.9 Milliarden und QQQ mit 101.5 Milliarden. Auf Platz acht, AAPL, handelte 34.5% der Dollars des Spitzenreiters. Die Umsätze zeigen, worüber der Markt in der Woche gestritten hat, und sie müssen nicht mit dem Preis übereinstimmen. Die titelbezogene Version dieser Kennzahl ist relatives Volumen.

Die größten Bewegungen der Woche

Kapitalmaßnahmen verändern den Kurs, nicht den Wert: Ein Reverse Split erzeugt einen künstlichen vierstelligen Gewinn, ein Forward Split einen ebenso großen künstlichen Einbruch. Die Woche brachte 25 Reverse Splits und 11 Forward Splits. Beide untenstehenden Tabellen schließen jeden Titel aus, dessen Split zwischen dem Schlusskurs vom 17. Juli und dem Schlusskurs vom 24. Juli stattfand – genau dem Zeitraum, über den die Veränderung gemessen wird. Beide verlangen zudem einen Umsatz von fünf Millionen Dollar während der regulären Handelszeit.

AbfrageWochenbeweger: zehn größte Gewinner und Verlierer, reguläre Schlusskurse, $5M+ gehandelt, Splits ausgeschlossen
Das exakte SQL hinter jeder Zahl
SELECT ticker, board, week_pct, week_dollar_m, sessions_traded,
       round(100 * week_dollar_m / max(week_dollar_m) OVER (), 1) AS pct_of_dollar_max
FROM (
    SELECT 'gainers' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
           round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
               uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker NOT IN ('SPCX')
          AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0 AND dv >= 5000000
    )
    ORDER BY week_pct DESC
    LIMIT 10
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
           round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
               uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker NOT IN ('SPCX')
          AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker
        HAVING cp > 0 AND cw > 0 AND dv >= 5000000
    )
    ORDER BY week_pct ASC
    LIMIT 10
)
ORDER BY board DESC, abs(week_pct) DESC

Die Aufnahme in eine der beiden Tabellen erforderte eine echte Bewegung. Der schwächste gezeigte Gewinner stieg um 92.3%, der schwächste Verlierer fiel um -47.8%. An den Extremen bewegte sich STAK um 383.7% bei einem gehandelten Volumen von 251.6 Millionen Dollar, und LBGJ bewegte sich um -98.8% bei 47.7 Millionen. Dieser Rückgang liegt nahe am gesamten notierten Wert des Titels, daher enthält die Tabelle eine eigene Quittung: LBGJ verzeichnete während der regulären Handelszeit an 5 der fünf Sitzungen Balken, und zwischen den beiden gemessenen Schlusskursen wurde kein Split gegen ihn durchgeführt.

Der quotierte Spread, Sitzung für Sitzung

Der Preis ist die Schlagzeile. Die Kosten für die Ausführung des Handels sind der quotierte Spread, gemessen hier an SPY eine Sitzung nach der anderen, direkt aus dem rohen NBBO-Band, nicht aus einer Zusammenfassung.

AbfrageSPY medianer quotierter Spread und NBBO-Updates pro Sitzung, reguläre Handelszeiten, 20.–24. Juli
Das exakte SQL hinter jeder Zahl
SELECT toString(toDate(sip_timestamp)) AS date,
       round(quantileExactIf(0.5)(
           10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
           bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
       round(count() / 1e6, 2) AS quote_updates_m,
       countIf(bid_price <= 0 OR ask_price <= 0) AS one_sided_quote_count,
       countIf(bid_price > ask_price AND bid_price > 0 AND ask_price > 0) AS crossed_quote_count
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
  AND sip_timestamp >= '2026-07-20 13:30:00'
  AND sip_timestamp < '2026-07-24 20:00:00'
  AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY toDate(sip_timestamp)
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY toDate(sip_timestamp)

Der mediane quotierte Spread von SPY betrug am Montag 0.27 Basispunkte der Mitte und am Freitag 0.27 Basispunkte, bei 3.89 Millionen bzw. 4.4 Millionen NBBO-Updates. Die letzten beiden Spalten sind die Offenlegung, nicht der Befund: 0 einseitige Quotes und 1084 gekreuzte Quotes wurden aus dem Median des Montags herausgezählt, anstatt stillschweigend verworfen zu werden. Ein gekreuzter Quote – Geld über Brief – ist ein gewöhnliches Artefakt eines konsolidierten Datenstroms, der aus vielen Handelsplätzen mit Nanosekunden-Auflösung zusammengesetzt wird.

Die Optionswoche nach dem monatlichen Verfall

Der Juli-Verfall fiel auf den Freitag vor dieser Handelswoche, daher ist jeder Kontrakt, der in diesen fünf Sitzungen gehandelt wird, ein Überlebender dieses Ereignisses. Verfallsterminierung gibt den Takt vor, nach dem der Same-Day-Handel läuft.

AbfrageOptionskontrakte, same-day share und call share pro Sitzung, 20.–24. Juli
Das exakte SQL hinter jeder Zahl
SELECT toString(toDate(sip_timestamp)) AS date,
       round(toFloat64(sum(size)) / 1e6, 1) AS contracts_m,
       round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = formatDateTime(toDate(sip_timestamp), '%y%m%d')) / sum(size), 1) AS pct_0dte,
       round(100.0 * sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'C') / sum(size), 1) AS pct_call,
       round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260724') / sum(size), 1) AS pct_expiring_jul24
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-20 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00'
GROUP BY toDate(sip_timestamp)
ORDER BY toDate(sip_timestamp)

Das Kontraktvolumen betrug am Montag 64 Millionen und am Freitag 71.1 Millionen. Der Same-Day-Anteil, also Kontrakte, die in der Sitzung verfallen, in der sie gehandelt werden, lag am Montag bei 40.2% und am Freitag bei 49%, der Verfallssitzung der Woche. Calls machten 53.5% des Freitags-Kontraktvolumens aus. Und die Anziehungskraft dieses Freitags war bereits ab der Eröffnungssitzung sichtbar: 15.1% des Montagsvolumens entfiel bereits auf Kontrakte mit Verfall an diesem Tag.

Zinssätze im Wochenverlauf

AbfrageTreasury-Kurve pro Sitzung, Druck vom 17. Juli bis 24. Juli
Das exakte SQL hinter jeder Zahl
SELECT toString(date) AS date,
       round(toFloat64(yield_2_year), 2) AS yield_2y_pct,
       round(toFloat64(yield_10_year), 2) AS yield_10y_pct,
       round(toFloat64(yield_30_year), 2) AS yield_30y_pct,
       round((toFloat64(yield_10_year) - toFloat64(yield_2_year)) * 100) AS spread_2s10s_bp,
       round((toFloat64(yield_10_year) - (SELECT toFloat64(any(yield_10_year)) FROM global_markets.treasury_yields WHERE date = '2026-07-17')) * 100) AS chg_10y_from_prior_close_bp
FROM global_markets.treasury_yields
WHERE date >= '2026-07-17' AND date <= '2026-07-24'
ORDER BY date

Gemessen am Stand vom 17. Juli bewegte sich die Zehnjahresrendite um 16 Basispunkte auf 4.71% beim letzten erfassten Druck, die Zweijahresrendite lag bei 4.37% und die Dreißigjahresrendite bei 5.17%. Der Zwei-zu-zehn-Jahre-Spread schloss die Reihe bei 34 Basispunkten ab. Die Datei des Finanzministeriums liegt etwa eine Sitzung hinter dem aktuellen Kursband zurück, daher enthält dieses Panel 5 Drucke, die jeweils in der Tabelle datiert sind.

Die Shorts: die täglichen Dateien

FINRA veröffentlicht eine tägliche Datei mit Leerverkaufsvolumen. Das Short-Volumen ist ein täglicher Bruttofluss, keine Position. Diese Dateien kommen manchmal abgeschnitten an, daher wird die Abdeckung gemessen, bevor ein Verhältnis daraus abgeleitet wird.

AbfrageTägliche Short-Volume-Dateiabdeckung: Ticker in Datei und Short-Aktien, 20.–24. Juli
Das exakte SQL hinter jeder Zahl
SELECT date, tickers_on_file, short_shares_bn,
       round(100.0 * tickers_on_file / max(tickers_on_file) OVER (), 1) AS pct_of_fullest_file
FROM (
    SELECT toString(date) AS date,
           uniqExact(ticker) AS tickers_on_file,
           round(sum(short_shares) / 1e9, 2) AS short_shares_bn
    FROM (
        SELECT date, ticker, max(short_volume) AS short_shares
        FROM global_markets.stocks_short_volume
        WHERE date >= '2026-07-20' AND date <= '2026-07-24'
        GROUP BY date, ticker
    )
    GROUP BY date
)
ORDER BY date

Für die Woche liegen 5 tägliche Dateien vor. Die erste enthält 15098 Ticker und 4.71 Milliarden leerverkaufte Aktien; die letzte enthält 15062 Ticker, das sind 99.7% der Tickeranzahl der vollsten Datei. Jede einzelne Short-Volumen-Angabe, die aus einer Datei stammt, die deutlich unter ihren Nachbardateien liegt, bleibt unverifizierbar, bis diese Datei erneut eingereicht wird.

Der Kalender hinter der Woche

AbfrageSEC-Einreichungen nach Sitzung und Formulartyp, 20.–24. Juli
Das exakte SQL hinter jeder Zahl
SELECT toString(filing_date) AS date,
       count() AS filings,
       countIf(form_type = '4') AS form4,
       countIf(form_type = '8-K') AS form8k,
       countIf(form_type = '424B2') AS f424b2
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24'
GROUP BY filing_date
ORDER BY date

Die erste Sitzung in der Datei enthielt 3012 Einreichungen, davon 632 Insider-Form-4-Meldungen und 166 8-Ks. Die letzte enthielt 3814, mit 644 Form-4-Meldungen und 223 8-Ks. 5 der Sitzungen der Woche haben einen EDGAR-Tagesindex in der Datei; dieser Index erscheint nach einem eigenen Zeitplan, der gelegentlich hinter dem Band zurückbleibt.

AbfrageUnternehmenskalender der Woche: Dividenden, Splits, Listings, Nachrichten
Das exakte SQL hinter jeder Zahl
SELECT
    (SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filings_week,
    (SELECT uniqExact(filing_date) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filing_days_on_file,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS ex_dividends_week,
    (SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS household_ex_dividends_week,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS reverse_splits_week,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS forward_splits_week,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= '2026-07-20' AND listing_date <= '2026-07-24') AS listings_week,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_week,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_publishers_week

Der Rest des Papierkrams der Woche: 17106 SEC-Einreichungen über 5 indizierte Tage, 592 Ex-Dividenden-Einträge, 1 davon von den zehn bekannten Namen, die dieses Panel prüft, 25 Reverse- und 11 Forward-Splits, 4 neue Listings und 1704 Artikel von 2 Publishern. Das letzte Paar misst die Aufmerksamkeit eines Feeds, nicht die der Welt.

Die Sitzungen, verifiziert

AbfrageSitzungsverifikation: Sitzungen, Balken, Feiertagszeilen, Auf- und Abschlüsse, nächster Feiertag
Das exakte SQL hinter jeder Zahl
WITH spy AS (
    SELECT d, c, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS p
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY d
    )
)
SELECT
    uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_in_week,
    toString(min(toDate(toTimeZone(window_start, 'America/New_York')))) AS first_session,
    toString(max(toDate(toTimeZone(window_start, 'America/New_York')))) AS last_session,
    count() AS regular_bars_in_week,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-20' AND date <= '2026-07-24') AS holiday_rows_in_week,
    (SELECT countIf(c > p) FROM spy WHERE d >= '2026-07-20') AS up_sessions,
    (SELECT countIf(c < p) FROM spy WHERE d >= '2026-07-20') AS down_sessions,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_date,
    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
  AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199

5 Sitzungen, 2026-07-20 bis 2026-07-24, mit 0 Feiertagszeilen irgendwo im Fenster. SPY druckte 1950 Minutenbalken der regulären Sitzung über sie hinweg. 2 Sitzungen schlossen über dem vorherigen Schlusskurs und 3 schlossen darunter. Der nächste planmäßige Schluss ist Labor Day am 2026-09-07.

Auf dem Programm

In der folgenden Woche lesen Sie aus unseren eigenen Tabellen:

AbfrageNächste Woche im Kalender: Schließungen, Ex-Dividenden, Splits und der Verfall
Das exakte SQL hinter jeder Zahl
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-27' AND date <= '2026-07-31' AND status != 'open') AS closures_next_week,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS ex_dividends_next_week,
    (SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS household_ex_div_next_week,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-27' AND execution_date <= '2026-07-31') AS splits_next_week,
    (SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) FROM global_markets.options_trades WHERE sip_timestamp >= '2026-07-24 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00') AS jul31_expiry_pct_of_friday_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-24') AS latest_short_interest_settlement

Die Feiertagstabelle zeigt 0 Schließungen in der folgenden Woche. 368 Ex-Dividenden-Termine fallen in diesen Zeitraum, 0 aus dem Haushaltssektor, zusammen mit 15 geplanten Aktiensplits. Vom Optionsvolumen des Freitags entfielen 14.2% bereits auf Kontrakte, die am folgenden Freitag auslaufen. Das jüngste Datum für den Short-Interest-Meldeschluss in der Akte ist 2026-07-15, eine Datei, die mit einer ausreichend langen Verzögerung veröffentlicht wird, um eine eigene Erklärung zu haben.

FAQ

Wie entwickelte sich der Aktienmarkt in der Woche vom 20. Juli 2026?

Der SPY veränderte sich -0.59% im Schlusskursvergleich vom 17. bis 24. Juli, der QQQ bei -1.59%, der DIA bei -0.38% und der IWM bei -0.98%. Unter den liquiden Titeln stieg 2437 und fiel 3630.

Welcher Sektor führte in der Woche vom 20. Juli 2026?

Energy, bei 3.33%. Der schwächste der elf SPDR-Sektor-ETFs war Consumer Discretionary bei -5.2%, 8.53 Prozentpunkte dahinter.

Wie viele Handelssitzungen gab es in der Woche vom 20. Juli 2026?

5, laufend von 2026-07-20 bis 2026-07-24, mit 0 Feiertagszeilen im Fenster. Die nächste planmäßige Schließung ist Labor Day.

Welcher Ticker handelte in der Woche vom 20. Juli 2026 die meisten Dollar?

MU, bei 158.1 Milliarden Dollar an regulärem Handelsumsatz, vor SPY mit 133.9 Milliarden Dollar.

Datenhinweise

Alle gespeicherten Zeitstempel sind in UTC; die regulären Handelszeiten betragen 13:30-20:00 UTC pro Sitzung, und die Wochengrenzen verlaufen vom regulären Handelsschluss am 17. Juli bis zum 24. Juli. Jede hier gezeigte Schlusskurs-zu-Schlusskurs-Tafel liest die letzte Minutenkerze der regulären Handelszeit auf jeder Seite des Vergleichs, sodass ein Druck außerhalb der regulären Handelszeit niemals einen Wochenschlusskurs setzen kann. Der Rang über das zurückliegende Jahr verwendet wöchentliche Eröffnungs-zu-Schluss-Renditen und stimmt daher nicht mit der Schlusskurs-zu-Schlusskurs-Anzeigetafel überein; beide Definitionen sind dort, wo sie erscheinen, gekennzeichnet. Die wöchentliche Breite und die Bewegungstafeln wenden einen Umsatzfilter von fünf Millionen Dollar in der regulären Handelszeit an, und die Breite veröffentlicht die Anzahl der Namen, die dieser Filter aussortiert. Bewegungstafeln schließen jeden Namen aus, dessen Split nach dem Schluss am 17. Juli und bis zum 24. Juli ausgeführt wurde – dem genauen Intervall, über das die Veränderung gemessen wird –, was sowohl einen Split erfasst, der auf das dazwischenliegende Wochenende fällt, als auch einen, der auf eine Sitzung fällt; sie schließen gehebelte und inverse ETFs nicht aus, die in einer richtungsstarken Woche eine Tafel dominieren können. Das untere Ende der Verlierertafel kann nahe an einem vollständigen Verlust des notierten Werts für die Woche liegen, und diese Tafel veröffentlicht, an wie vielen der fünf Sitzungen jeder Name notiert war. Das SPY-Spread-Panel zählt einseitige und gekreuzte Quotes, anstatt sie stillschweigend zu verwerfen, und der Median wird über die verbleibenden gültigen Quotes gebildet. Die Datei des Finanzministeriums hinkt etwa eine Sitzung hinter dem Band hinterher, und der tägliche EDGAR-Index erscheint nach seinem eigenen Zeitplan, sodass die Tafeln für Zinssätze und Einreichungen angeben, wie viele Tage sie tatsächlich abdecken. Hier erscheint kein impliziter Volatilitätsindex: Diese Serien sind nicht für dieses Datenlager lizenziert, sodass die Volatilität über Spannen, den Anteil der Optionen am selben Tag und die Bandbreite direkt vom Band abgelesen wird.

Methodik

  • Marktdatenquelle: konsolidiertes Band. delayed_stocks_minute_aggs für Kurse und Volumina, cache_stocks_quotes für das NBBO-Panel, options_trades für die Optionswoche.
  • Schlusskurs: der letzte Minutenbalken der regulären Sitzung, niemals ein angenommener 16:00-Uhr-Ausdruck und niemals ein Ausdruck aus dem nachbörslichen Handel.
  • Sitzungen: verifiziert anhand der Feiertagstabelle plus beobachteter Balken, niemals anhand des Kalenders angenommen.
  • Zeitzonenbehandlung: WHERE-Klauseln verwenden rohe UTC-Literale, und toTimeZone erscheint nur in SELECT-Listen für ET-Bezeichnungen.
  • Dezimalstellen: Preis-, Größen- und Volumenspalten werden vor jeder Division oder Multiplikation in Float64 umgewandelt.
  • Deterministische Aggregate: exakte Quantile durchgängig, und jede Aussage über Reihenfolge oder Vorzeichen im Text ist als Plausibilitätsgrenze kodiert.
  • Datenstand des Warehouses: 26. Juli 2026.

Querverweise: die vorherige Ausgabe dieser wöchentlichen Serie, was ein Geld-Brief-Spanne ist, wann Optionen verfallen, Short Interest versus Short Volume und der Zwei-zu-Zehn-Jahres-Spread.

Jede der obigen Abfragen läuft unverändert auf dem Strasmore-Terminal, falls Sie ein Fenster auf einen anderen Zeitraum umstellen möchten.