Volatility of Volatility (VOV) measures the standard deviation of volatility itself, quantifying how much volatility fluctuates over time. While standard volatility tells you how much prices move, VOV tells you how stable or unstable that movement pattern is. High VOV indicates volatility is erratic and unpredictable; low VOV suggests volatility is relatively stable and consistent.
## Historical Context
The concept of "vol of vol" emerged from options pricing and derivatives trading, where understanding the stability of volatility became crucial for pricing exotic options and managing portfolio risk. The Heston stochastic volatility model (1993) introduced a dedicated parameter (σ, often called "vol of vol") to capture this phenomenon, recognizing that volatility itself follows a random process.
In practice, traders noticed that implied volatility surfaces exhibit their own dynamics—sometimes stable, sometimes wildly fluctuating. The 2008 financial crisis and subsequent "flash crashes" demonstrated that periods of extreme VOV correlate with market stress and liquidity crises. When volatility becomes volatile, hedging becomes difficult and option pricing models break down.
This implementation uses a straightforward approach: compute rolling standard deviation (inner volatility), then compute the standard deviation of those values (outer VOV). Simple, interpretable, and effective for detecting volatility regime changes.
## Architecture & Physics
### 1. Inner Volatility Calculation
For each bar, compute the population standard deviation of prices over the volatility period:
- $\bar{\sigma}$ = Mean of inner volatilities over the window
### 3. Population vs Sample Standard Deviation
This implementation uses **population** standard deviation (dividing by $n$, not $n-1$). For rolling window calculations with consistent period sizes, population stddev is appropriate and avoids the Bessel's correction bias that's designed for estimating population parameters from small samples.
1.**Warmup period confusion**: VOV requires (volatilityPeriod + vovPeriod - 1) bars before producing valid output. Default (20, 10) needs 29 bars. Early values during warmup may be misleading.
2.**Interpretation**: Low VOV doesn't mean low volatility—it means volatility is *stable* (could be stably high). High VOV means volatility is unpredictable, regardless of its absolute level.
- Shorter vovPeriod reacts faster to vol changes but noisier VOV
- Common defaults: (20, 10) for daily data, (60, 20) for intraday
4.**Scale awareness**: VOV is in price units (like standard deviation). A VOV of 0.5 on a $100 stock is very different from VOV of 0.5 on a $10 stock. Consider normalizing by price or using percentage returns.
5.**Regime lag**: Due to the nested calculation, VOV inherently lags regime changes. By the time VOV spikes, the volatility shift has already begun.
6.**Memory footprint**: With two ring buffers plus backup arrays, VOV uses more memory than simpler indicators. For many simultaneous instances, consider the cumulative impact.
## Trading Applications
### Volatility Regime Detection
Track VOV to identify when volatility is transitioning:
```
If VOV rising from low base: Volatility regime change underway
If VOV falling toward zero: Volatility stabilizing
If VOV persistently high: Unstable market conditions
```
### Options Trading
VOV correlates with the value of volatility derivatives:
```
High VOV: Straddles/strangles more valuable (vol could move either way)
Low VOV: Stable vol environment, directional bets may be safer
```
### Position Sizing
Adjust exposure based on volatility predictability:
```
Position size = Base size × (Target VOV / Actual VOV)
| **Standard Deviation** | VOV is StdDev of StdDev |
## Implementation Notes
### State Management
The indicator maintains four running sums (price sum, price sum-squared, vol sum, vol sum-squared) plus two ring buffers. For bar correction (isNew=false), backup arrays store previous buffer states.
### NaN/Infinity Handling
Invalid inputs are replaced with the last valid price to prevent corruption of running sums. This ensures continuous operation even with data gaps.
### Numerical Stability
The formula $\sqrt{E[X^2] - E[X]^2}$ can produce small negative values due to floating-point errors when variance is near zero. The implementation guards against this by returning 0 when the computed variance is negative.
## References
- Heston, S. L. (1993). "A Closed-Form Solution for Options with Stochastic Volatility with Applications to Bond and Currency Options." *Review of Financial Studies*, 6(2), 327-343.
- Gatheral, J. (2006). *The Volatility Surface: A Practitioner's Guide*. Wiley Finance.