Case study · Backtest
🗓 Backtest period: 2016-01-01..2026-08-11
Spec ID: spec-triadic-network-stress-defensive-overlay-us-large-cap-etfs-1786536770 · Generated: 2026-08-12 12:57 UTC
Cluster: Risk Overlay · Sub Cluster: Network-Stress Defensive Allocation Overlay
A point-in-time correlation-network indicator shifts a large-cap equity portfolio into a 75% MBB defensive allocation when systemic co-movement reaches an expanding-history extreme. Hysteresis and asymmetric signal memory reduce rapid state reversals.
Diversification can fail abruptly when normally distinct assets begin moving together. The Triadic Stress Index combines weighted clustering, network density, degree heterogeneity, and the inverse Laplacian spectral gap to identify unusually interconnected market states in which equity drawdown risk may be elevated.
The asymmetric memory filter responds quickly to rising stress but decays slowly, while separate 90th-percentile entry and 75th-percentile exit thresholds create a hysteresis band. The economic hypothesis is that temporarily replacing most equity exposure with Treasury and agency mortgage-backed bonds during these states can reduce portfolio risk. This allocation benefit is an extension of the source research rather than a result established by that paper.
[code omitted from public view]
| Param | Value | Notes |
|---|---|---|
| Network window | 20 trading days | Daily adjusted close-to-close log returns; no imputation |
| Network size | 42 assets | Held constant when replacement candidates are available |
| Recompute frequency | Every 3 trading days | Signal state is carried forward between calculations |
| Adjacency | A = abs(rho), diagonal 0 |
Pearson correlations |
| Clustering | Tr(A^3)/(n(n-1)(n-2)) |
Complete-graph normalization specified by this implementation |
| Density | Mean off-diagonal adjacency | sum(A_ij)/(n(n-1)), for i != j |
| Degree coexistence | Population variance of weighted degrees | Coex = Var(k) |
| Spectral term | gap = lambda_2(diag(k)-A) |
Invalid/nonpositive gaps do not change state |
| Raw TSI | (C*D/M)*Coex, M=1/gap |
Equivalent to C*D*gap*Coex under the stated definitions |
| Memory coefficients | Rise 0.60; decline 0.08 | Faster response to increasing stress and slower decay |
| Risk-off entry | Expanding percentile >= 90% | Uses only point-in-time recomputation history |
| Risk-on exit | Expanding percentile < 75% | Creates a 15-point hysteresis band |
| Execution | Close, one-trading-day lag | Signal uses closing data and the state change is scheduled for the following trading close |
| Risk-on allocation | 100% equities / 0% MBB | Equal-weight eligible screened assets |
| Risk-off allocation | 25% equities / 75% MBB | MBB is a Treasury and agency MBS ETF |
| Position limits | 10% per equity; 75% MBB | Defensive asset is exempt from the general equity cap |
| Universe | PIT US stocks and ETFs, capitalization-ranked | Yearly selection; ADRs excluded; positive dollar volume required |
| Backtest window | 2016-01-01 to 2026-08-11 | Daily bars; warm-up history begins in 2000 when available |
| Primary turnover cost model | 10 bps per one-way turnover | Sensitivity cases: 0, 5, 10, and 25 bps |
| Platform trading costs | $0.004/share; $1 minimum; 1% maximum commission | Slippage configured at 0 bps |
| Annualization / risk-free rate | 252 / 0% | Used for reported risk ratios |
| Maximum leverage | 4.0 | Framework limit; target allocations themselves sum to 100% |
| # | Concern | Status |
|---|---|---|
| 1 | Universe membership and ranking | Pass by specification: yearly screening is point-in-time and uses the contemporaneous capitalization and liquidity fields. |
| 2 | Return-window construction | Pass: each signal uses only observed adjusted closes through its calculation date; missing returns are not imputed. |
| 3 | Expanding percentile | Pass: thresholds use only filtered TSI observations available through the current recomputation, not a full-sample percentile. |
| 4 | Close-derived signal execution | Pass: the strategy measures the signal at the close and executes the state change at a later close after its explicit one-trading-day lag. |
| 5 | Missing execution prices | Pass by policy: the affected rebalance is skipped rather than filled with an interpolated or carried-forward price. |
| 6 | Annual universe transitions and data survivorship | Requires data verification: the PIT flag is specified, but database snapshots, delisted-name coverage, and historical classifications must be independently confirmed. |
0.447 with raw Absorption Ratio 0.174 yields 0.273, whereas the filtered point estimates 0.447 and 0.134 imply 0.313; consequently, the paper's filtered benchmark comparison does not describe this diagnostic implementation.From 2016-01-01 through 2026-08-11, the backtest returned 229.67% with a 0.87 Sharpe, 1.06 Sortino, and 0.26 Calmar. Realized volatility was 25.00%, maximum drawdown reached -46.66%, and beta versus SPY was 0.67, indicating reduced market sensitivity but substantial residual tail risk. The run recorded 1,304 trades, a 73.04% win rate, and a 4.88 profit factor. Because no always-invested benchmark or gross-versus-net decomposition is supplied, these figures do not establish that the defensive overlay improved performance relative to continuous equity exposure.
Recomputed here from the run's stored daily returns, because every annualized figure in the table above is derived from the LENGTH of that array (years = n / 252). Only total return and max drawdown do not depend on the row count, so when the recomputed and stored values differ by a common factor, those two are the numbers to trust.
| Check | From the run's own returns | Note |
|---|---|---|
| Daily-return rows | 2,666 | 1.00x the 2,674 trading days in 2016-01-01..2026-08-11 |
| Distinct dates | 2,666 | one row per date |
| Date span | 2016-01-04 .. 2026-08-11 | |
| Sum of daily returns | 229.67% | matches the reported total return |
| Sharpe from these rows | 0.87 | stored 0.87 |
| Volatility from these rows | 25.00% | stored 25.00% |
| Max drawdown from these rows | -46.66% | stored -46.66% |
| CAGR from these rows | 11.94% | stored 11.94% |
| Metric | Value |
|---|---|
| Total Return | 229.67% |
| Sharpe | 0.87 |
| Sortino | 1.06 |
| Calmar | 0.26 |
| Max Drawdown | -46.66% |
| Volatility | 25.00% |
| Beta vs SPY | 0.67 |
| Win Rate | 73.04% |
| Profit Factor | 4.88 |
| Total Trades | 1304 |
| Symbols | 42 (AAPL, ABBV, AMD, AMZN, AVGO, BAC, BND, BRK-B, CAT, COST, +32 more) |