Full options quote history: clean NBBO bid/ask snapshots for any US option contract at the interval you choose, by SQL API, $79 a month.See the options quotes plan
Strasmore Research
Deep dive investigation Matt ConnorBy Matt Connor · Updated 2026-09-28

Leveraged ETF Rebalancing Into Closing Bell

Leveraged ETF rebalancing dey enter closing auction every day. See how daily reset arithmetic dey force price-insensitive flow for bell.

Leveraged ETF rebalancing na trade wey 2x or 3x fund dey place near closing bell to reset im exposure to the multiple wey im prospectus promise for the next day. The size of the trade na arithmetic matter, no be price opinion: 3x fund need move roughly six times the day’s index move, measured against im net assets. For quiet session, na small rounding error. For 3 percent day, e fit reach close to one-fifth of the fund.

Wetin the daily reset rule really talk

Leveraged ETF promise multiple of one day’s index return, and only one day’s own. How leveraged ETFs work explain wetin that promise do to holding period of one week or one year. This post dey focus on the mechanic underneath. To deliver the multiple tomorrow, the fund must hold exactly the target exposure when market close tonight.

Make we start with clean hypothetical. 3x fund hold $100 net assets and $300 index exposure. The index rise 1 percent. That exposure now worth $303, and net assets become $103 because the fund keep the full $3 gain. Tomorrow’s promise require 3 times $103, or $309. The fund short by $6 and must buy inside market wey don already rise. Down day work the same way in reverse, with the fund selling as the decline dey happen.

The general formula short. For fund with leverage L, reset trade na L times (L minus 1) times the index move, expressed as fraction of net assets. 2x fund trade twice the move. 3x fund trade six times the move, while the 3x inverse version of the same product trade twice as much again, in the same direction as the move. Both long and inverse funds buy after up day.

If we scale am up, still hypothetical: 3x fund wey carry $1 billion net assets, on day wey im index gain 2 percent, need about $120 million extra exposure before close. That dollar figure na illustration, and real fund size dey change from week to week. But the rule wey produce am no dey change. E dey inside the prospectus and e go read the same next year.

How leveraged ETF rebalancing size itself on real day

The only input na the index move, so the correct way to size the flow na to take real moves and run the formula across dem. The panel below take the twelve biggest single-session moves for Nasdaq 100 tracker QQQ during 2025, measured close to close, and show wetin the reset rule require from 2x and 3x fund for each one.

QueryDe twelve biggest 2025 index moves and de reset trade wey each one need
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 am yourself

The biggest of the twelve happen on April 9, 2025, when the index close 12% higher. 3x fund wey track that index need trade 72% of im net assets that afternoon, while 2x fund need trade 24%. The twelfth day for the list still move 2.75%. Every trade here dey go the same direction as the index move. Fund buy after index rise and sell after e fall, no matter wetin e think about the price.

How often reset trade dey large?

Most sessions require very little. If we sort every 2025 session into buckets based on move size, we go see where the requirement really dey.

Query2025 sessions by index move size, and de 3x reset wey each bucket imply
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 am yourself

108 sessions fall inside under 0.5% bucket, where the implied 3x reset average 1.51% of net assets, small enough to disappear inside normal two-way flow. 3% or more bucket contain 8 sessions, with average implied reset of 31.69% of net assets. The flow dey cluster. E dey negligible across most calm sessions for the year, and e dey heaviest on the few afternoons when everything else don already dey move.

Why reset flow dey land for closing auction

Two features of this order point am toward the close. The first na benchmark. Leveraged fund daily result dey measured against the index official closing level, so exposure wey e obtain at any other price fit create gap between wetin fund earn and wetin e promise. Trading at the closing print na the only execution wey match the number being measured.

The second na price insensitivity. Nothing for the formula refer to price wey the fund prefer. The quantity na wetin the day produce, and e must dey in place tonight. Order wey get fixed size, no price opinion and hard deadline belong where the most shares meet at one price: closing auction. wetin closing auction be explain am, while the NYSE closing auction process cover the NYSE mechanics. Market-on-close orders due by 3:50 p.m. ET for both primary exchanges. MOC and MOO order cutoff times cover this deadline.

How much of fund own volume dey inside that one print fit be measured. The panel compare each fund closing cross, read from the tape as one trade, against im full regular-session volume for eight funds during second half of 2025.

QueryShare of session volume wey dem print for de closing cross, July to December 2025
tickerfund typeclosing print share pctclosing stretch share pct
SPXLdaily reset fund3.2118.07
UPROdaily reset fund3.0718.78
XLKplain index fund2.5418.35
SOXLdaily reset fund2.1314.02
SPYplain index fund1.8519.59
QQQplain index fund1.2614.13
TQQQdaily reset fund0.369.53
SQQQdaily reset fund0.179.3
The exact SQL behind every number
SELECT
    b.ticker                                                                                     AS ticker,
    multiIf(b.ticker IN ('TQQQ', 'SQQQ', 'SOXL', 'SPXL', 'UPRO'),
            'daily reset fund', 'plain index fund')                                              AS fund_type,
    round(100 * sum(p.closing_print) / sum(b.session_shares + p.closing_print), 2)              AS closing_print_share_pct,
    round(100 * sum(b.stretch_shares + p.closing_print) / sum(b.session_shares + p.closing_print), 2) AS closing_stretch_share_pct
FROM
(
    SELECT
        ticker,
        d,
        sum(v)                    AS session_shares,
        sumIf(v, et_minute >= 930) AS stretch_shares
    FROM
    (
        SELECT
            ticker,
            toDate(toTimeZone(window_start, 'America/New_York'))        AS d,
            toFloat64(volume)                                           AS v,
            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 04:00:00'
          AND window_start <  '2026-01-01 05:00:00'
    )
    WHERE et_minute >= 570
      AND et_minute <= 959
    GROUP BY ticker, d
) AS b
INNER JOIN
(
    SELECT
        ticker,
        toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
        toFloat64(maxIf(size, has(conditions, 8)))            AS closing_print
    FROM global_markets.stocks_trades
    WHERE ticker IN ('TQQQ', 'SQQQ', 'SOXL', 'SPXL', 'UPRO', 'QQQ', 'SPY', 'XLK')
      AND sip_timestamp >= '2025-07-01 04:00:00'
      AND sip_timestamp <  '2026-01-01 05:00:00'
      AND toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 16
      AND toMinute(toTimeZone(sip_timestamp, 'America/New_York')) < 10
    GROUP BY ticker, d
    HAVING countIf(has(conditions, 8)) > 0
) AS p ON p.ticker = b.ticker AND p.d = b.d
GROUP BY ticker
ORDER BY closing_print_share_pct DESC
Run am yourself

SPXL concentrate the most, with 3.21% of im entire session volume inside that one trade; SQQQ concentrate the least, at 0.17%. If we extend the window to the closing half hour, including the print, the top name reach 18.07%. Fund own cross na modest. As the notes below explain, reset itself mostly pass through futures, swaps and the underlying basket, while the fund closing print carry investors’ orders in its shares.

One session where reset meet the bell

Make we take the 2025 session with the biggest move, the same one wey sit at the top of the arithmetic panel above. The chart below follow the index tracker minute by minute through the last half hour, against the average volume wey that minute carry across all of 2025.

QueryDe final half hour and de closing cross for 2025 session wey get de biggest move, against one 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
    et_time,
    round(sumIf(shares, d = reset_date) / 1e6, 2) AS big_move_shares_m,
    round(avg(shares) / 1e6, 2)                   AS typical_shares_m
FROM
(
    SELECT
        formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,
        toDate(toTimeZone(window_start, 'America/New_York'))                  AS d,
        toFloat64(volume)                                                     AS shares
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'QQQ'
      AND window_start >= '2025-01-01 05:00:00'
      AND window_start <  '2026-01-01 05:00:00'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 930 AND 959
    UNION ALL
    SELECT
        '16:00'                                               AS et_time,
        toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
        toFloat64(maxIf(size, has(conditions, 8)))            AS shares
    FROM global_markets.stocks_trades
    WHERE ticker = 'QQQ'
      AND sip_timestamp >= '2025-01-01 05:00:00'
      AND sip_timestamp <  '2026-01-01 05:00:00'
      AND toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 16
      AND toMinute(toTimeZone(sip_timestamp, 'America/New_York')) < 10
    GROUP BY d
    HAVING countIf(has(conditions, 8)) > 0
)
GROUP BY et_time
ORDER BY et_time
Run am yourself

The closing cross, the chart final bar at 4:00 p.m., carry 3.33 million shares that afternoon in one print, compared with 0.69 million for the cross on an average 2025 session. The 3:30 p.m. bar wey open the window carry 0.39 million. Every leveraged fund wey track this index point the same way into that print, toward the direction wey the index don already travel during the day.

The imbalance feed na separate record. From 3:50 p.m. ET, each primary exchange publish imbalance stream wey carry paired shares and the remaining imbalance with its side. Dem refresh am every few seconds until the cross. That stream na exchange data product, and e no dey on the consolidated tape wey this post read. So the receipt here na the print size, not the running imbalance wey come before am. NYSE imbalance messages explain how to read that feed as e dey update.

Wetin these panels fit and no fit show

Leveraged fund usually no dey reset by trading its own shares. E adjust index futures and total return swaps with dealer counterparties, and those dealers hedge with the underlying basket. The cash equity closing auction measured above na where large part of that hedge arrive, one step removed from the fund itself.

Volume for fund own ticker at 4:00 p.m. come from investors placing their own market-on-close orders, not from the reset. The panels here measure two separate things: size of the reset requirement implied by the prospectus rule, and size plus timing of closing liquidity. Dem no identify any individual order inside the print, and no public tape fit do that.

Every panel use fixed 2025 date range, so these figures remain the same as new sessions arrive. The closing cross read from the consolidated tape through its closing-print condition code, one trade per fund per session, because the one-minute bars for this tape leave that print out. Regular-session volume na every minute bar from 9:30 through 3:59 p.m., plus the print.

FAQ

Wetin be leveraged ETF rebalancing?

Na the daily trade wey 2x or 3x fund make to return im exposure to the stated multiple of im index for the next session. Gains and losses during the day push the ratio of exposure to net assets away from target, and the fund trade in the same direction as the day’s move to restore am.

Why leveraged ETFs dey trade at the close?

The fund daily result dey measured against the index official closing level, so execution at the closing print keep the gap between promise and delivery small. Closing auction also be the single deepest liquidity event for the session, and that suit order wey get fixed quantity but no price preference.

Inverse ETFs dey rebalance in the same direction as leveraged long ETFs?

Yes. If you run the formula for 3x inverse fund, e give trade in the same direction as the index move, at twice the size of the 3x long fund trade. Both sides of the complex buy after up day and sell after down day.

How large the daily reset trade dey?

For fund with leverage L, e be L times (L minus 1) times the day’s index percentage move, as share of net assets. That na twice the move for 2x fund and six times the move for 3x fund. Across 2025, typical session imply fraction of a percent, while the biggest days imply tens of percent.

You fit see leveraged ETF rebalancing for the tape?

No be directly. The reset execute in futures and swaps, while dealer hedges wey follow blend into the auction alongside index funds and every other participant. Wetin visible na size of the closing print and size of the requirement, measured separately.


Every panel above come with the SQL wey produce am, so you fit open one and check the counting yourself. To run the same reset arithmetic against another index or another year, ask the question in plain English on the Strasmore terminal.

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