Skip to content

📉 cftc

CFTC-jurisdiction swap and derivatives transaction data, publicly disseminated from the DTCC Global Trade Repository under 17 CFR Part 43 (Dodd-Frank). Daily end-of-day cumulative files across five asset classes — rates, credit, forex, equities and commodities — carrying notional amounts, prices, effective and expiration dates, clearing status and counterparty jurisdiction. Coverage starts 2024-01-01, the post-Part-43/45 rewrite schema; earlier years use an incompatible field structure and are not included.

9 datasets · 168 columns

cftc_trades · table

CFTC swap trade public dissemination records from DTCC GTR. Each row is one reported swap event (new trade, amendment, termination, correction). Covers all five CFTC asset classes, one per partition: RATES, CREDITS, FOREX, EQUITIES, COMMODITIES (the source short code IR/CR/FX/EQ/CO is preserved in asset_class_code). Partitioned by asset_class/year/month. Daily EOD files from 2024-01-01; weekends and holidays produce no file (skipped cleanly). For new trades only: WHERE action_type = 'NEWT'. For live trades: exclude action_type IN ('TERM','CORR','EROR'). Join on dissemination_id / original_dissemination_id to reconstruct amendment chains. For a narrower, asset-class-specific column set see rate_swaps, credit_default_swaps, fx_derivatives, equity_derivatives, and commodity_derivatives; for daily aggregate summaries see swap_activity and clearing_activity.

Column Type Null Description
dissemination_id string no Unique identifier assigned by DTCC for this dissemination event (PK)
original_dissemination_id string yes References the original NEWT dissemination_id for amendments/terminations
action_type string no NEWT=new trade, AMND=amendment, TERM=termination, CORR=correction, EROR=error, NOVA=novation
event_type string yes TRAD=trade, NOVA=novation, CLRG=clearing
event_timestamp timestamp no UTC timestamp of the swap event
amendment_indicator string yes Indicates whether the record is an amendment to a prior submission
asset_class_code string yes CFTC standard asset-class code from the source file — IR (rates), CR (credit), FX, EQ (equity), CO (commodity). Redundant with the asset_class partition (the DTCC file is pre-split by class) but kept for analyst convenience and joins.
product_name string yes Standard product description (e.g. 'Swap OIS USD', 'Index CDS')
unique_product_identifier string yes UPI code identifying the swap product per ANNA DSB taxonomy
upi_fisn string yes Financial Instrument Short Name from UPI
upi_underlier_name string yes Underlier name from UPI (e.g. 'USD-SOFR-COMPOUND', 'CDX.NA.IG')
cleared string yes Y=centrally cleared (per CFTC/DTCC CDE data element #1). Almost never seen in this table: Y is reported only on the CCP-facing "beta"/"gamma" novation legs created when a swap clears, and those legs are explicitly excluded from Part 43 public real-time dissemination ("Not Disseminated" per the CFTC Technical Specification's clearing novation example) — this file carries only the original "alpha" transaction. N=not centrally cleared (bilateral). I=Intent to clear — the alpha transaction is planned for submission to clearing; most I rows do go on to clear, but that outcome is recorded on a separate, non-disseminated transaction, not by amending this row.
mandatory_clearing_indicator boolean yes Whether this swap is subject to mandatory clearing under CFTC rules
execution_timestamp timestamp yes UTC timestamp when the trade was executed
platform_identifier string yes SEF or DCM venue identifier where the trade was executed
block_trade_election_indicator boolean yes True if the trade qualifies as a block trade (delayed reporting)
large_notional_off_facility_swap_indicator boolean yes True if large notional off-facility swap delayed reporting elected
prime_brokerage_transaction_indicator boolean yes True if this is a prime brokerage transaction
effective_date date yes Date the swap begins accruing
expiration_date date yes Scheduled maturity/expiration date of the swap
maturity_date_underlier date yes Maturity date of the underlying instrument (for options/swaptions)
first_exercise_date date yes Earliest exercise date for options
notional_amount_leg1 double yes Notional amount leg1. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999999999999999999.99999) — see notional_amount_leg1_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
notional_amount_leg1_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999999999999999999.99999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and notional_amount_leg1 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
notional_amount_leg1_at_or_above_threshold boolean yes True when the source value carried a trailing '+' — CFTC's Part 43 large-trade disclosure censoring marker, meaning the true notional is at or above the public reporting threshold and notional_amount_leg1 reflects only that threshold, not the real amount. Null when the source value itself is null.
notional_amount_leg2 double yes Notional amount leg2. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999999999999999999.99999) — see notional_amount_leg2_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
notional_amount_leg2_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999999999999999999.99999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and notional_amount_leg2 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
notional_amount_leg2_at_or_above_threshold boolean yes True when the source value carried a trailing '+' — see notional_amount_leg1_at_or_above_threshold for the CFTC large-trade censoring convention this reflects.
notional_currency_leg1 string yes ISO 4217 currency code for leg 1 notional
notional_currency_leg2 string yes ISO 4217 currency code for leg 2 notional
notional_quantity_leg1 double yes Notional quantity leg1. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999999999999999999.99999) — see notional_quantity_leg1_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
notional_quantity_leg1_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999999999999999999.99999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and notional_quantity_leg1 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
notional_quantity_leg1_at_or_above_threshold boolean yes True when the source value carried a trailing '+' — CFTC's Part 43 large-trade disclosure censoring marker, meaning the true quantity is at or above the public reporting threshold and notional_quantity_leg1 reflects only that threshold, not the real amount. Null when the source value itself is null.
notional_quantity_leg2 double yes Notional quantity leg2. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999999999999999999.99999) — see notional_quantity_leg2_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
notional_quantity_leg2_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999999999999999999.99999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and notional_quantity_leg2 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
notional_quantity_leg2_at_or_above_threshold boolean yes True when the source value carried a trailing '+' — CFTC's Part 43 large-trade disclosure censoring marker, meaning the true quantity is at or above the public reporting threshold and notional_quantity_leg2 reflects only that threshold, not the real amount. Null when the source value itself is null.
total_notional_quantity_leg1 double yes Total notional quantity leg1. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999999999999999999.99999) — see total_notional_quantity_leg1_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
total_notional_quantity_leg1_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999999999999999999.99999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and total_notional_quantity_leg1 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
total_notional_quantity_leg1_at_or_above_threshold boolean yes True when the source value carried a trailing '+' — see notional_amount_leg1_at_or_above_threshold for the CFTC large-trade censoring convention this reflects.
total_notional_quantity_leg2 double yes Total notional quantity leg2. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999999999999999999.99999) — see total_notional_quantity_leg2_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
total_notional_quantity_leg2_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999999999999999999.99999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and total_notional_quantity_leg2 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
total_notional_quantity_leg2_at_or_above_threshold boolean yes True when the source value carried a trailing '+' — CFTC's Part 43 large-trade disclosure censoring marker, meaning the true quantity is at or above the public reporting threshold and total_notional_quantity_leg2 reflects only that threshold, not the real amount. Null when the source value itself is null.
quantity_unit_of_measure_leg1 string yes Unit of measure for notional quantity leg 1 (BBL, MMBTU, MWH, etc.)
quantity_unit_of_measure_leg2 string yes Unit of measure for notional quantity leg 2
quantity_frequency_leg1 string yes Frequency at which quantity is delivered/settled leg 1
quantity_frequency_leg2 string yes Frequency at which quantity is delivered/settled leg 2
quantity_frequency_multiplier_leg1 double yes Multiplier applied to quantity frequency leg 1
quantity_frequency_multiplier_leg2 double yes Multiplier applied to quantity frequency leg 2
notional_amount_effective_leg1 array yes Notional amount(s) in effect on the associated effective date for leg 1. A single amount for a bullet swap; an amortizing/accreting swap reports a semicolon-delimited schedule, so this is a list. Positionally aligned with effective_date_notional_leg1 and end_date_notional_leg1.
notional_amount_effective_leg2 array yes Notional amount(s) in effect on the associated effective date for leg 2. A single amount for a bullet swap; an amortizing/accreting swap reports a semicolon-delimited schedule, so this is a list. Positionally aligned with effective_date_notional_leg2 and end_date_notional_leg2.
effective_date_notional_leg1 array yes Date(s) the notional amount takes effect for leg 1 — one entry per step of an amortization schedule, positionally aligned with notional_amount_effective_leg1.
effective_date_notional_leg2 array yes Date(s) the notional amount takes effect for leg 2 — one entry per step of an amortization schedule, positionally aligned with notional_amount_effective_leg2.
end_date_notional_leg1 array yes Date(s) the notional amount expires for leg 1. Usually a single date; amortizing swaps report a semicolon-delimited schedule (e.g. "2030-01-31;2030-02-28;...") which is why this is a list rather than a scalar date.
end_date_notional_leg2 array yes Date(s) the notional amount expires for leg 2. Usually a single date; amortizing swaps report a semicolon-delimited schedule, which is why this is a list rather than a scalar date.
fixed_rate_leg1 double yes Fixed rate leg1. NULL when the reporting counterparty used the CFTC all-9s not-available default (9.9999999999) — see fixed_rate_leg1_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
fixed_rate_leg1_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (9.9999999999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and fixed_rate_leg1 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
fixed_rate_leg2 double yes Fixed rate leg2. NULL when the reporting counterparty used the CFTC all-9s not-available default (9.9999999999) — see fixed_rate_leg2_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
fixed_rate_leg2_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (9.9999999999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and fixed_rate_leg2 is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
fixed_rate_day_count_leg1 string yes Day count convention for fixed leg 1 (A004=ACT/360, A006=30/360, etc.)
fixed_rate_day_count_leg2 string yes Day count convention for fixed leg 2
floating_rate_day_count_leg1 string yes Day count convention for floating leg 1
floating_rate_day_count_leg2 string yes Day count convention for floating leg 2
floating_rate_reset_freq_period_leg1 string yes Reset period unit for floating leg 1 (MNTH, WEEK, YEAR, EXPI, etc.)
floating_rate_reset_freq_period_leg2 string yes Reset period unit for floating leg 2
floating_rate_reset_freq_multiplier_leg1 double yes Multiplier for reset frequency period leg 1
floating_rate_reset_freq_multiplier_leg2 double yes Multiplier for reset frequency period leg 2
fixed_rate_payment_freq_period_leg1 string yes Payment frequency period unit for fixed leg 1
fixed_rate_payment_freq_period_leg2 string yes Payment frequency period unit for fixed leg 2
floating_rate_payment_freq_period_leg1 string yes Payment frequency period unit for floating leg 1
floating_rate_payment_freq_period_leg2 string yes Payment frequency period unit for floating leg 2
fixed_rate_payment_freq_multiplier_leg1 double yes Payment frequency multiplier for fixed leg 1
fixed_rate_payment_freq_multiplier_leg2 double yes Payment frequency multiplier for fixed leg 2
floating_rate_payment_freq_multiplier_leg1 double yes Payment frequency multiplier for floating leg 1
floating_rate_payment_freq_multiplier_leg2 double yes Payment frequency multiplier for floating leg 2
spread_leg1 double yes Spread over floating index for leg 1 (basis points or decimal per convention)
spread_leg2 double yes Spread over floating index for leg 2
spread_currency_leg1 string yes Currency of spread leg 1
spread_currency_leg2 string yes Currency of spread leg 2
spread_notation_leg1 string yes Notation for spread leg 1 (ABSC=absolute, PRCT=percent)
spread_notation_leg2 string yes Notation for spread leg 2
price double yes Transaction price (commodity/equity swaps)
price_unit_of_measure string yes Unit of measure for price
price_currency string yes Currency of price
price_notation string yes Price notation type
post_priced_swap_indicator boolean yes True if the price is determined after execution
option_type string yes CALL, PUT, OTHR — option type for swaptions/options
option_style string yes EURO=European, AMER=American, BERM=Bermudan
strike_price double yes Strike price for options/swaptions
strike_price_currency string yes Currency or currency pair of the strike price
strike_price_notation string yes Notation type for strike price
embedded_option_type string yes Type of embedded option (callable, putable, etc.)
option_premium_amount double yes Premium paid for the option
option_premium_currency string yes Currency of the option premium
exchange_rate double yes Exchange rate. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999.9999999999999 or 9.9999999999) — see exchange_rate_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
exchange_rate_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999.9999999999999 or 9.9999999999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and exchange_rate is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
exchange_rate_basis string yes Basis for the exchange rate quotation
call_amount double yes Call leg notional for FX swaps
call_currency string yes Currency of the call leg
put_amount double yes Put leg notional for FX swaps
put_currency string yes Currency of the put leg
underlier_id_leg1 string yes Identifier of the underlier for leg 1 (ISIN, index ticker, etc.)
underlier_id_leg2 string yes Identifier of the underlier for leg 2
underlier_id_source_leg1 string yes Identification scheme for underlier ID leg 1 (ISIN, INDX, etc.)
underlying_asset_name string yes Human-readable name of the underlier (e.g. 'CDX.NA.IG', 'WTI Crude')
underlying_asset_subtype_leg1 array yes Underlying asset/contract subtype identifier(s) for leg 1. Basket and index trades name several underliers in one semicolon-delimited field, so this is a list.
underlying_asset_subtype_leg2 string yes Subtype classification of the underlier leg 2
maturity_date_underlier_leg1 string yes Maturity of the underlying instrument
other_payment_amount array yes Additional payment(s) (e.g. upfront fee, points). Usually a single amount; tiered payment schedules report a semicolon-delimited list, which is why this is a list rather than a scalar double.
other_payment_type array yes Type code(s) of the additional payment(s) — positionally aligned with other_payment_amount and other_payment_currency (e.g. UWIN, UFRO).
other_payment_currency array yes Currency code(s) of the additional payment(s) — positionally aligned with other_payment_amount and other_payment_type.
settlement_currency_leg1 string yes Settlement currency for leg 1
settlement_currency_leg2 string yes Settlement currency for leg 2
settlement_location string yes Not a CCP/clearinghouse field. Per CFTC/DTCC CDE data element #90, this is the ISO 3166 (alpha-2) country code disambiguating an offshore currency from its onshore ISO 4217 code (e.g. CNY traded offshore in Hong Kong is reported as notional_currency=CNY plus settlement_location=HK). Only applicable — and only required — when a leg's notional currency is an offshore currency; genuinely blank on the vast majority of rows, and never a CCP name.
collateralisation_category string yes FLCL=fully collateralised, PRCL=partially, UNCL=uncollateralised
delivery_type string yes PHYS=physical delivery, CASH=cash settlement, OPTL=optional
physical_delivery_location_leg1 string yes Delivery point for commodity/physical swaps
package_indicator boolean yes True if this trade is part of a multi-leg package transaction
package_transaction_price double yes Package transaction price. NULL when the reporting counterparty used the CFTC all-9s not-available default (99999.9999999999999 or 9.9999999999) — see package_transaction_price_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
package_transaction_price_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (99999.9999999999999 or 9.9999999999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and package_transaction_price is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
package_transaction_price_currency string yes Currency of the package price
package_transaction_price_notation string yes Notation for package price
package_transaction_spread double yes Package transaction spread. NULL when the reporting counterparty used the CFTC all-9s not-available default (9.9999999999 or 99999) — see package_transaction_spread_not_available. Thousands separators and the Part 43 '+' censoring marker are stripped before parsing.
package_transaction_spread_not_available boolean yes True when the reporting counterparty signalled that this value was NOT AVAILABLE at the time of reporting, by submitting the CFTC Parts 43/45 Technical Specification's all-9s default for this field's format (9.9999999999 or 99999). The spec states such a value is accepted when the value is not available, so it is a placeholder rather than an amount, and package_transaction_spread is NULL on these rows instead of carrying a nonsensical figure (the Num(25,5) default parses as 1e20, roughly 1000x world GDP). This is a different condition from an at_or_above_threshold flag, where the amount IS known but publicly censored and the disseminated number is the Part 43 reporting threshold; here no number was reported at all. Only the exact spec-canonical defaults match — a bare 999999 also occurs in this feed and is a genuine amount.
package_transaction_spread_currency string yes Currency of the package spread
package_transaction_spread_notation string yes Notation for package spread
non_standardized_term_indicator boolean yes True if the trade contains non-standard bespoke terms
custom_basket_indicator boolean yes True if underlier is a custom basket
index_factor double yes Current index factor for ABS/MBS underliers
asset_class string no DTCC asset-class partition, from the source file split — RATES, CREDITS, FOREX, EQUITIES, COMMODITIES. Drives the download URL and the Iceberg partition (no source mapping; populated from the partition dimension). See asset_class_code for the CFTC short code (IR/CR/FX/EQ/CO) carried in the data rows.
trade_date date no UTC calendar date of event_timestamp — not a per-exchange local trading day; these are OTC swaps with no single canonical session, and CFTC's own Part 43/45 dissemination files bucket by UTC report day too. A trade executed late in the US session (after ~19:00-20:00 ET) falls under the next UTC calendar date here.
year integer no Calendar year (partition key)
month integer no Calendar month 1-12 (partition key)
day integer no Calendar day of month 1-31 (partition key). Present so the partition spec can match the fetch unit — DTCC publishes one file per (asset_class, day), so a day-grained partition is owned by exactly one fetch and can be committed on its own as that fetch completes.

cot_disaggregated_futures · table

CFTC Commitments of Traders — Disaggregated Futures-Only report. Weekly (Tuesday) open interest and long/short/spread positions by trader category — producer/ merchant, swap dealer, managed money, other reportables, and nonreportables — one row per (report_date, contract market). A different CFTC dataset from cftc_trades (DTCC GTR OTC swap dissemination): this is the futures-market positioning report, sourced directly from CFTC's own public Socrata endpoint (resource 72hh-3qpy), not DTCC. Series starts 2006-06-13 — the true start of the Disaggregated report, not a fetch limit (the Legacy COT report, a different resource, goes back to 1986). Source: publicreporting.cftc.gov/resource/72hh-3qpy.json.

Column Type Null Description
report_date date no Tuesday report date
report_week string yes
market_and_exchange_name string yes
contract_market_name string yes
cftc_contract_market_code string no Contract market code — PK component
cftc_market_code string yes
cftc_region_code string yes
cftc_commodity_code string yes
commodity_name string yes
commodity string yes
commodity_subgroup_name string yes
commodity_group_name string yes
contract_units string yes
open_interest_all bigint yes
producer_merchant_long_all bigint yes
producer_merchant_short_all bigint yes
swap_dealer_long_all bigint yes
swap_dealer_short_all bigint yes
swap_dealer_spread_all bigint yes
money_manager_long_all bigint yes
money_manager_short_all bigint yes
money_manager_spread_all bigint yes
other_reportable_long_all bigint yes
other_reportable_short_all bigint yes
other_reportable_spread_all bigint yes
total_reportable_long_all bigint yes
total_reportable_short_all bigint yes
nonreportable_long_all bigint yes
nonreportable_short_all bigint yes
traders_total_all integer yes
concentration_net_top4_long_pct double yes
concentration_net_top4_short_pct double yes
concentration_net_top8_long_pct double yes
concentration_net_top8_short_pct double yes
year integer no Calendar year (partition key)

rate_swaps · view

Interest rate swaps filtered view. Covers vanilla IRS, OIS (SOFR, EFFR), basis swaps, cross-currency swaps, and swaptions in the RATES asset class. Key columns: fixed_rate_leg1/leg2 (coupon as decimal), floating_rate_reset_freq_period_leg1 (EXPI=at-expiry OIS, MNTH=monthly reset), settlement_location (offshore-currency jurisdiction — an ISO 3166 country code, populated only when a leg's currency is offshore; not a CCP field), upi_underlier_name (e.g. 'USD-SOFR-COMPOUND'). Filter action_type = 'NEWT' for new executions only. This table cannot support CCP/clearer concentration analysis — see clearing_activity's comment for why.

View — columns are resolved by the query engine at runtime.

credit_default_swaps · view

Credit default swaps filtered view. Covers single-name CDS and CDS index products (CDX.NA.IG, CDX.NA.HY, iTraxx). Key columns: spread_leg1 (running spread in bps), fixed_rate_leg1 (standard coupon — typically 100bps IG or 500bps HY), underlying_asset_name (reference entity or index name), underlier_id_leg1 (ISIN or index identifier). cleared = 'Y' will not isolate cleared index CDS activity — see clearing_activity's comment: the CCP-facing leg that carries cleared='Y' is excluded from Part 43 public dissemination, so almost no row here ever has it, regardless of true clearing status.

View — columns are resolved by the query engine at runtime.

fx_derivatives · view

FX derivatives filtered view. Covers FX swaps, cross-currency swaps, FX forwards, FX options, and NDFs. Key columns: notional_currency_leg1/leg2 (currency pair), exchange_rate (agreed FX rate), call_amount/put_amount (for FX options), option_type (CALL/PUT), strike_price (option strike rate). The notional_currency_leg1 and notional_currency_leg2 pair identifies the currency pair (e.g. USD/EUR).

View — columns are resolved by the query engine at runtime.

equity_derivatives · view

Equity derivatives filtered view. Covers total return swaps (TRS), equity options, variance swaps, and correlation swaps. Key columns: underlying_asset_name (single stock or index name), underlier_id_leg1 (ISIN or index ticker), price (equity price at execution), strike_price (for options), option_type/option_style.

View — columns are resolved by the query engine at runtime.

commodity_derivatives · view

Commodity derivatives filtered view. Covers energy swaps (crude oil, nat gas, power), agricultural swaps, and metals swaps. Key columns: notional_quantity_leg1 (physical quantity), quantity_unit_of_measure_leg1 (BBL=barrels, MMBTU=gas, MWH=power), price/price_unit_of_measure (commodity price), physical_delivery_location_leg1 (delivery hub — e.g. Henry Hub, NYMEX WTI), delivery_type (PHYS vs CASH).

View — columns are resolved by the query engine at runtime.

swap_activity · view

Daily swap activity summary across all asset classes. Columns: trade_date, asset_class (RATES/CREDITS/FOREX/EQUITIES/COMMODITIES), action_type (NEWT/AMND/TERM/CORR), cleared (Y/N/I), trade_count (number of swap events), total_usd_notional (USD-equivalent notional — uses leg1 if USD, leg2 if not; approximate for cross-currency), cleared_count (cleared='Y') / uncleared_count (cleared='N'). Primary dashboard for market activity monitoring and daily volume surveillance. Filter action_type = 'NEWT' for execution-only volumes. cleared_count/uncleared_count are NOT a clearing-adoption rate: cleared='Y' is reported only on the CCP-facing novation leg of a cleared swap, and Part 43 explicitly excludes that leg from public dissemination, so cleared_count is structurally near-zero here regardless of how much volume actually clears — see clearing_activity's comment for the source-level reason.

View — columns are resolved by the query engine at runtime.

clearing_activity · view

Despite the name, this is NOT usable for CCP concentration analysis, for every asset class, by design of CFTC's Part 43 public dissemination rules — not an ETL defect. settlement_location is an offshore-currency jurisdiction code (ISO 3166), never a CCP name, so grouping by it does not identify a clearer. Separately, cleared='Y' is reported only on the CCP-facing "beta"/"gamma" novation leg created when a swap actually clears (CFTC/DTCC CDE data element #1), and that leg is explicitly marked "Not Disseminated" in CFTC's own Technical Specification — this table, sourced entirely from the public dissemination feed, never receives it. The result is near-zero rows here regardless of real clearing volume. No field in the Part 43 public dissemination feed identifies the CCP (that's CDE data element #2, "Central counterparty," which is itself not disseminated whenever cleared != 'Y'); CCP concentration requires an external source (e.g. CCPView, BIS, FSB). Columns: trade_date, asset_class, settlement_location, cleared_trade_count, total_notional (raw sum of notional_amount_leg1 in its native currency — not USD-normalized, unlike swap_activity's total_usd_notional).

View — columns are resolved by the query engine at runtime.