Skip to content

Global expansion: rotating-globe landing page + per-country macro dashboards #35

@SecondOrderEdge

Description

@SecondOrderEdge

Captured idea — tabled for now, not scheduled. This records the vision and the recommended approach so we don't lose the thinking.

Vision

A slowly rotating 3D globe as the landing page. Click a country → drill into that country's macro dashboard (the current US dashboard, replicated per country over time).

Strongest framing: the globe is the signal

Don't make the globe a decorative menu you click through to reach "the real thing." Make it a live world recession-risk heatmap — each country shaded by its current composite risk / growth signal, slowly rotating, click-to-drill. That gives every country a reason to exist on the map before it has a full dashboard, and turns the wow-factor into the product's hero chart.

The hard part is data + models, not the globe UI

The entire current stack is US-wired:

  • Data: FRED series IDs (src/data/series_registry.py) and the probit SERIES_CONFIG (src/models/recession_probit.py) are US-hardcoded.
  • Recession target: NBER is US-only. Other countries → OECD-derived recession indicators on FRED (…RECD series) or CEPR (euro area, quarterly) — lower quality, often revised. Harder to defend the "every number validated" credibility.
  • Yield curve: the 10y–3m predictive record is strongest for the US; many countries lack a clean/liquid/predictive curve.
  • Policy path: the Atlanta Fed Market Probability Tracker is US-only; would need OIS-implied paths per central bank (mostly not free).
  • CAPE: Shiller is US-only.
  • Probit ensemble: coefficients are calibrated on US history and won't transfer — needs re-fit per country where data allows.
  • Data depth: the US is uniquely data-rich (weekly claims, JOLTS, monthly everything); most countries are sparser, laggier, lower-frequency.

Tiered honesty (don't fake rigor)

  • Tier 1 — full treatment: US ✅, then candidates Canada, UK, euro area/Germany, Japan, Australia.
  • Tier 2 — recession-risk lite: yield curve + a few activity/labor series + OECD recession indicator. No bespoke probit.
  • Tier 3 — snapshot: OECD CLI, GDP growth, inflation, unemployment. Clearly labeled a snapshot, not a model.

A faked-rigorous dashboard for 150 countries would undercut exactly what makes this project good.

Recommended sequence (resist building the globe first)

  1. Generalize the data layer — a country-parameterized registry mapping each concept (policy rate, 10y, 3m, unemployment, IP, CPI, recession target) to per-country series IDs. Refactor series_registry.py + probit SERIES_CONFIG.
  2. Prove with ONE second country end-to-end (Canada or UK = gentlest: good data, Anglo curve, OECD dating). This is where you discover what breaks.
  3. Then build the globe as the risk choropleth, once ≥2–3 countries justify it.
  4. Expand coverage in tiers.

Building the globe first is the trap — polish on a capability that doesn't exist yet.

Key tradeoff

Breadth vs. the rigor that is the project's differentiator. The tiered approach + globe-as-heatmap is how you keep the rigor: even a shallow country contributes one honest number.

Open questions

  • Primary goal: portfolio/showcase piece (globe wow-factor justifies more front-end; maybe a custom three.js / globe.gl component or a non-Streamlit shell) vs. analytical tool (data-layer-first, globe later)?
  • Country UI polish, Methodology page, curve drill-downs, rename to Dashboard #2: pick by data availability, not size or interest.
  • Scaling: N countries × live FRED-on-load won't scale → likely a precomputed nightly pipeline writing per-country data + lazy per-country loading. Streamlit may be the wrong shell for a rich interactive globe.

Tech notes

  • Streamlit globe options: Plotly orthographic scattergeo/choropleth (clickable via selection events) — feasible, but auto-rotation is finicky under Streamlit reruns; or a custom JS component (globe.gl / three.js / deck.gl).

Discussion captured from a design conversation; refine in comments.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions