- New extraction package (cftc_cot): downloads yearly Disaggregated Futures ZIPs from CFTC, etag-based dedup, dynamic inner filename discovery, gzip normalization - SQLMesh 3-layer architecture: raw (technical) → foundation (business model) → serving (mart) - dim_commodity seed: conformed dimension mapping USDA ↔ CFTC codes — the commodity ontology - fct_cot_positioning: typed, deduplicated weekly positioning facts for all commodities - obt_cot_positioning: Coffee C mart with COT Index (26w/52w), WoW delta, OI ratios - Analytics functions + REST API endpoints: /commodities/<code>/positioning[/latest] - Dashboard widget: Managed Money net, COT Index card, dual-axis Chart.js chart - 23 passing tests (10 unit + 2 SQLMesh model + existing regression suite) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
100 lines
3.8 KiB
YAML
100 lines
3.8 KiB
YAML
test_fct_cot_positioning_types_and_net_positions:
|
|
model: foundation.fct_cot_positioning
|
|
inputs:
|
|
raw.cot_disaggregated:
|
|
rows:
|
|
- market_and_exchange_names: "COFFEE C - ICE FUTURES U.S."
|
|
report_date_as_yyyy_mm_dd: "2024-01-02"
|
|
cftc_commodity_code: "083731"
|
|
cftc_contract_market_code: "083731"
|
|
contract_units: "37,500 POUNDS"
|
|
open_interest_all: "250000"
|
|
prod_merc_positions_long_all: "80000"
|
|
prod_merc_positions_short_all: "90000"
|
|
swap_positions_long_all: "30000"
|
|
swap_positions_short_all: "35000"
|
|
swap_positions_spread_all: "10000"
|
|
m_money_positions_long_all: "60000"
|
|
m_money_positions_short_all: "40000"
|
|
m_money_positions_spread_all: "15000"
|
|
other_rept_positions_long_all: "20000"
|
|
other_rept_positions_short_all: "18000"
|
|
other_rept_positions_spread_all: "5000"
|
|
nonrept_positions_long_all: "12000"
|
|
nonrept_positions_short_all: "14000"
|
|
change_in_open_interest_all: "5000"
|
|
change_in_m_money_long_all: "2000"
|
|
change_in_m_money_short_all: "-1000"
|
|
change_in_prod_merc_long_all: "1000"
|
|
change_in_prod_merc_short_all: "500"
|
|
conc_gross_le_4_tdr_long_all: "35.5"
|
|
conc_gross_le_4_tdr_short_all: "28.3"
|
|
conc_gross_le_8_tdr_long_all: "52.1"
|
|
conc_gross_le_8_tdr_short_all: "44.7"
|
|
traders_tot_all: "450"
|
|
traders_m_money_long_all: "85"
|
|
traders_m_money_short_all: "62"
|
|
traders_m_money_spread_all: "20"
|
|
filename: "data/landing/cot/2024/abc123.csv.gzip"
|
|
expected:
|
|
rows:
|
|
- report_date: "2024-01-02"
|
|
cftc_commodity_code: "083731"
|
|
open_interest: 250000
|
|
managed_money_long: 60000
|
|
managed_money_short: 40000
|
|
managed_money_net: 20000
|
|
prod_merc_long: 80000
|
|
prod_merc_short: 90000
|
|
prod_merc_net: -10000
|
|
swap_long: 30000
|
|
swap_short: 35000
|
|
swap_net: -5000
|
|
nonreportable_long: 12000
|
|
nonreportable_short: 14000
|
|
nonreportable_net: -2000
|
|
change_managed_money_net: 3000
|
|
traders_managed_money_long: 85
|
|
traders_managed_money_short: 62
|
|
|
|
test_fct_cot_positioning_rejects_null_commodity:
|
|
model: foundation.fct_cot_positioning
|
|
inputs:
|
|
raw.cot_disaggregated:
|
|
rows:
|
|
- market_and_exchange_names: "SOME OTHER CONTRACT"
|
|
report_date_as_yyyy_mm_dd: "2024-01-02"
|
|
cftc_commodity_code: ""
|
|
cftc_contract_market_code: "999999"
|
|
contract_units: "N/A"
|
|
open_interest_all: "1000"
|
|
prod_merc_positions_long_all: "500"
|
|
prod_merc_positions_short_all: "500"
|
|
swap_positions_long_all: "0"
|
|
swap_positions_short_all: "0"
|
|
swap_positions_spread_all: "0"
|
|
m_money_positions_long_all: "0"
|
|
m_money_positions_short_all: "0"
|
|
m_money_positions_spread_all: "0"
|
|
other_rept_positions_long_all: "0"
|
|
other_rept_positions_short_all: "0"
|
|
other_rept_positions_spread_all: "0"
|
|
nonrept_positions_long_all: "0"
|
|
nonrept_positions_short_all: "0"
|
|
change_in_open_interest_all: "0"
|
|
change_in_m_money_long_all: "0"
|
|
change_in_m_money_short_all: "0"
|
|
change_in_prod_merc_long_all: "0"
|
|
change_in_prod_merc_short_all: "0"
|
|
conc_gross_le_4_tdr_long_all: "0"
|
|
conc_gross_le_4_tdr_short_all: "0"
|
|
conc_gross_le_8_tdr_long_all: "0"
|
|
conc_gross_le_8_tdr_short_all: "0"
|
|
traders_tot_all: "10"
|
|
traders_m_money_long_all: "0"
|
|
traders_m_money_short_all: "0"
|
|
traders_m_money_spread_all: "0"
|
|
filename: "data/landing/cot/2024/abc123.csv.gzip"
|
|
expected:
|
|
rows: []
|