Timed variance selling
Selling 30-day volatility only into the months the regime model calls calm — the one result that brings together the project's two best pieces.
The question: The volatility premium is real but carries a brutal tail. Can the tail be dodged without losing the premium?
What was found
Selling variance collects a known premium and loses badly when a storm arrives. The volatility-regime model — the project's only 13/13 result, which had failed both as a direction signal and as a portfolio allocator — predicts exactly that: when volatility rises. Putting them together is the first time two of the project's results fit rather than compete. In the holdout, the unfiltered book makes 2.39 points a month with a worst month of −55.14; filtering to P(more volatility) < 0.40 makes 8.94 with a worst month of −5.31. And in calendar time — the filter is only deployed 4.6 months a year — it still wins: +41.3 points annually against +28.5.
Try it yourself
Here's the trade from the inside: you sell at implied minus the spread, and 30 days later you settle against the volatility that actually happened.
In money, at $1,000 of vega per point:
Try setting realized to 100 with an implied of 45: that's the January 2026 month the filter avoided, −67 points in BTC. The tail isn't a hypothesis.
Illustrative example numbers for practice — not real data.
How it was tested, step by step
- Every 30 days a position is considered: sell variance at Deribit's implied volatility minus 2 points of spread, with no overlapping positions.
- Before opening it, the 30-day volatility-regime model is consulted. If the probability of more volatility is under 0.40, the position is opened; otherwise the month is skipped.
- The threshold wasn't picked by looking at results: every cut between 0.20 and 0.40 gives a holdout mean of +8.8 to +9.8 and a worst month between −2.9 and −7.9. From 0.45 it falls off a cliff. A plateau with a stable ledge on one side is what a real threshold looks like; an isolated peak is what overfitting looks like.
- Three controls, all three passed: a random filter keeping the same fraction of months gives +2.68 mean and −53.75 worst month (p=0.000 on both); the inverted filter is worse on both metrics, as it should be; and it isn't "sell when implied is already high" in disguise — rank correlation with the DVOL percentile is only −0.26.
- And the hardest test: applying BTC's model filter — which never saw a single ETH data point — to the same trade in ETH. Unfiltered, in ETH the trade LOSES money in the holdout (−1.43 mean); with BTC's filter it turns to +6.32.
| Book | Trades | Mean/month | Worst month | % winning |
|---|---|---|---|---|
| BTC unfiltered | 44 | +2.39 | −55.14 | 70% |
| BTC with P < 0.40 | 17 | +8.94 | −5.31 | 82% |
| ETH unfiltered | 44 | −1.43 | −62.02 | 59% |
| ETH with BTC's filter | 17 | +6.32 | −21.66 | 76% |
2023+ holdout, in volatility points. The ETH replication is the strongest evidence the finding has: the model never saw a single ETH data point.