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#

MethodPathDescription
GET/api/v3/macro/treasury_curveLive US Treasury yield curve (1M–30Y) with recession-watch spreads, breakeven inflation, and trade-weighted USD index.
GET/api/v3/intel/yield_curveComprehensive Treasury yields + spreads + inflation expectations; includes 5-day history for each series.
GET/api/v3/intel/commoditiesReal-time spot prices (oil, gold, silver, nat-gas, copper) with FRED anchor + live ETF-bridge estimates and historical changes.
GET/api/v3/intel/cftc_cotCFTC 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_snapshotCross-asset macro composite: VIX, 10Y yield, USD index, oil, gold, S&P 500, Nasdaq, Russell 2000, DJIA — plus a credit block (CDX IG/HY 5Y spreads, see below).
GET/api/v3/news_forex/latestForex 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/regime2 credits · Starter and up. Current macro regime: VIX, DXY, S&P 500 trend, regime, confidence, HMM state.

Examples#

Bash: Get live Treasury curve#

Shell
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#

Python
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}%)")

Bash: the credit block in macro_snapshot#

macro_snapshot carries a credit block — the credit market's risk gauge alongside the equity and rates indicators. It reports on-the-run 5Y composite spreads already converted to basis points, plus the session-over-session change.

Shell
1curl -H "X-API-Key: $TENGU_API_KEY" \2  "https://firm.tengu.co/api/v3/intel/macro_snapshot" | jq '.credit'
JSON
1{2  "source": "warehouse:credit-index-composites",3  "as_of": "2026-07-30",4  "is_stale": false,5  "stale_fields": [],6  "fields": {7    "cdx_na_ig_5y_bps": {8      "value": 53.1,9      "prev": 54.7,10      "delta_bps": -1.6,11      "as_of": "2026-07-30",12      "stale": false13    },14    "cdx_na_hy_5y_bps": {15      "value": 313.6,16      "prev": 322.4,17      "delta_bps": -8.8,18      "as_of": "2026-07-30",19      "stale": false20    }21  },22  "note": "on-the-run 5Y composite spreads, T-2 by source — the credit market's risk gauge; full series at /api/v3/credit/indices"23}

Widening IG/HY spreads signal risk-off; tightening signals risk-on. The block is T-2 (two sessions behind) because the underlying composites are disseminated with a lag — as_of always tells you the true date, and stale flags per field. For the full index history by series and tenor, use /api/v3/credit/indices.