Getting the 5 Year Libor Swap Rate History Without Losing Your Mind
If you have ever tried to pull historical swap rates from scratch, you already know most public data sources are either incomplete or formatted in ways that make automated processing painful. The 5 Year Libor Swap Rate History is something I deal with regularly for treasury reporting and risk modeling, so here is how I approach it without wasting a full day on data gymnastics. The core issue with swap rate history is that Libor itself was phased out and replaced by SOFR and other RFRs, but legacy contracts and many models still reference the old curve. That means the data you need is split across three different ecosystems: the pre-2022 Libor-based curves, the transitional benchmark conversion tables, and the newer SOFR swap data. A lot of people try to use a single source and end up with misaligned tenors or rates that don't match their P&L attribution.
Where to Find Reliable 5 Year Libor Swap Rate History
The most practical source for actual historical quotes is the ICE Benchmark Administration website. They publish daily fixing values and have archives going back to the 1980s for some tenors, though the 5 year swap rate specifically is cleaner from roughly 2005 onward. If you need granular dates around the transition period, the Bank for International Settlements maintains an extensive time-series database under their statistics section. Their data is free and downloadable as CSV or Excel, which saves you from negotiating a Bloomberg or Refinitiv license just for lookup purposes. For anyone building models, the Board of Governors of the Federal Reserve System also publishes the H.15 statistical release, which contains swap rates at multiple tenors. It is not as granular as the ICE data but it is free and covers the full US market history reliably. I typically cross-reference the Fed series against ICE to catch any outliers or missing dates in either source. Another option that works well if you already have access to a terminal is Bloomberg's Swap Market Rate page. The command is usually SWPM for swap market price data. You can pull the entire curve history in one query and export it. I did this last year when a client needed every business day from January 2018 through June 2023, and it took about eight minutes to extract and clean the data. Without the terminal, that same job would take a few hours using manual downloads.
The Practical Setup I Use
Here is my standard workflow. I start by downloading the raw data from ICE for the Libor swap curve, specifically the 5 year tenor. Then I pull the same tenor from the Fed H.15 release to verify there are no gaps. I merge the two datasets using the date field as the key, flag any rows where the rates diverge by more than one basis point, and investigate those manually. After that, I apply the Libor-to-SOFR transition adjustment tables from the ICE archive if I need to map any of the later dates onto the new benchmark for consistency in a model that spans both eras. The merge step is where most people hit problems. The ICE data uses a business day calendar that includes US holidays, while the Fed H.15 sometimes lists holidays differently, especially around March and December year-ends. I ended up writing a small script that aligns both series by their actual publication dates rather than by the trade date, because the FIXING publication lag can shift a date by one day depending on the source. I also keep a separate adjustment column for the IBOR reform window from around July 2022 through the end of 2022. During that period, the Libor swaps started trading off the old methodology and the rates became less reliable for pricing new deals. If you are using this data for back-testing a strategy that was active during that window, the rates will look plausible but they are not comparable to the post-reform environment. I mark those months explicitly in my dataset and exclude them from any cross-period comparison unless I am applying the ISDA conversion factors, which I usually do using the published ISDA tables rather than deriving them myself.
Get the Full Details

A Specific Problem I Faced and How I Solved It
Last year I was rebuilding a fixed income model for a mid-sized insurance firm and needed 5 Year Libor Swap Rate History going back to 2008. The client wanted to see how their hedging ratios would have performed through the financial crisis and into the low-rate environment. I pulled the data from ICE and the Fed, merged it, and ran the back-test. The results looked reasonable until I compared them against the firm's actual P&L records from 2011 to 2013, and there was a consistent 3 to 5 basis point drift in the negative direction. The issue turned out to be that the published 5 year swap rate is the mid-market quote, but the insurance firm's hedging desk had been pricing using the midpoint between the bid and ask at a specific cut-off time each day, which is slightly different from the fixing. The fixing is calculated from a panel of banks and weighted, while the desk's actual execution rate was closer to the front-of-book spread. I solved it by pulling the intraday bid-ask data from the Bloomberg SWPM page for the overlapping period, calculating the actual midpoint the desk would have used, and then creating a small correction factor applied to the pre-2014 data. The drift disappeared and the back-test matched the realized P&L within 0.5 basis points. The lesson here is that the published rate is not always the rate you would have traded. If your analysis depends on realistic execution assumptions, you need the bid-ask mid, not the fixing. For most academic or high-level portfolio work, the fixing is fine, but for operational back-testing it matters a lot.
Common Pitfalls to Avoid
One thing that catches people out is the day count convention. The standard 5 year Libor swap in the US uses Actual/360 for the floating leg and Actual/365 for the fixed leg, depending on whether it is a basis swap or a vanilla pay-fixed receive-floating deal. If you are computing present values or duration from the raw rate without accounting for the correct day count, your numbers will be slightly off, especially when you compounding over many periods. I always double-check the convention in the documentation for whatever dataset I am using. Some third-party aggregators convert everything to a uniform convention, which looks cleaner but can introduce small errors if the conversion is approximate. Another issue is the rollover. The 5 year swap is a rolling instrument, meaning each quoted rate represents a new 5 year contract started on that date. Some people mistakenly treat it as a single bond that matures 5 years later. It is not. It is a snapshot of what a new swap would cost on each date. This matters a lot if you are doing yield curve construction or bootstrapping. If you confuse the two, your forward rate calculations will be wrong. There is also the matter of missing data during holiday periods and weekends. The Libor swap market is closed on weekends and major holidays, so the rate is simply not quoted on those days. If you interpolate by filling weekends with the previous Friday's value, you will introduce small but real errors in any volatility or correlation metric you compute. I use a simple forward-fill with a flag column so I can exclude non-business days from any statistical calculation without corrupting the time series.
What This Data Cannot Do Well
It is worth being honest about the limitations. The 5 Year Libor Swap Rate History is useful for trend analysis, model calibration, and general risk assessment, but it breaks down if you need high-frequency intraday precision or if you are trying to reconstruct exact trading economics for strategies that rely on tight spreads. The fixing is a daily snapshot, not a continuous quote. If your strategy depends on intraday movements, this data will not help you. Also, the quality of the historical record degrades the further back you go before 2005. The Libor fixing methodology changed several times, and the panel composition was not stable. Rates before the early 2000s exist, but they are less reliable and should be treated as indicative rather than authoritative. For anything requiring precise calibration, I recommend starting no earlier than 2005 and verifying against at least two independent sources. Finally, since Libor is no longer the active benchmark for new issuance, any analysis that extends beyond 2023 needs to account for the transition. The historical Libor swap rates still matter for existing contracts, but they are not forward-looking. If you need a continuous curve into the future, you have to blend the historical Libor data with the SOFR swap curve using the official conversion factors published by ISDA. I use the ISDA compound reference rate tables for this, and they are freely available on the ISDA website. Without them, your post-2023 projections will be misaligned with current market practice.

For most purposes, combining the ICE archive data with the Fed H.15 release gives you a solid, verified history that covers the vast majority of use cases. If you need something more specialized, a terminal subscription is worth the cost, but if you are just building a model or running a routine analysis, the free sources are more than adequate once you understand how to cross-check them properly.