Financial Literature

US Department of the Treasury

US Treasury data — The daily par yield curve as a CSV, and the debt, interest and auction tables behind it

When you need every maturity of the Treasury curve on one date (the daily CSV has 1-month to 30-year), or the fiscal side — debt outstanding, average interest rates, auction results — which FRED carries only partly.

ratesmacroUnited States
Asset classesrates · macro
Frequencydaily → monthly
History1990 → today
Limit · costNo key · no published limit; FiscalData paginates at 10,000 rows
KeyNo key
Formats · pull withcsv · json · xml — python, excel, sheets
LicenceUS government work, public domain.
RedistributeYes, with attribution
Best for“The whole yield curve today, every maturity” · “How much interest does the US pay on its debt?”
When to use it

Reach for it when…

When you need every maturity of the Treasury curve on one date (the daily CSV has 1-month to 30-year), or the fiscal side — debt outstanding, average interest rates, auction results — which FRED carries only partly.

Not for: Corporate or foreign yields (FRED, ECB), intraday bond prices, anything before 1990 (FRED's DGS series go back to 1962).

How to read it

Units, revisions, traps

Units. Par yields in percent, semi-annual compounding, on US business days. FiscalData rates are percent; debt is in dollars.

Revisions. Yields are not revised. FiscalData tables are updated on their own schedules (daily to monthly), stated per table.

  • The 1½-month and 4-month columns were added later and are blank before their start dates.
  • The CSV URL takes one year at a time — loop years for history.
  • Par yields are not zero-coupon yields; do not use them as discount factors without bootstrapping.

Classic mistake: Averaging the 2-year and 10-year to get a '5-year' — the curve is not linear.

How to use it in your own work

Three recipes

Each recipe: Python · Excel · Sheets, with how to read the result. Python recipes run under pandas; recipe 1 is re-run by the weekly check where the source allows it.

How to use it in your own work

Copy the snippet, change the series id, read the result the way the footer says. Replace YOUR_…_KEY with your own key where one is needed.

Recipe 1Today's whole yield curve

# every maturity, every business day this year
import pandas as pd
u = ("https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv/2026/all"
     "?type=daily_treasury_yield_curve&field_tdr_date_value=2026&page&_format=csv")
df = pd.read_csv(u, index_col="Date", parse_dates=True).sort_index()
print(df.iloc[-1].dropna())      # the latest curve, 1 Mo → 30 Yr
How to read the resultRead the shape, not one point: a 3-month yield above the 10-year is the inversion the recession models use; the 2s10s is the one the news quotes.

Recipe 2Average interest rate on the debt (FiscalData)

# what the Treasury pays, by security type, monthly
import requests, pandas as pd
u = ("https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v2/accounting/od/avg_interest_rates"
     "?filter=security_desc:eq:Total%20Marketable&sort=-record_date&page[size]=24")
df = pd.DataFrame(requests.get(u, timeout=60).json()["data"])
print(df[["record_date", "security_desc", "avg_interest_rate_amt"]].head(12))
How to read the resultThe average rate moves slowly because old debt rolls off gradually; the gap between it and today's 10-year yield is the refinancing pressure still to come.

Recipe 3Debt to the penny

# total public debt outstanding, daily
import requests, pandas as pd
u = ("https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v2/accounting/od/debt_to_penny"
     "?sort=-record_date&page[size]=10")
df = pd.DataFrame(requests.get(u, timeout=60).json()["data"])
print(df[["record_date", "tot_pub_debt_out_amt"]])
How to read the resultDollars, not billions — divide by 1e12 for trillions. The series jumps on settlement days; use month-ends for a clean chart.

Series → question map

The ids we use from US Treasury data, each with the question it answers. The catalog's compare view reads the concept tags behind these rows.

SeriesAnswersRegionConcept
daily_treasury_yield_curve · 10 YrWhere is the 10-year yield today?United Statesyield_10y
daily_treasury_yield_curve · 2 YrWhere is the 2-year yield today?United Statesyield_2y
daily_treasury_yield_curve · 3 MoWhat is the bill rate?United Statestbill
avg_interest_ratesWhat does the government pay on its debt?United Statesdebt_cost
debt_to_pennyHow big is the debt today?United Statesdebt

Compare with

Same question, different source: FRED, NY Fed Markets Data, ECB Data Portal. The compare view lines up coverage, frequency, history and access side by side and lists what the combination makes possible.

Open compare: US Treasury data · FRED · NY Fed Markets Data →

Curated: Recession watch: the curve and the claims.

Questions readers ask

Is the Treasury yield-curve CSV free?

Yes, no key, one year per file. The same numbers reach FRED as DGS1MO…DGS30 the next morning.

What is a par yield?

The coupon a new bond would need to trade at 100 at that maturity. It is what the news quotes; it is not the zero-coupon rate a pricing model wants.

Where are auction results?

FiscalData's 'Treasury Securities Auctions Data' table (auctions_query) has every auction's bid-to-cover and high yield.

From the paper

Educational only — we explain, we never advise · snippet licence: public domain · corrections to [email protected], fixed within a day and logged in the changelog.