TSLA opened at $366.83 on April 15, 2026, dropped to $362.50, rallied to $394.65, and closed at $391.95. Close-to-close volatility sees one number: the gap between yesterday’s close and today’s. Parkinson Volatility uses the high-low range and gets closer to reality, but it ignores where the stock opened and where it closed within that range. Garman-Klass Volatility uses all four prices. Open, high, low, close. Every data point your chart already shows you.
Mark Garman and Michael Klass published their estimator in 1980, the same year as Parkinson’s range-based approach. Their key insight: the open and close prices carry information about the direction of price movement within the session, not just its extent. By incorporating all four OHLC values, they built an estimator that is roughly 7.4 times more efficient than close-to-close standard deviation. That means you need far fewer trading days to get a reliable volatility estimate.
What Garman-Klass Volatility Captures That Others Miss
Close-to-close volatility uses one data point per day. Parkinson uses two (high and low). Garman-Klass uses four. More data from the same bar, tighter estimate. That is the entire argument in one sentence.
The practical difference shows up in how the estimator handles sessions where price moves a lot but closes near the open. On a day like SPY’s April 16, 2026, the stock opened at $701.06, hit $702.78 and $698.53, then closed at $701.66. The close was $0.60 from the open. Close-to-close volatility barely registers this session. Parkinson picks up the $4.25 range. Garman-Klass goes further: it recognizes that when the close is near the open, the range component matters more relative to the open-to-close move. The formula weights these components differently, which is why two sessions with identical ranges but different open-to-close gaps produce different Garman-Klass values.
I run Garman-Klass alongside Parkinson on my volatility scans specifically because the gap between the two tells me something. When Garman-Klass reads significantly lower than Parkinson, it usually means the open-to-close move is small relative to the range. The stock is churning within a wide band but not committing to direction. That is often a sign of distribution or accumulation, not trending behavior.
The Garman-Klass Formula
For each trading session, the Garman-Klass variance estimator computes:
\sigma_{GK}^2 = \frac{1}{n} \sum_{i=1}^{n} \left[ \frac{1}{2} \left( \ln \frac{H_i}{L_i} \right)^2 - (2 \ln 2 - 1) \left( \ln \frac{C_i}{O_i} \right)^2 \right]Where O_i, H_i, L_i, C_i are the open, high, low, and close for session i, and n is the number of sessions.
The daily volatility is then \sigma_{GK} = \sqrt{\sigma_{GK}^2}. To annualize, multiply by \sqrt{252}.
Two things to notice. First, the \frac{1}{2} coefficient on the range term and the (2 \ln 2 - 1) \approx 0.3863 coefficient on the close-to-open term are not arbitrary. They come from the minimum variance unbiased estimator under geometric Brownian motion. Second, the close-to-open term is subtracted, not added. This is counterintuitive and trips people up. The range term already contains information about the open-to-close move, so the second term corrects for double-counting. If you add them, your volatility estimate will be inflated.
A common implementation mistake: swapping \ln(C/O) for \ln(C/O_{prev}), where O_{prev} is the previous day’s open. That is a different estimator entirely. Garman-Klass specifically uses the same-day open and close. If your code uses the prior day’s open, your results will be wrong.
Real OHLC Data: TSLA and SPY in April 2026
Here is the Garman-Klass calculation on TSLA for April 14-17, 2026:
April 14: O=$357.67, H=$367.63, L=$354.77, C=$364.20.
\frac{1}{2}(\ln \frac{367.63}{354.77})^2 - 0.3863 \times (\ln \frac{364.20}{357.67})^2 = 0.000633 - 0.000127 = 0.000507April 15: O=$366.83, H=$394.65, L=$362.50, C=$391.95.
\frac{1}{2}(0.08502)^2 - 0.3863 \times (0.06624)^2 = 0.003614 - 0.001695 = 0.001919April 16: O=$393.81, H=$394.06, L=$381.80, C=$388.90.
\frac{1}{2}(0.03161)^2 - 0.3863 \times (-0.01255)^2 = 0.000500 - 0.000061 = 0.000439April 17: O=$395.92, H=$409.28, L=$391.65, C=$400.62.
\frac{1}{2}(0.04402)^2 - 0.3863 \times (0.01180)^2 = 0.000969 - 0.000054 = 0.000915Average daily variance: \frac{0.000507 + 0.001919 + 0.000439 + 0.000915}{4} = 0.000945
Daily Garman-Klass volatility: \sqrt{0.000945} = 0.0307, or 3.07%. Annualized: 0.0307 \times \sqrt{252} = 48.8\%.
Now compare SPY over the same window. SPY’s four-day Garman-Klass variance averages 0.0000211, giving a daily volatility of 0.46% and an annualized figure of about 7.3%. TSLA’s Garman-Klass volatility runs nearly seven times higher than SPY’s. That ratio aligns with what any TSLA trader already knows from experience, but having a precise number lets you size positions and set stops with more confidence than gut feel.
Look at TSLA’s April 15 session specifically. The Garman-Klass single-day variance of 0.001919 is nearly four times the average of the other three days. That one session, with its $32 range, dominates the four-day estimate. This is both a strength and a vulnerability: the estimator correctly identifies the explosive session, but a single outlier day can skew a short lookback window dramatically.
How Garman-Klass Compares to Parkinson and Close-to-Close
Statistical efficiency is the primary advantage. Garman and Klass proved their estimator achieves about 7.4 times the efficiency of close-to-close volatility, compared to Parkinson’s roughly 5 times improvement. In practical terms: a 20-day Garman-Klass window gives you roughly the same estimation precision as a 148-day close-to-close window. For swing traders working with 10-20 day lookback periods, that efficiency gain is significant.
The Parkinson estimator ignores open and close information entirely. It measures the maximum extent of price movement but says nothing about where the session started or finished within that range. A day where price opens at the low and closes at the high looks identical to Parkinson as a day where price opens at the high and closes at the low. Garman-Klass distinguishes these cases because the \ln(C/O) term is positive in the first scenario and negative in the second. Since the term is squared, the magnitude matters regardless of direction, but it still captures how much of the range was “used” by the open-to-close move.
Where Parkinson has an edge: simplicity. If your data source only provides high and low reliably (some aggregated daily data sets have questionable open prices, especially for thinly traded ETFs), Parkinson is the safer choice. I have seen cases where adjusted open prices for mutual fund NAV-based data produce Garman-Klass estimates that are clearly wrong because the “open” is really just the prior close restated.
Where Garman-Klass Breaks Down
The Garman-Klass estimator assumes continuous trading within the session. Price follows geometric Brownian motion from open to close, visiting the high and low along the way. When that assumption fails, the estimator becomes biased.
Overnight gaps are the most obvious failure mode. A stock that closes at $100, opens at $110 on earnings, trades between $108 and $115, and closes at $112 will produce a Garman-Klass value that reflects only the $108-$115 range and the $110-to-$112 open-to-close move. The $10 gap is invisible. If a stock routinely gaps, Garman-Klass will systematically underestimate its true volatility. This is why the Yang-Zhang estimator was later developed: it adds an overnight return component that Garman-Klass deliberately excludes.
Illiquid names are another problem. The formula assumes the high and low represent genuine price discovery. In a stock that trades 50,000 shares a day with wide bid-ask spreads, the recorded high might be a single uptick on 100 shares, not a real price level. Garman-Klass will overestimate volatility in these cases because it treats that spike as meaningful intraday movement.
Crypto markets present a third challenge. Because crypto trades 24/7, the “open” and “close” for a daily bar are arbitrary cut points, not natural session boundaries. The Garman-Klass model was designed around equity sessions with defined starts and stops. Applying it to 24-hour markets produces valid numbers, but the theoretical efficiency gains no longer hold because the assumptions behind the optimal weights break down.
Mistakes Traders Actually Make
The most frequent mistake is using Garman-Klass as a signal instead of a measurement. Garman-Klass tells you how volatile a stock has been. It does not tell you which direction price will move, and it does not tell you whether current volatility will continue. Traders who buy “because Garman-Klass is rising” are confusing a thermometer with a forecast.
Second mistake: using too short a lookback. Because Garman-Klass is more efficient per observation, some traders reason that 5 days is enough. It is not. Even with 7.4x efficiency, a 5-day window is equivalent to about a 37-day close-to-close window. That is still noisy. I use 20 days as a minimum for any volatility scan and 60 days for position sizing decisions. The efficiency gain means you can trust 20 days of Garman-Klass the way you would trust 148 days of close-to-close, but five days is still a small sample.
Third mistake: applying it across overnight gaps and wondering why volatility seems “too low” around earnings. As described above, Garman-Klass is blind to gaps. If you are measuring volatility around an earnings event, you need an estimator that accounts for the overnight return. Using Garman-Klass for earnings plays will give you stops that are too tight because the estimator underestimated the real move.
Fourth: treating Garman-Klass and historical volatility from close-to-close returns as interchangeable when setting ATR-based stops. They measure different things. Mixing estimators without understanding the difference leads to position sizes that do not match your actual risk.
How Swing Traders Should Use Garman-Klass
The first practical use is volatility-adjusted position sizing. If you size positions based on expected daily range, Garman-Klass gives you a tighter estimate than close-to-close volatility with fewer data points. For a swing trade with a 5-10 day holding period, a 20-day Garman-Klass window captures recent intraday behavior accurately without the noise of a 5-day estimate or the staleness of a 60-day close-to-close window.
The second use is comparing volatility across different instruments on equal footing. TSLA’s Garman-Klass of 48.8% versus SPY’s 7.3% is a cleaner comparison than raw ATR, because Garman-Klass is already normalized as a percentage. You can directly compare stocks at different price levels without dividing by price first.
Third: monitoring volatility regime changes. When Garman-Klass drops significantly over a 20-day rolling window, intraday ranges are compressing. That compression often precedes breakouts. This works similarly to Bollinger Band Width squeeze detection, but Garman-Klass reacts faster because it uses more information per bar.
I combine Garman-Klass with a simple percentile rank over 252 days. When the current 20-day Garman-Klass reading falls below the 10th percentile of its one-year range, the stock is in an unusually quiet period relative to its own history. That is where I start watching for breakout setups. The percentile frame matters because an absolute Garman-Klass reading of 0.02 means something completely different for a biotech than for a utility.
When to Use Garman-Klass and When Not To
Use it when you have reliable OHLC data for liquid, exchange-traded instruments with defined trading sessions. Equities, ETFs, and futures with regular hours are the sweet spot. Use it for position sizing, volatility ranking, and regime detection over lookback windows of 20 days or more.
Do not use it around known gap events (earnings, dividends, splits). Do not use it on illiquid names where the high and low are noise. Do not use it on 24/7 markets without understanding that the theoretical efficiency advantage may not apply. And do not use it as a directional signal. It measures how much a stock moves, not where it is going.
Garman-Klass is not the final word in volatility estimation. Rogers-Satchell and Yang-Zhang both extend the framework to handle drift and overnight returns. But for clean intraday volatility measurement on liquid stocks during regular trading, Garman-Klass extracts more from every daily bar than any simpler alternative.
Educational content only. Not investment advice. Trading involves risk. You are responsible for your decisions.
