Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of September 26, 2026 · refreshed weekly

RSP vs SPY: Equal Weight S&P 500

RSP vs SPY: there is no equal weighted SPY. See how much of cap weighted exposure sits in the top names, and what the quarterly rebalance changes.

RSP vs SPY is a question about two funds that own the same 500 companies in completely different proportions. There is no equal weighted version of SPY: SPY tracks the cap weighted S&P 500, where each company's weight is its share of the group's market value, and the equal weight version of that index is tracked by a separate fund, RSP, which resets all 500 members to the same 0.2% of the portfolio four times a year. Everything below follows from that one construction choice.

Is there an equal weighted SPY?

No, and the naming trips people up. SPY is a unit investment trust that has tracked the cap weighted S&P 500 since 1993, and its sponsor has never issued an equal weighted share class of it. The equal weight exposure lives in a different fund from a different sponsor: RSP, the Invesco S&P 500 Equal Weight ETF, trading since 2003 and tracking the S&P 500 Equal Weight Index.

Same membership list, one difference in the weighting rule. Cap weighting sets each member's weight to its float adjusted market value divided by the market value of all 500 together. Equal weighting sets each weight to 1 divided by 500, which is 0.2%, then lets prices push those weights around until the next reset. The portfolio theory behind flat weighting, and the awkward fact that it is hard to improve on, is laid out in when equal weight beats optimization. This page is about the plumbing.

How lopsided is cap weighting?

Take ten household names from across the index's size range and price them off one daily snapshot. Under cap weighting the largest of them carries the weight of many smaller ones stacked together. Under equal weighting all ten would carry the same slice.

QueryCap weight versus equal weight across a ten name basket
tickermarket_cap_bncap_weight_pct_of_basketequal_weight_pctas_of_date
NVDA5434.823.08102026-09-25
AAPL4977.621.14102026-09-25
GOOGL4206.117.86102026-09-25
MSFT3832.816.28102026-09-25
AMZN269311.44102026-09-25
META1914.98.13102026-09-25
KO377.81.6102026-09-25
MMM87.40.37102026-09-25
HAS12.40.05102026-09-25
MOS7.30.03102026-09-25
The exact SQL behind every number
SELECT
    ticker,
    round(cap / 1e9, 1)                    AS market_cap_bn,
    round(100 * cap / sum(cap) OVER (), 2) AS cap_weight_pct_of_basket,
    round(100.0 / count() OVER (), 2)      AS equal_weight_pct,
    toString(snapshot_date)                AS as_of_date
FROM
(
    SELECT
        ticker,
        toFloat64(argMax(market_cap, date)) AS cap,
        max(date)                           AS snapshot_date
    FROM global_markets.stocks_ratios
    WHERE ticker IN ('NVDA', 'MSFT', 'AAPL', 'AMZN', 'GOOGL', 'META', 'KO', 'MMM', 'MOS', 'HAS')
      AND date >= today() - 45
      AND market_cap > 0
    GROUP BY ticker
)
ORDER BY cap DESC
Run this yourself

As of 2026-09-25, NVDA carried a market value of roughly $5434.8 billion, which works out to 23.08% of this basket under cap weighting against the 10% a flat split hands every name. At the other end, MOS came to $7.3 billion, or 0.03% of the basket. Equal weighting gives those two positions an identical slice.

Now scale that arithmetic to 500 names. The ten largest members of the cap weighted index hold whatever their market values say they hold, a share both fund sponsors publish on a dated daily holdings page. Under equal weighting the top ten hold 2.0% between them, ten slices of 0.2%, and that figure cannot drift far for more than a quarter at a time. The distance between those two numbers is what people mean by index concentration, which concentration risk takes apart in more detail.

The equal weight S&P 500 quarterly rebalance

The S&P 500 Equal Weight Index resets after the close on the third Friday of March, June, September and December. Every member goes back to 0.2% on that date, and a tracking fund has to trade to follow it: trim whatever grew past its slice, top up whatever fell below it. A cap weighted tracker needs none of that. Market value weights maintain themselves as prices move, and the fund trades mainly on membership changes, share count updates, corporate actions and investor flows. That is the source of the turnover difference between the two.

The reset is visible on the tape.

QueryRSP share volume: each quarter's heaviest session against its median
quarterpeak_sessionpeak_weekdaypeak_volume_mmedian_volume_mpeak_vs_median
2024 Q1Feb 14, 2024Wed11.296.061.9
2024 Q2Apr 8, 2024Mon22.55.344.2
2024 Q3Aug 5, 2024Mon13.755.82.4
2024 Q4Nov 6, 2024Wed12.975.382.4
2025 Q1Feb 3, 2025Mon23.427.73
2025 Q2Apr 9, 2025Wed37.779.14.2
2025 Q3Jul 31, 2025Thu21.5311.831.8
2025 Q4Nov 21, 2025Fri57.4714.813.9
2026 Q1Feb 12, 2026Thu38.6418.12.1
2026 Q2May 20, 2026Wed18.999.672
2026 Q3Jul 8, 2026Wed13.656.442.1
The exact SQL behind every number
SELECT
    concat(toString(toYear(date)), ' Q', toString(toQuarter(date)))  AS quarter,
    formatDateTime(argMax(date, volume), '%b %e, %Y')                AS peak_session,
    formatDateTime(argMax(date, volume), '%a')                       AS peak_weekday,
    round(toFloat64(max(volume)) / 1e6, 2)                           AS peak_volume_m,
    round(quantileDeterministic(0.5)(toFloat64(volume), toUInt64(toYYYYMMDD(date))) / 1e6, 2) AS median_volume_m,
    round(toFloat64(max(volume)) / quantileDeterministic(0.5)(toFloat64(volume), toUInt64(toYYYYMMDD(date))), 1) AS peak_vs_median
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'RSP'
  AND date >= toDate('2024-01-01')
  AND date < today()
GROUP BY quarter
ORDER BY min(date)
Run this yourself

In 2026 Q3, the heaviest RSP session was Jul 8, 2026, at 13.65 million shares against a quarterly median of 6.44 million. That is 2.1 times a typical day. Read the peak_weekday column down the table: in most quarters the busiest session is a Friday, the rebalance date. Quarters containing a broad market shock carry their peak somewhere else instead, which is a useful reminder that a volume spike is evidence of trading, not proof of a rebalance.

Equal weighting is also the strictest form of capping in common use. Every position is capped at 0.2%, four times a year, by rule. Cap weighted indexes usually leave their biggest members uncapped and only intervene when a diversification requirement forces a special rebalance, which is the mechanism behind the reweightings in the Nasdaq 100 that how QQQ holdings are weighted walks through.

The size tilt and sector tilt that come with it

Equal weighting does not turn RSP into a small cap fund. Every holding is an S&P 500 member, so every holding is a large company by any ordinary standard. What changes is the average. The 400th largest member gets the same 0.2% as the largest one, so the portfolio's average company is far smaller than the cap weighted version's, and the fund behaves with a mid cap accent inside a large cap universe.

Sector weights follow headcount rather than market value. A sector with many medium sized members carries more weight under equal weighting than under cap weighting, and a sector built around a handful of giants carries less. Those splits move at each reset, and the sponsor's factsheet dates them.

Two practical knock-ons. The smaller half of the membership trades with wider spreads and thinner books, so the equal weight fund does more of its trading in the less liquid part of the list. Its distribution profile differs too, since dividend payers low in the cap ranking get the same 0.2% as the giants. Our S&P 500 dividend yield page shows how an index level yield is measured before you compare one fund's payout with another's.

When does equal weight beat cap weight?

Index both price paths to 100 at the start of a long window and the answer stops being theoretical.

QueryRSP and SPY price paths, both indexed to 100 in January 2019
92 rows (showing 20)
monthrsp_indexspy_indexrsp_per_spymonth_label
2019-011001001Jan 2019
2019-02103.7103.21.004Feb 2019
2019-03104.1104.60.994Mar 2019
2019-04107.8108.90.99Apr 2019
2019-05100.31020.984May 2019
2019-06107.4108.50.989Jun 2019
2019-07108.3110.20.983Jul 2019
2019-08104.8108.30.967Aug 2019
2019-09107.7109.90.979Sep 2019
2019-10109112.40.97Oct 2019
2019-11112.7116.40.968Nov 2019
2019-12115.3119.20.967Dec 2019
2020-01113.1119.20.949Jan 2020
2020-02103.1109.80.939Feb 2020
2020-0383.795.50.877Mar 2020
2020-0495.8107.60.89Apr 2020
2020-05100.3112.70.89May 2020
2020-06101.4114.20.887Jun 2020
2020-07106.41210.88Jul 2020
2020-08111129.40.858Aug 2020
The exact SQL behind every number
SELECT
    formatDateTime(m, '%Y-%m')                                                 AS month,
    round(100 * rsp_close / first_value(rsp_close) OVER (ORDER BY m), 1)       AS rsp_index,
    round(100 * spy_close / first_value(spy_close) OVER (ORDER BY m), 1)       AS spy_index,
    round((rsp_close / first_value(rsp_close) OVER (ORDER BY m))
        / (spy_close / first_value(spy_close) OVER (ORDER BY m)), 3)           AS rsp_per_spy,
    formatDateTime(m, '%b %Y')                                                 AS month_label
FROM
(
    SELECT
        toStartOfMonth(date)                                AS m,
        argMaxIf(toFloat64(close), date, ticker = 'RSP')     AS rsp_close,
        argMaxIf(toFloat64(close), date, ticker = 'SPY')     AS spy_close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('RSP', 'SPY')
      AND date >= toDate('2019-01-01')
      AND date <  toStartOfMonth(today())
    GROUP BY m
)
ORDER BY m
Run this yourself

From a January 2019 base of 100, the price only path for RSP reached 218.6 by Aug 2026, against 284.2 for SPY. The rsp_per_spy column carries the ratio of the two paths and ends the window at 0.769. A reading under 1.00 marks a stretch where the cap weighted path sat ahead; a reading over 1.00 marks the reverse. These are unadjusted closes with distributions stripped out, so read the shape as construction rather than as total return.

Calendar years show the same thing with the swings intact.

QueryCalendar year price change, RSP against SPY, first close to last close
yearrsp_price_pctspy_price_pctrsp_minus_spy_pp
201213.511.71.8
201330.426.44
201413.412.41
2015-4.2-0.8-3.5
201614.311.23.1
201715.718.5-2.8
2018-10.2-7-3.2
201926.528.7-2.1
20209.915.1-5.2
202129.528.80.7
2022-13.3-19.96.7
202311.824.8-13
20241124-13
20259.616.6-7
20269.512.9-3.4
The exact SQL behind every number
SELECT
    toString(toYear(date)) AS year,
    round(100 * (argMaxIf(toFloat64(close), date, ticker = 'RSP')
               / argMinIf(toFloat64(close), date, ticker = 'RSP') - 1), 1) AS rsp_price_pct,
    round(100 * (argMaxIf(toFloat64(close), date, ticker = 'SPY')
               / argMinIf(toFloat64(close), date, ticker = 'SPY') - 1), 1) AS spy_price_pct,
    round(100 * (argMaxIf(toFloat64(close), date, ticker = 'RSP')
               / argMinIf(toFloat64(close), date, ticker = 'RSP')
               - argMaxIf(toFloat64(close), date, ticker = 'SPY')
               / argMinIf(toFloat64(close), date, ticker = 'SPY')), 1)     AS rsp_minus_spy_pp
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('RSP', 'SPY')
  AND date >= toDate('2012-01-01')
  AND date <  today()
GROUP BY year
ORDER BY year
Run this yourself

The final row, 2026, reads 9.5% for RSP and 12.9% for SPY, a spread of -3.4 percentage points, and it covers the year to date rather than a full year. Positive readings in rsp_minus_spy_pp mark calendar years the flat weighted path ran ahead. Those years coincide with gains spreading across the membership. Negative readings coincide with a small group of the largest members setting the pace. Neither pattern predicts the next one.

Costs belong in the same column of the ledger. The equal weight fund's expense ratio has run above the cheapest cap weighted S&P 500 trackers, and its quarterly trades carry costs the cap weighted fund largely avoids. Both sponsors publish current fee figures on their fund pages, and fee drag compounds the same quiet way that the cash handling described in SPY dividend yield and UIT cash drag does.

Data notes and caveats
  • The ten name basket is an illustration of the weighting arithmetic, not a top ten holdings list. Market values come from the latest daily snapshot in a 45 day window, one row per ticker.
  • Both price series are unadjusted closes, so distributions are excluded from every percentage on this page.
  • Calendar year changes are measured from the first session's close to the last session's close in each year, which makes the current year's row a partial year.
  • The volume panel uses a deterministic median, so a regeneration of this page renders the identical figure.

FAQ

Is there an equal weighted SPY ETF?

No. SPY tracks the cap weighted S&P 500 and has no equal weighted share class. Equal weight exposure to the same 500 companies comes from a separate fund, RSP, run by a different sponsor.

What is the main difference between RSP and SPY?

Weighting, not membership. SPY sizes each holding by its float adjusted market value, so the largest companies dominate. RSP sets every holding back to 0.2% at each quarterly reset, which gives the 500th name the same slice as the first.

How often does the equal weight S&P 500 rebalance?

Four times a year, after the close on the third Friday of March, June, September and December. Weights drift with prices between those dates, so an equal weight fund is exactly equal weighted only on the reset date.

Does equal weighting remove concentration risk?

It removes single name concentration at each reset, since no holding starts a quarter above 0.2%. It leaves broad market risk untouched and adds a tilt toward the index's smaller members, which trade with wider spreads.

Is RSP a mid cap fund?

No. Every holding is an S&P 500 member. Equal weighting raises the share of the portfolio sitting in the index's smaller members, so the fund behaves with a mid cap accent while staying inside a large cap universe.


Every panel above ships with its SQL underneath. To run the same weighting arithmetic on a different basket, or check which Friday a fund's volume actually spiked, ask the question in plain English on the Strasmore terminal.

#rsp#spy#equal weight#index construction#concentration