The GES Methodology
GeoExposure Score (GES) is a new lens of diversification — not spread across sectors and geographies, but across macro regimes — and it ends in a sized, named, backtested action, not another dashboard.
Below is how that number gets computed, decided on, and executed, engine by engine, with one real worked example running throughout.
The workflow
Four engines, one continuous question: what should this portfolio do right now?
Each engine answers one question and hands a specific, typed output to the next. Nothing downstream runs until the engine before it has produced a real, dated, evidenced result — there is no step where a human judgment call substitutes for a missing calculation.
| Engine | Core question | Primary output |
|---|---|---|
| Forecast Engine | What macro-event regime is forming? | Event probability, severity, regime status, trigger date |
| Exposure Engine | How exposed is the portfolio to that regime? | Company GES, Sector GES, Portfolio GES, direction label |
| Decision Engine | What action should be recommended, for this client? | Action item and action intensity |
| Action Engine | How should the action be executed, name by name? | Holding-level trim, replace, rotate, defensive, or stand-down instructions |
Running example throughout this document: the Geopolitical regime around the 2016 US election, evaluated against a 100-name diversified equity book (portfolio 900).
Forecast Engine — is a regime actually building?
Nine regime types are tracked independently — Geopolitical, Monetary, Inflation, Supply, Demand, Earnings, Liquidity, Structural, Behavioral — each drawing on its own subset of ~20 daily market/macro signals.
Step 1 — signal firing
Each signal is a standardized z-score. A signal "fires" when |z| ≥ 1.2, a threshold calibrated against eleven years of real signal history rather than assumed.
Step 2 — blend into an event probability
Five components, computed daily and blended by weight:
| Component | What it measures | Weight |
|---|---|---|
| Intensity | Average |z| of the signals that fired | 25% |
| Breadth | Share of the regime's mapped signals that fired | 25% |
| Persistence | 30-day rolling share of days with a firing signal | 20% |
| Cross-category spread | Distinct signal families firing together | 15% |
| Historical similarity | Cosine similarity to the regime's historical average | 15% |
Each component is bucketed against its own empirical probability map, then combined by weight. Worked example, Geopolitical, 9 Oct 2016:
0.25(.25) + 0.25(.20) + 0.20(.90) + 0.15(.60) + 0.15(.80) = 0.5025
Each fired event is separately scored for severity — Low, Medium, High, or Critical, from the magnitude of the underlying move against eleven years of historical norms for that regime. Severity doesn't gate the status ladder below; it travels downstream into the evidence-tier framing and the client factsheet.
Step 3 — regime status, with memory
Probability alone doesn't set status — each regime has its own thresholds and its own breadth/persistence confirmation, and status has memory rather than resetting daily:
| Rule | What it means |
|---|---|
| Own thresholds per regime | Monetary and Geopolitical don't sit on the same probability scale, so each gets its own Emerging/Active/Confirmed/Severe cutoffs. |
| Active needs breadth | Probability crossing the Active threshold is not enough on its own — a meaningful share of the regime's own signals must be firing, not just one loud one. |
| Emerging needs breadth or persistence | Stops a single spiking signal from reading as a building regime. |
| Escalation is immediate | The day a threshold is crossed, status moves up that same day. |
| De-escalation needs 3 days | Status only drops after three straight days below the threshold that earned it — a regime running hot for three weeks is a different risk than one that spiked once. |
Worked example: today's reading alone would only clear "Emerging," but the regime stays Active because it escalated there on 20 Sep and hasn't faded since.
Passes forwardGeopolitical · Active · probability 0.50 · trigger 9 Oct 2016
Exposure Engine — does this specific portfolio feel it?
A regime being Active says nothing about whether this book is exposed. This engine answers that, bottom-up from real holdings.
Step 1 — company-level score
Company GES = 100 × avg over 8 dimensions of (Exposure × Beta × Confidence × e⁻λ·age)
Each dimension comes from company fundamentals; Beta sets how sensitive that dimension is to the live regime, confidence reflects data quality, and decay ages out stale data (λ=0.0067/year — a year-old figure still carries ~99% weight):
| Dimension | What it captures |
|---|---|
| Revenue | Share of revenue from countries/markets sensitive to this regime — the primary carrier of country risk. |
| Supply chain | Sourcing and logistics exposure to affected countries or trade routes — the second carrier of country risk. |
| Manufacturing | Physical operating footprint and its regime sensitivity. |
| Cost | Input-cost sensitivity (energy, commodities, labor). |
| Regulatory | Exposure to policy or regulatory shifts tied to the regime. |
| Financial | Balance-sheet sensitivity (leverage, currency, rates). |
| Strategic | Management positioning relative to the regime. |
| Customer | Customer-base concentration and sensitivity. |
Country risk isn't a separate ninth dimension — it's carried inside Revenue and Supply Chain, which is where geographic concentration actually shows up in a company's numbers. In the worked example, Welltower (Real Estate) scores 65.4 on consistently high exposure across every dimension; IBM scores 28.6 on roughly half the exposure with the same beta table — the gap is the business, not the model.
Step 2 — sector aggregation and relevance
Company scores roll up to a sector median first. Sector vulnerability is then a separate, empirical measurement layered on top: for every past instance of this regime, we look at how each sector's price actually moved relative to the broader market, and bucket that historical relative impact into ±1 (clearly vulnerable/beneficiary), ±0.5 (moderately so), or 0 (no consistent relationship) — refreshed quarterly as more history accumulates. This is what turns "Technology has a high company GES" into "Technology has historically sold off under this regime, so that GES should count against the portfolio, not for it." Here: Financials, Consumer Discretionary, Technology, and Energy score vulnerable; Real Estate, Utilities, Health Care, Consumer Staples, and Materials score beneficiary.
Step 3 — portfolio aggregation and direction
Portfolio GES = Σ (holding weight × company GES)
Vulnerable- and beneficiary-sector weight are summed directly; a 5% materiality floor on either side sets the direction label — Vulnerable, Beneficiary, Mixed, or Neutral. A single concentrated name can also trip it on its own: a top holding contributing ≥2.0 points to Portfolio GES counts as material even in a sector that's under 5% of the book, so a large, singularly exposed position can't hide inside an otherwise-diversified sector weight. Worked example: GES 43.10, vulnerable 36.1%, beneficiary 50.4% → Mixed.
Passes forwardPortfolio GES 43.10 · Mixed (vulnerable 36.1% / beneficiary 50.4%)
Decision Engine — what should be done, and how hard, for this client?
Step 1 — GES band and base action
Portfolio GES is bucketed into five empirically-set bands (Very Low through Very High, set from this portfolio universe's real achievable range rather than an assumed 0–100 scale). Regime Status × GES Band looks up one of 35 pre-defined base actions — e.g. Active + Very High → Trim + Replace; Watch is always Monitor.
Step 2 — action intensity
Intensity = Base Intensity(status) × (Portfolio GES / 100) × Client mandate multiplier
Base intensity is fixed per status (Active = 12%, rising through Confirmed and Severe), then scaled by the portfolio's own GES.
Client mandate — the multiplier and the overlay
The same regime, portfolio, and base action produce four different outcomes depending on mandate:
| Mandate | Multiplier | Overlay behavior |
|---|---|---|
| Balanced | 1.00× | Base action passes through unchanged. |
| Defensive | 1.25× | Escalates to a full defensive stance at Confirmed/Severe + High/Very High band. |
| Low Turnover | 0.60× | Held to a higher bar — stands down to Monitor rather than take a token trim. |
| Regime Rotation Allowed | 1.00× / 1.10× | Can lean into beneficiary holdings (Rotate) instead of only trimming, once GES band clears Low and this regime/action pair has a track record backing it. |
All three overlay rules were added after backtest evidence: the earlier Low Turnover trim paid transaction cost for a 23% historical win rate; Rotation used to fire even at Very Low band (52% win rate there vs. 60–75% at every other band); and Rotation used to fire regardless of whether that regime/action combination had ever been seen enough times to trust — it's now blocked whenever the historical evidence tier for that pairing is Weak or Insufficient (see Track Record), so the mandate with the most latitude doesn't also get the least discipline.
Step 3 — multi-regime overlay
Regimes rarely run alone. Every live regime is ranked and votes sector-by-sector on direction alongside the others:
| Rule | What it means |
|---|---|
| Priority ranking | Every live regime is ranked by a priority score; only regimes above a threshold get a vote. |
| Sector-by-sector vote | Each qualifying regime votes vulnerable/beneficiary/neutral, sector by sector. |
| Agreement | Sectors where regimes agree keep full intensity (1.00×). |
| Conflict | Sectors where regimes disagree get discounted, down to 0.60×. |
Worked example: 4 regimes are live; 7 of 9 sectors agree, 2 conflict at 0.62× → portfolio multiplier 0.9156, taking Balanced intensity from 5.17% to 4.74%.
Passes forwardTrim + Replace · intensity 4.74% (Balanced, after overlay)
Action Engine — which holdings, exactly?
Step 1 — trim candidate scoring
Trim Score = Position weight % × Company GES × Vulnerability mult. × Liquidity mult.
Every holding in a vulnerable sector is scored, not just the largest name; the adjustment budget is split pro-rata by score share — a diversified trim, not a single stock call.
Step 2 — replacement scoring
Replacement Score = .35×GES benefit + .20×Sector fit + .20×Factor sim. + .10×Liquidity + .10×Confidence − .05×Valuation
Candidates are drawn from outside current holdings, ranked and pooled across every trimmed name. Factor similarity and valuation penalty are currently fixed neutral proxies (50 and 0) — no factor model or valuation pipeline exists yet, so ranking today runs on GES benefit, sector fit, liquidity, and confidence.
Step 3 — execution style by mandate
The same sizing executes differently by style: replace (sell + buy) for Balanced/Defensive, rotate (sell vulnerable, buy existing beneficiary holdings) for Regime Rotation, or a stand-down to Monitor below conviction. A 3%-of-turnover trading cost is charged against every simulated action.
Passes forwardNamed, sized holdings → client factsheet and counterfactual backtest
Track record
143 macro events, 2015–2026, tested against four client mandates
Every event is tested as a genuine backtest: what the portfolio actually returned with OM Atlas's recommendation applied, against what the same portfolio would have returned doing nothing at all.
| Client mandate | Acts on | Win rate | Avg. net effect |
|---|---|---|---|
| Balanced | 30% of events | 52% | +2.6 pt |
| Defensive | 30% of events | 48% | +1.7 pt |
| Low Turnover | 9% of events | 44% | +1.1 pt |
| Regime Rotation Allowed | 40% of events | 58% | +4.0 pt |
"Net effect" is the portfolio's return with the action taken, minus what it would have returned with no action, over the 30 days following the trigger.
What eleven years of backtesting told us
Working hypotheses, backed by the data
Selectivity beats coverage. A looser calibration fired on far more events but at a materially lower win rate; narrowing to genuine conviction raised the win rate on every single client mandate.
The edge is strongest on regimes that build over weeks, not shocks that strike in a day. Structural, Supply, and Inflation regimes show the highest average payoff. Fast, no-warning crashes (COVID-19's declaration is the sharpest example) are harder — a 30-day window can land on the wrong side of a snap-back rally, a known limit of mechanical rebalancing generally.
Event size doesn't automatically mean bigger payoff. Once only-genuine-conviction fires, Critical/High/Medium severity events produce broadly similar average payoff (2.5–4.2 pts) — the edge comes from confirmed status and real exposure, not headline size.
Mandate differentiation is itself informative. The mandate with the most latitude (Regime Rotation) shows both the highest participation and the highest win rate; more conservative mandates correctly act less — the system respecting the mandate, not a weaker signal.
Four of nine regime types (Behavioral, Demand, Monetary, Liquidity) aren't yet producing high-conviction signals under current calibration — a coverage gap for continued attention, not evidence those regimes don't matter.
Two products built on this same foundation
Both of the below reuse the same four engines and the same versioned, swappable parameters described above — neither is a bolt-on layer sitting outside the methodology.
Protect Your Portfolio — dynamic re-classification
The four engines above are event-triggered: they act when a regime crosses into Active-or-higher. This product runs continuously and asks a different question, independent of any single event: which of my current holdings are quietly correlated in ways my GICS sector labels don't show?
It re-classifies holdings by revealed regime-sensitivity rather than sector or industry — two companies in different GICS sectors that move together under the same regime get flagged as concentrated, even though a standard sector-diversification view shows no overlap between them. Each flagged cluster carries a confidence score built from the same historical-similarity mechanics the Forecast Engine already uses, so it inherits the existing evidence discipline rather than introducing a new one. This is a genuinely different lens on diversification — not less exposure to a sector, but less hidden co-movement across sectors that a single regime shock would expose all at once.
Model Portfolio Studio — client-customized framework (working name)
Every threshold in the methodology above — which signals feed a regime, the z-score firing bar, the GES bands, the action matrix, the mandate multipliers — is already a versioned, swappable parameter rather than a hardcoded rule (that's the same mechanism this session used to recalibrate the whole system against real data). This product exposes that directly to a client: adjust the calibration to your own house view, run the identical eleven-year backtest against your own settings to see how it would have performed, then deploy the resulting configuration as a live model portfolio.
Once deployed, the engines track it exactly as they track today's four standard mandates — full regime monitoring, decisions, and holding-level actions — just running on the client's own dial settings instead of ours.
Geopolitical & macro risk intelligence — where OM Atlas sits
The relevant competitive set is geopolitical/macro risk intelligence and portfolio risk platforms, not ESG ratings providers. Fifteen offerings across four groups:
Geopolitical risk indicators (closest competitors)
| Provider | What it does | Gap OM Atlas fills |
|---|---|---|
| MSCI Geopolitical Risk Indicator + Geopolitical Beta | LLM-based news pipeline tracks market-wide geopolitical attention; Geopolitical Beta measures each stock's sensitivity to it. (MSCI) | Stops at sensitivity scoring — no regime-state classification, no sector-signal mapping, no sized action. |
| BlackRock Geopolitical Risk Dashboard + Aladdin Market-Driven Scenarios | Tracks top risks, attention scores, and likelihood; Market-Driven Scenarios calibrate shocks from historical-analog periods. (BlackRock) | High-level and public-facing; no security-level exposure score or explicit rebalance instruction. |
Enterprise risk & scenario platforms
| Provider | What it does | Gap OM Atlas fills |
|---|---|---|
| BlackRock Aladdin Risk / Aladdin Wealth | Reviews 300+ risk/exposure metrics daily; stress testing and scenario decomposition. (BlackRock) | Broad enterprise infrastructure — OM Atlas is narrower and purpose-built for macro/geopolitical sector rotation. |
| FactSet Portfolio Analysis — Geopolitical Scenarios | Client-defined geopolitical scenarios run against a portfolio or benchmark. (FactSet) | Scenario-led (a human asks "what if") — OM Atlas detects and acts without being asked. |
| FactSet Supply Chain / Geographic Revenue Exposure | Maps company revenue exposure to affected countries. (FactSet) | Useful data blocks, not combined into one score — OM Atlas's GES fuses supply-chain, revenue, regulatory, cost, and strategic exposure into one number. |
| Bloomberg PORT / MARS | Factor, full-valuation, macro, and climate scenario analytics; exposure management. (Bloomberg) | Powerful but general-purpose — OM Atlas competes on event-specific, explainable recommendations. |
| S&P Global Buy-Side Risk / Credit Analytics | VaR, stress tests, historical/user-defined scenarios including macro-geopolitical. (S&P Global) | Strong in credit/risk infrastructure, less focused on equity-sector rotation from macro signals. |
Country & political risk research
| Provider | What it does | Gap OM Atlas fills |
|---|---|---|
| S&P Global Market Intelligence Geopolitical Risk Solutions | Political, violent, sovereign, banking, investment risk coverage. (S&P Global) | Broad, research-led — OM Atlas is productized around signal scoring, probability, and portfolio action. |
| Fitch Solutions / BMI Politics (powered by GeoQuant) | Model-based political risk indicators, real-time country heat maps, 10+ years of daily data. (Fitch Solutions) | Country/political-risk focused — OM Atlas translates that into listed-company and portfolio-level impact. |
| Oxford Economics Global Risk Service / EPRE | Macro/financial indicators to predictive risk scores across 166 countries. (Oxford Economics) | Strong macro/country framework, less direct on security-level equity recommendations. |
| EIU Risk Services | Country, financial, and operational risk ratings. (Economist Intelligence Unit) | Qualitative/rating framework rather than a real-time portfolio-action engine. |
| Control Risks / Seerist | Human geopolitical analysis combined with AI threat monitoring. (Control Risks) | More operational/security risk than investment portfolio construction — OM Atlas borrows the "human + AI + explainability" positioning. |
Signal & news-analytics layers
| Provider | What it does | Gap OM Atlas fills |
|---|---|---|
| LSEG / Refinitiv MarketPsych Analytics | News/social-derived ESG, sentiment, risk, controversy analytics; 100,000+ companies since 1998. (LSEG) | A signal layer, not a decision engine — OM Atlas could ingest similar NLP signals but adds causality, sector mapping, and action. |
| RavenPack News Analytics | NLP-based news analytics for alpha, risk, compliance, research. (RavenPack) | A data provider — OM Atlas sits above this type of feed as an interpretation and action layer. |
| Dataminr | AI real-time event/threat detection from public data, multimodal AI and LLMs. (Dataminr) | Detects events; OM Atlas is built to translate detected events into investment and portfolio implications. |
The synthesis
Across all fifteen, the same pattern repeats: strong detection, strong scoring, strong scenario infrastructure — and a stop just short of the last mile. Almost none of them commit to a specific, sized, holding-level action, and none of them appear to backtest whether following their own signal actually would have helped a real portfolio. That is specifically the gap OM Atlas is built to close: not a better risk score, but the decision and the receipt that it worked.
Sourced from OM Atlas's internal competitive research (provider names, public-facing descriptions, and citations as compiled); spot-checked against current public materials for MSCI's GPRI and BlackRock's dashboard/Market-Driven Scenarios as of this writing. Treat as directional positioning and verify current claims before use in external or regulated materials.
What's still being refined
- Company-level exposure data is currently representative, not company-specific, across all 8 dimensions for every company. Real fundamental data collection is the next stage of the build.
- Backtests use today's portfolio composition applied to past dates, as a stand-in until real historical client portfolios are available.
- Factor similarity and valuation-risk penalty in replacement scoring are fixed neutral proxies until a factor-exposure model and valuation-multiple pipeline are built.
- Calibration is ongoing. The thresholds governing when the system acts have been tuned against eleven years of real data this year and will continue to be refined as more live results accumulate.