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.
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.
| Column | Type | Description |
|---|---|---|
| record_date | date · not null | The 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_date | date | Public-availability date = record_date + 1 business day (DTS is published T+1); materialized by the collector via `calendar::add_business_days`. |
| total_public_debt | double precision | Total 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_public | double precision | Portion 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_holdings | double precision | Portion 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.