Marktrückblick 30. Juni 2026 Zahlen
Die letzte Sitzung des Quartals zeigt Gewinne bei Technologie-Indizes wie QQQ und SPY trotz einer überwiegend roten Marktlage bei den Sektor-Fonds.
Dienstag, der 30. Juni 2026 – die letzte Sitzung des Quartals – war ein von Technologieaktien getriebener Aufwärtstag in einem überwiegend roten Markt: QQQ gewann 1.63% und SPY 0.73%, jedoch schlossen nur 4 der 10 S&P-Sektor-Fonds höher (3,349 liquide Titel stiegen, 3,033 sanken). Die vorangegangene Sitzung: der Rückblick vom 29. Juni. Jede unten stehende Zahl stammt aus einer gespeicherten Abfrage – erweitern Sie jedes Panel für das SQL.
Die Ergebnistabelle
Jede Änderung vergleicht die letzte Minute der regulären Sitzung vom 30. Juni mit der vom Montag, den 29. Juni.
Das exakte SQL hinter jeder Zahl
WITH prior AS (
SELECT ticker, argMax(close, window_start) AS prior_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
GROUP BY ticker
),
sess AS (
SELECT ticker,
argMin(open, window_start) AS day_open,
argMax(close, window_start) AS day_close,
max(high) AS day_high,
min(low) AS day_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.tickerSPY eröffnete bei $741.29 und schloss bei $746.32, nahe seinem Höchststand von $748.02. Das Verhältnis von QQQ zu 1.63% gegenüber DIA zu 0.12% prägt den Tag: Wachstumsaktien stiegen, Blue Chips bewegten sich kaum, IWM 0.49%.
Das Quartalsende
Der 30. Juni markierte das Ende der letzten 62 Sitzungen im zweiten Quartal. Die Entwicklung des Tages spiegelte den Trend des gesamten Quartals wider.
Das exakte SQL hinter jeder Zahl
WITH q2 AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS d_open,
argMax(toFloat64(close), window_start) AS d_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND 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
GROUP BY ticker, d
)
SELECT
ticker,
toString(min(d)) AS quarter_first_session,
count() AS quarter_sessions,
round(argMin(d_open, d), 2) AS quarter_open,
round(argMax(d_close, d), 2) AS quarter_close,
round((argMax(d_close, d) / argMin(d_open, d) - 1) * 100, 2) AS quarter_pct,
countIf(d_close > d_open) AS up_sessions
FROM q2
GROUP BY ticker
ORDER BY quarter_pct DESC, ticker ASCZeitraum vom 1. April bis zum 30. Juni: QQQ +26.53%, IWM 20.21%, SPY 14.13%, DIA 12.08%. Der QQQ war sowohl über das Quartal als auch am 30. Juni der stärkste Index. Bei den mittleren Werten gab es einen Wechsel: Am 30. Juni lag der SPY vor dem IWM, über das gesamte Quartal hinweg war der IWM jedoch stärker als der SPY. Der QQQ schloss an 38 der 62 Sitzungen höher (der Q2-Rückblick bietet eine detaillierte Analyse).
War der Tag ungewöhnlich?
Das exakte SQL hinter jeder Zahl
SELECT round(anyIf(oc_pct, d = toDate('2026-06-30')), 2) AS day_move_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-06-30'))), groupArrayIf(abs(oc_pct), d != toDate('2026-06-30'))) + 1 AS abs_move_rank,
count() AS sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-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
GROUP BY d
)Die Kursbewegung von der Eröffnung bis zum Schluss innerhalb der Sitzung – eine andere Perspektive als die Betrachtung der Schlusskurse – lag beim SPY bei 0.68%. Damit belegte der Index den 7 Platz der 21 vorangegangenen Sitzungen hinsichtlich der absoluten Veränderung. Der Index blieb ruhig; die Handelsaktivitäten darunter waren es nicht.
Marktdurchdringung: ein geringer positiver Vorsprung
Das exakte SQL hinter jeder Zahl
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00')
GROUP BY ticker
)
SELECT
countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
count() AS tickers_traded_both_sessions,
count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
/ countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct,
countIf(ticker IN ('XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')) AS sector_funds_counted,
countIf(ticker IN ('XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND day_close > prior_close) AS sector_funds_up
FROM per_ticker
WHERE prior_close > 0 AND day_close > 03,349 steigende, 3,033 fallende, 88 unveränderte Werte: 51.8% des liquiden Handelsvolumens stieg – ein Ergebnis wie ein Münzwurf bei einem 1.63% Wachstum-Index-Wert. Der Liquiditätsfilter schließt 5,055 von 11,525 Ticker mit Handelsvolumen über zwei Sitzungen (unter 1 Million $ gehandelt) aus, die hier jedoch aufgeführt werden.
Sektor für Sektor: Wohin das Geld tatsächlich floss
Die bloße Anzahl der positiven Nennungen verschleiert die tatsächliche Kapitalverteilung. Die folgenden zehn Fonds halten jeweils einen Anteil am S&P 500. Der Spread zwischen dem besten und dem schlechtesten Wert zeigt, wie ungleichmäßig die Sitzung verlief.
Das exakte SQL hinter jeder Zahl
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
if(day_close > prior_close, 1, 0) AS is_up,
round(max((day_close / prior_close - 1) * 100) OVER () - (day_close / prior_close - 1) * 100, 2) AS pts_behind_leader,
day_dollar_bn
FROM per_name
ORDER BY pct_chg DESC, ticker ASCTechnology (XLK) stieg um 2.69% und war der einzige starke Sektor: Industrials 1.34%, Materials 0.36% und Discretionary 0.15% waren die einzigen anderen grünen Sektoren. Der Rest des Marktes ist rot, von Financials (-0.17%) über Utilities (-1.48%) und Staples (-1.53%) bis hin zu Real Estate als Schlusslicht bei -2%. Differenz zwischen Bestwert und Schlusslicht: 4.69 Prozentpunkte, 4 von 10 Fonds im Plus. Ein Index mit einem Zuwachs von weniger als einem Prozent und einem Spread von vier Punkten: Ein Sektor war ausschlaggebend.
Die größten Marktbewegungen des Tages
Die Marktdurchdringung gibt an, wie viele Titel gestiegen sind; diese Liste zeigt die stärksten Veränderungen – die obersten und untersten fünf prozentualen Veränderungen bei Werten mit einem Handelsvolumen von 10 Millionen $ oder mehr.
Das exakte SQL hinter jeder Zahl
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00')
GROUP BY ticker
HAVING prior_close > 1 AND day_close > 0 AND day_dollar_volume >= 10000000 AND ticker NOT IN ('SPCX')
)
SELECT
board,
ticker,
prior_close,
day_close,
pct_chg,
round(abs(pct_chg), 2) AS abs_pct_chg,
dollar_volume_m,
if(ticker IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date >= '2026-06-29' AND execution_date <= '2026-06-30'), 1, 0) AS split_record_on_file
FROM (
SELECT 'top gainers' AS board, ticker, round(prior_close, 2) AS prior_close, round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg, round(day_dollar_volume / 1e6, 0) AS dollar_volume_m
FROM per_ticker
ORDER BY (day_close / prior_close) DESC, ticker ASC
LIMIT 5
UNION ALL
SELECT 'top decliners' AS board, ticker, round(prior_close, 2) AS prior_close, round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg, round(day_dollar_volume / 1e6, 0) AS dollar_volume_m
FROM per_ticker
ORDER BY (day_close / prior_close) ASC, ticker ASC
LIMIT 5
)
ORDER BY if(board = 'top gainers', 0, 1) ASC, pct_chg DESC, ticker ASCKeine der Börsen spiegelt die Indexentwicklung wider. JEM führte mit +256.76% bei einem Handelsvolumen von 141 Millionen $; SOC verlor 55.89% bei 306 Millionen $. ABVX stieg um 38.56% bei 942 Millionen $, was den höchsten Umsatz an beiden Börsen darstellt; NVCT fiel um 35.62% und UNCY um 39.09%. Die Spalte für Aktiensplits verhindert Fehlinterpretationen – ein Reverse Split im Verhältnis 1 zu zehn wird in einem unbereinigten Kursverlauf als ein „Gewinn“ von +900 % angezeigt – und jeder Wert hier weist eine 0 auf: reale Handelsdaten.
Drei Zeilen enthalten doppelte Handelsdaten: CRCA (-35.16%) und CRCG (-35.19%) fielen, während CRCD um 35.47% stieg – jeweils fast doppelt so stark wie die -17.53% Bewegung des unten genannten Krypto-nahen Wertes: gehebelte Einzelaktien-Derivate.
Der Höhepunkt des Tages: Halbleiter im Vierteldrehung
Sechs Namen, ein Thema, sehr unterschiedliche Ergebnisse – nur die gemeinsame Bewegung und die Größenordnung sind bekannt; die Daten geben keine Auskunft über die Ursache.
Das exakte SQL hinter jeder Zahl
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-06-30 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-06-30 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-06-30 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-06-30 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'INTC', 'MU', 'SNDK', 'TSM', 'WDC')
AND ((window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerSanDisk stieg um 10.79%, AMD um 7.7%, Intel um 5.93%, TSMC um 4.86% – während MU, mit einem Handelsvolumen von 37.41 Milliarden Dollar der größte Posten im Tape, nur um 0.52% höher schloss und Western Digital (-2.01%) nicht teilnahm. Dies ist der Komplex hinter dem 2.69% Sektor-Ergebnis im Technologiebereich (MUs Juni, Tick für Tick).
Ein Gegenstrom verlief durch Finanzwerte mit Krypto-Bezug, entgegen dem grünen Tape:
Das exakte SQL hinter jeder Zahl
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-06-30 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-30 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-06-30 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-06-30 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-06-30 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-06-30 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-30 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('COIN', 'CRCL', 'HOOD', 'MSTR')
AND ((window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
OR (window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerCRCL verzeichnete -17.53%, wobei das Tief von 62.52 Dollar um 15:59 ET – in der letzten Minute der Sitzung – erreicht wurde, zusammen mit MSTR -6.2%, COIN -3.61% und HOOD -1.53%. Eine gemeinsame Bewegung wurde beobachtet; die Ursache wurde nicht bestätigt.
Was der Newsfeed enthielt
Eine Zusammenfassung, die keine Ursachen behauptet, schuldet dem Leser, was an diesem Tag tatsächlich veröffentlicht wurde.
Das exakte SQL hinter jeder Zahl
SELECT
names.n AS ticker,
countIf(has(tickers, names.n)) AS articles_today,
if(countIf(has(tickers, names.n)) = 0, 'none',
formatDateTime(toTimeZone(argMaxIf(published_utc, (published_utc, id), has(tickers, names.n)), 'America/New_York'), '%H:%i')) AS latest_et,
if(countIf(has(tickers, names.n)) = 0, 'no article in our feed this session',
JSONExtractString(argMaxIf(publisher, (published_utc, id), has(tickers, names.n)), 'name')) AS publisher_name,
if(countIf(has(tickers, names.n)) = 0, 'no article in our feed this session',
argMaxIf(title, (published_utc, id), has(tickers, names.n))) AS latest_headline
FROM global_markets.stocks_news
CROSS JOIN (SELECT arrayJoin(['NVDA', 'MU', 'SNDK', 'CRCL', 'SOC', 'ABVX', 'JEM']) AS n) AS names
WHERE published_utc >= '2026-06-30 04:00:00' AND published_utc < '2026-07-01 04:00:00'
GROUP BY names.n
ORDER BY articles_today DESC, ticker ASCDer am häufigsten behandelte Name war NVDA mit 21 Artikeln — er gehörte absolut nicht zu den Tagesgewinnern oder -verlierern. Der letzte Beitrag der Sitzung (16:28 ET, Investing.com) trug den Titel "These Stocks Could Benefit as the Robotaxi Race Heats Up". MU wurde 7 Fällen genannt; der einzige Artikel zu SanDisk (The Motley Fool) ist die einzige Schlagzeile des Tages, die eine tatsächliche Kursbewegung nennt: "Why Sandisk Stock Is Skyrocketing Today".
Die Diskrepanz ist die Erkenntnis: Der größte Verlierer des Tages, der stärkste Gewinner und der Krypto-nahe Wert mit dem stärksten Rückgang wurden in jeweils 0, 0 und 0 Artikeln erwähnt — jeweils null Artikel in einem Feed von 211 Beiträgen. Die Berichterstattung ist kein Indikator für die Kursentwicklung.
Wo gehandelt wurde
Das exakte SQL hinter jeder Zahl
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, shares_m,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESCNach Handelsvolumen in Dollar übertraf MU alle anderen Werte, einschließlich Indexfonds: $37.41 Milliarden gegenüber $31.84 Milliarden bei SPY. Dies war die zweite Handelssitzung in Folge, in der MU das Flaggschiff-Indexfonds übertraf (Rückblick vom Montag enthält den ersten Fall). Das Aktienboard zeigt ein anderes Bild: SOXS, ein 3x-gehebelter inverser Halbleiter-ETF (515.5 Millionen Aktien), und zwei Namen unter einem Dollar, deren Wert im Vergleich zu MU nur eine Rundungsdifferenz darstellt — das Volumen lässt zwei Interpretationen zu.
Ein Name wird auf beiden Boards absichtlich ausgeschlossen: ein Börsengang im Juni, dessen Ticker zuvor zu einem anderen, nicht verwandten Unternehmen gehörte, weshalb Datenanbieter zwei Unternehmen mit denselben drei Buchstaben kennzeichnen (Belege hier).
Das exakte SQL hinter jeder Zahl
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
GROUP BY et_time
ORDER BY et_time2.05 Milliarden Aktien in der ersten halben Stunde, ein Tiefpunkt von 0.78 Milliarden um 13:30, und das größte Handelsvolumen des Tages — 2.69 Milliarden — bis zum Quartalsabschluss, bei dem die Schlussauktion und ihre Rebalancing-Ströme sichtbar werden (die Analyse vom 29. Juni liefert Details).
Der Optionsmarkt
Das exakte SQL hinter jeder Zahl
WITH
(
SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
sum(size), count(), round(avg(toFloat64(price)), 3))
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-30 00:00:00' AND sip_timestamp < '2026-07-01 00:00:00'
GROUP BY ticker
ORDER BY sum(size) DESC
LIMIT 1
) AS top_contract,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00'
) AS spy_close
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260630') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P'))
/ toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C')), 2) AS spy_put_call_ratio,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) > spy_close)) / 1e6, 2) AS spy_0dte_otm_calls_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'C'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) <= spy_close)) / 1e6, 2) AS spy_0dte_itm_calls_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) < spy_close)) / 1e6, 2) AS spy_0dte_otm_puts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY' AND option_type = 'P'
AND substring(ticker, length(ticker) - 14, 6) = '260630' AND toFloat64(strike_price) >= spy_close)) / 1e6, 2) AS spy_0dte_itm_puts_m,
top_contract.1 AS top_contract_underlying,
top_contract.2 AS top_contract_strike,
top_contract.3 AS top_contract_type,
top_contract.4 AS top_contract_expiry,
top_contract.5 AS top_contract_volume,
round(top_contract.7, 3) AS top_contract_avg_price,
round(top_contract.2 - spy_close, 2) AS top_strike_minus_spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-30 00:00:00' AND sip_timestamp < '2026-07-01 00:00:00'Es wurden 61.95 Millionen Kontrakte über 10.06 Millionen Trades gehandelt; Calls machten 57.3% des gesamten Volumens aus, wobei 28% davon an jenem Dienstag ausliefen. Der SPY zeigte eine gegenteilige Tendenz: 12.04 Millionen Kontrakte bei einem Put/Call-Ratio von 1.09 – also mehr Puts als Calls, obwohl der Fonds stieg.
Der Vergleich der SPY-Expirations am selben Tag mit dem Schlusskurs von $746.32 verdeutlicht den Skew: 3.33 Millionen Out-of-the-money Puts (Basispreise unter dem Schlusskurs) und 2.28 Millionen Out-of-the-money Calls, gegenüber 1.77 Millionen In-the-money Calls und 0.63 Millionen In-the-money Puts – die Basispreise mit Abwärtsrisiko, die wertlos ausliefen, waren die aktivste Gruppe im 0DTE Tag des SPY. Es gab keinerlei Handelsaktivität für Kontrakte mit einem Verfallsdatum am Freitag, den 3. Juli (0 Trades – der Markt ist an diesem Freitag geschlossen); die wöchentliche Option für Donnerstag umfasste 10.52 Millionen.
Das exakte SQL hinter jeder Zahl
SELECT
concat(underlying, ' $', toString(strike), ' ', if(typ = 'C', 'call', 'put')) AS contract,
toString(expiry) AS expires,
formatDateTimeInJodaSyntax(expiry, 'MMMM d, yyyy') AS expires_label,
if(expiry = toDate('2026-06-30'), 1, 0) AS is_same_day,
contracts,
round(avg_px, 3) AS avg_premium,
round(100 * contracts / max(contracts) OVER (), 1) AS pct_of_busiest
FROM (
SELECT any(underlying_symbol) AS underlying,
any(toFloat64(strike_price)) AS strike,
any(option_type) AS typ,
any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS expiry,
sum(size) AS contracts,
avg(toFloat64(price)) AS avg_px,
any(ticker) AS occ
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-30 00:00:00' AND sip_timestamp < '2026-07-01 00:00:00'
GROUP BY ticker
ORDER BY contracts DESC, occ ASC
LIMIT 6
)
ORDER BY contracts DESC, contract ASCDer am stärksten gehandelte Kontrakt war der SPY $747 Call mit demselben Verfallsdatum – 821,361 Kontrakte bei einer durchschnittlichen Prämie von $0.641, der $0.68 über dem letzten regulären Balken des SPY schloss und wertlos auslief. Die Datenlage verdeutlicht die Situation: Fünf der sechs am stärksten gehandelten Kontrakte im gesamten Markt waren SPY-Basispreise mit demselben Verfallsdatum, die nur einen Dollar auseinanderlagen (SPY $748 call als nächstes), wobei jeder nur für Cent-Beträge gehandelt wurde. Die Ausnahme war der Kontrakt mit 65.1% des Volumens des Spitzenreiters, bei dem es sich um KWEB $29 call mit Verfall am December 18, 2026 handelte, also nicht um einen Kontrakt mit demselben Verfallsdatum: eine sechsmonatige Position unter fünf kurzfristigen Spekulationen am Nachmittag.
Zinsen: Ende der ersten Jahreshälfte mit Anstieg der langfristigen Renditen
Das exakte SQL hinter jeder Zahl
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jun30_yield_pct,
round((t.2 - t.3) * 100) AS one_day_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(d.yield_1_month), toFloat64(p.yield_1_month)),
('3 month', toFloat64(d.yield_3_month), toFloat64(p.yield_3_month)),
('1 year', toFloat64(d.yield_1_year), toFloat64(p.yield_1_year)),
('2 year', toFloat64(d.yield_2_year), toFloat64(p.yield_2_year)),
('5 year', toFloat64(d.yield_5_year), toFloat64(p.yield_5_year)),
('10 year', toFloat64(d.yield_10_year), toFloat64(p.yield_10_year)),
('30 year', toFloat64(d.yield_30_year), toFloat64(p.yield_30_year)),
('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-30') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-29') AS p
)Die langfristigen Renditen stiegen am letzten Tag der ersten Jahreshälfte an: Die 10-jährige Rendite stieg um 6 bp auf 4.44%, die 2-jährige um 4 bp auf 4.14%, und der 2s10s spread vergrößerte sich um 2 bp auf 0.3 Punkte. Die langfristigen Renditen stiegen in einer Sitzung, in der die schwächsten Sektoren, Immobilien (-2%) und der drittschwächste, Versorgungsunternehmen (-1.48%), beide klassischerweise zinssensitiv sind: Ein gleichzeitiges Auftreten, das beachtenswert ist, auch wenn diese Daten keinen kausalen Zusammenhang beweisen können (die H1-Zusammenfassung bestimmt die Kurve der ersten Jahreshälfte).
Der Kalender hinter dem Handelstag
Das exakte SQL hinter jeder Zahl
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-30'
) AS news,
(
SELECT (argMax(t, n), max(n))
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-30'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-30') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-06-30') AS splits_executed,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-06-30') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-06-30') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-06-30') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-06-30') AS filings_8k,
(SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-06-30' ORDER BY ticker
)) AS ipo_names,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
top_news.2 AS most_covered_articles,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-29')) AS filings_prior_session704 Dividenden gingen am letzten Tag des Quartals ex-dividend — eine Welle zum Quartalsende, da die meisten US-Unternehmen vierteljährlich zahlen — bei 7 Aktiensplits und 2 Neunotierungen (AACU — Ares Acquisition Corp III; OSPRU — Osprey Acquisition Corp. III). Die Spalte für Einreichungen ist der entscheidende Faktor für die Datenqualität: Der SEC-Index verzeichnet 31 Einreichungen für den 30. Juni — 0 Insider Form 4s, 0 8-Ks — im Vergleich zu 4439 am vorangegangenen Handelstag. Es handelt sich um ein Muster am Monatsende im Feed, wie in der Anmerkung zur Monatsend-Lücke analysiert wurde; jede Zählung, die diesen Tag einschließt, ist unterbewertet, bis die Daten nachgereicht werden.
Die Sitzung, verifiziert
Das exakte SQL hinter jeder Zahl
SELECT
formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
count() AS spy_minute_bars,
countIf(window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-06-30 13:30:00' AND window_start < '2026-06-30 20:00:00') AS day_sessions
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-30 00:00:00' AND window_start < '2026-07-01 00:00:00'Die SPY-Bars laufen von 04:00 bis 19:59 New Yorker Zeit mit genau 390 Regular-Window-Bars — eine vollständige Sitzung, verifiziert durch den Tape (der Börsenkalender-Datensatz enthält nur anstehende Schließungen).
Zusammenfassung der Sitzung
Ein 0.73% SPY-Kurs mit 51.8% steigenden Werten, 4 grünen 10 Sektor-Fonds und einer Differenz von 4.69 Punkten zwischen den besten und schlechtesten Werten ist keine breite Rallye. Es handelt sich um eine Rallye eines einzelnen Sektors, die wie ein Index wirkt, während die Handelsaktivität in der letzten halben Stunde einer Quartalsauktion ihren Höhepunkt erreichte. Eine Indexveränderung ist ein Durchschnittswert; dieser wurde durch den Technologiesektor getrieben, während die meisten anderen Sektoren fielen. Prüfen Sie die Dispersion, bevor Sie der Richtung vertrauen.
FAQ
Wie hat sich der Aktienmarkt am 30. Juni 2026 entwickelt?
Der Markt schloss höher: Der SPY gewann 0.73% und der QQQ 1.63% im Vergleich zum Schlusskurs vom 29. Juni. Die Marktdurchdringung war geringer — 51.8% der liquiden Titel stiegen, während 4 der 10 S&P-Sektor-ETFs im Plus lagen.
Welcher Sektor war am 30. Juni 2026 marktführend?
Technologie: Der XLK stieg um 2.69%, gefolgt von den Industrieaktien mit 1.34% und zuletzt den Immobilienaktien mit -2% — die Differenz zwischen dem besten und dem schlechtesten Sektor betrug 4.69 Punkte.
Welche Aktien verzeichneten am 30. Juni 2026 die größten Veränderungen?
Unter den Titeln mit einem Handelsvolumen von 10 Millionen US-Dollar oder mehr verzeichnete JEM den höchsten Zuwachs (+256.76%) und SOC den größten Verlust (55.89%). Keiner der beiden Werte weist einen Split-Eintrag auf: Es handelt sich um echte Preisbewegungen und nicht um Effekte durch Unternehmensaktionen.
Wie hat sich der Aktienmarkt im zweiten Quartal 2026 entwickelt?
Vom Eröffnungskurs am 1. April bis zum Schlusskurs am 30. Juni über 62 Handelstage: QQQ +26.53%, IWM 20.21%, SPY 14.13%, DIA 12.08% — ein durch Wachstum getriebenes Quartal, das mit einem wachstumsorientierten Tag endete.
Warum wird in der letzten halben Stunde so viel Volumen gehandelt?
In der letzten halben Stunde wurden 2.69 Milliarden Aktien gehandelt, verglichen mit 2.05 Milliarden bei der Eröffnung. Die Schlussauktion legt den offiziellen Schlusskurs jeder Aktie in einem einzigen Crossing fest; Indexfonds handeln dort, um diesen Kurs zu erreichen; das Rebalancing zum Quartalsende konzentriert die Handelsströme.
Datenhinweise und Methodik
- Die Körbe. Das Sektor-Board umfasst die zehn im Panel aufgeführten SPDR Sector Funds – jeden Handelstag derselbe Korb, sodass die Dispersionszahl über verschiedene Tage hinweg vergleichbar ist. Die Mover-Boards erfordern einen Umsatz von 10 Millionen US-Dollar und einen Schlusskurs über 1 US-Dollar, schließen die oben aufgeführten wiederverwendeten Symbole aus und enthalten eine Spalte für Aktiensplits.
- Einschränkungen. Das Handelsvolumen in Dollar ist ein Proxy-Wert pro Minute (Schlusskurs × Volumen pro Bar). Der Index basierend auf den Einreichungen vom 30. Juni ist nahezu leer (die Lücke zum Monatsende erläutert dies). Die Anzahl der Nachrichten basiert auf einem Anbieter-Feed: Das Fehlen eines Artikels hier ist kein Beweis dafür, dass nirgendwo etwas veröffentlicht wurde.
- Die Methodik. Eine Handelssitzung (1, verifiziert anhand der beobachteten Bars); Zeitstempel werden in UTC gespeichert und in den Abfragen in New Yorker Zeit umgerechnet; „close“ ist der letzte reguläre Minuten-Bar, nicht der Auktionskurs. Option-Verfallsdaten werden aus dem OCC-Ticker neu interpretiert (die eigene Spalte der Tabelle ist fehlerhaft); die Geldwertigkeit (moneyness) wird im Verhältnis zum letzten regulären Bar von SPY gemessen. Die Panels werden einmalig zum Zeitpunkt der Erstellung über den gesperrten Read-only-Pfad ausgeführt. Warehouse-Stand: 13. Juli 2026.
Jedes Panel ist das Ergebnis einer gespeicherten Abfrage – Diagramm, Tabelle und SQL in einem Objekt. Kopieren Sie jedes dieser Elemente in das Strasmore-Terminal. Nächste Sitzung: 1. Juli.