Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

What Is the 5s30s Spread? 20 Years of Data

The 5s30s spread is the 30-year Treasury yield minus the 5-year. See 20 years of monthly history, every inversion with dates and depth, and how to read it.

The 5s30s spread is the 30-year Treasury yield minus the 5-year Treasury yield, quoted in basis points. One basis point is one hundredth of a percentage point, so a 5s30s of 50 bps means the 30-year pays half a percentage point more than the 5-year. It is the standard read on the long end of the yield curve, and it is the spread traders usually mean when they say "steepener".

As of 2026-09, the most recent month in the series below, the 5-year averaged 4.75% and the 30-year averaged 5.32%, putting the 5s30s spread at 57 bps.

What is the 5s30s spread?

Both legs come from the Treasury constant maturity series, the set of daily par yields published for a fixed list of standard tenors. Constant maturity means each yield is interpolated to an exact point on the curve, a true 5-year and a true 30-year, rather than read off whichever bond happens to sit nearest that maturity on the day. Subtract one from the other and you have the slope of the curve between those two points. That single number carries most of the vocabulary you will meet in rates commentary.

  • Steepening: the spread widens. The 30-year yield is climbing faster than the 5-year, or falling more slowly.
  • Flattening: the spread narrows. The gap between the two legs is closing.
  • Bull or bear: which way yields travelled while the slope changed. A bull steepener widens the gap with yields falling. A bear steepener widens it with yields rising.
  • Inversion: the spread goes below zero. The 30-year bond yields less than the 5-year note.

5s30s vs 2s10s: what each spread answers

The 2s10s spread and the 5s30s spread both describe curve slope, and they answer different questions. A 2-year note matures inside the horizon of any live Fed cycle, so its yield sits close to an average of where the market expects the policy rate to be over the next two years. That makes 2s10s largely a statement about the path of short rates. The same logic runs through the 3m10y spread, which anchors its front leg on a 3-month bill.

The 30-year sits far beyond any forecastable policy cycle. What separates it from the 5-year is mostly term premium, the extra yield investors ask for committing money to a very long instrument, together with the plain supply of and demand for long bonds: auction sizes, Treasury buyback operations, and the appetite of pension funds and insurers for long duration assets. The two spreads can sit apart for a long time. 5s30s can widen across a stretch in which 2s10s stays flat or negative.

Query5s30s and 2s10s, monthly averages over 20 years
241 rows (showing 20)
monthspread_5s30s_bpsspread_2s10s_bps
2006-0918-5
2006-1017-7
2006-1110-15
2006-1215-11
2007-0110-12
2007-0211-13
2007-0324-1
2007-04273
2007-0523-2
2007-061812
2007-072219
2007-085036
2007-095951
2007-105856
2007-118581
2007-1210498
2008-01135127
2008-02174176
2008-03191189
2008-04160163
The exact SQL behind every number
SELECT
    formatDateTime(toStartOfMonth(date), '%Y-%m')                           AS month,
    round(avg(toFloat64(yield_30_year) - toFloat64(yield_5_year)) * 100, 0) AS spread_5s30s_bps,
    round(avg(toFloat64(yield_10_year) - toFloat64(yield_2_year)) * 100, 0) AS spread_2s10s_bps
FROM global_markets.treasury_yields
WHERE date >= toStartOfMonth(subtractYears(today(), 20))
  AND yield_2_year  > 0
  AND yield_5_year  > 0
  AND yield_10_year > 0
  AND yield_30_year > 0
GROUP BY month
ORDER BY month
Run this yourself

Over the 241 months plotted, the two lines spend long stretches at levels with little to say about each other. In 2026-09, the latest month in the series, 5s30s averaged 57 bps against 33 bps for 2s10s.

How often has each spread been inverted?

The cleanest way to see the divergence is to count sessions. The panel below takes the last thirty years of daily observations and counts, for each calendar year, the sessions on which 2s10s was negative, the sessions on which 5s30s was negative, and the sessions where the front of the curve was inverted while the long end was still upward sloping.

QueryInverted sessions per year: 2s10s, 5s30s, and the split state
yearinverted_2s10s_session_countinverted_5s30s_session_countsplit_session_count
199827027
200022717953
2005303
200616322145
200772072
2019303
20221258152
202325096150
20241660166
The exact SQL behind every number
SELECT
    toString(toYear(date))                         AS year,
    countIf(spread_2s10s < 0)                      AS inverted_2s10s_session_count,
    countIf(spread_5s30s < 0)                      AS inverted_5s30s_session_count,
    countIf(spread_2s10s < 0 AND spread_5s30s > 0) AS split_session_count
FROM
(
    SELECT
        date,
        toFloat64(yield_30_year) - toFloat64(yield_5_year) AS spread_5s30s,
        toFloat64(yield_10_year) - toFloat64(yield_2_year) AS spread_2s10s
    FROM global_markets.treasury_yields
    WHERE date >= toStartOfYear(subtractYears(today(), 30))
      AND yield_2_year  > 0
      AND yield_5_year  > 0
      AND yield_10_year > 0
      AND yield_30_year > 0
)
GROUP BY year
HAVING inverted_2s10s_session_count > 0 OR inverted_5s30s_session_count > 0
ORDER BY year
Run this yourself

The scan returns 9 calendar years carrying at least one inverted session on either measure. Read the first two columns side by side and the asymmetry is the point: a year can post a large count of negative 2s10s sessions next to a small or empty 5s30s count. In 2024, the most recent year in the panel, 2s10s was negative on 166 sessions and 5s30s on 0, with 166 sessions in the split state. The exit from that configuration is its own event, covered in what happens when the yield curve un-inverts.

Twenty years of the 5s30s spread, month by month

Monthly averages of the daily series give the long view without the day to day chatter. The chart puts both legs on the percent axis and the spread in basis points, so the level and the gap are visible together.

QueryThe 5s30s spread month by month, with both legs
241 rows (showing 20)
monthfive_year_pctthirty_year_pctspread_bps
2006-094.674.8518
2006-104.694.8517
2006-114.584.6910
2006-124.534.6815
2007-014.754.8510
2007-024.714.8211
2007-034.484.7224
2007-044.594.8727
2007-054.674.923
2007-065.035.218
2007-074.885.1122
2007-084.434.9350
2007-094.24.7959
2007-104.24.7758
2007-113.674.5285
2007-123.494.53104
2008-012.984.33135
2008-022.784.52174
2008-032.484.39191
2008-042.844.44160
The exact SQL behind every number
SELECT
    formatDateTime(toStartOfMonth(date), '%Y-%m')                           AS month,
    round(avg(toFloat64(yield_5_year)), 2)                                  AS five_year_pct,
    round(avg(toFloat64(yield_30_year)), 2)                                 AS thirty_year_pct,
    round(avg(toFloat64(yield_30_year) - toFloat64(yield_5_year)) * 100, 0) AS spread_bps
FROM global_markets.treasury_yields
WHERE date >= toStartOfMonth(subtractYears(today(), 20))
  AND yield_5_year  > 0
  AND yield_30_year > 0
GROUP BY month
ORDER BY month
Run this yourself

The series runs 241 months, opening in 2006-09 at 18 bps and ending in 2026-09 at 57 bps. Two features carry most of the teaching. The spread spends most of those months positive, and its travel across two decades is much wider than the travel of either yield on its own. That is what makes the slope worth watching in its own right rather than as a by-product of the level. For a close reading of one recent stretch, see the Treasury curve in the first half of 2026.

Has the 5s30s spread ever inverted?

Yes, and the episodes are short. The panel below walks the last thirty years of daily observations, groups consecutive sessions with a negative 5s30s into a single stretch, and keeps every stretch that lasted at least five sessions, one full trading week.

QueryEvery 5s30s inversion of at least five sessions, last 30 years
startedendedsession_countdeepest_spread_bpsaverage_spread_bps
Jan 26, 2000Sep 15, 2000163-61-40
Sep 19, 2000Sep 26, 20006-4-2
Oct 26, 2000Nov 1, 20005-7-4
Feb 9, 2006Mar 13, 200622-12-5
Apr 1, 2022Apr 7, 20225-12-8
Sep 13, 2022Oct 21, 202228-43-21
Oct 28, 2022Nov 8, 20228-18-9
Nov 17, 2022Dec 27, 202227-27-11
Dec 29, 2022Jan 6, 20236-12-5
Feb 3, 2023Mar 10, 202325-46-22
Jun 9, 2023Aug 2, 202337-36-16
Aug 11, 2023Aug 17, 20235-7-4
Aug 21, 2023Aug 31, 20239-14-7
Sep 6, 2023Sep 22, 202313-12-5
The exact SQL behind every number
WITH daily AS
(
    SELECT
        date,
        toFloat64(yield_30_year) - toFloat64(yield_5_year) AS spread
    FROM global_markets.treasury_yields
    WHERE date >= subtractYears(today(), 30)
      AND yield_5_year  > 0
      AND yield_30_year > 0
),
islands AS
(
    SELECT
        date,
        spread,
        row_number() OVER (ORDER BY date)
            - row_number() OVER (PARTITION BY spread < 0 ORDER BY date) AS island
    FROM daily
)
SELECT
    formatDateTime(min(date), '%b %e, %Y') AS started,
    formatDateTime(max(date), '%b %e, %Y') AS ended,
    count()                                AS session_count,
    round(min(spread) * 100, 0)            AS deepest_spread_bps,
    round(avg(spread) * 100, 0)            AS average_spread_bps
FROM islands
WHERE spread < 0
GROUP BY island
HAVING session_count >= 5
ORDER BY min(date)
Run this yourself

The scan returns 14 stretches. The earliest still inside the window began Jan 26, 2000, ran 163 sessions, and reached -61 bps at its trough. The most recent began Sep 6, 2023 and finished Sep 22, 2023 after 13 sessions, with a low of -12 bps. Set those durations next to the yearly counts in the panel above and the character of the two spreads separates cleanly. A negative 5s30s tends to be an episode. A negative 2s10s has been a state that persists across whole calendar years.

What was the long end doing in each inversion?

Knowing the spread went negative is half the picture. The other half is which leg moved. The panel below takes the same stretches and measures each leg from the first session of the stretch to the last.

QueryWhich leg moved: 5-year and 30-year travel inside each inversion
episodefive_year_delta_bpsthirty_year_delta_bpsspread_delta_bps
Jan 26, 2000 to Sep 15, 2000-69-70-1
Sep 19, 2000 to Sep 26, 2000-3-6-3
Oct 26, 2000 to Nov 1, 2000440
Feb 9, 2006 to Mar 13, 200623263
Apr 1, 2022 to Apr 7, 2022152510
Sep 13, 2022 to Oct 21, 202276826
Oct 28, 2022 to Nov 8, 202212131
Nov 17, 2022 to Dec 27, 2022143
Dec 29, 2022 to Jan 6, 2023-25-250
Feb 3, 2023 to Mar 10, 2023297-22
Jun 9, 2023 to Aug 2, 20233228-4
Aug 11, 2023 to Aug 17, 202311143
Aug 21, 2023 to Aug 31, 2023-23-25-2
Sep 6, 2023 to Sep 22, 202313163
The exact SQL behind every number
WITH daily AS
(
    SELECT
        date,
        toFloat64(yield_5_year)                            AS five_year,
        toFloat64(yield_30_year)                           AS thirty_year,
        toFloat64(yield_30_year) - toFloat64(yield_5_year) AS spread
    FROM global_markets.treasury_yields
    WHERE date >= subtractYears(today(), 30)
      AND yield_5_year  > 0
      AND yield_30_year > 0
),
islands AS
(
    SELECT
        date,
        five_year,
        thirty_year,
        spread,
        row_number() OVER (ORDER BY date)
            - row_number() OVER (PARTITION BY spread < 0 ORDER BY date) AS island
    FROM daily
)
SELECT
    concat(formatDateTime(min(date), '%b %e, %Y'), ' to ', formatDateTime(max(date), '%b %e, %Y')) AS episode,
    round((argMax(five_year, date)   - argMin(five_year, date))   * 100, 0) AS five_year_delta_bps,
    round((argMax(thirty_year, date) - argMin(thirty_year, date)) * 100, 0) AS thirty_year_delta_bps,
    round((argMax(spread, date)      - argMin(spread, date))      * 100, 0) AS spread_delta_bps
FROM islands
WHERE spread < 0
GROUP BY island
HAVING count() >= 5
ORDER BY min(date)
Run this yourself

The third column is the second minus the first, to the nearest basis point, which is all a spread change ever is. When both deltas share a sign, yields travelled the same way across the long end over the stretch, and the slope moved with whichever leg travelled further. In the stretch running Sep 6, 2023 to Sep 22, 2023, the 5-year moved 13 bps and the 30-year moved 16 bps, a net change of 3 bps in the spread. Across all 14 stretches, the thing to look for is whether the 30-year leg is doing the work or simply sitting still while the 5-year travels around it.

What traders mean by a 5s30s steepener

A steepener is a position built to gain when the spread widens. A flattener is its mirror image. The two legs are normally duration weighted, meaning each side is sized to make a parallel move in all yields net out to close to nothing, leaving only the change in slope. 5s30s is the popular expression of that trade for a structural reason: the 5-year sits near the part of the curve most sensitive to the medium-term policy path, and the 30-year is where term premium and long-bond supply show up. The panels above measure what the curve has done, not what it will do. Where cash sits while any view plays out is a separate question, covered in where to park idle cash.

Data notes and method

Yields are Treasury constant maturity par yields, one observation per business day. Monthly figures are simple averages of the daily observations inside the month, and the newest month is partial until it closes.

Basis points are the difference in percentage points times 100, rounded to the nearest whole basis point. Rounding can leave a one basis point gap between a spread column and the two legs printed beside it.

Inversion stretches are runs of consecutive published observations with a negative spread, so a weekend or a holiday does not break a run. Runs shorter than five sessions are left out to keep the table readable. The 30-year series has a publication gap in the early 2000s, a stretch when that maturity was not being issued. Sessions with no published 30-year yield are dropped from every panel here, and the year-by-year counts skip those years entirely.

FAQ

What does the 5s30s spread measure?

It measures the slope of the long end of the Treasury curve: the 30-year yield minus the 5-year yield, in basis points. A positive number means the 30-year pays more than the 5-year. A negative number means the long bond pays less.

Is a negative 5s30s spread the same as an inverted yield curve?

No. "Inverted yield curve" in the headlines almost always refers to 2s10s or 3m10y, the front and belly of the curve. The 5s30s spread can stay positive through an entire 2s10s inversion, and the panel above counts sessions of each kind side by side.

How is the 5s30s spread different from 2s10s?

2s10s is mostly a statement about the expected path of the policy rate over the next couple of years. 5s30s is mostly a statement about term premium and the supply of long bonds. The two can sit at very different levels for months at a time.

Has the 5s30s spread ever gone negative?

Yes. Over the trailing thirty years of daily data, the scan on this page finds 14 separate stretches of at least five consecutive sessions with a negative 5s30s, the most recent of them ending Sep 22, 2023.

What is a 5s30s steepener?

A position sized to gain when the 30-year yield rises relative to the 5-year. The two legs are usually duration weighted, so the level of rates matters little and only the slope registers.


Every panel on this page carries the SQL that produced it, one expander under each table. To rebuild the same slope history for any other pair of maturities, ask for it in plain English on the Strasmore terminal.