Obscura

Treasury Debt

Total U.S. public debt outstanding, updated daily ('debt to the penny').

treasury_debt — the dataset name to pass to the Obscura API.

Category Macro Columns 5 Refresh Weekly Point-in-time available_date

What one row means

One row per US business day: the US Treasury's "Debt to the Penny" figure — total public debt outstanding as of the close of that accounting day — split into debt held by the public and intragovernmental holdings, sourced from the FiscalData `debt_to_penny` API (keyless, paged `record_date:gte:` filter).

One row per One row per accounting day, keyed on record_date..

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For treasury_debt: published: available_date = record_date + 1 US business day (Treasury's DTS T+1 publication cadence).

Refresh cadence

Obscura refreshes treasury_debt weekly — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema — 5 columns

The full public column list for treasury_debt, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/treasury_debt.

ColumnTypeDescription
record_datedate · not nullThe accounting date for which Treasury reports total public debt outstanding — the FiscalData `record_date` field. This is the true event/period date and the table's primary key.
available_datedatePublic-availability date = record_date + 1 business day (DTS is published T+1); materialized by the collector via `calendar::add_business_days`.
total_public_debtdouble precisionTotal public debt outstanding in USD as of the close of record_date — the sum of debt_held_public and intragov_holdings. Source field `tot_pub_debt_out_amt`, a quoted string parsed to f64; NULL if the source field is missing or unparseable for that day.
debt_held_publicdouble precisionPortion of total_public_debt held outside the federal government — by individuals, corporations, state/local governments, foreign holders, and the Federal Reserve — in USD as of record_date. Source field `debt_held_public_amt`; NULL if unparseable.
intragov_holdingsdouble precisionPortion of total_public_debt held in intragovernmental accounts (e.g. Social Security and other federal trust/special funds), in USD as of record_date. Source field `intragov_hold_amt`; together with debt_held_public this composes total_public_debt (subject to source rounding). NULL if unparseable.

Access treasury_debt

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="treasury_debt",
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the treasury_debt dataset?

Total U.S. public debt outstanding, updated daily ('debt to the penny'). One row per US business day: the US Treasury's "Debt to the Penny" figure — total public debt outstanding as of the close of that accounting day — split into debt held by the public and intragovernmental holdings, sourced from the FiscalData `debt_to_penny` API (keyless, paged `record_date:gte:` filter).

How do I avoid look-ahead bias with treasury_debt?

Filter on treasury_debt.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = record_date + 1 US business day (Treasury's DTS T+1 publication cadence). A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get treasury_debt?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="treasury_debt". The column schema is public at https://api.obscura.trade/v1/catalog/treasury_debt.

How often is treasury_debt updated?

Obscura refreshes treasury_debt on a weekly schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

BLS SeriesEconomic series from the U.S. Bureau of Labor Statistics, fetched by series ID: employment, unemployment, CPI, PPI, wage… Comtrade FlowsAnnual bilateral goods-trade totals between countries, from UN Comtrade. ECB SeriesEuropean Central Bank Data Portal series, retrieved by series key. FRED SeriesSeries from the Federal Reserve's FRED database by series ID — rates, prices, output, employment and more — as a point-i… IMF IndicatorsCountry-level macro indicators from the IMF's DataMapper. ONS SeriesUK macroeconomic series from the Office for National Statistics. Policy RatesThe policy interest rate set by each currency's monetary authority, on every calendar day back to 1946 — twenty currenci… Treasury Average RatesAverage interest rates the U.S. Treasury pays on its outstanding debt, by security type.