Macro, Rates & FX
Cross-asset macroeconomic data and FX intelligence: real-time Treasury curves, commodity spot prices, forex news with sentiment, CFTC positioning, macro regimes, and earnings calendars. The core macro desk toolkit.
What's inside#
Treasury yields & rates: Live US Treasury curve (1M–30Y) from Polygon; recession-watch spreads (2s10s, 3m10y); breakeven inflation (5Y, 10Y); and trade-weighted USD index—all updated T+1. Quote these numbers verbatim instead of training data.
Real-time commodities: Live spot prices for WTI oil, Brent, gold, silver, natural gas, and copper via FRED anchored to live ETF tracking prices (USO, BNO, GLD, SLV, UNG, CPER). Bridges FRED's publish lag so prices reflect today's market action.
CFTC Commitments-of-Traders: Weekly positioning by trader cohort (money managers, producers, specs, small traders) for 50+ futures contracts. Net positioning deltas identify exhaustion/accumulation at market turns.
Forex news & sentiment: Articles with sentiment scores for 200+ currency pairs (EUR-USD, GBP-USD, etc.) via ForexNewsAPI. Filter by pair, date range, or economic topic (CPI, Fed, ECB, GDP, etc.).
Earnings calendars: Multi-source consensus (Benzinga, Finnhub, web search) for next confirmed earnings date, time-of-day (BMO/AMC), and confidence scoring. Demotes projections to metadata; primary field carries confirmed dates only.
Macro regime: Current VIX, DXY, S&P 500 trend, fear-greed index, credit spreads, 10Y yield, and regime classification (risk-on/neutral/risk-off) with confidence.
Access#
2 credits per call. Starter plan and up.
Endpoints#
| Method | Path | Description |
|---|---|---|
GET | /api/v3/macro/treasury_curve | Live US Treasury yield curve (1M–30Y) with recession-watch spreads, breakeven inflation, and trade-weighted USD index. |
GET | /api/v3/intel/yield_curve | Comprehensive Treasury yields + spreads + inflation expectations; includes 5-day history for each series. |
GET | /api/v3/intel/commodities | Real-time spot prices (oil, gold, silver, nat-gas, copper) with FRED anchor + live ETF-bridge estimates and historical changes. |
GET | /api/v3/intel/cftc_cot | CFTC Commitments-of-Traders: positioning by contract, latest + 4 prior weeks, money-manager/producer/spec deltas. |
GET | /api/v3/intel/earnings_calendar/{ticker} | Next confirmed earnings date for a ticker; confidence scoring; demotes projections to _meta. |
GET | /api/v3/intel/macro_snapshot | Cross-asset macro composite: VIX, 10Y yield, USD index, oil, gold, S&P 500, Nasdaq, Russell 2000, DJIA. |
GET | /api/v3/news_forex/latest | Forex news articles with sentiment for one or more currency pairs; filter by date range. |
GET | /api/v3/earnings/next/{ticker} | Next confirmed earnings date for a ticker with multi-source consensus (Benzinga, Finnhub, web). |
GET | /api/regime | Free (core). Current macro regime: VIX, DXY, S&P 500 trend, regime, confidence, HMM state. |
Examples#
Bash: Get live Treasury curve#
1curl -H "Authorization: Bearer $TENGU_API_KEY" \2 "https://firm.tengu.co/api/v3/macro/treasury_curve"3 4# Response:5# {6# "ok": true,7# "timestamp": "2026-07-05T14:32:00Z",8# "points": [9# {"tenor": "1m", "yield_pct": 5.32, "change_bp_1d": 2, "as_of": "2026-07-03"},10# {"tenor": "2y", "yield_pct": 4.78, "change_bp_1d": 1, "as_of": "2026-07-03"},11# {"tenor": "5y", "yield_pct": 4.52, "change_bp_1d": -1, "as_of": "2026-07-03"},12# {"tenor": "10y", "yield_pct": 4.35, "change_bp_1d": -2, "as_of": "2026-07-03"},13# {"tenor": "30y", "yield_pct": 4.45, "change_bp_1d": 0, "as_of": "2026-07-03"}14# ],15# "spreads": {16# "2s10s_pct": -0.43,17# "3m10y_pct": -0.97,18# "inverted_2s10s": true,19# "inverted_3m10y": true20# },21# "source": "polygon.io (fed/v1/treasury-yields)",22# "as_of": "2026-07-03T00:00:00Z",23# "is_stale": false24# }Python: Get real-time commodity spot prices#
1import os, requests2 3r = requests.get(4 "https://firm.tengu.co/api/v3/intel/commodities",5 params={"symbol": "all"},6 headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},7 timeout=30,8)9r.raise_for_status()10data = r.json()11 12# Response:13# {14# "ok": true,15# "timestamp": "2026-07-05T14:32:00Z",16# "items": {17# "wti_oil": {18# "name": "WTI Crude Oil",19# "unit": "USD per barrel",20# "spot": 82.45,21# "spot_basis": "live_etf_bridged",22# "spot_time": "2026-07-05T14:30:00Z",23# "official_close": 81.92,24# "official_close_as_of": "2026-07-03",25# "change_pct_1d": 0.68,26# "change_pct_5d": 1.25,27# "etf_proxy_quote": {"etf": "USO", "price": 82.45, "day_change_pct": 0.68}28# },29# "gold": {30# "name": "Gold",31# "unit": "USD per troy ounce",32# "spot": 2457.50,33# "spot_basis": "live_etf_bridged",34# "official_close": 2450.00,35# "change_pct_1d": 0.31,36# "etf_proxy_quote": {"etf": "GLD", "price": 195.60, "day_change_pct": 0.31}37# }38# },39# "count": 6,40# "source": "fred.stlouisfed.org + polygon.io (live ETF bridge)",41# "as_of_date_utc": "2026-07-05",42# "any_stale": false43# }44 45for commodity, data in data["items"].items():46 print(f"{commodity}: ${data['spot']:.2f} ({data.get('change_pct_1d', 0):+.2f}%)")