Parkinson Volatility -- Parkinson Historical Volatility Estimator

Contents


Overview

Parkinson Volatility is a historical volatility estimator that uses only the high and low prices of each candle. It was developed by physicist Michael Parkinson in 1980 as a more efficient alternative to the traditional close-to-close volatility calculation.

The formula is:

Parkinson = sqrt( (1 / (4 * N * ln(2))) * sum( ln(H_i / L_i) )^2 )

Where H_i and L_i are the high and low prices for each candle, and N is the lookback period. The result is an annualized volatility estimate.

The key insight: Parkinson volatility is approximately 5x more efficient than close-to-close volatility. "Efficient" here means it extracts more information from the same amount of data. Consider a candle with a huge wick -- price spiked up and came back down, closing near its open. A close-to-close volatility estimator sees almost no movement. Parkinson catches the full intraday range, revealing the true volatility that close-only methods miss entirely. This makes it exceptionally useful for detecting volatility squeezes and expansions in cryptocurrency markets where wicks are common.


Format

parkinson_{period}

The period defines how many candles the estimator averages over.

ExamplePeriodUse Case
parkinson_1010Short-term -- reactive to recent volatility shifts
parkinson_2020Standard -- good balance of smoothness and responsiveness
parkinson_5050Long-term -- captures the broader volatility regime

Period range: 5 to 500.

Value range: 0 to infinity (annualized volatility, always positive). Typical crypto range: 0.005 to 0.10.


Understanding Parkinson Values

Parkinson values are annualized volatility estimates expressed as decimals. They are not normalized to a fixed scale like RSI. The values depend on the asset, timeframe, and current market conditions.

Parkinson RangeInterpretation
Below 0.01Ultra-low volatility -- the market is barely moving. A squeeze is in effect. Breakout potential is high.
0.01 -- 0.03Low volatility -- calm market conditions. Good environment for squeeze-based strategies.
0.03 -- 0.06Moderate volatility -- normal trading conditions for most crypto pairs.
0.06 -- 0.10High volatility -- the market is making large intraday moves. Elevated risk and reward.
Above 0.10Extreme volatility -- crisis-level moves. Caution advised for new entries.

Note

The ranges above are general guidelines for major crypto pairs on hourly timeframes. Smaller-cap altcoins will typically show higher Parkinson values even in calm markets. Always calibrate thresholds through backtesting on your specific trading pair and timeframe.


Understanding Operators with Parkinson

Each operator behaves differently with Parkinson volatility. Because Parkinson is a filter indicator (it describes market conditions, not trading direction), it is almost always used in combination with directional triggers.

< (Less Than) -- State-Based

What it does: The trigger is true on every candle where Parkinson volatility is below the threshold.

On the chart: Volatility is compressed. Candle ranges are small and consistent. The market is in a squeeze state, which often precedes explosive breakouts.

[[actions.triggers]]
indicator = "parkinson_20"
operator = "<"
target = "0.02"
timeframe = "1h"

Typical use: Detect volatility squeezes. When Parkinson drops to unusually low levels, the market is coiling. Combine with a directional trigger (RSI dip, EMA cross, Bollinger breakout) to enter at the moment the squeeze resolves.

> (Greater Than) -- State-Based

What it does: The trigger is true on every candle where Parkinson volatility is above the threshold.

On the chart: Volatility is elevated. Candles have large ranges with significant wicks. The market is making big moves.

[[actions.triggers]]
indicator = "parkinson_20"
operator = ">"
target = "0.07"
timeframe = "1h"

Typical use: High-volatility filter. Use > to either (1) avoid entering new positions during chaotic markets, or (2) only trade when volatility is high enough for profitable moves. The interpretation depends on your strategy design.

cross_below -- Event-Based

What it does: Fires once, at the exact candle where Parkinson transitions from above the threshold to below it. The previous candle had Parkinson >= the target, and the current candle has Parkinson < the target.

[[actions.triggers]]
indicator = "parkinson_20"
operator = "cross_below"
target = "0.03"
timeframe = "1h"

Typical use: Detect the moment the market enters a squeeze. Volatility has just dropped below your calm-market threshold. This signals the beginning of a compression phase -- start watching for directional breakout triggers.

cross_above -- Event-Based

What it does: Fires once, at the exact candle where Parkinson transitions from below the threshold to above it. The previous candle had Parkinson <= the target, and the current candle has Parkinson > the target.

[[actions.triggers]]
indicator = "parkinson_20"
operator = "cross_above"
target = "0.05"
timeframe = "1h"

Typical use: Detect the moment volatility expands. The market was quiet and has just started making larger moves. This often marks the beginning of a trending phase -- combine with a momentum indicator to determine direction.

Why: Parkinson produces floating-point values calculated to many decimal places. Exact equality will almost never be true. Use < or > instead.

Choosing the right operator

  • Use < to detect volatility squeezes -- the most common Parkinson operator. Low Parkinson = calm market = breakout potential.
  • Use > to filter out chaotic markets or to require sufficient volatility for profitable trades.
  • Use cross_below / cross_above to detect the exact moment a volatility regime changes.

TOML Examples

Low Volatility Squeeze with Bullish RSI

When Parkinson volatility is ultra-low (squeeze) and RSI signals oversold conditions, enter long. The logic: a quiet market with a dip often precedes a strong bounce.

[[actions]]
type = "open_long"
amount = "100 USDC"

  [[actions.triggers]]
  indicator = "parkinson_20"
  operator = "<"
  target = "0.02"
  timeframe = "1h"

  [[actions.triggers]]
  indicator = "rsi_14"
  operator = "<"
  target = "35"
  timeframe = "1h"

High Volatility Filter -- Avoid Entry

Use Parkinson as a safety gate. Only enter when volatility is not extreme. This protects against buying into violent, unpredictable markets.

[[actions]]
type = "open_long"
amount = "100 USDC"

  [[actions.triggers]]
  indicator = "rsi_14"
  operator = "cross_above"
  target = "30"
  timeframe = "1h"

  [[actions.triggers]]
  indicator = "parkinson_20"
  operator = "<"
  target = "0.08"
  timeframe = "1h"

Squeeze Breakout with Trend Confirmation

Wait for the market to be in a volatility squeeze, then enter when price breaks above the upper Bollinger Band with a bullish daily trend.

[[actions]]
type = "open_long"
amount = "100 USDC"

  [[actions.triggers]]
  indicator = "parkinson_20"
  operator = "<"
  target = "0.025"
  timeframe = "1h"

  [[actions.triggers]]
  indicator = "price"
  operator = ">"
  target = "bb_upper"
  timeframe = "1h"

  [[actions.triggers]]
  indicator = "sma_50"
  operator = ">"
  target = "sma_200"
  timeframe = "1d"

Volatility Compression DCA

During ultra-calm markets, dollar-cost average into positions. When the squeeze resolves, you will have accumulated at compressed prices.

[[actions]]
type = "open_long"
amount = "50 USDC"

  [[actions.triggers]]
  indicator = "parkinson_50"
  operator = "<"
  target = "0.015"
  timeframe = "4h"
  max_count = 3

Tips

More sensitive than ATR to intraday range

Parkinson uses the full high-low range of each candle, making it more sensitive to wick-heavy price action than ATR. In crypto markets where candles frequently have large wicks that close near the open, Parkinson reveals the true intraday volatility that ATR and close-to-close methods underestimate. If you see calm ATR but elevated Parkinson, the market is quietly volatile -- large moves are happening within candles but not persisting across them.

Asset-specific thresholds are essential

Parkinson values vary enormously between assets. BTC/USDC on the 1-hour chart might have a typical Parkinson of 0.03, while a small-cap altcoin might sit at 0.08 in the same conditions. Always backtest on your specific pair and timeframe to determine what constitutes "low" and "high" volatility. Never copy thresholds from one asset to another without recalibrating.

Compare with GK and YZ for the full picture

Parkinson uses only high and low prices. Garman-Klass adds open and close information. Yang-Zhang adds overnight drift. Using all three together gives you a comprehensive volatility profile. If all three estimators agree that volatility is low, you have high-confidence squeeze detection. If they diverge, the type of divergence reveals what kind of volatility the market is experiencing.

Parkinson assumes no drift

Parkinson volatility assumes that the underlying asset has zero drift (no trending behavior). In a strongly trending market, Parkinson can underestimate true volatility because the consistent directional movement is not fully captured by the high-low range alone. For trending markets, consider using Yang-Zhang volatility which accounts for drift.