Inspiration
Every time markets panic, someone sells at a terrible price because they have to: a fund meeting redemptions, an investor reacting to scary overnight news, a trader forced to cut risk. On the other side of each of those trades is someone willing to step in and hold the bag.
We wanted to answer a simple, human question: is the calm buyer in a panic actually rewarded, and when? Academic work suggests the people who provide liquidity get paid more when fear is high, because that's exactly when few others can afford to take the risk. We named the project Quant Crucible because we wanted to put that idea under heat and see what survived.
What we built
We tested the idea three ways:
- Module A used 36 years of daily U.S. stock data (Kenneth French Data Library). Do stocks that just fell bounce back more after fearful days?
- Module B looked at the S&P 500 opening bell. Stocks that gap down overnight tend to recover during the day. Does that recovery grow when fear is high?
- Module C asked whether we could find a sharper fear signal than VIX, by separating how much risk there is from how much the market pays to carry it.
We used yesterday's VIX, the market's "fear gauge", as the signal. In Module A, the rule we wrote down before testing sized the position as
$$ w_t = \min\left(\frac{\text{VIX}_{t-1}}{20},\ 3\right) $$
where 20 is the long-run average VIX (not fitted to the data) and 3 is a hard leverage cap. Costs were charged on every trade and rise with fear, because spreads widen in a panic:
$$ c_t = c_{\text{base}} \times \frac{\text{VIX}{t-1}}{20}, \qquad c{\text{base}} = 5\text{ bps} $$
How we kept ourselves honest
Making a backtest look good is easy. Making it believable is harder, so we:
- Wrote every hypothesis down and committed it to git before running any test. The timestamps prove the order.
- Locked away the last two years of data (Sep 2024 – Aug 2026) and looked at them exactly once, at the end.
- Used only information available at the time. Every signal uses yesterday's close, and a unit test checks this.
- Reported every variant we tried (80 in total), not just the best one, and adjusted for that with the Deflated Sharpe Ratio.
- Used only public data, so anyone can reproduce every number with one command:
python run_all.py --oos.
What we learned
- The reward for patience is real, but it only shows up when fear is high. Since 2004, the large-cap bounce-back exists almost entirely on the most fearful days (VIX above ~24), and is near zero otherwise.
- Betting bigger in a panic doesn't help. Our first rule levered up when VIX was high, and it failed: the risk grew as fast as the reward. The lesson was choose when to show up, not how much to bet.
- That lesson worked at the opening bell. Trading the gap-fade only when yesterday's VIX was at least 20 turned a losing strategy into a modestly positive one, from a Sharpe of −0.26 to +0.12 in-sample and from −1.83 to +0.24 on the locked two years.
- Our cleverest idea failed. Module C's "price of risk" signal lost to simply holding the strategy all the time, in-sample and out. We report it anyway.
- Most of this edge belongs to market makers. After realistic costs, what remains for an ordinary fund is a modest, steady strategy (Sharpe ≈ 0.4) that could manage roughly $100M–$500M before its own trading eats the profit.
Challenges we faced
- Resisting the urge to tweak. When a pre-registered rule failed, the temptation was to adjust it until it worked. We didn't. We wrote a new hypothesis, committed it, and tested that instead.
- Realistic costs. Many strategies look brilliant before trading costs and disappear after them. We modeled costs that rise in stressed markets, then doubled them to stress-test.
- Imperfect data. Our S&P 500 list only includes companies in the index today, which flatters results (survivorship bias). We disclosed it and checked that both the long and short sides earned the effect, not just the survivors.
- Small samples where it matters most. The high-fear days that drive the results are rare: about 44–50 days in the locked period. We report wide confidence intervals rather than overstate it.
What's next
- Use real exchange order-imbalance data at the open instead of daily prices.
- Test the strongest high-fear effect on a fresh, sealed time window before trusting it.
- Explore whether dealer balance-sheet stress predicts the reward better than VIX over longer horizons.
Built With
- ai
- algorithmic
- analytics
- artificial
- backtesting
- data
- elevenlabs
- fastapi
- finance
- financial
- fintech
- gemini
- generative
- intelligence
- learning
- machine
- python
- quantitative
- react
- real-time
- trading
- voice
- websockets
Log in or sign up for Devpost to join the conversation.