Skip to main content

Garman Klass Vol

Quick Reference

PropertyValue
Dimensionsignal
Categoryvolatility
Versionv0.9.0 (Beta)
Output Columngk_vol

Garman-Klass volatility: sqrt(0.5ln(H/L)^2 - (2ln2-1)*ln(C/O)^2) from bar OHLC

Formula

sqrt(clip(((log((high / low)) * log((high / low))) - (log((close / open)) * log((close / open)))), 0.0))

CDM Inputs

ColumnCDM TableDescription
opencdm_*CDM source table
highcdm_*CDM source table
lowcdm_*CDM source table
closecdm_*CDM source table

Parameters

This FeatureType has no configurable parameters.

Output

Column: gk_vol

Garman-Klass volatility estimate

Market Intuition & Trading Rationale

Garman-Klass volatility is an OHLC-based volatility estimator that uses the full bar information (open, high, low, close) rather than just close-to-close returns. It's approximately 7.4× more efficient than close-to-close volatility — it achieves the same precision with far fewer observations. The formula weights the overnight gap (open vs previous close) and intraday range (high-low) separately, making it robust to gap openings.

Usage Cases

  • Efficient volatility estimation: Use GK vol when OHLC data is available. It provides more stable estimates than realized_volatility for the same window size, or equivalent estimates with shorter windows.
  • Bar-level volatility comparison: Compare GK vol across bars. Higher GK vol bars indicate periods of increased intra-bar price dispersion — useful for identifying volatile trading sessions.
  • Complement to realized_vol: GK vol uses intra-bar information while realized_vol uses close-to-close. Comparing the two reveals whether most volatility occurs within bars (GK > realized) or between bars (realized > GK).

YAML Definition

name: garman_klass_vol
description: 'Garman-Klass volatility: sqrt(0.5*ln(H/L)^2 - (2*ln2-1)*ln(C/O)^2) from
bar OHLC'
category: volatility
version: v0.9.0 (Beta)
dimension: signal
status: Pre-release
required_inputs:
- open
- high
- low
- close
output_column: gk_vol
output_description: Garman-Klass volatility estimate
parameters: {}
formula: sqrt(clip(((log((high / low)) * log((high / low))) - (log((close / open))
* log((close / open)))), 0.0))