Breadth & Network Fragility Axes
Relevant source files
The following files were used as context for generating this wiki page:
The Breadth and Network Fragility axes are critical components of the V2 regime detection engine, providing high-resolution signals regarding market participation and structural correlation. The Breadth axis monitors the health of market rallies by analyzing the participation of underlying constituents (via ETF proxies or point-in-time constituent data), while the Network Fragility axis identifies systemic risks arising from asset correlation, concentration, and absorption.
Sources: src/regime_detection/axis_builders/breadth.py:46-56, src/regime_detection/network_fragility_rules.py:10-25
Breadth Axis Architecture
The Breadth axis operates in two modes: a V1-compatible ETF-proxy mode (RSP/SPY) and a V2 Point-In-Time (PIT) constituent mode. The system prioritizes PIT data when available to provide more granular labels such as breadth_thrust and narrowing_breadth.
Logic and Data Flow
The breadth axis builder processes features from the FeatureStore to generate raw labels, which then undergo a data-quality-aware hysteresis process to produce stable and active labels.
The diagram shows the logic flow from feature extraction to the final breadth state output, highlighting the branch between V1 and V2 logic.
Sources: src/regime_detection/axis_builders/breadth.py:41-86
V2 Breadth Labels & Precedence
When V2 PIT features are present, the system evaluates additional predicates. These labels follow a specific precedence order where the first match wins:
| Label | Description |
|---|---|
breadth_thrust | High-intensity participation following a low-breadth period. |
divergent_fragile | High price but deteriorating underlying participation. |
narrowing_breadth | Participation decreasing (falling % above 50/200 DMA). |
recovery_breadth | Improvement starting (NH/NL rising) but cumulative AD still negative. |
broadening_breadth | Increasing participation (NH/NL rising, positive AD line slope). |
Sources: tests/test_breadth_state_v2_labels.py:133-145, src/regime_detection/axis_builders/breadth.py:34-40
Network Fragility Axis Architecture
Network Fragility is a pure scalar rule layer over features such as pairwise correlation, eigenvalue share (absorption ratio), and effective rank. It is designed to detect "correlation-to-one" events and systemic stress.
Rule Precedence & Risk Ranking
Rules are evaluated in a strict precedence order defined in the V2 spec. If no rules match, the state falls through to unknown.
This diagram represents the V2 §3.4 rule precedence order; the highest matching rule determines the label.
Sources: src/regime_detection/network_fragility_rules.py:53-62
Fragility Rule Components
| Component | Logic/Predicate |
|---|---|
| Systemic Stress | correlation_to_one AND credit stress AND VIX percentile > 0.80. |
| Correlation to One | Avg pairwise correlation > 0.90 AND high realized vol AND negative drawdown. |
| Rising Fragility | Correlation and eigenvalue share both rising over 21 days + weak breadth. |
| Diversified Normal | Correlation in 0-0.75 band AND stable effective rank (21d std < 5% of mean). |
Sources: src/regime_detection/network_fragility_rules.py:340-410, tests/test_network_fragility_rules.py:70-130
Rule Input Materialization
Before evaluation, features are transformed into scalar inputs. This includes OLS slope detection for rising fragility and stability calculations for diversified normal states.
The sequence shows the transformation of time-series features into scalar rule inputs for the evaluation engine.
Sources: src/regime_detection/network_fragility_rules.py:145-180
Cross-Axis Integration
The axes are highly interdependent. For instance, systemic_stress in Network Fragility requires weak_breadth or narrowing_breadth from the Breadth axis to fire. Similarly, rising_fragility requires specific breadth states as a confirmation signal.
- Breadth inputs to Fragility:
BreadthLabel(V1 or V2). - Credit/Funding inputs to Fragility:
CreditFundingLabel(used to confirmsystemic_stress). - Volatility inputs to Fragility:
vix_percentile_252dandrealized_vol_percentile_252d.
Sources: src/regime_detection/network_fragility_rules.py:34-45, src/regime_detection/axis_builders/breadth.py:58-85
Conclusion
The Breadth and Network Fragility axes provide a robust framework for identifying structural market shifts. By combining participation metrics with advanced correlation analysis and multi-axis confirmation, the system can distinguish between healthy factor rotation and the onset of systemic "correlation-to-one" crises. This architecture ensures that the engine remains both backward-compatible with V1 ETF-proxy models while offering the full precision of the V2 PIT-constituent and fragility rule sets.