Raw source values are standardized into comparable signals. Each component declares its transform chain and parameters.
Methodology
How MarketSchema Indices Are Built
Pick any index and watch the deterministic pipeline build the signal from raw inputs.
Choose an Index to X-Ray
Loading…MarketSchema Methodology
Complete technical documentation for how MarketSchema indices are constructed, aggregated, and used to generate risk signals.
MarketSchema computes 54 indices across 9 risk families from 7 live data sources. Each asset gets a single Schema Score (0–100) that blends 35% macro signal, 45% entry value, 20% narrative alignment. Every formula is published. Every source is linked. Every update is timestamped.
Scroll down for full construction details, or jump to: Conditions System · Z-Score Method
How Schema Score is built
Schema Score is not just a macro rank. It is a blended opportunity score designed to answer three questions at once: is the backdrop supportive, is the price attractive relative to that backdrop, and are current narratives reinforcing or fighting the setup.
35% macro signal
Structural support
The structural layer comes from MarketSchema's index system. It measures how supportive the current macro environment is for an asset before price or narrative gets involved.
45% entry value
Price versus thesis
Entry value measures whether price is stretched or attractive relative to structural support. A strong thesis that has pulled back can score better than an equally strong thesis that is already extended.
20% narrative alignment
Story confirmation
Narratives act as an overlay, not the backbone. They can strengthen or weaken a setup, but they are intentionally sized smaller so headlines do not overpower structure and price.
Why the current weights look like this
The current V2c blend is 35% macro signal, 45% entry value, 20% narrative alignment. Earlier versions leaned too heavily on macro and compressed too many names into the same middle band. The rebalance shifted more weight to entry value so price dislocation can matter, kept macro as the structural anchor, and left narrative as a smaller confirming layer.
In plain English: macro tells you what deserves attention, entry value tells you whether the timing is attractive, and narrative helps explain whether the tape is reinforcing or undermining that setup.
Section 1: Conditions System (Risk Score × Stress Level)
The 8 Pillars
Each pillar is a weighted composite of constituent indices. Pillar scores are normalized to 0–100 and combined into the Risk Score.
LFSI (Liquidity & Financial Stress Index),RMSI (RE Market Stress Index),CVXI (Crypto Volatility Crossover Index)
CRSI (Credit Spread Intensity Index),CCSI (Consumer Credit Stress Index),SCMI (Small Biz Credit Momentum Index),BCAI (Bank Credit Availability Index),RFPI (Refinancing Pressure Index)
DRSI (Duration Regime Stress Index),YCSI (Yield Curve Shape Index),SDBI (Sovereign Debt Burden Index)
MSPM (Macro Surprise Pulse Index),RSKP (Risk Posture Composite),VOLR (Volatility Regime Composite),RQRI (Risk-Quality Rotation Index),SMDI (Sector Momentum Dispersion Index)
DXMI (Dollar Momentum Index),LIQI (Liquidity Impulse Index)
ENPI (Energy Price Impulse Index),GSRI (Gold-to-Stocks Ratio Index),CEMI (Commodity-Equity Momentum Index),CRMI (Critical Minerals & Rare Earth Index)
CMAI (Crypto Market Activity Index),CVXI (Crypto Volatility Crossover Index),CDDI (Dominance Divergence Index),BTLI (BTC Leverage Index),BTCM (BTC Macro Beta Context)
ACSI (AI Compute Capex Index),PWGI (Power & Grid Constraint Index),DCAI (Data Center Buildout Index),NURI (Nuclear & Uranium Index),ASPI (AI Buildout Bottleneck Index)
How the Risk Score Works
The Risk Score measures the overall level of market conditions on a scale from 0–100.
Step 1: Pillar Score Calculation
pillar_score = avg(z-score of member indices)
Step 2: Normalize to 0–100
normalized = 50 + (σ × 15)
Where σ is the pillar's z-score. This maps standard deviations to the 0–100 scale.
Step 3: Weighted Sum
Risk Score = Σ(pillar_score × weight)
Weights: Liquidity 12%, Credit 15%, Rates 15%, Growth 15%, Dollar 10%, Energy 12%, Risk 12%, Infra 9%
Score Bands
How Strain Works
Strain measures market stress and fragmentation. It's calculated from 4 equally weighted components, each contributing up to 25 points (0–100 total).
1. Stress Magnitude (0–25 points)
avg(|σ| of stress-sensitive indices)
Captures the average absolute deviation from normal for indices that tend to spike during crises.
2. Divergence Count (0–25 points)
count(pairs breaking expected correlation) / total pairs
When normal relationships between indices break down, markets are fragmented and stressed.
3. Signal Dispersion (0–25 points)
fraction of indices with |σ| > 0.18
Measures how many indices are simultaneously pushing away from normal levels.
4. Cross-Asset Spread (0–25 points)
max(σ) − min(σ) across all indices
When some assets rally while others crash, the spread widens, indicating stress.
Strain Bands
Macro Regime Matrix
The combination of momentum band (Strong Bearish, Bearish, Neutral, Bullish, Strong Bullish) and Strain band (Calm, Watch, Strained, Stressed) produces a 5×4 grid of 20 macro regime states. Each state describes market conditions from “Peak Expansion” (Strong Bullish + Calm) through neutral states to “Crisis” (Strong Bearish + Stressed).
Examples: Strong Bullish + Calm = Peak Expansion; Strong Bullish + Stressed = Froth; Strong Bearish + Stressed = Crisis.
Gate Mechanism
The Gate regulates exposure based on risk state and stress:
Anti-Flap System
State transitions use z-score threshold crossings with hysteresis stabilization. Entry into a new state requires crossing the boundary plus a hysteresis band; exit requires dropping below the boundary minus the band. A minimum dwell time prevents premature transitions from transient spikes. This applies at both the conditions-state level and the four-state regime level.
Computational Framework
All MarketSchema indices use the same computational framework: weighted-mean aggregation with z-score normalization. Indices share standard z-score thresholds and differ primarily in component selection, weights, and polarity — not in computational method or threshold design. This design choice favors consistency and auditability over bespoke modeling per index.
Because the framework is shared, indices with overlapping input components (e.g., credit spreads appearing in both CRSI and CDDI) will exhibit correlated behavior. Factor overlap is documented on each index detail page where applicable.
Section 2: Z-Score Methodology
Z-scores standardize index values across different scales and distributions, allowing for meaningful comparison and aggregation.
Formula
σ = (x − μ) / σ_std
Where x is the current value, μ is the mean, and σ_std is the standard deviation over the lookback window.
Default Lookback
252 trading days (1 year)
Configurable per index via component specifications.
Minimum Observations
30% of window (76 days for 252-day window)
Ensures reliable statistics even during backtest or sparse data periods.
Outlier Rejection
Clamped at ±10σ
Extreme deviations are capped to prevent single events from dominating the signal.
Division by Zero Handling
Returns 0.0
When an index has near-zero standard deviation (all values very similar), the z-score is set to 0 (neutral).
Section 3: Contagion Map
The Contagion Map identifies how stress in one market can propagate to others via correlation breakdown and tail co-movement.
Copula Model
Dependence structure is modeled using a Student-t copula, which captures fat tails and tail dependence better than Gaussian approaches.
Fit Methodology
Kendall's τ Calibration
Rank correlation is computed between all pairs of indices to capture monotonic dependence.
Profile MLE for ν (degrees of freedom)
The Student-t degrees of freedom parameter is estimated via maximum likelihood, controlling tail weight.
Tail Dependence
Asymptotic λ (Asymptotic Tail Dependence)
Closed-form formula from Student-t theory
Measures the probability of joint extreme events as distributions approach their tails.
Finite Co-Exceedance (200K Monte Carlo)
Simulates 200,000 draws from the fitted copula to compute the probability that multiple indices exceed a stress threshold simultaneously.
Stress Polarity
Each index has a stress direction (up or down) that indicates which direction represents stress:
Contagion Risk Score
Combines 4 weighted components to produce a single contagion risk metric:
1. Tail Dependence Strength
How likely are joint extreme moves?
2. Co-Exceedance Probability
What fraction of stress scenarios involve multiple markets in crisis simultaneously?
3. Current Stress Level
How close are indices to their stress thresholds right now?
4. Volatility Regime
Is volatility elevated, amplifying contagion speed?
View Market Structure: /compare
Explore Further
Terminology Guide
MarketSchema uses a 3-layer model. Each layer has distinct vocabulary to avoid ambiguity.
Layer 1: Global Conditions
8 pillar categories → Risk Score → Risk State → Action Bias. Always global scope. Labels: “Conditions”, “Risk State”, “Action Bias”, “Risk Score”, “Stress Level”.
Layer 2: Drivers (Indices)
Individual macro indices with per-asset exposure weights. Each has value, z-score, signal, and freshness. Asset-specific impact computed via the exposure catalog.
Layer 3: Narratives
Cross-asset macro themes scored 0–100 with per-asset orientation (tailwind or headwind). “Tailwind” and “headwind” are only used in this asset-specific context, never for global conditions.
Full semantics contract: Risk State Explanation →
Authority Tier & Calibration Status
MarketSchema scores are classified by authority tier: Experimental (no evidence of ranking signal), Indicative (weak signal detected), or Validated (multi-horizon signal confirmed with baseline beating). Each tier honestly reflects the evidence available — not a marketing tier.
A ranking validation framework measures multi-horizon Rank IC, spread returns, and baseline comparisons daily. However, no outcome calibration has been performed to optimize thresholds or claim predictive accuracy. The system measures current macro context and relative alignment — not future performance. Users should treat scores as one input among many, not as standalone decision criteria.
Confidence displayed on scores is a data-availability metric (coverage + freshness + agreement), not a forecast accuracy metric. High confidence means "most indices are fresh and mostly agree" — not "this score is more likely to be right."
View index pipeline details
Transformed components are combined with fixed, published weights. Weight-sum checks are surfaced on every run.
The composite output is normalized against an index-defined baseline so values are comparable across units.
The normalized value maps to semantic regime labels using index-defined threshold bands.
No LLM in compute pipeline
All components and transforms disclosed
Version tags on every index
Coverage + publish mode on each run
Data Providers
Derived from 86 index specifications — not hardcoded.
| Provider | Originator | Covers | Cadence | Example series | Indices |
|---|---|---|---|---|---|
| FRED | Federal Reserve / BLS / BEA | Rates, macro, credit, labor, CPI | Daily to quarterly | BAMLC0A4CBBB, BAMLH0A0HYM2, BOPGSTB, BUSLOANS | 27 |
| Polygon.io | Exchanges (NYSE, NASDAQ, CBOE) | Equities, ETFs, options, volatility | Real-time / EOD | ABNB, AG, ANET, APP | 20 |
| CoinGecko | Crypto exchanges | Crypto prices and market structure | Intraday | bitcoin, cardano, ethereum, solana | 4 |
| CBOE (via Polygon) | CBOE | Volatility indices (VIX family) | Real-time / EOD | VIX | 1 |
Available Transforms
| Transform | What it does | Example indices |
|---|---|---|
| diff | First difference transform. | |
| excess_ret | Return relative to benchmark. | |
| invert | Polarity inversion before aggregation. | |
| level | Level-based transform without differencing. | |
| ma | Moving average transform. | |
| macro_impulse | Release impulse with exponential decay memory. | |
| mom | Month-over-month change. | |
| pct_change | Percent change between observations. | |
| price_ret | Log return of price series. | |
| vol_change | Change in volatility level. | |
| yield_change | Change in rate level, typically in bps. | |
| yoy | Year-over-year change. | |
| zscore | Standardizes to sigma units. |
Macro Impulse Deep Dive
Macro impulse transforms encode release surprise and then decay that surprise through a deterministic memory state. Parameters are read from index transform configs.
No macro_impulse component is currently active for the selected index.
Track Record
Does MarketSchema’s scoring actually predict forward returns?
Building track record — 13 of 30 days collected.
Full performance statistics available after 30 days of evaluation data. Every score, setup packet, and regime call is being recorded and will be scored against realized outcomes.
Do higher-scored assets outperform lower-scored ones?
17d until dataHow often do setup packets call the right direction?
17d until dataDoes the regime engine correctly identify market states?
17d until dataMarketSchema records every score computation and setup packet. After 30 days, we have enough forward return data to compute meaningful hit rates and decile performance. This is a deliberate choice: we would rather show real numbers than premature statistics.
Score Decile Performance
Average 30-day forward returns grouped by Schema Score decile. Higher-scored assets should outperform lower-scored assets.
Score decile analysis requires 30 days of forward return data. Currently at 13 days (43%).
When live, this chart will show the average 30-day forward return for each score decile. A well-calibrated scoring system produces a monotonically increasing bar chart — assets scored 90–100 should meaningfully outperform assets scored 0–10.