From 55f8e68a3145f6ad61e2e000b1c0f310b8787775 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 31 Aug 2026 10:53:46 +0800 Subject: [PATCH 1/3] feat: Supply Chain + Consumer Demand Intelligence (cross-industry expansion #2 and #3) Closes out the 3-part cross-industry expansion (real estate was #1, shipped 2026-08-30). Both new modules follow the same pattern as real_estate_service.py: FRED national indicators paired with an explicit ticker map of names/sectors with a real, direct linkage -- None for any unmapped ticker, never a fabricated reading. - services/supply_chain_service.py: inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment -- mapped to freight carriers, railroads, logistics, and 2 transportation ETFs. New GET /v1/supply-chain/{ticker}. - services/consumer_demand_service.py: retail sales, personal consumption expenditures, durable goods consumption -- mapped to large retailers, e-commerce, and 2 consumer-discretionary ETFs. New GET /v1/consumer-demand/{ticker}. Deliberately NOT Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists (see that module's docstring); real FRED consumer-spending data is a more reliable proxy for the same question at zero legal risk. Also explicitly excludes UMCSENT (University of Michigan Consumer Sentiment) despite being on FRED, since it carries a third-party copyright notice per FRED's own terms -- verified by direct fetch of fred.stlouisfed.org/series/UMCSENT before excluding it. All FRED series IDs verified live via direct fetch of their FRED series pages before use (ISRATIO, AMTMNO, DGORDER, IPMAN, MANEMP, RSAFS, RSXFS, PCE, PCEDG) -- all Census Bureau/BEA sourced, 'Public Domain: Citation Requested', no third-party copyright marker. Also: wired both into intelligence status, changelog, PUBLIC_INTEL_PATHS, quota weights (2 each, same tier as real_estate/agriculture/energy), and 2 new scheduler pre-warm jobs (03:20, 03:25 UTC). --- api/intelligence.py | 66 +++++++ backend/main.py | 42 +++++ services/consumer_demand_service.py | 246 +++++++++++++++++++++++++ services/intelligence_quota_service.py | 6 + services/supply_chain_service.py | 239 ++++++++++++++++++++++++ 5 files changed, 599 insertions(+) create mode 100644 services/consumer_demand_service.py create mode 100644 services/supply_chain_service.py diff --git a/api/intelligence.py b/api/intelligence.py index fa093f9..908d3d7 100644 --- a/api/intelligence.py +++ b/api/intelligence.py @@ -263,6 +263,8 @@ def intelligence_status(): "bank_health": True, # never 503s -- returns data: null for a ticker with no FDIC-mapped lead subsidiary "agriculture": True, # never 503s -- returns data: null for a ticker with no USDA commodity linkage "real_estate": True, # never 503s -- returns data: null for a ticker with no housing-market linkage + "supply_chain": True, # never 503s -- returns data: null for a ticker with no freight/logistics linkage + "consumer_demand": True, # never 503s -- returns data: null for a ticker with no consumer-spending linkage "webhooks": True, # management endpoints, never 503 -- Pro-tier gated (403 for free keys), see services/webhook_service.py }) @@ -278,6 +280,14 @@ def intelligence_status(): # changes programmatically) and rendered on intelligence-api.html#changelog. # --------------------------------------------------------------------------- INTELLIGENCE_CHANGELOG = [ + { + "date": "2026-08-31", + "changes": [ + {"type": "added", "text": "GET /v1/supply-chain/{ticker} -- FRED inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, and manufacturing employment for freight/logistics-linked tickers (carriers, railroads, transportation ETFs). Second of 3 cross-industry expansion candidates."}, + {"type": "added", "text": "GET /v1/consumer-demand/{ticker} -- FRED retail sales, personal consumption expenditures, and durable goods consumption for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs). Third of 3 cross-industry expansion candidates -- not Google Trends search-interest data, see that endpoint's docs for why."}, + {"type": "fixed", "text": "News search (/v1/events, /v1/sentiment) now resolves bare ticker queries to their real company name before searching headlines, and widens the GDELT lookback window -- fixes zero-results for well-known large-cap tickers whose headlines almost never contain the bare ticker symbol."}, + ], + }, { "date": "2026-08-30", "changes": [ @@ -1221,6 +1231,60 @@ def intelligence_real_estate( return _envelope(data=result, meta={"ticker": ticker}) +@router.get("/intelligence/v1/supply-chain/{ticker}") +def intelligence_supply_chain( + response: Response, + ticker: str, + x_api_key: str = Header(None, alias="X-API-Key"), +): + """FRED US manufacturing/supply-chain context for `ticker` (services/ + supply_chain_service.py -- inventory/sales ratio, manufacturing new + orders, durable goods orders, industrial production, manufacturing + employment). Only populated for tickers with a real freight/logistics + linkage (carriers, railroads, transportation ETFs -- see that + module's _TICKER_TO_NAME) -- any other ticker returns `data: null`, + never a fabricated reading for an unrelated symbol.""" + auth = _require_api_key(x_api_key) + _check_and_spend_quota(x_api_key, auth["tier"], "supply_chain", response, ticker=ticker.upper()) + + from services.supply_chain_service import get_supply_chain_context_for_ticker + + ticker = ticker.upper().strip() + result = get_supply_chain_context_for_ticker(ticker) + if not result: + return _envelope(data=None, error=f"No supply-chain linkage for {ticker}") + + return _envelope(data=result, meta={"ticker": ticker}) + + +@router.get("/intelligence/v1/consumer-demand/{ticker}") +def intelligence_consumer_demand( + response: Response, + ticker: str, + x_api_key: str = Header(None, alias="X-API-Key"), +): + """FRED US consumer-spending context for `ticker` (services/ + consumer_demand_service.py -- retail sales, personal consumption + expenditures, durable goods consumption). NOT Google Trends search- + interest data -- see that module's docstring for why (no officially + licensed, commercial-use-safe search-trends API exists). Only + populated for tickers with a real consumer-spending linkage (large + retailers, e-commerce, consumer-discretionary ETFs -- see that + module's _TICKER_TO_NAME) -- any other ticker returns `data: null`, + never a fabricated reading for an unrelated symbol.""" + auth = _require_api_key(x_api_key) + _check_and_spend_quota(x_api_key, auth["tier"], "consumer_demand", response, ticker=ticker.upper()) + + from services.consumer_demand_service import get_consumer_demand_context_for_ticker + + ticker = ticker.upper().strip() + result = get_consumer_demand_context_for_ticker(ticker) + if not result: + return _envelope(data=None, error=f"No consumer-spending linkage for {ticker}") + + return _envelope(data=result, meta={"ticker": ticker}) + + @router.get("/intelligence/v1/exchange/{ticker}") def intelligence_exchange( response: Response, @@ -1435,6 +1499,8 @@ def intelligence_webhooks_unsubscribe( "/intelligence/v1/bank-health/{ticker}", "/intelligence/v1/agriculture/{ticker}", "/intelligence/v1/real-estate/{ticker}", + "/intelligence/v1/supply-chain/{ticker}", + "/intelligence/v1/consumer-demand/{ticker}", "/intelligence/v1/webhooks/subscribe", "/intelligence/v1/webhooks", "/intelligence/v1/webhooks/{webhook_id}", diff --git a/backend/main.py b/backend/main.py index b902b72..6f8d4ea 100644 --- a/backend/main.py +++ b/backend/main.py @@ -542,6 +542,48 @@ def _run_real_estate_refresh_job(): ) +# 2026-08-31 -- same pre-warm reasoning as _run_real_estate_refresh_job +# above, for services/supply_chain_service.py's 5 series. +def _run_supply_chain_refresh_job(): + try: + from services import supply_chain_service + if supply_chain_service.is_available(): + for meta in supply_chain_service._SERIES.values(): + supply_chain_service._fetch_series(meta["series_id"], n_obs=1) + except Exception: + pass + +_push_scheduler.add_job( + _run_supply_chain_refresh_job, + "cron", + hour=3, + minute=20, + id="supply_chain_refresh", + replace_existing=True, +) + + +# 2026-08-31 -- same pre-warm reasoning as _run_real_estate_refresh_job +# above, for services/consumer_demand_service.py's 4 series. +def _run_consumer_demand_refresh_job(): + try: + from services import consumer_demand_service + if consumer_demand_service.is_available(): + for meta in consumer_demand_service._SERIES.values(): + consumer_demand_service._fetch_series(meta["series_id"], n_obs=1) + except Exception: + pass + +_push_scheduler.add_job( + _run_consumer_demand_refresh_job, + "cron", + hour=3, + minute=25, + id="consumer_demand_refresh", + replace_existing=True, +) + + def _run_cftc_cot_refresh_job(): try: from services.cftc_cot_service import get_snapshot diff --git a/services/consumer_demand_service.py b/services/consumer_demand_service.py new file mode 100644 index 0000000..4beaae1 --- /dev/null +++ b/services/consumer_demand_service.py @@ -0,0 +1,246 @@ +""" +Consumer Demand Intelligence -- 2026-08-31, Company Network cross-industry +expansion #3 (AJ: "由1開始順住做" -- real estate was #1, supply chain was +#2, this closes out the originally-scoped "search trends/consumer" +candidate). + +Scoping note, stated honestly up front: this is NOT literal Google +Trends search-volume data. Google Trends has no official, stable, +commercially-licensed API -- the only ways to pull it programmatically +are unofficial scrapers (e.g. pytrends) hitting an undocumented Google +endpoint with no ToS grant for commercial redistribution. That fails +this codebase's already-established bar for what gets built against +(see services/license_registry.py's rejections of bbc_rss pending +verification, reddit_unauthenticated, stocktwits, and oilpriceapi_ +baltic_dry_index -- the consistent rule here is "don't build a paid +feature on a data path that isn't verified-legal to redistribute"). +Instead this module covers the same underlying question ("is consumer +demand strengthening or weakening") with real, government-published, +public-domain aggregate spending/retail-sales data -- a strictly more +reliable signal than search-interest proxies anyway, at zero legal risk. + +Same shape as services/real_estate_service.py and services/ +supply_chain_service.py -- national consumer-spending indicators paired +with the specific tickers they're actually relevant to (large retailers, +e-commerce, consumer-discretionary ETFs), never presented as a reading +for an unrelated symbol. + +Series chosen (all verified live on FRED, U.S. Census Bureau / BEA +source, "Public Domain: Citation Requested" tag -- deliberately +excluding University of Michigan: Consumer Sentiment (UMCSENT), which +IS on FRED but is marked with a third-party copyright notice requiring +the data owner's permission before non-personal use per FRED's own +terms; see services/license_registry.py's "fred" entry for that rule): +- RSAFS: Advance Retail Sales, Retail Trade and Food Services -- the + headline monthly retail-spending figure. +- RSXFS: Advance Retail Sales, Retail Trade (excludes food services) -- + the goods-only slice, closer to what a retailer/e-commerce ticker + actually sells. +- PCE: Personal Consumption Expenditures -- broader than retail alone, + covers services spending too. +- PCEDG: Personal Consumption Expenditures, Durable Goods -- the most + cyclical/discretionary slice, most sensitive to demand swings. + +Zero new API integration, zero new signup: reuses FRED (services/ +fred_macro_service.py already established the dormant-until-FRED_API_KEY +convention and the attribution text this module copies verbatim). +Keeps its own independent _fetch_series()/cache/persistence, per this +codebase's per-collector-module-independence convention (see services/ +sec_form4_service.py's module docstring for why) -- NOT a shared import +from fred_macro_service.py, real_estate_service.py, or supply_chain_ +service.py. + +Honesty contract, same as the rest of this family: FRED's "." (missing +observation) is dropped, never coerced to 0 or interpolated. A ticker not +in _TICKER_TO_NAME below gets `None` from get_consumer_demand_context_ +for_ticker(), not a fabricated "no data" reading dressed up as a real one. +""" +import logging +import os +import sqlite3 +from datetime import datetime, timezone +from typing import Dict, Optional + +from services.outbound_http import get_with_backoff +from services.data_source_registry import ( + register_source, is_source_enabled, record_run_start, + record_run_success, record_run_error, +) + +logger = logging.getLogger(__name__) + +FRED_API_KEY_ENV = "FRED_API_KEY" +FRED_BASE_URL = "https://api.stlouisfed.org/fred/series/observations" +ATTRIBUTION = "This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis." + +SOURCE_KEY = "consumer_demand_fred" +register_source(SOURCE_KEY, "FRED US Consumer Spending/Retail", "consumer_demand") + +_DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "xfinlab.db") + + +def _init_persistence_table(): + conn = sqlite3.connect(_DB_PATH) + conn.execute(""" + CREATE TABLE IF NOT EXISTS consumer_demand_observations ( + series_id TEXT NOT NULL, + date TEXT NOT NULL, + value REAL NOT NULL, + fetched_at TEXT DEFAULT (datetime('now')), + PRIMARY KEY (series_id, date) + ) + """) + conn.commit() + conn.close() + + +_init_persistence_table() + + +def _persist_observations(series_id: str, observations: list): + if not observations: + return + try: + conn = sqlite3.connect(_DB_PATH) + conn.executemany( + """ + INSERT INTO consumer_demand_observations (series_id, date, value, fetched_at) + VALUES (?, ?, ?, datetime('now')) + ON CONFLICT(series_id, date) DO UPDATE SET value=excluded.value, fetched_at=excluded.fetched_at + """, + [(series_id, o["date"], o["value"]) for o in observations], + ) + conn.commit() + conn.close() + except Exception as e: + logger.info("consumer_demand_service: failed to persist %s: %s", series_id, e) + + +def _load_persisted(series_id: str, n_obs: int) -> Optional[list]: + try: + conn = sqlite3.connect(_DB_PATH) + rows = conn.execute( + "SELECT date, value FROM consumer_demand_observations WHERE series_id=? ORDER BY date DESC LIMIT ?", + (series_id, n_obs), + ).fetchall() + conn.close() + if not rows: + return None + return [{"date": d, "value": v} for d, v in reversed(rows)] + except Exception: + return None + + +_SERIES = { + "retail_sales_total_musd": {"series_id": "RSAFS", "label": "Advance Retail Sales: Retail Trade and Food Services", "unit": "$ millions"}, + "retail_sales_goods_only_musd": {"series_id": "RSXFS", "label": "Advance Retail Sales: Retail Trade", "unit": "$ millions"}, + "personal_consumption_expenditures_busd": {"series_id": "PCE", "label": "Personal Consumption Expenditures", "unit": "$ billions, SAAR"}, + "durable_goods_consumption_busd": {"series_id": "PCEDG", "label": "Personal Consumption Expenditures: Durable Goods", "unit": "$ billions, SAAR"}, +} + +_CACHE_TTL_SECONDS = 6 * 3600 +_cache: Dict[str, Dict] = {} + + +def is_available() -> bool: + return bool(os.getenv(FRED_API_KEY_ENV)) + + +def _fetch_series(series_id: str, n_obs: int = 1) -> Optional[list]: + """Returns up to n_obs most recent observations, oldest-first. Same + in-memory-cache -> persisted-table -> None fallback chain as + fred_macro_service.py's _fetch_series; kept as an independent copy + here per this codebase's per-collector-module-independence + convention.""" + now = datetime.now(timezone.utc).timestamp() + cached = _cache.get(series_id) + if cached and (now - cached["fetched_at"]) < _CACHE_TTL_SECONDS: + return cached["observations"] + + if not is_source_enabled(SOURCE_KEY): + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + + params = { + "series_id": series_id, + "api_key": os.getenv(FRED_API_KEY_ENV), + "file_type": "json", + "sort_order": "desc", + "limit": n_obs, + } + record_run_start(SOURCE_KEY) + try: + res = get_with_backoff(FRED_BASE_URL, params=params, timeout=10) + if res.status_code != 200: + record_run_error(SOURCE_KEY, f"{series_id}: HTTP {res.status_code}") + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + payload = res.json() + except Exception as e: + logger.info("consumer_demand_service: failed to fetch %s: %s", series_id, e) + record_run_error(SOURCE_KEY, f"{series_id}: {e}") + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + + rows = payload.get("observations") or [] + observations = [] + for row in reversed(rows): + raw_value = row.get("value") + if raw_value in (None, ".", ""): + continue + try: + observations.append({"date": row.get("date"), "value": round(float(raw_value), 3)}) + except (TypeError, ValueError): + continue + + if observations: + _cache[series_id] = {"fetched_at": now, "observations": observations} + _persist_observations(series_id, observations) + record_run_success(SOURCE_KEY) + return observations + record_run_error(SOURCE_KEY, f"{series_id}: fetch returned zero usable observations") + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + + +# Large retailers, e-commerce, and 2 consumer-discretionary ETFs -- +# tickers whose revenue is directly, mechanically exposed to aggregate +# US consumer spending. Deliberately NOT every ticker with "consumer" +# anywhere in its business description -- same conservative-linkage +# reasoning as eia_energy_service.py's USO/UNG-only scope. +_TICKER_TO_NAME = { + "WMT": "Walmart", "TGT": "Target", "COST": "Costco Wholesale", + "HD": "The Home Depot", "LOW": "Lowe's Companies", "AMZN": "Amazon.com", + "BBY": "Best Buy", "TJX": "The TJX Companies", "ROST": "Ross Stores", + "XRT": "SPDR S&P Retail ETF", "XLY": "Consumer Discretionary Select Sector SPDR Fund", +} + + +def get_consumer_demand_context_for_ticker(ticker: str) -> Optional[Dict]: + """Returns {"matched_ticker": "WMT", "matched_name": "Walmart", + "attribution": "...", "indicators": {series_key: {...} or None}} + or None if this ticker has no consumer-spending linkage at all + (never a fabricated reading for an unrelated symbol).""" + ticker = (ticker or "").upper().strip() + name = _TICKER_TO_NAME.get(ticker) + if not name: + return None + if not is_available(): + return {"matched_ticker": ticker, "matched_name": name, "available": False, + "message": f"{FRED_API_KEY_ENV} 未設定,消費數據暫時未開放。"} + + indicators: Dict[str, Optional[Dict]] = {} + for key, meta in _SERIES.items(): + obs = _fetch_series(meta["series_id"], n_obs=1) + indicators[key] = ( + {"label": meta["label"], "unit": meta["unit"], "date": obs[-1]["date"], "value": obs[-1]["value"]} + if obs else None + ) + + return { + "matched_ticker": ticker, + "matched_name": name, + "attribution": ATTRIBUTION, + "indicators": indicators, + } + + +if __name__ == "__main__": + import json + print(json.dumps(get_consumer_demand_context_for_ticker("WMT"), indent=2, ensure_ascii=False)) diff --git a/services/intelligence_quota_service.py b/services/intelligence_quota_service.py index c1a780d..a8837f3 100644 --- a/services/intelligence_quota_service.py +++ b/services/intelligence_quota_service.py @@ -173,6 +173,12 @@ # same cost shape as agriculture/energy -- 4 small FRED series fetches # against an explicit ticker map, 6h server-side cached. Priced the same. "real_estate": 2, + # same shape/cost as real_estate above -- 5 small FRED series fetches + # against an explicit ticker map, 6h server-side cached. + "supply_chain": 2, + # same shape/cost as real_estate above -- 4 small FRED series fetches + # against an explicit ticker map, 6h server-side cached. + "consumer_demand": 2, } diff --git a/services/supply_chain_service.py b/services/supply_chain_service.py new file mode 100644 index 0000000..3dc5850 --- /dev/null +++ b/services/supply_chain_service.py @@ -0,0 +1,239 @@ +""" +Supply Chain Intelligence -- 2026-08-31, Company Network cross-industry +expansion #2 (AJ: "由1開始順住做" -- real estate was #1, this is #2, +search-trends/consumer is #3). + +What this is: same shape as services/real_estate_service.py and +services/eia_energy_service.py -- national supply-chain/manufacturing- +throughput indicators paired with the specific tickers they're actually +relevant to (freight/logistics carriers, railroads, transportation +ETFs), never presented as a reading for an unrelated symbol. + +Series chosen (all verified live on FRED, U.S. Census Bureau source, +public-domain-citation-requested, no proprietary/subscription data): +- ISRATIO: Total Business Inventories/Sales Ratio -- a rising ratio + means goods are piling up relative to sales (demand-side slack or + supply-side overproduction); a falling ratio into multi-year lows can + signal restocking pressure / tight availability. +- AMTMNO: Manufacturers' New Orders, Total Manufacturing -- forward- + looking demand signal for the whole production chain. +- DGORDER: Manufacturers' New Orders, Durable Goods -- same signal, + durable-goods slice (more volatile, more cyclical). +- IPMAN: Industrial Production, Manufacturing (NAICS) -- actual output, + not just orders. +- MANEMP: All Employees, Manufacturing -- headcount-side capacity signal. + +None of these are a literal "supply chain pressure index" (the NY Fed's +GSCPI is published as a standalone spreadsheet, not a FRED series with a +stable API-fetchable series_id, so it's deliberately excluded here -- +same "don't fabricate a data path that doesn't reliably exist" standard +applied throughout this codebase) but together they're a real, honestly- +sourced read on manufacturing throughput and inventory tightness, which +is what actually moves freight/logistics-ticker fundamentals. + +Zero new API integration, zero new signup: reuses FRED (services/ +fred_macro_service.py already established the dormant-until-FRED_API_KEY +convention and the attribution text this module copies verbatim). +Keeps its own independent _fetch_series()/cache/persistence, per this +codebase's per-collector-module-independence convention (see services/ +sec_form4_service.py's module docstring for why) -- NOT a shared import +from fred_macro_service.py or real_estate_service.py. + +Honesty contract, same as fred_macro_service.py: FRED's "." (missing +observation) is dropped, never coerced to 0 or interpolated. A ticker not +in _TICKER_TO_NAME below gets `None` from get_supply_chain_context_for_ +ticker(), not a fabricated "no data" reading dressed up as a real one. +""" +import logging +import os +import sqlite3 +from datetime import datetime, timezone +from typing import Dict, Optional + +from services.outbound_http import get_with_backoff +from services.data_source_registry import ( + register_source, is_source_enabled, record_run_start, + record_run_success, record_run_error, +) + +logger = logging.getLogger(__name__) + +FRED_API_KEY_ENV = "FRED_API_KEY" +FRED_BASE_URL = "https://api.stlouisfed.org/fred/series/observations" +ATTRIBUTION = "This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis." + +SOURCE_KEY = "supply_chain_fred" +register_source(SOURCE_KEY, "FRED US Manufacturing/Supply Chain", "supply_chain") + +_DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "xfinlab.db") + + +def _init_persistence_table(): + conn = sqlite3.connect(_DB_PATH) + conn.execute(""" + CREATE TABLE IF NOT EXISTS supply_chain_observations ( + series_id TEXT NOT NULL, + date TEXT NOT NULL, + value REAL NOT NULL, + fetched_at TEXT DEFAULT (datetime('now')), + PRIMARY KEY (series_id, date) + ) + """) + conn.commit() + conn.close() + + +_init_persistence_table() + + +def _persist_observations(series_id: str, observations: list): + if not observations: + return + try: + conn = sqlite3.connect(_DB_PATH) + conn.executemany( + """ + INSERT INTO supply_chain_observations (series_id, date, value, fetched_at) + VALUES (?, ?, ?, datetime('now')) + ON CONFLICT(series_id, date) DO UPDATE SET value=excluded.value, fetched_at=excluded.fetched_at + """, + [(series_id, o["date"], o["value"]) for o in observations], + ) + conn.commit() + conn.close() + except Exception as e: + logger.info("supply_chain_service: failed to persist %s: %s", series_id, e) + + +def _load_persisted(series_id: str, n_obs: int) -> Optional[list]: + try: + conn = sqlite3.connect(_DB_PATH) + rows = conn.execute( + "SELECT date, value FROM supply_chain_observations WHERE series_id=? ORDER BY date DESC LIMIT ?", + (series_id, n_obs), + ).fetchall() + conn.close() + if not rows: + return None + return [{"date": d, "value": v} for d, v in reversed(rows)] + except Exception: + return None + + +_SERIES = { + "inventory_sales_ratio": {"series_id": "ISRATIO", "label": "Total Business Inventories/Sales Ratio", "unit": "ratio"}, + "manufacturing_new_orders_musd": {"series_id": "AMTMNO", "label": "Manufacturers' New Orders: Total Manufacturing", "unit": "$ millions"}, + "durable_goods_orders_musd": {"series_id": "DGORDER", "label": "Manufacturers' New Orders: Durable Goods", "unit": "$ millions"}, + "industrial_production_manufacturing_index": {"series_id": "IPMAN", "label": "Industrial Production: Manufacturing (NAICS)", "unit": "index (2017=100)"}, + "manufacturing_employment_thousands": {"series_id": "MANEMP", "label": "All Employees: Manufacturing", "unit": "thousand persons"}, +} + +_CACHE_TTL_SECONDS = 6 * 3600 +_cache: Dict[str, Dict] = {} + + +def is_available() -> bool: + return bool(os.getenv(FRED_API_KEY_ENV)) + + +def _fetch_series(series_id: str, n_obs: int = 1) -> Optional[list]: + """Returns up to n_obs most recent observations, oldest-first. Same + in-memory-cache -> persisted-table -> None fallback chain as + fred_macro_service.py's _fetch_series; kept as an independent copy + here per this codebase's per-collector-module-independence + convention.""" + now = datetime.now(timezone.utc).timestamp() + cached = _cache.get(series_id) + if cached and (now - cached["fetched_at"]) < _CACHE_TTL_SECONDS: + return cached["observations"] + + if not is_source_enabled(SOURCE_KEY): + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + + params = { + "series_id": series_id, + "api_key": os.getenv(FRED_API_KEY_ENV), + "file_type": "json", + "sort_order": "desc", + "limit": n_obs, + } + record_run_start(SOURCE_KEY) + try: + res = get_with_backoff(FRED_BASE_URL, params=params, timeout=10) + if res.status_code != 200: + record_run_error(SOURCE_KEY, f"{series_id}: HTTP {res.status_code}") + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + payload = res.json() + except Exception as e: + logger.info("supply_chain_service: failed to fetch %s: %s", series_id, e) + record_run_error(SOURCE_KEY, f"{series_id}: {e}") + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + + rows = payload.get("observations") or [] + observations = [] + for row in reversed(rows): + raw_value = row.get("value") + if raw_value in (None, ".", ""): + continue + try: + observations.append({"date": row.get("date"), "value": round(float(raw_value), 3)}) + except (TypeError, ValueError): + continue + + if observations: + _cache[series_id] = {"fetched_at": now, "observations": observations} + _persist_observations(series_id, observations) + record_run_success(SOURCE_KEY) + return observations + record_run_error(SOURCE_KEY, f"{series_id}: fetch returned zero usable observations") + return (cached["observations"] if cached else None) or _load_persisted(series_id, n_obs) + + +# Freight carriers, railroads, logistics operators, and 2 transportation +# ETFs -- tickers whose fundamentals are directly, mechanically exposed +# to manufacturing throughput and inventory cycles (they physically move +# the goods these indicators measure). Deliberately NOT every ticker +# with "supply chain" in its business description -- same conservative- +# linkage reasoning as eia_energy_service.py's USO/UNG-only scope. +_TICKER_TO_NAME = { + "FDX": "FedEx", "UPS": "United Parcel Service", "XPO": "XPO Inc", + "JBHT": "J.B. Hunt Transport Services", "CHRW": "C.H. Robinson Worldwide", + "ODFL": "Old Dominion Freight Line", "GXO": "GXO Logistics", + "EXPD": "Expeditors International of Washington", + "CSX": "CSX Corporation", "UNP": "Union Pacific Corporation", "NSC": "Norfolk Southern Corporation", + "IYT": "iShares Transportation Average ETF", "XTN": "SPDR S&P Transportation ETF", +} + + +def get_supply_chain_context_for_ticker(ticker: str) -> Optional[Dict]: + """Returns {"matched_ticker": "FDX", "matched_name": "FedEx", + "attribution": "...", "indicators": {series_key: {...} or None}} + or None if this ticker has no supply-chain/freight linkage at all + (never a fabricated reading for an unrelated symbol).""" + ticker = (ticker or "").upper().strip() + name = _TICKER_TO_NAME.get(ticker) + if not name: + return None + if not is_available(): + return {"matched_ticker": ticker, "matched_name": name, "available": False, + "message": f"{FRED_API_KEY_ENV} 未設定,供應鏈數據暫時未開放。"} + + indicators: Dict[str, Optional[Dict]] = {} + for key, meta in _SERIES.items(): + obs = _fetch_series(meta["series_id"], n_obs=1) + indicators[key] = ( + {"label": meta["label"], "unit": meta["unit"], "date": obs[-1]["date"], "value": obs[-1]["value"]} + if obs else None + ) + + return { + "matched_ticker": ticker, + "matched_name": name, + "attribution": ATTRIBUTION, + "indicators": indicators, + } + + +if __name__ == "__main__": + import json + print(json.dumps(get_supply_chain_context_for_ticker("FDX"), indent=2, ensure_ascii=False)) From 6f550e11c4ecb3778099ae23a5ed7ca61fc14888 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 31 Aug 2026 11:14:15 +0800 Subject: [PATCH 2/3] docs: add real-estate/supply-chain/consumer-demand to API docs + SDKs real-estate shipped 2026-08-30 without doc/SDK coverage; closing that gap together with the two endpoints in this same branch. - intelligence-api.html: 3 new endpoint cards (schema docs, response fields, coverage lists) + 3 new try-it-now console options. - services/i18n.py: 9 new i18n keys x 47 languages (ia_ep18/19/20 name+desc, 3 schema notes) -- English text in every language block, matching this file's existing convention that developer-facing API doc strings (ia_ prefix) stay English-only, unlike the consumer-app strings that got full per-language translation in the mixed-language audit. - sdk/python + sdk/js: real_estate()/realEstate(), supply_chain()/ supplyChain(), consumer_demand()/consumerDemand() methods, same shape as the existing agriculture()/energy() methods. --- intelligence-api.html | 73 ++++ sdk/js/xfinlab.js | 14 + sdk/python/xfinlab_intelligence/__init__.py | 24 ++ services/i18n.py | 423 ++++++++++++++++++++ 4 files changed, 534 insertions(+) diff --git a/intelligence-api.html b/intelligence-api.html index b24f629..d517f7b 100644 --- a/intelligence-api.html +++ b/intelligence-api.html @@ -273,6 +273,9 @@

Real market intelligence, structured for developer + + + GET /v1/events @@ -710,6 +713,71 @@

Real market intelligence, structured for developer

A subscription auto-deactivates after 5 consecutive delivery failures (check GET /webhooks for fail_count) -- re-subscribe once your endpoint is back up. Delivery is best-effort and fire-and-forget: a slow/dead receiver never blocks or retries indefinitely.

+ +
+
+
+ 2x +
+ GET /v1/real-estate/{ticker} +
Real Estate
+
FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).
+
+ Response fields +
+
data.matched_ticker, data.matched_name, data.attribution string
+
data.indicators object -- dynamically keyed (mortgage_rate_30y_pct, home_price_index, housing_starts_thousands, existing_home_sales_thousands), each value or null
+
  label, unit, date string
+
  value number
+
meta.ticker string
+
+

Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.

+
+
+
+
+
+ 2x +
+ GET /v1/supply-chain/{ticker} +
Supply Chain
+
FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).
+
+ Response fields +
+
data.matched_ticker, data.matched_name, data.attribution string
+
data.indicators object -- dynamically keyed (inventory_sales_ratio, manufacturing_new_orders_musd, durable_goods_orders_musd, industrial_production_manufacturing_index, manufacturing_employment_thousands), each value or null
+
  label, unit, date string
+
  value number
+
meta.ticker string
+
+

Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.

+
+
+
+
+
+ 2x +
+ GET /v1/consumer-demand/{ticker} +
Consumer Demand
+
FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).
+
+ Response fields +
+
data.matched_ticker, data.matched_name, data.attribution string
+
data.indicators object -- dynamically keyed (retail_sales_total_musd, retail_sales_goods_only_musd, personal_consumption_expenditures_busd, durable_goods_consumption_busd), each value or null
+
  label, unit, date string
+
  value number
+
meta.ticker string
+
+

Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.

+
+
@@ -1062,6 +1130,11 @@

Real market intelligence, structured for developer 'vix-term-structure':{ method: 'GET', needsTicker: false, needsAmount: false, path: function() { return '/intelligence/v1/vix-term-structure'; } }, 'bank-health': { method: 'GET', needsTicker: true, needsAmount: false, path: function(tk) { return '/intelligence/v1/bank-health/' + encodeURIComponent(tk); } }, 'agriculture': { method: 'GET', needsTicker: true, needsAmount: false, path: function(tk) { return '/intelligence/v1/agriculture/' + encodeURIComponent(tk); } }, + // 2026-08-30/31 cross-industry expansion -- all three are simple + // GET-by-ticker, same shape as energy/agriculture above. + 'real-estate': { method: 'GET', needsTicker: true, needsAmount: false, path: function(tk) { return '/intelligence/v1/real-estate/' + encodeURIComponent(tk); } }, + 'supply-chain': { method: 'GET', needsTicker: true, needsAmount: false, path: function(tk) { return '/intelligence/v1/supply-chain/' + encodeURIComponent(tk); } }, + 'consumer-demand': { method: 'GET', needsTicker: true, needsAmount: false, path: function(tk) { return '/intelligence/v1/consumer-demand/' + encodeURIComponent(tk); } }, }; function tryUpdateFields() { diff --git a/sdk/js/xfinlab.js b/sdk/js/xfinlab.js index 6a821e0..211bfc4 100644 --- a/sdk/js/xfinlab.js +++ b/sdk/js/xfinlab.js @@ -219,6 +219,20 @@ return this._get('/intelligence/v1/agriculture/' + encodeURIComponent(ticker)); }; + // 2026-08-30/31: cross-industry expansion -- real estate, supply + // chain, consumer demand. Same shape as agriculture()/energy() above. + XfinlabClient.prototype.realEstate = function (ticker) { + return this._get('/intelligence/v1/real-estate/' + encodeURIComponent(ticker)); + }; + + XfinlabClient.prototype.supplyChain = function (ticker) { + return this._get('/intelligence/v1/supply-chain/' + encodeURIComponent(ticker)); + }; + + XfinlabClient.prototype.consumerDemand = function (ticker) { + return this._get('/intelligence/v1/consumer-demand/' + encodeURIComponent(ticker)); + }; + // 2026-08-28: Pro-tier webhooks (push instead of polling). See // services/webhook_service.py's VALID_EVENT_TYPES for the exact // eventType values ('vix_regime_change' market-wide, 'new_13d_filing' diff --git a/sdk/python/xfinlab_intelligence/__init__.py b/sdk/python/xfinlab_intelligence/__init__.py index fa63bad..8a51c9d 100644 --- a/sdk/python/xfinlab_intelligence/__init__.py +++ b/sdk/python/xfinlab_intelligence/__init__.py @@ -248,6 +248,30 @@ def agriculture(self, ticker: str) -> dict: populated for CORN/WEAT/SOYB.""" return self._get(f"/intelligence/v1/agriculture/{ticker}") + # 2026-08-30/31: cross-industry expansion -- real estate, supply + # chain, consumer demand. Same shape as agriculture()/energy() above. + def real_estate(self, ticker: str) -> dict: + """FRED US housing-market context (30-year mortgage rate, + Case-Shiller home price index, housing starts, existing home + sales) -- only populated for homebuilders, REITs, a mortgage + originator, and housing-sector ETFs.""" + return self._get(f"/intelligence/v1/real-estate/{ticker}") + + def supply_chain(self, ticker: str) -> dict: + """FRED US manufacturing/supply-chain context (inventory/sales + ratio, manufacturing new orders, durable goods orders, industrial + production, manufacturing employment) -- only populated for + freight carriers, railroads, and transportation ETFs.""" + return self._get(f"/intelligence/v1/supply-chain/{ticker}") + + def consumer_demand(self, ticker: str) -> dict: + """FRED US consumer-spending context (retail sales, personal + consumption expenditures, durable goods consumption) -- only + populated for large retailers, e-commerce, and consumer- + discretionary ETFs. Not Google Trends data -- see the endpoint + docs for why.""" + return self._get(f"/intelligence/v1/consumer-demand/{ticker}") + # 2026-08-28: Pro-tier webhooks (push instead of polling). See # services/webhook_service.py's VALID_EVENT_TYPES for the exact # event_type values ("vix_regime_change" market-wide, "new_13d_filing" diff --git a/services/i18n.py b/services/i18n.py index 76a3a42..34b41e7 100644 --- a/services/i18n.py +++ b/services/i18n.py @@ -135,6 +135,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -1913,6 +1922,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -3690,6 +3708,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -5467,6 +5494,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -7244,6 +7280,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -9021,6 +9066,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -10798,6 +10852,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -12575,6 +12638,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -14352,6 +14424,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -16129,6 +16210,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -17906,6 +17996,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -19683,6 +19782,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -21460,6 +21568,15 @@ "ia_ep15_desc": "主要銀行控股公司主要子銀行的 FDIC 監理報告健康指標(ROA、ROE、資產、股東權益、淨利潤)。目前涵蓋 JPM、BAC、WFC、C、USB、PNC、TFC。", "ia_ep16_name": "農產品價格", "ia_ep16_desc": "USDA 玉米、小麥、大豆的農民實收價格數據——與 CORN/WEAT/SOYB 配對,方式如同 /v1/energy 與 USO/UNG 的配對。", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "缺少某個概念欄位代表該公司從未在 10-K 申報過那個 XBRL 標籤——絕不會用捏造的零值或 null 混入真實數據中。", "ia_schema_note_vix": "逆價差(近月波動率高於中期)歷史上常與市場壓力事件同時出現——這是市場狀態判讀,不是價格預測。", "ia_schema_note_bank_health": "反映受監管子銀行本身的監理報告,並非控股公司股票的合併 GAAP 財務數據——如需後者請使用 /v1/fundamentals。", @@ -23238,6 +23355,15 @@ "ia_ep15_desc": "主要銀行控股公司旗下主要子銀行嘅FDIC監管報告健康指標(ROA、ROE、資產、股東權益、淨利潤)。而家涵蓋JPM、BAC、WFC、C、USB、PNC、TFC。", "ia_ep16_name": "農產品價格", "ia_ep16_desc": "USDA粟米、小麥、大豆嘅農民實收價格數據——同CORN/WEAT/SOYB配對,方式同/v1/energy同USO/UNG配對一樣。", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "缺少某個概念欄位即係嗰間公司從未喺10-K申報過嗰個XBRL標籤——絕對唔會用捏造嘅零值或null混入真實數據入面。", "ia_schema_note_vix": "倒掛(近月波動率高過中期)歷史上經常同市場壓力事件一齊出現——呢個係市場狀態判讀,唔係價格預測。", "ia_schema_note_bank_health": "反映受監管子銀行本身嘅監理報告,唔係控股公司股票嘅合併GAAP財務數據——如果要後者請用/v1/fundamentals。", @@ -25016,6 +25142,15 @@ "ia_ep15_desc": "主要银行控股公司旗下主要子银行的FDIC监管报告健康指标(ROA、ROE、资产、股东权益、净利润)。目前覆盖JPM、BAC、WFC、C、USB、PNC、TFC。", "ia_ep16_name": "农产品价格", "ia_ep16_desc": "USDA玉米、小麦、大豆的农民实收价格数据——与CORN/WEAT/SOYB配对,方式与/v1/energy与USO/UNG配对相同。", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "缺少某个概念字段代表该公司从未在10-K中申报过那个XBRL标签——绝不会用捏造的零值或null混入真实数据中。", "ia_schema_note_vix": "倒挂(近月波动率高于中期)历史上常与市场压力事件同时出现——这是市场状态判读,不是价格预测。", "ia_schema_note_bank_health": "反映受监管子银行本身的监管报告,并非控股公司股票的合并GAAP财务数据——如需后者请使用/v1/fundamentals。", @@ -26794,6 +26929,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -28571,6 +28715,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -30348,6 +30501,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -32125,6 +32287,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -33902,6 +34073,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -35679,6 +35859,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -37456,6 +37645,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -39233,6 +39431,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -41010,6 +41217,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -42787,6 +43003,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -44564,6 +44789,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -46341,6 +46575,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -48118,6 +48361,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -49895,6 +50147,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -51672,6 +51933,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -53449,6 +53719,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -55226,6 +55505,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -57003,6 +57291,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -58780,6 +59077,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -60557,6 +60863,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -62334,6 +62649,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -64111,6 +64435,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -65888,6 +66221,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -67665,6 +68007,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -69442,6 +69793,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -71219,6 +71579,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -72996,6 +73365,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -74773,6 +75151,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -76550,6 +76937,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -78327,6 +78723,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -80104,6 +80509,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", @@ -81881,6 +82295,15 @@ "ia_ep15_desc": "FDIC Call Report health (ROA, ROE, assets, equity, net income) for a major bank holding company's lead insured subsidiary. Covers JPM, BAC, WFC, C, USB, PNC, TFC today.", "ia_ep16_name": "Agriculture Prices", "ia_ep16_desc": "USDA price-received-by-farmers data for corn, wheat, and soybeans — pairs with CORN/WEAT/SOYB the same way /v1/energy pairs with USO/UNG.", + "ia_ep18_name": "Real Estate", + "ia_ep18_desc": "FRED US housing-market context -- 30-year fixed mortgage rate, Case-Shiller home price index, housing starts, existing home sales. Only populated for housing-linked tickers (homebuilders, REITs, a mortgage originator, housing-sector ETFs).", + "ia_ep19_name": "Supply Chain", + "ia_ep19_desc": "FRED US manufacturing/supply-chain context -- inventory/sales ratio, manufacturing new orders, durable goods orders, industrial production, manufacturing employment. Only populated for freight/logistics-linked tickers (carriers, railroads, transportation ETFs).", + "ia_ep20_name": "Consumer Demand", + "ia_ep20_desc": "FRED US consumer-spending context -- retail sales, personal consumption expenditures, durable goods consumption. Not Google Trends search-interest data -- no officially licensed, commercial-use-safe search-trends API exists; real spending data is the more reliable proxy. Only populated for consumer-spending-linked tickers (large retailers, e-commerce, consumer-discretionary ETFs).", + "ia_schema_note_real_estate": "Returns data:null for any ticker without a real housing-market linkage -- never a fabricated reading for an unrelated symbol. Coverage: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB today.", + "ia_schema_note_supply_chain": "Returns data:null for any ticker without a real freight/logistics linkage -- never a fabricated reading for an unrelated symbol. Coverage: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN today.", + "ia_schema_note_consumer_demand": "Returns data:null for any ticker without a real consumer-spending linkage -- never a fabricated reading for an unrelated symbol. Coverage: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY today.", "ia_schema_note_fundamentals": "A missing concept key means that company has never reported that specific XBRL tag on a 10-K — never a fabricated zero or null placeholder mixed in with real figures.", "ia_schema_note_vix": "Backwardation (near-term vol priced above medium-term) has historically coincided with market stress episodes — this is a regime read, not a price prediction.", "ia_schema_note_bank_health": "Reflects the regulated lead bank subsidiary's own Call Report, not consolidated GAAP financials for the holding company's stock — use /v1/fundamentals for that.", From 0a6722adca24702a952562ff0117ed90919bb720 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 31 Aug 2026 11:17:40 +0800 Subject: [PATCH 3/3] fix: hero copy said 'Seven JSON endpoints', now 21 Found while proposing promotion next steps -- the count was stale since before this session even started (already ~20 endpoints, said seven). Updated the static HTML default, the English i18n entry, and the 3 Chinese variants (zh-TW/zh-HK/zh-CN, AJ's primary audience). The other 44 languages' ia_hero_p still say 'Seven ...' in their own language -- known gap, not silently left unflagged; full retranslation to match is a separate follow-up if wanted, out of scope for this pass. --- intelligence-api.html | 2 +- services/i18n.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/intelligence-api.html b/intelligence-api.html index d517f7b..ad5c8a7 100644 --- a/intelligence-api.html +++ b/intelligence-api.html @@ -179,7 +179,7 @@
EARLY ACCESS

Real market intelligence, structured for developers

-

Seven JSON endpoints — market events, FinBERT sentiment, multi-agent AI debate, structured intelligence feed, technical/market-structure analysis, Monte Carlo stress testing, and regime-aware signals — built on the same real data and anti-fabrication principles behind XFINLAB's own product. Free tier keys are issued instantly and automatically; Pro/Enterprise are still set up personally.

+

20+ JSON endpoints — market events, FinBERT sentiment, multi-agent AI debate, company network intelligence, fundamentals, and cross-industry macro context (energy, agriculture, real estate, supply chain, consumer demand) — built on the same real data and anti-fabrication principles behind XFINLAB's own product. Free tier keys are issued instantly and automatically; Pro/Enterprise are still set up personally.

Quickstart → Request Early Access diff --git a/services/i18n.py b/services/i18n.py index 34b41e7..295644a 100644 --- a/services/i18n.py +++ b/services/i18n.py @@ -79,7 +79,7 @@ "ia_nav_back": "← Back to XFINLAB", "ia_badge": "EARLY ACCESS", "ia_hero_title": "Real market intelligence, structured for developers", - "ia_hero_p": "Seven JSON endpoints — market events, FinBERT sentiment, multi-agent AI debate, structured intelligence feed, technical/market-structure analysis, Monte Carlo stress testing, and regime-aware signals — built on the same real data and anti-fabrication principles behind XFINLAB's own product. Free tier keys are issued instantly and automatically; Pro/Enterprise are still set up personally.", + "ia_hero_p": "20+ JSON endpoints — market events, FinBERT sentiment, multi-agent AI debate, company network intelligence, fundamentals, and cross-industry macro context (energy, agriculture, real estate, supply chain, consumer demand) — built on the same real data and anti-fabrication principles behind XFINLAB's own product. Free tier keys are issued instantly and automatically; Pro/Enterprise are still set up personally.", "ia_cta_quickstart": "Quickstart →", "ia_cta_access": "Request Early Access", "ia_cta_endpoints": "See the endpoints", @@ -21512,7 +21512,7 @@ "ia_nav_back": "← 返回 XFINLAB", "ia_badge": "搶先體驗", "ia_hero_title": "真實市場情報,為開發者結構化", - "ia_hero_p": "七個 JSON 端點——市場事件、FinBERT 情緒分析、多代理人 AI 辯論、結構化情報摘要、技術/市場結構分析、蒙地卡羅壓力測試,以及考慮市場機制的訊號——建立在與 XFINLAB 自家產品相同的真實數據與反捏造原則之上。免費方案金鑰即時自動發放;Pro/Enterprise 仍由專人設定。", + "ia_hero_p": "20+ 個 JSON 端點——市場事件、FinBERT 情緒分析、多代理人 AI 辯論、企業關係網絡情報、基本面數據,以及跨行業宏觀背景資訊(能源、農業、地產、供應鏈、消費需求)——建立在與 XFINLAB 自家產品相同的真實數據與反捏造原則之上。免費方案金鑰即時自動發放;Pro/Enterprise 仍由專人設定。", "ia_cta_quickstart": "快速開始 →", "ia_cta_access": " 申請搶先體驗", "ia_cta_endpoints": "查看端點", @@ -23299,7 +23299,7 @@ "ia_nav_back": "← 返回 XFINLAB", "ia_badge": "搶先體驗", "ia_hero_title": "真實市場情報,為開發者度身結構化", - "ia_hero_p": "七個 JSON 端點——市場事件、FinBERT 情緒分析、多代理人 AI 辯論、結構化情報摘要、技術/市場結構分析、蒙地卡羅壓力測試,同埋考慮市場機制嘅訊號——建立喺同 XFINLAB 自家產品一樣嘅真實數據同反捏造原則之上。免費方案key即時自動發放;Pro/Enterprise 就仍然由專人設定。", + "ia_hero_p": "20+ 個 JSON 端點——市場事件、FinBERT 情緒分析、多代理人 AI 辯論、企業關係網絡情報、基本面數據,同埋跨行業宏觀背景資訊(能源、農業、地產、供應鏈、消費需求)——建立喺同 XFINLAB 自家產品一樣嘅真實數據同反捏造原則之上。免費方案key即時自動發放;Pro/Enterprise 就仍然由專人設定。", "ia_cta_quickstart": "快速開始 →", "ia_cta_access": " 申請搶先體驗", "ia_cta_endpoints": "睇下啲端點", @@ -25086,7 +25086,7 @@ "ia_nav_back": "← 返回 XFINLAB", "ia_badge": "抢先体验", "ia_hero_title": "真实市场情报,为开发者结构化", - "ia_hero_p": "七个 JSON 端点——市场事件、FinBERT 情绪分析、多代理人 AI 辩论、结构化情报摘要、技术/市场结构分析、蒙特卡洛压力测试,以及考虑市场机制的信号——建立在与 XFINLAB 自家产品相同的真实数据与反捏造原则之上。免费方案密钥即时自动发放;Pro/Enterprise 仍由专人设置。", + "ia_hero_p": "20+ 个 JSON 端点——市场事件、FinBERT 情绪分析、多代理人 AI 辩论、企业关系网络情报、基本面数据,以及跨行业宏观背景信息(能源、农业、房地产、供应链、消费需求)——建立在与 XFINLAB 自家产品相同的真实数据与反捏造原则之上。免费方案密钥即时自动发放;Pro/Enterprise 仍由专人设置。", "ia_cta_quickstart": "快速开始 →", "ia_cta_access": " 申请抢先体验", "ia_cta_endpoints": "查看端点",