Strasmore Research
Deep Dives Matt ConnorBy Matt Connor

Leveraged ETF Rebalancing Into the Close

Leveraged ETF rebalancing lands in the closing auction every day. The daily reset arithmetic, and why that flow arrives price insensitive at the bell.

Leveraged ETF rebalancing is the trade a 2x or 3x fund places near the closing bell to reset its exposure to the multiple its prospectus promises for the next day. The size of that trade is set by arithmetic rather than by a view on price: a 3x fund needs to move roughly six times the day's index move, measured against its net assets. On a quiet session that is a rounding error. On a 3 percent day it is close to a fifth of the fund.

What the daily reset rule actually says

A leveraged ETF promises a multiple of one day's index return, and only one day's. How leveraged ETFs work covers what that promise does to a holding period of a week or a year. This post is about the mechanic underneath it. To deliver the multiple tomorrow, the fund has to be holding exactly the target exposure at tonight's close.

Start with a clean hypothetical. A 3x fund holds $100 of net assets and $300 of index exposure. The index rises 1 percent. That exposure is now worth $303, and net assets are $103, since the fund keeps the full $3 of gain. Tomorrow's promise calls for 3 times $103, or $309. The fund is $6 short and has to buy, into a market that has already risen. A down day runs the same way in reverse, with the fund selling into the decline.

The general form is short. For a fund with leverage L, the reset trade is L times (L minus 1) times the index move, expressed as a fraction of net assets. A 2x fund trades twice the move. A 3x fund trades six times it, and the 3x inverse version of the same product trades twice as much again, in the same direction as the move. Long and inverse funds both buy after an up day.

Scaled up, still hypothetical: a 3x fund carrying $1 billion of net assets, on a day its index gains 2 percent, needs about $120 million of added exposure before the close. That dollar figure is illustrative and any real fund's size changes week to week. The rule generating it does not. It sits in the prospectus and will read the same next year.

How leveraged ETF rebalancing sizes itself on a real day

The only input is the index move, so the honest way to size the flow is to take real moves and run the formula across them. The panel below takes the twelve largest single-session moves in the Nasdaq 100 tracker QQQ during 2025, measured close to close, and prints what the reset rule asks of a 2x and a 3x fund on each one.

QueryThe twelve biggest 2025 index moves and the reset trade each one requires
session_datemove_labeldirectionabs_move_pcttrade_2x_pct_of_assetstrade_3x_pct_of_assets
2025-04-09April 9, 2025higher122472
2025-04-04April 4, 2025lower6.2112.4237.26
2025-04-03April 3, 2025lower5.3510.732.1
2025-04-10April 10, 2025lower4.258.525.5
2025-05-12May 12, 2025higher4.078.1424.42
2025-03-10March 10, 2025lower3.887.7623.28
2025-10-10October 10, 2025lower3.476.9420.82
2025-04-16April 16, 2025lower3.026.0418.12
2025-01-27January 27, 2025lower2.915.8217.46
2025-04-24April 24, 2025higher2.815.6216.86
2025-02-27February 27, 2025lower2.785.5616.68
2025-03-06March 6, 2025lower2.755.516.5
The exact SQL behind every number
SELECT
    toString(date)                                                                                AS session_date,
    concat(monthName(date), ' ', toString(toDayOfMonth(date)), ', ', toString(toYear(date)))      AS move_label,
    if(move_pct >= 0, 'higher', 'lower')                                                          AS direction,
    abs(move_pct)                                                                                 AS abs_move_pct,
    round(abs(move_pct) * 2, 2)                                                                   AS trade_2x_pct_of_assets,
    round(abs(move_pct) * 6, 2)                                                                   AS trade_3x_pct_of_assets
FROM
(
    SELECT
        date,
        round(100 * (close_px / lagInFrame(close_px)
              OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1), 2)          AS move_pct
    FROM
    (
        SELECT
            date,
            max(toFloat64(close)) AS close_px
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'QQQ'
          AND date >= '2024-12-16'
          AND date <= '2025-12-31'
        GROUP BY date
    )
)
WHERE date >= '2025-01-02'
ORDER BY abs_move_pct DESC
LIMIT 12
Run this yourself

The largest of the twelve landed on April 9, 2025, when the index closed 12% higher. A 3x fund tracking that index needed to trade 72% of its net assets that afternoon, and a 2x fund 24%. The twelfth day on the list still moved 2.75%. Every one of these is a same-direction trade. The fund buys after the index has risen and sells after it has fallen, whatever it thinks of the price.

How often is the reset trade large?

Most sessions ask for very little. Sorting every 2025 session into buckets by the size of the move shows where the requirement actually lives.

Query2025 sessions by index move size, and the 3x reset each bucket implies
move_bucketbucket_countavg_3x_trade_pct
under 0.5%1081.51
0.5% to 1%654.4
1% to 2%498.73
2% to 3%2014.39
3% or more831.69
The exact SQL behind every number
SELECT
    multiIf(abs(move_pct) < 0.5, 'under 0.5%',
            abs(move_pct) < 1.0, '0.5% to 1%',
            abs(move_pct) < 2.0, '1% to 2%',
            abs(move_pct) < 3.0, '2% to 3%',
                                 '3% or more')   AS move_bucket,
    count()                                      AS bucket_count,
    round(avg(abs(move_pct)) * 6, 2)             AS avg_3x_trade_pct
FROM
(
    SELECT
        date,
        round(100 * (close_px / lagInFrame(close_px)
              OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1), 2) AS move_pct
    FROM
    (
        SELECT
            date,
            max(toFloat64(close)) AS close_px
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'QQQ'
          AND date >= '2024-12-16'
          AND date <= '2025-12-31'
        GROUP BY date
    )
)
WHERE date >= '2025-01-02'
GROUP BY move_bucket
ORDER BY min(abs(move_pct))
Run this yourself

108 sessions fell in the under 0.5% bucket, where the implied 3x reset averages 1.51% of net assets, small enough to disappear into ordinary two-way flow. The 3% or more bucket held 8 sessions with an average implied reset of 31.69% of net assets. The flow clusters. It is negligible across the calm majority of the year and heaviest on the handful of afternoons when everything else is already moving.

Why the reset flow lands in the closing auction

Two features of this order point it at the close. The first is the benchmark. A leveraged fund's daily result is graded against the index's official closing level, so exposure obtained at any other price opens a gap between what the fund earned and what it promised. Trading at the closing print is the one execution that matches the number being measured.

The second is price insensitivity. Nothing in the formula references a price the fund would prefer. The quantity is whatever the day produced, and it has to be in place tonight. An order with a fixed size, no price opinion, and a hard deadline belongs where the most shares meet at a single price: the closing auction, explained in what the closing auction is and, for the NYSE mechanics, in the NYSE closing auction process. Market-on-close orders are due at 3:50 p.m. ET on both primary exchanges, a deadline covered in MOC and MOO order cutoff times.

How much liquidity sits in that one minute is measurable. The panel compares the 4:00 p.m. minute, which carries the closing cross, against the whole regular session for eight funds over the second half of 2025.

QueryShare of session volume printed in the 4:00 p.m. minute, July to December 2025
tickerfund_typeclosing_print_share_pctclosing_stretch_share_pct
SPYplain index fund0.5818.29
QQQplain index fund0.3713.23
SPXLdaily reset fund0.2115.29
UPROdaily reset fund0.216.13
XLKplain index fund0.1116.16
SQQQdaily reset fund0.119.18
TQQQdaily reset fund0.099.17
SOXLdaily reset fund0.0512.03
The exact SQL behind every number
SELECT
    ticker,
    multiIf(ticker IN ('TQQQ', 'SQQQ', 'SOXL', 'SPXL', 'UPRO'),
            'daily reset fund', 'plain index fund')                    AS fund_type,
    round(100 * sumIf(volume, et_minute = 960) / sum(volume), 2)       AS closing_print_share_pct,
    round(100 * sumIf(volume, et_minute >= 930) / sum(volume), 2)      AS closing_stretch_share_pct
FROM
(
    SELECT
        ticker,
        volume,
        toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('TQQQ', 'SQQQ', 'SOXL', 'SPXL', 'UPRO', 'QQQ', 'SPY', 'XLK')
      AND window_start >= '2025-07-01 00:00:00'
      AND window_start <  '2026-01-01 00:00:00'
)
WHERE et_minute >= 570
  AND et_minute <= 960
GROUP BY ticker
ORDER BY closing_print_share_pct DESC
Run this yourself

SPY concentrated the most, 0.58% of its entire session volume inside that single minute; SOXL the least, at 0.05%. Widen the window to the closing half hour and the top name reaches 18.29%. No other minute of the day is close, which is exactly why a deadline order with no price preference is routed there.

One session where the reset met the bell

Take the largest-move session of 2025, the same one sitting at the top of the arithmetic panel above. The chart below traces the index tracker minute by minute through the last half hour, against the average volume that minute carried across the whole of 2025.

QueryThe final half hour on 2025's largest-move session, against a typical 2025 session
31 rows (showing 20)
et_timebig_move_shares_mtypical_shares_m
15:300.390.13
15:310.530.11
15:320.450.1
15:330.680.1
15:340.420.09
15:350.410.12
15:360.210.11
15:370.970.12
15:380.30.1
15:390.340.1
15:400.160.12
15:410.40.12
15:420.270.11
15:430.160.12
15:440.30.11
15:450.490.14
15:460.220.13
15:470.710.14
15:480.380.14
15:490.330.15
The exact SQL behind every number
WITH
(
    SELECT date
    FROM
    (
        SELECT
            date,
            abs(close_px / lagInFrame(close_px)
                OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1) AS abs_move
        FROM
        (
            SELECT
                date,
                max(toFloat64(close)) AS close_px
            FROM global_markets.stocks_daily_aggs
            WHERE ticker = 'QQQ'
              AND date >= '2024-12-16'
              AND date <= '2025-12-31'
            GROUP BY date
        )
    )
    WHERE date >= '2025-01-02'
    ORDER BY abs_move DESC
    LIMIT 1
) AS reset_date
SELECT
    formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,
    round(sumIf(volume,
                toDate(toTimeZone(window_start, 'America/New_York')) = reset_date) / 1e6, 2) AS big_move_shares_m,
    round(avg(volume) / 1e6, 2)                                                              AS typical_shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'QQQ'
  AND window_start >= '2025-01-01 00:00:00'
  AND window_start <  '2026-01-01 00:00:00'
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
       + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 930 AND 960
GROUP BY et_time
ORDER BY et_time
Run this yourself

The 4:00 p.m. minute carried 0.45 million shares that afternoon, against 0.16 million in the same minute on an average 2025 session. The 3:30 p.m. bar that opens the window carried 0.39 million. Every leveraged fund tracking this index was pointed the same way into that print, toward the direction the index had already travelled during the day.

The imbalance feed is a separate record. From 3:50 p.m. ET each primary exchange publishes an imbalance stream carrying paired shares and the residual imbalance with its side, refreshed every few seconds until the cross. That stream is an exchange data product and is not carried on the consolidated tape this post reads, so the receipt here is the size of the print rather than the running imbalance that preceded it. NYSE imbalance messages covers how to read that feed while it updates.

What these panels can and cannot show

A leveraged fund does not usually reset by trading its own shares. It adjusts index futures and total return swaps with dealer counterparties, and those dealers hedge in the underlying basket. The cash equity closing auction measured above is where a large share of that hedge arrives, one step removed from the fund itself.

Volume in a fund's own ticker at 4:00 p.m. comes from investors placing their own market-on-close orders, not from the reset. The panels here measure two things separately: the size of the reset requirement implied by the prospectus rule, and the size and timing of closing liquidity. They do not identify any individual order inside the print, and no public tape does.

Every panel uses a fixed 2025 date range, so these figures stay put as new sessions arrive. The 4:00 p.m. minute bar carries the closing cross plus any trades reported inside that minute.

FAQ

What is leveraged ETF rebalancing?

It is the daily trade a 2x or 3x fund makes to return its exposure to the stated multiple of its index for the next session. Gains and losses during the day push the ratio of exposure to net assets off target, and the fund trades in the same direction as the day's move to restore it.

Why do leveraged ETFs trade at the close?

The fund's daily result is measured against the index's official closing level, so executing at the closing print keeps the gap between promise and delivery small. The closing auction is also the single deepest liquidity event of the session, which suits an order with a fixed quantity and no price preference.

Do inverse ETFs rebalance in the same direction as leveraged long ETFs?

Yes. Running the formula for a 3x inverse fund gives a trade in the same direction as the index move, at twice the size of the 3x long fund's. Both sides of the complex buy after an up day and sell after a down day.

How large is the daily reset trade?

For a fund with leverage L it is L times (L minus 1) times the day's index percentage move, as a share of net assets. That is twice the move for a 2x fund and six times the move for a 3x fund. Across 2025 the typical session implied a fraction of a percent, while the largest days implied tens of percent.

Can you see leveraged ETF rebalancing in the tape?

Not directly. The reset is executed in futures and swaps, and the dealer hedges that follow blend into the auction alongside index funds and every other participant. What is visible is the size of the closing print and the size of the requirement, measured separately.


Every panel above ships with the SQL that produced it, so you can open one and check the counting yourself. To run the same reset arithmetic against a different index or a different year, ask the question in plain English on the Strasmore terminal.

#leveraged etfs#closing auction#market structure#rebalancing#etfs