We Tested Exogenous Signals. Here's What Actually Works.
March 23, 2026
In our last post, we identified a Minimal Signal Set — Net Liquidity, VIX, stablecoin momentum, OI divergence — that appeared to carry meaningful information about Bitcoin's forward behavior. The question we left open was the only one that matters: do these signals selectively predict losing trades, and can blocking those trades improve real strategy performance?
We spent the last several weeks running those tests. 2,582 trades across three live strategies, six signals, two levels of analysis. The results were not what we expected.
How We Tested
The setup:
| Filter | Signal |
| A | CPI release window (±2 days) |
| B | VIX regime (Elevated >18, Stress >25) |
| C | Fed Net Liquidity contraction (28d ROC < 0) |
| D | Stablecoin supply outflow (30d shrinkage) |
| E | BTC funding rate z-score (30d rolling, abs>2.0 = extreme) |
| F | OI divergence (OI z-score high, price flat) |
The metric we used — Loser Capture Ratio (LCR):
LCR = % of losing trades blocked ÷ % of winning trades blocked
An LCR above 1.0 means the filter is selective. Above 1.5 is meaningful. Above 2.0 is strong. Below 1.0 means the filter is hurting you — it's blocking winners faster than losers.
We ran this at two levels: first at the individual trade level, then at the portfolio level using daily returns.

The Headline Result
Filters work. But they're strategy-specific. No single signal helps all three strategies.
This is the finding that upended our original intuition. We went in assuming we could build a unified macro kill switch — when VIX spikes or Net Liquidity contracts, pause everything. That assumption is wrong, and applying it would be net negative across the portfolio.
The strategies capture returns in fundamentally different market regimes. A filter that surgically protects SMC can simultaneously neutralize TrendMTF — because TrendMTF earns its biggest gains in exactly the conditions the filter was designed to block.

What Works, Strategy by Strategy
SMC — The Most Filter-Responsive Strategy
SMC is where the exogenous signal thesis lives or dies, and here the results are strong.
Funding Rate z-score is the best filter in the study.
When the 30-day rolling z-score of BTC's daily funding rate exceeds ±2.0 (extreme crowding in either direction), blocking all SMC entries produces an LCR of 2.09 — meaning it captures roughly twice as many losers as winners. This held in both the first and second half of the dataset independently (H1=2.35, H2=1.74), which is the temporal stability test that separates signal from noise.
The directional variant is even cleaner: when z > +1.5 (longs are crowded), blocking SMC longs only produces an LCR of 2.43 — the single highest selectivity ratio in the entire study. It fires only 4.8% of the time. When it fires, the edge is real.
VIX Elevated (>18) is the second confirmed filter for SMC.
LCR 1.78, validated across two independent research rounds. The intuition is straightforward: SMC is a directional swing strategy. When global fear is elevated but not yet in crisis (the 15–25 zone we identified as the "contagion window" in post 1), long setups degrade meaningfully while the strategy is structurally exposed. Suppressing longs in this window, pairing them with the funding filter when both fire simultaneously, is the highest-confidence intervention we found.
One anti-finding worth highlighting: CPI windows are inverted for SMC. LCR 0.35. The best SMC setups cluster in post-CPI volatility expansion — applying a CPI circuit breaker to SMC would destroy alpha, not protect it.

MeanReversion — Useful Signals, Lower Confidence
OI Divergence is the most consistent filter for MeanReversion.
When open interest is elevated (z-score >1.5) but price hasn't followed through, pausing MR long entries produces an LCR of 1.34 across 5 of 6 tested runs. The cost is real — retrospective PnL drops roughly 14% — but the goal for this strategy is drawdown reduction, not return maximization, and the consistency across runs is encouraging.
VIX Stress (>25) is a clean but thin signal. LCR 1.37, blocks only 2.2% of trades, adds +3.4% PnL. The effect is real; it's just low-impact in practice.
One important negative: funding rate filters are consistently harmful for MeanReversion (LCR 0.65–0.83 across all tested variants). The same signal that's the strongest filter for SMC actively degrades MeanReversion. Do not apply.
TrendMTF — The Hardest Strategy to Protect
TrendMTF earns its returns during high-volatility, trending regimes — which are exactly the conditions that macro risk filters are designed to block. The broad signals mostly fail here.
VIX Elevated blocks 37–74% of TrendMTF trades with LCR values hovering near 1.0. Net Liquidity Contraction and the combo filters are similar — massive blockage, near-zero selectivity. Applying them to TrendMTF is pure damage.
The two weakest-but-acceptable signals: CPI window (LCR 1.62, blocks ~7% of trades, but high variance) and Combo Conservative (LCR 1.24, similar profile). Low risk to implement since blockage is minimal. But the confidence is low.

The Portfolio-Level Test
After the trade-level analysis, we ran a second test at the portfolio level — applying the same filters to a real SUI portfolio allocation (CandleMom + MeanReversionMTF + STier, 10/10/80 weights). Instead of measuring trade LCR, we measured Day LCR: negative portfolio days blocked versus positive portfolio days blocked.
The baseline: +208.3% return, −18.1% max drawdown, Calmar 16.848.
The result cut through everything else in the study.
Only OI Divergence survived both levels of analysis.
| Filter | Trade LCR | Portfolio Day LCR | ΔCalmar | Verdict |
| Funding abs>2.0 | 2.09 (SMC) | 0.472 | −2.012 | Contradicts |
| VIX Elevated | 1.78 (SMC) | 0.779 | −13.675 | Contradicts |
| VIX Stress | 1.37 (MR) | 0.472 | −13.643 | Contradicts |
| Net Liq Contraction | ~1.0 (mixed) | 0.793 | −17.590 | Contradicts |
| OI Divergence | 1.34 (MR) | 2.833 | +1.046 to +9.125 | Consistent |
| Funding positive | 2.43 (SMC) | 1.181 | +1.531 | Weak positive |
OI Divergence showed a portfolio Day LCR of 2.833 — blocking losing days at nearly 3x the rate it blocks winning days — and this was consistent across both the 10/10/80 and equal-weight (33/33/33) configurations. Under equal weights, it improved the portfolio Calmar from 11.3 to 20.5 while taking drawdown from −28.5% to −19.9%.
The funding rate filter's performance here deserves specific attention: 2.09 LCR at the trade level for SMC, but a Day LCR of 0.472 at the portfolio level. This isn't a contradiction — it's a reminder that good individual-strategy filters don't automatically translate to portfolio improvement. When this filter fires and suppresses SMC, the capital often isn't doing anything better elsewhere, and the portfolio misses the returns from the other two strategies continuing to run.
The Architecture That Follows
The right structure is per-strategy filter gates, not a macro kill switch.
Tier 1 — Build these first (high confidence):
Tier 2 — Worth building, lower confidence:
What not to build:
What's Still Missing
The study has limits we want to be direct about.
Out-of-sample validation is the single most important remaining step. All results here are in-sample. Before any filter goes live, we need to hold out 6 months of recent data, apply the filter rules blind, and compare against the unfiltered baseline. If the LCR numbers hold, we ship. If they don't, we don't.
Sample size is borderline. 5–7 strategy runs is enough to form a hypothesis, not enough to make hard claims. The SMC funding filter is the most convincing result in the study and it still needs more runs across BTC, ETH, and BNB before the confidence is production-grade.
The interaction between funding + VIX for SMC is untested. Both are recommended. Their combined blockage is probably 10–12% of days (unlikely to create dead windows since each fires independently at ~6–8%). But the joint LCR is unknown. This is low-risk to stack but worth measuring.
Live wiring. The Python indicator library has vix_regime() and oi_divergence() already built. The VIX daily CSV cache is populated. What's missing is plumbing a live data feed — CBOE VIX daily, Binance funding rate — into the signal runner so filters can run in production, not just in backtests.
Where We Land
The signals are real. The correlation is not an artifact of sample selection or data snooping — we tested temporal stability explicitly, and the strongest signals held in both halves of the data independently.
But the edge is narrower and more specific than the first post implied. The right mental model isn't "macro signals tell you when the market is safe." It's "specific macro conditions selectively predict failure modes in specific strategy types." VIX doesn't tell you the market is dangerous — it tells you SMC longs are dangerous. Funding rate extremes don't signal a crash — they signal that the crowd is too one-sided for SMC setups to resolve cleanly.
Per-strategy gates, not kill switches. Surgical, not systemic.
That's what the data says.