Source: Jim Carroll · @vixologist X post, May 11 2026 · Portfolio manager, momentum + vol strategies · Inspired by Thrasher 2017 but a distinct implementation
"When multiple compression signals fire simultaneously while SPX is in an uptrend, historical precedent is a sharp vol expansion — a volatility tsunami." — Vixologist (paraphrasing Thrasher's framing)
The dashboard card's alert fires when all three are true:
Vixologist's template runs on SVIX (the −1× inverse VIX short-term ETN), not the VIX itself. Carroll's framing: SVIX compression on a daily chart signals that short-vol positioning is crowded and the return distribution has narrowed. When that unwinds, the move is fast.
This is a meaningful difference from Thrasher's paper, which runs on the VIX directly. SVIX and VIX move inversely, so compression in one tends to coincide with compression in the other — but not perfectly, and not on identical thresholds.
| Dimension | Vixologist (this template) | Thrasher 2017 (paper) |
|---|---|---|
| Underlying | SVIX | VIX |
| Indicator stack | TTM Squeeze + BB Width + StdDev(10) + ATR | Single: 20-day StdDev of VIX closes |
| StdDev lookback | 10 days | 20 days |
| Percentile threshold | 25th | 15th |
| SPX uptrend filter | Required | Not used |
| Backtest | Visual / pattern-based | 10 years, 52 signals, formal Table 1 |
The Vixologist template is inspired by Thrasher's "clouds → rain" framing in the paper's introduction, but does not implement the paper's actual methodology. Both monitors run side-by-side because each captures something different: this one is the operational pattern Carroll posts about, the other is the original backtested signal.
SVIX ETN daily OHLC via yfinance. Falls back to ^VIX if SVIX unavailable.svix_compression in finance/research.db.svix-squeeze-check daily at 4:00 PM ET (weekdays, post-close)./var/lib/jarvis/data/squeeze-log.json — every fired signal recorded.reference_vixologist_thrasher_squeeze.md, reference_thrasher_squeeze_implementation.mdfinance/scripts/svix_compression.pyDoc last updated: 2026-05-17. When the script or signal logic changes, update this page alongside the code.