CFTC Weekly Swaps Report
CFTC Weekly Swaps Report
CFTC weekly aggregate swap-market tables covering gross notional outstanding, transaction dollar volume and ticket volume by asset class, product, cleared status, participant type, currency, tenor or grade. Current HTML and archived Excel files expose dates and values in millions of U.S. dollars without an account or key.
Required Attribution:
CFTC requests appropriate acknowledgement in subsequent use of its public-domain information.
Coverage
The report covers market-facing swaps reported to registered swap data repositories, currently across interest-rate, credit and FX asset classes; the archive includes editions back to November 2012 and regulated reporting began in January 2013. It is normally published Monday at 3:30 p.m. Eastern, but the reporting week ends two and a half weeks before publication; current all-swaps tables show five weeks while asset-class tables show one week.
Verdict
A derivatives-positioning and activity signal for a trading or AI agent tracking changes in swap notionals, clearing, turnover and participation. It is a lagged weekly aggregate, not a real-time transaction feed, and the stated reporting period is already two and a half weeks old at publication. Coverage is limited to market-facing swaps reported to registered repositories and classifications have changed over time, including the later addition of FX swaps. Historical comparisons should preserve publication dates, definitions and archive versions because corrections or delayed federal operations can alter the release sequence.
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load CFTC swaps gross notional into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.
Access
- No account or key is required for the checked current HTML report table.
- Archived editions are linked by publication date from the provider archive.
Request
curl 'https://www.cftc.gov/MarketReports/SwapsReports/L1GrossExpCS.html'Format
HTML table with swap categories as rows and five weekly reporting dates as columns; values are gross notional outstanding in millions of U.S. dollars.
Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
"""CFTC gross-notional cleared-status table -> pandas -> Parquet."""
from html.parser import HTMLParser
import requests
import pandas as pd
class FirstTable(HTMLParser):
def __init__(self):
super().__init__()
self.in_table = self.done = self.in_cell = False
self.row, self.rows, self.cell = [], [], []
def handle_starttag(self, tag, attrs):
if tag == "table" and not self.in_table and not self.done:
self.in_table = True
elif self.in_table and tag == "tr":
self.row = []
elif self.in_table and tag in ("td", "th"):
self.in_cell, self.cell = True, []
def handle_data(self, data):
if self.in_cell:
self.cell.append(data)
def handle_endtag(self, tag):
if self.in_table and tag in ("td", "th"):
self.row.append(" ".join("".join(self.cell).split()))
self.in_cell = False
elif self.in_table and tag == "tr" and self.row:
self.rows.append(self.row)
elif self.in_table and tag == "table":
self.in_table, self.done = False, True
URL = "https://www.cftc.gov/MarketReports/SwapsReports/L1GrossExpCS.html"
r = requests.get(URL, headers={"User-Agent": "Mozilla/5.0 SignalLabCheck/1.0"}, timeout=60)
r.raise_for_status()
p = FirstTable()
p.feed(r.text)
width = len(p.rows[0])
rows = [row for row in p.rows[1:] if len(row) == width and row[0]]
df = pd.DataFrame(rows, columns=["category", *p.rows[0][1:]])
for col in df.columns[1:]:
df[col] = pd.to_numeric(df[col].str.replace(",", ""))
df.to_parquet("cftc_swaps_gross_notional.parquet", index=False)
print(len(df), "rows", len(df.columns) - 1, "weekly dates", "latest", df.columns[-1])Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 10 rows 5 weekly dates latest October 09
Limits
- Rate limit: Not stated.
- Current all-swaps tables contain five weekly observations; asset-class tables contain the latest week.
- The reporting period ends two and a half weeks before the normal Monday publication date.
Quirks
- The current tables are HTML, so ingestion depends on table structure rather than a stable CSV schema.
- Values are in millions of U.S. dollars and formatted with thousands separators.
- Cleared-status and participant-type tables count notionals differently; do not compare their totals without the explanatory notes.
Terms and attribution
- CFTC government information is public domain, while separately identified third-party items may be protected.
- CFTC requests appropriate acknowledgement when its public-domain information is reused.
Sources
- https://www.cftc.gov/MarketReports/SwapsReports/index.htm: “The CFTC Swaps Report is published every Monday at 3:30 p.m., unless otherwise noted.”
- https://www.cftc.gov/MarketReports/SwapsReports/index.htm: “market-facing swaps transactions”
- https://www.cftc.gov/MarketReports/SwapsReports/ReleaseSchedule/index.htm: “The reporting period is defined as the week ending on the Friday two and a half weeks prior to the CFTC Swaps Report’s Monday publication date.”
- https://www.cftc.gov/webpolicy/index.htm: “Government information at the CFTC website is in the public domain.”
Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer