FinObservatory

Treasury rates / Methodology

How the rates layer is built

Two primary sources, both US government works and commercial-safe: the daily Treasury par yield curve rates published at home.treasury.gov, and the Treasury Securities Auctions Data from the FiscalData API. Every number on /rates and /rates/auctions is queried from these two datasets at render time; nothing is typed in by hand.

What the par yield curve is, in Treasury’s own words

Treasury describes its official curve in the Treasury Yield Curve Methodology note (description revised February 18, 2025; retrieved July 11, 2026):

“The Treasury’s official yield curve is a par yield curve derived using a monotone convex method. Our inputs are indicative, bid-side market price quotations (not actual transactions) for the most recently auctioned securities obtained by the Federal Reserve Bank of New York at or near 3:30 PM each trading day.”
“The current inputs are indicative bid-side market price quotations for the most recently auctioned 4-, 6-, 8-, 13-, 17-, 26-, and 52-week bills; the most recently auctioned 2-, 3-, 5-, 7-, and 10-year notes; and the most recently auctioned 20- and 30-year bonds.”
“The monotone convex method for deriving the official Treasury yield curve replaced the previous quasi-cubic hermite spline method as of December 6, 2021.”

A par yield is the coupon rate at which a security of that maturity would price at par (100) on the fitted curve. It is not a zero-coupon rate, a forward rate, or a traded yield of any single security. The published tenors are read directly off that fitted curve. Historical values are as originally published: figures before December 6, 2021 come from the earlier quasi-cubic hermite spline method, and Treasury has not restated them.

The curve dataset carried here

98,872 rows in long format (date, tenor, yield in percent): 9,136 trading days from Jan 2, 1990 to Jul 10, 2026, parsed from Treasury’s per-year CSV files (19902026, the final year partial through the pull date). Per-file row-by-tenor counts, net of empty cells, reconcile exactly to the row total, and two anchors were verified against FRED’s DGS10 at build time (see docs/data_provenance.md).

The tenor set grows over eras: locate by name, never by position

Treasury adds tenors as it adds securities, so the CSV column set widens over time: in 1990 the files carry 9 tenors, in 2008 11, and in 2026 14 (each plus the date column, so 12 columns in a 2008 file against 15 today). Any position-based parse would silently shift eras against each other; every query in this module therefore addresses tenors by their header name, normalized to the canonical labels below.

TenorFirst in dataLast in dataTrading days
1MJul 31, 2001Jul 10, 20266,237
1.5MFeb 18, 2025Jul 10, 2026349
2MOct 16, 2018Jul 10, 20261,932
3MJan 2, 1990Jul 10, 20269,133
4MOct 19, 2022Jul 10, 2026930
6MJan 2, 1990Jul 10, 20269,136
1YJan 2, 1990Jul 10, 20269,136
2YJan 2, 1990Jul 10, 20269,136
3YJan 2, 1990Jul 10, 20269,136
5YJan 2, 1990Jul 10, 20269,136
7YJan 2, 1990Jul 10, 20269,136
10YJan 2, 1990Jul 10, 20269,136
20YOct 1, 1993Jul 10, 20268,197
30YJan 2, 1990Jul 10, 2026gap Feb 15, 2002 to Feb 9, 20068,142

The one within-history gap is the 30Y, which Treasury stopped publishing when the 30-year bond was discontinued and resumed when it was reintroduced (the dates in the table are computed from the data, not asserted). The 20Y column predates the 2020 reintroduction of the 20-year bond because, as the methodology note explains, Treasury previously derived it from off-the-run composites in that maturity range.

The auction dataset: announcements vs results

11,038 records from the FiscalData auctions query, one per auction of a marketable security, Oct 31, 1979 to Jul 14, 2026. FiscalData publishes a record when an auction is announced and fills in the result fields (high yield or discount rate, bid-to-cover, tendered and accepted amounts, bidder-class allotments) when it closes. The API returns the string “null” for unfilled fields; the build converts those to real nulls. 4 records carry no results and are excluded from every figure on the auctions page:

Auction dateSecurityCUSIPWhy excluded
Sep 11, 20014-Week bill912795GS4no results published at source
Jul 13, 202613-Week bill912797UK1announcement; auction dated after the data pull
Jul 13, 202626-Week bill912797VT1announcement; auction dated after the data pull
Jul 14, 20266-Week bill912797TY3announcement; auction dated after the data pull

Security classes

The source security_type field carries only Bill (8,274), Note (1,957) and Bond (389). TIPS (266, first Jan 29, 1997) are identified by the inflation-indexed flag, and floating-rate notes (152, first Jan 29, 2014) by the floating-rate flag; both are split out as their own classes everywhere in this module, so “Notes” and “Bonds” always mean nominal fixed-coupon securities.

Field coverage caveats

  • Bid-to-cover is effectively complete only from 2000 (7,785 of 7,789 records since; 35 of 3,249 before). Demand charts therefore start at 2000.
  • FRN results carry amounts and bid-to-cover (152 and 152 of 152 records respectively) but no high yield or interest rate: FRN auctions stop at a discount margin over the 13-week bill, a field this pull does not include.
  • Billsstop at a high discount rate rather than a high yield; tables mark it “d”.

Units

  • Par yields, high yields, discount rates and interest rates: percent per annum, as published.
  • Spreads (2Y-10Y): percentage points, computed as the 10Y yield minus the 2Y yield.
  • Auction amounts (offered, tendered, accepted): raw par US dollars, shown as $B/$T. Issuance totals are gross, not net of redemptions, and include the weekly rollover of maturing bills.
  • Bid-to-cover: a pure ratio, total tendered over total accepted.

Licenses: both datasets are US federal government works; the FiscalData dataset page states its data is free to use with commercial use permitted. Full acquisition detail, checksums and verification anchors live in docs/data_provenance.md in the repository.

Back to Treasury rates or auctions.