Check the setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- An internet connection
Announcements and results for marketable U.S. Treasury security auctions for building issuance calendars and fixed-income auction monitors.
From source to product signal
Fiscal Data publishes both announcements and results for marketable Treasury security auctions. Start with a bounded recent date window and identify result records by their populated auction metrics. Announcement records are not completed results, and auction yields or discount rates are not live secondary-market prices.
Install the packages, then run the notebook cell.
python -m pip install pandas requests
from datetime import date, timedelta
import pandas as pd
import requests
cutoff = date.today() - timedelta(days=90)
response = requests.get(
"https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v1/accounting/od/auctions_query",
params={
"fields": "record_date,cusip,security_type,security_term,auction_date,issue_date,high_yield,high_discnt_rate,bid_to_cover_ratio,total_accepted",
"filter": f"auction_date:gte:{cutoff.isoformat()}",
"sort": "-auction_date",
"page[size]": 100,
},
timeout=30,
)
response.raise_for_status()
auctions = pd.DataFrame(response.json()["data"])
for column in ["high_yield", "high_discnt_rate", "bid_to_cover_ratio", "total_accepted"]:
auctions[column] = pd.to_numeric(auctions[column], errors="coerce")
results = auctions[auctions["bid_to_cover_ratio"].notna()].copy()
results["result_rate"] = results["high_yield"].fillna(results["high_discnt_rate"])
results["retrieved_at_utc"] = pd.Timestamp.now(tz="UTC")
print(results[["auction_date", "security_type", "security_term", "result_rate", "bid_to_cover_ratio"]].head(20))Test a useful signal
Compare recent completed auction results by security term and identify which terms had the highest bid-to-cover ratios.
U.S. Department of the Treasury Bureau of the Fiscal Service is a government source. Last verified 2026-08-11. Temporal coverage: 1979-present.