01HYPERSCALER AI CAPEX
Combined quarterly capex ($B)
Capex by company ($B, quarterly)
Latest quarter detail
02CAPEX VS CASH GENERATION
Capex growth vs. FCF growth (YoY %)
Capex as % of operating cash flow
Cash generation detail — latest quarter
03AI MONETIZATION
AI revenue growth (YoY %, where disclosed)
Combined AI-linked capex ($B, TTM)
Est. AI revenue ÷ AI infra capex (TTM)
04NVIDIA
Revenue vs. Data Center revenue ($B)
Gross & operating margin (%)
Inventory & receivables growth vs. revenue growth (YoY %)
Signal detail
05MEMORY / HBM
Micron revenue & HBM/data-center revenue ($B)
Micron gross margin & inventory days
06DEPRECIATION WALL
Combined capex vs. combined depreciation ($B)
D&A growth vs. revenue growth (YoY %)
07ELECTRICITY / DATA-CENTER DEMAND
US data-center electricity demand (TWh/yr)
Announced vs. actual operating capacity (GW)
08S&P 500 CONCENTRATION
Combined weight over time (%)
Current weight by company (%)
09AI SUPPLY CHAIN MAP
10WARNING SIGNALS
DATASCHEMA, SOURCES & LIVE-DATA CONFIGURATION
1. Standardized record schema
Every metric in this dashboard — regardless of ultimate source (CSV, JSON, API, SEC filing, FRED) — is expected in this flat shape. The rendering layer reads only this shape, so replacing DATA_SOURCE below is the only change required to go live.
{
"company": "MSFT", // ticker or entity id
"ticker": "MSFT",
"cik": "0000789019",
"quarter": "Q3",
"fiscal_year": 2025,
"period_start": "2025-01-01", // null for instant (balance-sheet) facts
"period_end": "2025-03-31",
"metric": "capex_quarterly", // see field list below
"value": 19500000000, // null when not_disclosed
"unit": "USD",
"source": "SEC EDGAR XBRL Company Facts",
"api_source_url": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000789019.json",
"filing_source_url": "https://www.sec.gov/Archives/edgar/data/789019/000...-index.htm",
"accession_number": "0000789019-25-000045",
"form": "10-Q",
"xbrl_concept": "PaymentsToAcquirePropertyPlantAndEquipment",
"reported_or_estimated": "reported", // reported | calculated | not_disclosed
"last_updated": "2025-10-24"
}
A record is reported when it's a single disclosed XBRL fact, calculated when this pipeline derived it (a standalone quarter from cumulative facts, or a ratio like FCF margin), or not_disclosed when SEC does not standardize the metric at all (value is always null in that case — never estimated).
2. Required external data fields
3. Recommended data source per field group
4. Bubble Risk Index — calculation transparency
The index is a weighted composite of five sub-scores, each normalized 0–100 from underlying growth-rate gaps (never fabricated — see computeBubbleIndex() in the page source). Weights are configurable in CONFIG.riskWeights.
5. Instructions — replacing demonstration data with live data
CONFIG.dataSource.mode to "json" or "api" and set CONFIG.dataSource.url (or path for a local file).loadData() fetches the records, reshapeData() pivots them into the per-section structures the charts already read, and every chart, table, and the risk index recompute automatically.source, source_url, and reported_or_estimated populated on every record — these render as the footnotes and badges throughout the dashboard.6. Live-data connection config (edit in page source, top of <script>)
const CONFIG = {
dataSource: {
mode: "demo", // "demo" | "json" | "api"
path: "./data/ai_bubble_dataset.json", // used when mode === "json"
url: "https://your-api.example.com/v1/ai-bubble-metrics", // used when mode === "api"
apiKeyHeader: null // e.g. "X-API-Key" — set if your API requires auth
},
riskWeights: {
capexAcceleration: 0.20,
capexFcfGap: 0.25,
depreciationGap: 0.20,
nvidiaBalanceSheet: 0.20,
indexConcentration: 0.15
}
};