{"openapi":"3.1.0","info":{"title":"TFF Positioning API","version":"1.0.0","description":"Where the leveraged funds and the asset managers are positioned in the financial futures — currencies, stock indices and interest rates — read live from the CFTC Traders in Financial Futures (TFF) report, no key. For financial futures the CFTC publishes a dedicated breakdown the commodity-style reports do not: Dealer/Intermediary (the sell-side banks), Asset Manager/Institutional (pension funds, mutual funds and insurers — the real-money long-term side), Leveraged Funds (hedge funds and CTAs — the fast speculative money) and Other Reportables. The split between Leveraged Funds and Asset Managers is the one macro traders watch: in the Treasury complex, leveraged funds run the famous cash-futures basis trade short while asset managers sit long, and the gap is a systemic-risk gauge. The positioning endpoint returns, for a market, the full four-group breakdown — each group's long, short and net contracts, share of open interest, trader count and week-over-week change — with a leveraged-funds bias read. The screener endpoint ranks a curated set of 17 FX, equity-index and interest-rate futures by where the leveraged funds (or the asset managers) are net positioned, surfacing the most crowded macro bets. This is the financial-futures TFF positioning cut — distinct from the legacy COT feed, the normalised COT-Index, the commodity Managed-Money report and the price APIs. It is who the hedge funds and the real money are, in the markets that move macro.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/tffpositioning-api","description":"oanor gateway"}],"tags":[{"name":"Positioning"},{"name":"Screener"},{"name":"Markets"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/positioning":{"get":{"operationId":"get_v1_positioning","tags":["Positioning"],"summary":"Four-group TFF breakdown for one financial future","description":"","parameters":[{"name":"market","in":"query","required":true,"description":"Market key (ust10y, eur, sp500, vix, ...)","schema":{"type":"string"},"example":"ust10y"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"UST 10-Year Note","note":"CFTC Traders in Financial Futures (TFF), latest weekly report. net = long - short contracts; net_pct_oi = net as a share of open interest. Leveraged Funds = hedge funds / CTAs (fast speculative money); Asset Managers = pension/mutual funds and insurers (real-money long-term side); Dealers = sell-side intermediaries. net_change_week is the week-over-week change in net. Updated Fridays.","class":"rate","market":"ust10y","source":"CFTC Traders in Financial Futures (futures-only)","dealers":{"net":-417784,"long":159245,"short":577029,"net_pct_oi":-6.45,"net_change_week":57410},"report_date":"2026-06-02","open_interest":6478701,"asset_managers":{"net":2311379,"bias":"crowded net long","long":3240635,"short":929256,"net_pct_oi":35.68,"long_pct_oi":50,"short_pct_oi":14.3,"net_change_week":260401},"leveraged_funds":{"net":-1896875,"bias":"crowded net short","long":379854,"short":2276729,"net_pct_oi":-29.28,"long_pct_oi":5.9,"short_pct_oi":35.1,"traders_long":53,"traders_short":90,"net_change_week":17885},"other_reportables":{"net":-1620,"long":233571,"short":235191,"net_pct_oi":-0.03,"net_change_week":-43877}},"meta":{"timestamp":"2026-06-12T10:34:48.830Z","request_id":"7d60d823-926c-4033-a05f-cc8f5814288a"},"status":"ok","message":"TFF positioning retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/screener":{"get":{"operationId":"get_v1_screener","tags":["Screener"],"summary":"Rank financial futures by leveraged-fund or asset-manager net positioning","description":"","parameters":[{"name":"group","in":"query","required":false,"description":"lev_money (hedge funds) or asset_mgr (institutional)","schema":{"type":"string"},"example":"lev_money"},{"name":"sort","in":"query","required":false,"description":"net_pct, net or change","schema":{"type":"string"},"example":"net_pct"},{"name":"class","in":"query","required":false,"description":"fx, index, rate or all","schema":{"type":"string"},"example":"all"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Financial futures ranked by leveraged funds (hedge funds / CTAs) net positioning as a share of open interest. High = that group is crowded net long; low/negative = crowded net short. sort=net ranks by raw contracts, sort=change by week-over-week net change. Source CFTC TFF, updated Fridays.","class":"all","count":17,"group":"lev_money","source":"CFTC Traders in Financial Futures (futures-only)","results":[{"net":56800,"bias":"net long","name":"Australian Dollar","rank":1,"class":"fx","market":"aud","available":true,"net_pct_oi":17.58,"long_pct_oi":25.4,"report_date":"2026-06-02","short_pct_oi":7.8,"net_change_week":-1241},{"net":27022,"bias":"net long","name":"British Pound","rank":2,"class":"fx","market":"gbp","available":true,"net_pct_oi":9.12,"long_pct_oi":19.2,"report_date":"2026-06-02","short_pct_oi":10.1,"net_change_week":647},{"net":-21339,"bias":"roughly balanced","name":"Fed Funds","rank":3,"class":"rate","market":"fedfunds","available":true,"net_pct_oi":-1.25,"long_pct_oi":15.8,"report_date":"2026-06-02","short_pct_oi":17,"net_change_week":-63818},{"net":-22320,"bias":"roughly balanced","name":"Euro FX","rank":4,"class":"fx","market":"eur","available":true,"net_pct_oi":-2.28,"long_pct_oi":8.5,"report_date":"2026-06-02","short_pct_oi":10.8,"net_change_week":3990},{"net":-33033,"bias":"net short","name":"VIX Futures","rank":5,"class":"index","market":"vix","available":true,"net_pct_oi":-8.04,"long_pct_oi":19.7,"report_date":"2026-06-02","short_pct_oi":27.7,"net_change_week":16303},{"net":-10782,"bias":"net short","name":"Swiss Franc","rank":6,"class":"fx","market":"chf","available":true,"net_pct_oi":-8.54,"long_pct_oi":4,"report_date":"2026-06-02","short_pct_oi":12.5,"net_change_week":-5132},{"net":-2335762,"bias":"net short","name":"3-Month SOFR","rank":7,"class":"rate","market":"sofr3m","available":true,"net_pct_oi":-9.33,"long_pct_oi":2.8,"report_date":"2026-06-02","short_pct_oi":12.1,"net_change_week":-382333},{"net":-281959,"bias":"net short","name":"UST Bond","rank":8,"class":"rate","market":"ustbond","available":true,"net_pct_oi":-13.67,"long_pct_oi":7.5,"report_date":"2026-06-02","short_pct_oi":21.2,"net_change_week":46173},{"net":-52178,"bias":"net short","name":"Nasdaq 100 (E-mini)","rank":9,"class":"index","market":"nasdaq","available":true,"net_pct_oi":-14.34,"long_pct_oi":15.8,"report_date":"2026-06-02","short_pct_oi":30.1,"net_change_week":-1904},{"net":-49052,"bias":"net short","name":"Canadian Dollar","rank":10,"class":"fx","market":"cad","available":true,"net_pct_oi":-14.63,"long_pct_oi":8.8,"report_date":"2026-06-02","short_pct_oi":23.5,"net_change_week":-6858},{"net":-482975,"bias":"net short","name":"S&P 500 (E-mini)","rank":11,"class":"index","market":"sp500","available":true,"net_pct_oi":-15.19,"long_pct_oi":5,"report_date":"2026-06-02","short_pct_oi":20.2,"net_change_week":-36929},{"net":-74952,"bias":"net short","name":"Russell 2000 (E-mini)","rank":12,"class":"index","market":"russell","available":true,"net_pct_oi":-17.44,"long_pct_oi":12.5,"report_date":"2026-06-02","short_pct_oi":29.9,"net_change_week":-5255},{"net":-105136,"bias":"net short","name":"Japanese Yen","rank":13,"class":"fx","market":"jpy","available":true,"net_pct_oi":-18.8,"long_pct_oi":13.5,"report_date":"2026-06-02","short_pct_oi":32.3,"net_change_week":-18887},{"net":-27797,"bias":"crowded net short","name":"New Zealand Dollar","rank":14,"class":"fx","market":"nzd","available":true,"net_pct_oi":-20.33,"long_pct_oi":4.4,"report_date":"2026-06-02","short_pct_oi":24.7,"net_change_week":-14030},{"net":-1896875,"bias":"crowded net short","name":"UST 10-Year Note","rank":15,"class":"rate","market":"ust10y","available":true,"net_pct_oi":-29.28,"long_pct_oi":5.9,"report_date":"2026-06-02","short_pct_oi":35.1,"net_change_week":17885},{"net":-2270834,"bias":"crowded net short","name":"UST 5-Year Note","rank":16,"class":"rate","market":"ust5y","available":true,"net_pct_oi":-33.88,"long_pct_oi":6.5,"report_date":"2026-06-02","short_pct_oi":40.4,"net_change_week":-205784},{"net":-1816403,"bias":"crowded net short","name":"UST 2-Year Note","rank":17,"class":"rate","market":"ust2y","available":true,"net_pct_oi":-41.09,"long_pct_oi":8.1,"report_date":"2026-06-02","short_pct_oi":49.2,"net_change_week":-43355}],"sorted_by":"net_pct","group_label":"leveraged funds (hedge funds / CTAs)","unavailable":[],"crowded_long":[],"crowded_short":["nzd","ust10y","ust5y","ust2y"],"most_net_long":{"market":"aud","net_pct_oi":17.58},"most_net_short":{"market":"ust2y","net_pct_oi":-41.09}},"meta":{"timestamp":"2026-06-12T10:34:49.817Z","request_id":"cfc2c842-9791-49a3-9e63-c8310ae334de"},"status":"ok","message":"TFF screener retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/markets":{"get":{"operationId":"get_v1_markets","tags":["Markets"],"summary":"Supported financial futures and CFTC codes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The financial futures covered by the TFF report. Pass market= to /v1/positioning or class= to /v1/screener.","count":17,"groups":{"asset_mgr":"asset managers / institutional","lev_money":"leveraged funds (hedge funds / CTAs)"},"source":"CFTC Traders in Financial Futures","classes":["fx","index","rate"],"markets":[{"name":"Euro FX","class":"fx","market":"eur","cftc_code":"099741"},{"name":"Japanese Yen","class":"fx","market":"jpy","cftc_code":"097741"},{"name":"British Pound","class":"fx","market":"gbp","cftc_code":"096742"},{"name":"Australian Dollar","class":"fx","market":"aud","cftc_code":"232741"},{"name":"Swiss Franc","class":"fx","market":"chf","cftc_code":"092741"},{"name":"Canadian Dollar","class":"fx","market":"cad","cftc_code":"090741"},{"name":"New Zealand Dollar","class":"fx","market":"nzd","cftc_code":"112741"},{"name":"S&P 500 (E-mini)","class":"index","market":"sp500","cftc_code":"13874A"},{"name":"Nasdaq 100 (E-mini)","class":"index","market":"nasdaq","cftc_code":"209742"},{"name":"Russell 2000 (E-mini)","class":"index","market":"russell","cftc_code":"239742"},{"name":"VIX Futures","class":"index","market":"vix","cftc_code":"1170E1"},{"name":"UST 2-Year Note","class":"rate","market":"ust2y","cftc_code":"042601"},{"name":"UST 5-Year Note","class":"rate","market":"ust5y","cftc_code":"044601"},{"name":"UST 10-Year Note","class":"rate","market":"ust10y","cftc_code":"043602"},{"name":"UST Bond","class":"rate","market":"ustbond","cftc_code":"020601"},{"name":"Fed Funds","class":"rate","market":"fedfunds","cftc_code":"045601"},{"name":"3-Month SOFR","class":"rate","market":"sofr3m","cftc_code":"134741"}]},"meta":{"timestamp":"2026-06-12T10:34:49.888Z","request_id":"ea81ec95-99ec-4449-901d-d6d2850ef390"},"status":"ok","message":"Markets retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"market is one of /v1/markets keys (ust10y, eur, sp500, vix, ...). screener group is lev_money (hedge funds, default) or asset_mgr (institutional); sort is net_pct (default, net as % of OI), net (raw contracts) or change (week-over-week); class filters to fx/index/rate. TFF updates Fridays; a 30-minute protective cache fronts the shared CFTC upstream.","groups":["lev_money","asset_mgr"],"source":"CFTC Traders in Financial Futures (Socrata yw9f-hn96), live","classes":["fx","index","rate"],"markets":17,"service":"tffpositioning-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/markets":"The supported financial futures and their CFTC codes.","GET /v1/screener":"Rank financial futures by leveraged-fund or asset-manager net positioning (group=lev_money, sort=net_pct, class=all).","GET /v1/positioning":"Full four-group TFF breakdown for one financial future (market=ust10y)."},"description":"TFF positioning — where leveraged funds and asset managers are positioned in financial futures (currencies, stock indices, interest rates), from the CFTC Traders in Financial Futures report (no key). It splits the market into Dealers (sell-side), Asset Managers (real-money institutional), Leveraged Funds (hedge funds) and Other — the breakdown the commodity reports lack. positioning returns one market's full four-group breakdown with longs/shorts/net, share of open interest, trader counts, week change and a leveraged-funds bias read. screener ranks FX, equity-index and rate futures by where the leveraged funds (or asset managers) are net positioned. The financial-futures TFF cut — distinct from the legacy COT feed, the COT-Index, the commodity Managed-Money report and the price APIs.","upstream_status":"ok","ust10y_lev_money_net":-1896875},"meta":{"timestamp":"2026-06-12T10:34:49.963Z","request_id":"efd8dd44-a71d-4e6d-afac-3111f0b1139d"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":730,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1290,"monthly_call_quota":15600,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3920,"monthly_call_quota":85000,"rps_limit":16,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":8660,"monthly_call_quota":474000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/tffpositioning-api"}