The short answer

No, not that we could detect. SPY’s last half hour (15:30 to 15:59 Eastern) carried 10.26% of the day’s price movement in 2018 to 2019 and 9.83% in 2023 to 2024, and QQQ’s carried 7.62% and 7.01% (movement means each minute’s price change squared and added up, so big moves count most).

The test could only have seen a change of about a fifth of the share or more, so a smaller change could be there unseen.

The price source may differ between the two periods (see Limits), so a change between them, had we found one, could not be called market behaviour.

What to do with this

  • Before you accept a claim that late-day moves are getting bigger, ask for the share by year and the smallest change its test could see. Here the last half hour’s yearly share ran from 8.67% to 13.80% in SPY (QQQ 6.44% to 10.78%); neighbouring years typically differed by 2.20 percentage points in SPY (1.03 in QQQ) and by as much as 3.15 (2019 to 2020) and 3.07 (2020 to 2021), against 0.43 and 0.61 between the two periods.
  • Judge a move on your chart by the half hour it came in: the same move says less in a half hour where moves are typically bigger. In 2023 to 2024 SPY’s typical move was 1.34 times an average half hour’s in the first half hour, 1.13 in the last and 0.81 at 13:30, its quietest (each is the square root of the half hour’s share over an even 7.69%). QQQ’s last half hour is below an even spread (7.01%, 0.95 times).
  • Use the spreadsheet below to see where your own stock’s day moves, or to check your typing against the 30-minute figures for SPY and QQQ from this page’s study. It cannot test whether late-day moves are getting bigger: a log of 20 to 100 sessions can only show a gap from the study’s average of 7.0 points or more in SPY (4.6 in QQQ), against the study’s own 2.11 (1.51).
REAL HISTORICAL DATA

The last half hour’s share of the day’s movement

SPY and QQQ · one-minute prices · May 2018 to December 2024

This figure measures recorded prices; no trade is placed or simulated.

1. The share, year by year

Each dot is one year’s average share of the day’s movement in the window you pick; the line is its 95% range. The shaded years are the two periods compared, with each period’s average as a dashed line. A hollow dot marks 2018, which has only May to December. Descriptive: a single year’s range is not a finding.

Window
SPY: last half hour (15:30 to 15:59)
0%5%10%15%20%2018 to 2019: 10.26%2023 to 2024: 9.83%2020 to 2022: in no test9.672018thin10.65201913.80202011.4720219.3620228.67202310.972024
QQQ: last half hour (15:30 to 15:59)
0%5%10%15%2018 to 2019: 7.62%2023 to 2024: 7.01%2020 to 2022: in no test7.062018thin7.99201910.7820207.7220217.3720226.4420237.572024
SPY: 10.26% in 2018 to 2019, 9.83% in 2023 to 2024, a change of −0.43 points (95% range −1.49 to +0.63).QQQ: 7.62% in 2018 to 2019, 7.01% in 2023 to 2024, a change of −0.61 points (95% range −1.37 to +0.15).

2. The change between the two periods, six tests

Dot: the change. Thick line: its 95% range. Thin line: a wider range that allows for the six tests run together. Dashed band: the smallest change the test could have seen, four times in five, at that bar; a change inside the band could be there and unseen. The window you picked in panel 1 is drawn in full.

−4−20+2+4◀ smaller share laterbigger share later ▶2023 to 2024 minus 2018 to 2019, percentage pointsLast half hour (15:30 to 15:59)SPYno change detected−0.43QQQno change detected−0.61First half hour (09:30 to 09:59)SPYno change detected−1.82QQQno change detected−1.90Last ten minutes (15:50 to 15:59)SPYno change detected+0.45QQQno change detected−0.12
  • Change
  • Smallest change the test could see
SPY: no change detected in the last half hour. Raw p 0.43, adjusted p 0.51. The test could only have seen a change of about 2.11 points, 21% of the 2018 to 2019 share (1.64 points at the ordinary one-test bar).QQQ: no change detected in the last half hour. Raw p 0.12, adjusted p 0.23. The test could only have seen a change of about 1.51 points, 20% of the 2018 to 2019 share (1.17 points at the ordinary one-test bar).

The numbers

The six tests. Shares are the average share of the day’s movement. Change is 2023 to 2024 minus 2018 to 2019, in percentage points. The adjusted range allows for the six tests run together. Smallest change the test could see: what it would have caught four times in five, at the stricter six-test bar and at the ordinary one-test bar. Raw p is how often chance alone gives a change this large; adjusted p allows for the six tests, and under 0.05 would count as detected.
TestSessions, 2018–19 / 2023–24Share 2018–19Share 2023–24Change (points)95% rangeAdjusted rangeSmallest change the test could see, six-test barSmallest change the test could see, one-test barRaw p / adjusted p
SPY last half hour414 / 49510.26%9.83%−0.43−1.49 to +0.63−1.87 to +1.002.111.640.43 / 0.51
SPY first half hour414 / 49515.58%13.76%−1.82−3.41 to −0.27−3.99 to +0.273.132.430.02 / 0.12
SPY last ten minutes414 / 4954.76%5.21%+0.45−0.33 to +1.21−0.61 to +1.471.541.190.25 / 0.38
QQQ last half hour415 / 4967.62%7.01%−0.61−1.37 to +0.15−1.63 to +0.411.511.170.12 / 0.23
QQQ first half hour415 / 49620.70%18.80%−1.90−3.75 to −0.12−4.40 to +0.483.602.800.04 / 0.12
QQQ last ten minutes415 / 4963.70%3.58%−0.12−0.61 to +0.36−0.79 to +0.520.960.750.64 / 0.64

3. Where the day’s movement sits

The share of the day’s movement in each of the thirteen half hours. Outline bar and first number: 2018 to 2019. Solid bar and second number: 2023 to 2024. A description of where the movement was, with no claim about why.

Market
09:30 to 09:5915.58 · 13.7610:00 to 10:2911.46 · 12.8810:30 to 10:599.67 · 9.2711:00 to 11:297.90 · 7.4011:30 to 11:596.96 · 6.1012:00 to 12:295.60 · 5.3812:30 to 12:594.77 · 5.1013:00 to 13:294.70 · 5.9513:30 to 13:594.43 · 5.0914:00 to 14:296.19 · 6.6314:30 to 14:596.06 · 6.2215:00 to 15:296.43 · 6.4115:30 to 15:5910.26 · 9.83
  • 2018 to 2019
  • 2023 to 2024
Share of the day’s movement in each half hour, both ETFs, one-minute measure. Each share column adds to 100%, up to rounding. The last two columns give a half hour’s typical move as a multiple of an average half hour’s: the square root of its 2023–24 share over the even share, 7.69%.
Half hourSPY 2018–19SPY 2023–24QQQ 2018–19QQQ 2023–24SPY 2023–24 typical move, times averageQQQ 2023–24 typical move, times average
09:30 to 09:5915.58%13.76%20.70%18.80%1.341.56
10:00 to 10:2911.46%12.88%12.84%14.29%1.291.36
10:30 to 10:599.67%9.27%9.93%10.13%1.101.15
11:00 to 11:297.90%7.40%7.99%7.60%0.980.99
11:30 to 11:596.96%6.10%6.64%6.09%0.890.89
12:00 to 12:295.60%5.38%5.37%5.26%0.840.83
12:30 to 12:594.77%5.10%4.58%4.72%0.810.78
13:00 to 13:294.70%5.95%4.39%5.32%0.880.83
13:30 to 13:594.43%5.09%4.11%4.52%0.810.77
14:00 to 14:296.19%6.63%5.54%5.68%0.930.86
14:30 to 14:596.06%6.22%5.21%5.26%0.900.83
15:00 to 15:296.43%6.41%5.09%5.33%0.910.83
15:30 to 15:5910.26%9.83%7.62%7.01%1.130.95
Every year, other views, method and data source
Every year’s average share of the day’s movement in each window, with its 95% range from resampling whole months. 2018 covers May to December only. Descriptive: 2020 to 2022 are in no test, and a single year’s range is not a finding.
Market and yearSessionsLast half hourFirst half hourLast ten minutes
SPY 2018 (thin)1669.67% (8.96 to 10.38)14.03% (12.13 to 15.83)4.16% (3.87 to 4.49)
SPY 201924810.65% (9.90 to 11.59)16.62% (15.14 to 18.37)5.16% (4.52 to 5.92)
SPY 202024713.80% (12.33 to 15.39)15.46% (14.37 to 16.66)6.87% (5.73 to 8.21)
SPY 202125011.47% (10.50 to 12.49)18.12% (16.36 to 19.77)6.13% (5.38 to 6.92)
SPY 20222509.36% (8.26 to 10.48)16.09% (15.20 to 17.06)4.31% (3.73 to 4.90)
SPY 20232468.67% (7.80 to 9.53)14.08% (12.99 to 15.36)4.33% (3.71 to 4.98)
SPY 202424910.97% (9.83 to 12.16)13.44% (12.46 to 14.59)6.08% (5.38 to 6.80)
QQQ 2018 (thin)1667.06% (6.17 to 8.03)19.92% (17.34 to 22.51)3.34% (2.87 to 3.80)
QQQ 20192497.99% (7.49 to 8.61)21.23% (19.46 to 23.36)3.94% (3.54 to 4.45)
QQQ 202024710.78% (9.41 to 12.34)19.87% (18.12 to 21.63)5.28% (4.27 to 6.45)
QQQ 20212517.72% (7.03 to 8.39)22.86% (21.11 to 24.62)4.07% (3.54 to 4.61)
QQQ 20222507.37% (6.50 to 8.23)19.96% (18.87 to 21.19)3.33% (2.91 to 3.74)
QQQ 20232476.44% (5.78 to 7.08)19.11% (17.68 to 20.62)3.18% (2.78 to 3.57)
QQQ 20242497.57% (6.89 to 8.32)18.50% (17.76 to 19.36)3.99% (3.62 to 4.42)
The last half hour’s change in points, in the main test and under four other views, with 95% ranges. A range that includes zero did not detect a change.
ViewSPYQQQ
Main test−0.43 (−1.49 to +0.63)−0.61 (−1.37 to +0.15)
Five-minute returns instead of one-minute−0.17 (−1.49 to +1.21)−0.58 (−1.66 to +0.52)
Absolute moves instead of squared moves−0.32 (−0.79 to +0.14)−0.29 (−0.69 to +0.10)
Without third Fridays, Fed days, Russell rebalance days and month-ends−0.57 (−1.60 to +0.48)−0.80 (−1.55 to −0.02)
May to December only, both periods−0.63 (−1.94 to +0.70)−0.63 (−1.61 to +0.36)
  • Percent of the session's squared one-minute returns (the share of the day's movement); differences in percentage points.
  • Ranges resample whole calendar months with replacement (100,000 draws for the six tests, 20,000 for the year-by-year ranges and other views). A second p-value shuffles which months belong to which period, 100,000 times; it agrees with the first.
Data receipt: 15 sources, built 2026-09-28

Each source is fingerprinted with SHA-256, so a changed file changes the fingerprint. A single file shows its own hash; a source of several files shows one hash of their names and hashes.

  • Study plan, fingerprinted before the results were opened · 557dab68d63c75eb…
  • Study plan, written form · dc4a1e78c149e14b…
  • Study session calendar: which sessions are used, their era and their calendar labels · bd46b7c9d33f2992…
  • Study calendar summary · 45bf4c711b2a9dff…
  • Study calculation code · 6d83bad07fa7a64b…
  • Study results, one run · d1b37cad3a82c46e…
  • Study report · 3fdce682badca7df…
  • Study statistics code (copied, hash-checked) · 31659b465ad0e8e8…
  • Study loader code (copied, hash-checked) · 273041836a4c3c1e…
  • Check that the p-value method has enough random draws (copied, hash-checked) · 9334c9a62268ca18…
  • Study log rows: plan fixed, run started, run finished · 6e3eda674b6fc405…
  • Study test count and correction · 47a7ed61841d1a31…
  • SPY one-minute prices, regular hours (2018-05 to 2024-12) (80 files) · f96f748da6205975…
  • QQQ one-minute prices, regular hours (2018-05 to 2024-12) (80 files) · 6970e6880835fdf7…
  • Independent recomputation of the six tests (kept by the study's audit) · 1d906f2c4891cf52…

How we tested

We used recorded one-minute prices for SPY and QQQ, regular hours only (09:30 to 15:59 Eastern, 390 bars a day), from May 2018 to December 2024. The two periods are the earliest part of that data and its latest two years; 2020 to 2022 are in no test and shown year by year. Early closes, days with missing minutes and 24 January 2023 (dropped by a rule set before any price was opened) were left out, leaving 1,656 SPY and 1,659 QQQ sessions, 414 and 495 of SPY’s in the two periods.

For each session we took each window’s share of the day’s movement and compared its average in the two periods, SPY and QQQ separately. To see how far chance alone could move the gap, we redrew whole calendar months at random 100,000 times, and shuffled which months belong to which period 100,000 times as a second check. “Detected” needs an adjusted p under 0.05 across six tests (SPY and QQQ, each in the first half hour, the last half hour and the last ten minutes). The windows, periods and tests were written down before the results were opened, though the periods were chosen after earlier tests.

Check it yourself

You can measure the 30-minute version in a spreadsheet, from a 30-minute chart with regular hours only. One sheet, row 1 for headings, thirteen data rows for each session:

The log’s columns: what to write and where it comes from
ColumnWhat to writeWhere it comes from
ADateThe session’s date, on all thirteen rows
BBar start: 09:30, 10:00 and so on to 15:30Typed once per bar as text (format the column as Text first, or step 5 finds nothing)
CClose of that 30-minute barYour 30-minute chart. For the 15:30 bar use the 15:59 minute’s close, not the closing-auction price
DPrice before the barTyped: the session’s 09:30 open on its first row, then the row above’s C. Each new session starts again from that day’s open, never the close above, or the overnight gap gets in
EReturn, in percentFormula on C and D
FReturn squaredFormula on E
GShare of the day’s movementFormula on F

The steps

Worked lines use SPY on 2 January 2024, a recorded session, with its prices to the cent.

  • 1. Open a 30-minute chart of one symbol, regular hours only, and for each of a session’s 13 bars write the date in A and the bar’s start in B. Worked: 2 January 2024, bars from 09:30 to 15:30.
  • 2. In C write each bar’s close; in D type the session’s 09:30 open on its first row, then =C2, =C3 and so on down. Worked: the first row has D 472.16 and C 472.27; the 15:30 bar has D 470.91 and C 472.60.
  • 3. In E write =LN(C2/D2)*100 and in F write =E2^2, copied down. Worked, 15:30 bar: LN(472.60/470.91)*100 is +0.3582, squared 0.1283.
  • 4. In G write =F2/SUMIFS(F:F,A:A,A2), the bar’s share of that day’s movement. Worked: the day’s F adds up to 0.2551, so the 15:30 bar’s share is 0.1283 ÷ 0.2551, 50.30% from the unrounded values.
  • 5. Log more sessions the same way (SPY or QQQ from 2023 or 2024 if you want to check against the study), then read =AVERAGEIFS(G:G,B:B,"15:30") for the last half hour. Worked: the study’s 30-minute version gives SPY 10.81% in 2018 to 2019 and 10.53% in 2023 to 2024, QQQ 7.94% and 7.59%, which run 0.32 to 0.70 percentage points above the study’s one-minute figures for the same periods.

The worked session

SPY on 2 January 2024, a recorded session, in 30-minute bars. Shown to the decimals given, so a column can miss its total by a hundredth or so. The study’s one-minute measure puts the 15:30 bar at 12.45%, not 50.30%: it squares each minute and adds, where the 30-minute version squares the bar’s net move, so on one session the two can differ a lot.
Bar startDCEFG
09:30472.16472.27+0.02330.00050.21%
10:00472.27471.76−0.10800.01174.58%
10:30471.76471.68−0.01700.00030.11%
11:00471.68472.33+0.13880.01937.55%
11:30472.33473.19+0.17980.032312.67%
12:00473.19472.98−0.04440.00200.77%
12:30472.98472.65−0.06870.00471.85%
13:00472.65472.66+0.00220.00000.00%
13:30472.66472.15−0.10810.01174.58%
14:00472.15471.88−0.05720.00331.28%
14:30471.88470.93−0.20260.041116.09%
15:00470.93470.91−0.00320.00000.00%
15:30470.91472.60+0.35820.128350.30%
Day0.2551100%

What a small log can say

A log fills slowly: each session is thirteen prices, and the last half hour’s share swings a lot from session to session (its typical distance from the average across SPY sessions in 2023 to 2024 is about 15 points), so a short log’s average is mostly noise.

Averages of every run of 20, 50 and 100 consecutive 2023 to 2024 sessions wander by about 3.8, 3.0 and 2.5 points in SPY. A gap of 2.8 times that wander is the smallest an ordinary one-test check catches four times in five, and the table gives it. Your gap is your average minus the study’s 30-minute figure; a smaller gap than the table shows is “cannot tell”.

The table is for SPY and QQQ: for another stock, dividing its session spread by the square root of the sessions gives too small a gap (SPY at 100 sessions: 4.3 points against 7.0), because neighbouring sessions resemble each other.

The smallest gap a log could see, four times in five, at 20, 50 and 100 sessions, on the 30-minute version
Sessions loggedAbout how longSPY: smallest gap (points)QQQ: smallest gap (points)What it lets you say
201 month10.77.6Bigger than SPY’s whole 30-minute share (10.53%), so a drop could never show.
502 months8.55.8A gap of 81% of SPY’s share would show. Too coarse to check the study.
1005 months7.04.6A gap of 67% of SPY’s share would show. The study’s two periods differ by 4%, so no log this short can check it.

Limits

No change detected is not “no change”. At the six-test bar the test could only have seen about 2.11 points in SPY’s last half hour and 1.51 in QQQ’s (21% and 20% of the 2018 to 2019 share), and at the ordinary one-test bar 1.64 and 1.17; a smaller change could be there unseen. The last half hour also missed the ordinary bar (raw p 0.43 in SPY, 0.12 in QQQ).

  • Prices: the files do not say where they come from, so a change of source between the periods cannot be ruled out. It would touch the change we measured, and we cannot say which way it would push the share. Two warning signs: a check of trading volume flagged a jump in early 2020, which a re-check ties to the March 2020 volume surge and reads as probably not a new source, though the flag was not cleared; and the share of minutes in which the price did not change at all fell by more than half between the periods (SPY’s last half hour 3.50% to 1.65%, QQQ’s 4.44% to 1.61%), which is unexplained. Until it is explained, an era difference cannot be called market behaviour.
  • Earlier tests: this is one of at least 40 tests run on these SPY and QQQ prices, this study’s six included, with no allowance across them, and the periods were chosen after the earlier ones, so an occasional lucky detection is expected. The first half hour’s raw p-values (0.02 for SPY and 0.04 for QQQ) become 0.12 once the six tests are allowed for, so that change is not confirmed.
  • Coverage: two large ETFs that move closely together, so their agreement is not two independent confirmations, and two periods: 2023 (8.67%) and 2024 (10.97%) straddle the 2018 to 2019 average, so pooling hides a jump. The last half hour ends at 15:59, so the closing auction is not measured. Nothing after 2024 was read, and no cause, direction or level was studied.
  • Share, not size: a share that holds could sit on a bigger or smaller day, and because the parts add to 100%, a fall in the first half hour’s share goes with a rise elsewhere.
  • Noise: one-minute moves include the bid-ask bounce (prices hopping between the buying and selling quote) and price rounding. SPY’s price rose, so one cent fell from 0.0035% to 0.0021% of its price and rounding weighs less. Five-minute returns mute both and give −0.17 for SPY and −0.58 for QQQ.
  • Other views (five-minute returns, absolute moves, no event days such as third Fridays, Fed days, Russell index rebalance days and month-ends, and May to December alone) each give a slightly smaller share later, by under a point. Comparing 2023 to 2024 with 2018 to 2019, every estimate of the change leans slightly down, never up (−0.17 to −0.80 percentage points), but a fall that small is within what luck can produce. Seven of those eight ranges include zero; the exception is QQQ without event days (−0.80, range −1.55 to −0.02), which carries no allowance for the tests run together.

Sources and editorial notes

Read the primary references and editorial policy

Published by GEXfreak. Prism by GEXfreak is the chart product these guides describe. Every figure comes from recorded market history: prices, option open interest and recorded sessions. Where a figure shows trade results, the trades are back-tested, not placed. This is product education, not independent investment research.

Each figure lists its data sources and their SHA-256 fingerprints under “Table, method and data source”. The references below explain the statistics and the disclosure wording used on this page. They do not endorse GEXfreak or these studies.

For the product’s calculation and data boundaries, read Prism’s methodology.

All resources
REAL HISTORICAL DATA

The last 15 minutes of month-end

78 month-ends · SPY and QQQ · before the closing cross
818111912201221122212231124
Month-ends counted per year, May 2018 to December 2024 · minute prices, not levels
REAL PRICES · REBUILT LEVELS · BACK-TESTED TRADES

How many trades until you know?

Four times the trades halve the doubt.
±0.0±0.2±0.4±0.6±0.8±1.020501002005001,0002,000All trades, 15:45: 312 trades, ±0.23RThrough 28 March 2023 (fallback prices): 222 trades, ±0.29RFrom 29 March 2023 (native prices): 90 trades, ±0.37RQuarterly months (Mar, Jun, Sep, Dec): 102 trades, ±0.36ROther months: 210 trades, ±0.31RAAPL: 49 trades, ±0.48RINTC: 29 trades, ±0.74RMSFT: 60 trades, ±0.46RNKE: 26 trades, ±0.65RNVDA: 71 trades, ±0.42RTSLA: 49 trades, ±0.54R
11 measured 95% ranges · one rule, rebuilt at the 5-minute mark · gold line: ±3.6/√trades
REAL PRICES · BACK-TESTED TRADES

The best of 480 backtests

5 passed the pass mark. Then we adjusted for the number tried.
480 versions · 12 stocks · 2021–2024 · white: passed · red: failed · grey: under 30 trades
REAL HISTORICAL DATA

The Monday after monthly expiry

80 monthly expiries, 70 Mondays and 78 Fridays to compare.
SPY and QQQ · 2018–2024 · counts, not dates · filled: a Monday after that could be kept · hollow: holiday or early close
REAL HISTORICAL DATA

Does the market drift at the same time every day?

A session, cut into half hours.
SPY, Dec 31, 2024. 18 tickers × 13 half hours = 234 cells, 32,969 ticker-sessions, 2016 to 2024.

See the last half hour on your own chart.

Membership is required for live SPY, QQQ and IWM books. The figures on this page are recorded history, not a live book.

Create an account to save your layout; review current access conditions on the pricing page.