# Rogers-Satchell Estimator

A Volatility concept (Volatility estimators) in the LuxAlgo Library, with 1 indicator implementation.

## What is the Rogers-Satchell Estimator?

The Rogers-Satchell estimator is an OHLC volatility estimator whose defining property is drift independence: it stays unbiased when the market trends, where earlier range-based estimators assume a zero mean return. Introduced by L.C.G. Rogers and S.E. Satchell in 1991, the per-bar variance is the log of high over close times the log of high over open, plus the log of low over close times the log of low over open. Pairing each extreme against both endpoints is what cancels drift: a bar that opens at its low and closes at its high contributes exactly zero, while two-sided excursion contributes a lot.

Like the [Parkinson estimator](https://www.luxalgo.com/library/concept/parkinson-estimator/) and [Garman-Klass estimator](https://www.luxalgo.com/library/concept/garman-klass-estimator/), it sees only what happens inside the bar, so overnight gaps are invisible and gap-prone assets are understated. Its main modern role is as the intraday core of the [Yang-Zhang estimator](https://www.luxalgo.com/library/concept/yang-zhang-estimator/), which wraps overnight and open-to-close variance terms around it to handle gaps and drift at once.

The zero-contribution case is the estimator's soul, not a bug: a bar that opens on its low and closes on its high traveled far but wiggled not at all, and Rogers-Satchell prices exactly the wiggle. That is what drift independence means operationally, the estimator measures excursion around the bar's path rather than the path's progress, so a clean trend day reads as quiet and a violent two-sided day reads as loud, whatever the net change. Aggregation follows the family convention: average the per-bar variances over a window, take the square root, annualize by the period count, and the range-based construction delivers several times the statistical efficiency of close-to-close estimates on the same data.

Practice deploys it in three roles. Standalone, it feeds volatility bands and [vol-targeted sizing](https://www.luxalgo.com/library/concept/realized-volatility/) in trending regimes, where zero-drift estimators quietly inflate; diagnostically, the spread between Rogers-Satchell and Parkinson or Garman-Klass over one window decomposes measured volatility into wiggle versus one-way drift, a regime read in itself, the comparison estimator-suite tools exist to display; and structurally, it is the intraday engine inside Yang-Zhang, the composite most desks reach for when gaps and drift both matter. Its boundary is the bar: anything that happens between sessions is invisible to it by construction.

## How to calculate the Rogers-Satchell estimator

Two log products per bar, averaged and annualized: the drift cancellation is baked into the pairing.

1. Per bar, compute the first product: the log of high over close, times the log of high over open.
2. Add the second: the log of low over close, times the log of low over open; the sum is the bar's variance contribution.
3. Average the contributions across the estimation window to get per-period variance.
4. Take the square root and annualize by the number of periods per year for a comparable volatility figure.
5. Diagnose drift by comparison: the gap between this estimate and a zero-drift range estimator over the same window measures how much of apparent volatility was actually trend.

## How it's calculated

A range-based volatility estimator built from each bar's open, high, low, and close that remains unbiased when price drifts.

```
RS_t = ln(H_t / C_t) × ln(H_t / O_t) + ln(L_t / C_t) × ln(L_t / O_t)
sigma_t = sqrt( (1 / n) × Σ_(i=0..n-1) RS_(t-i) )
Annualized volatility = sigma_t × sqrt(A)

  O_t: open of bar t
  H_t: high of bar t
  L_t: low of bar t
  C_t: close of bar t
  RS_t: single-bar Rogers-Satchell variance estimate (RS_(t-i) is the value i bars earlier)
  n: averaging window in bars (commonly 10 to 30)
  i: bar offset within the window
  sigma_t: per-bar Rogers-Satchell volatility at bar t
  A: bars per year for annualization (252 for daily bars)
  ln(): natural logarithm
  t: bar index
```

Unlike the Parkinson and Garman-Klass estimators, its expectation is unaffected by a nonzero drift, so it stays valid in trending markets.

All four inputs sit inside one bar, so overnight gaps are ignored; the Yang-Zhang estimator combines Rogers-Satchell with an overnight term to cover them.

Each RS_t is non-negative by construction; quote sigma_t per bar and apply sqrt(A) only when an annualized figure is needed.

## How traders use it

- As the within-bar volatility estimate for trending markets: zero-drift estimators inflate when the tape runs one way, while Rogers-Satchell prices only the wiggle around the move.
- As a drift diagnostic: a wide gap between Parkinson or Garman-Klass and Rogers-Satchell over the same window flags how much of measured 'volatility' is actually one-way trend.
- As a band and stop input where trend is the norm: envelopes sized from it reflect two-sided excursion rather than directional progress, so they do not balloon simply because the market is running.
- Inside the Yang-Zhang composite: as the drift-proof intraday core around which the overnight and open-to-close terms are wrapped, which is how most institutional realized-vol figures consume it.
- In estimator-suite dashboards: plotted beside Parkinson, Garman-Klass and close-to-close measures so their agreements and spreads read as a live decomposition of what kind of volatility the market is currently producing.

## Rogers-Satchell vs related OHLC estimators

- **Parkinson Estimator** (https://www.luxalgo.com/library/concept/parkinson-estimator/): Parkinson uses only the high-low range and assumes zero drift, so trend days inflate its reading; Rogers-Satchell pairs the extremes against both endpoints and cancels the drift term. In a strong trend the two diverge, and the divergence itself is the drift measurement.
- **Garman-Klass Estimator** (https://www.luxalgo.com/library/concept/garman-klass-estimator/): Garman-Klass adds open and close information to Parkinson for better efficiency but keeps the zero-drift assumption; Rogers-Satchell trades a little efficiency for unbiasedness under trend. Quiet rangebound tape favors Garman-Klass, running tape favors Rogers-Satchell.
- **Yang-Zhang Estimator** (https://www.luxalgo.com/library/concept/yang-zhang-estimator/): The composite completion: Yang-Zhang wraps an overnight variance term and an open-to-close term around the Rogers-Satchell core, handling gaps and drift simultaneously. Where gaps matter, Yang-Zhang is the deployment and Rogers-Satchell the engine inside it.

## FAQ

### What does drift-independent mean for a volatility estimator?

Range estimators like Parkinson and Garman-Klass are derived assuming the mean return is zero; in a strong trend, part of what they measure is drift rather than randomness, biasing the estimate. Rogers-Satchell is constructed so the drift term cancels: its expectation equals the true variance whatever the mean return, which is why it is preferred in trending conditions.

### Does the Rogers-Satchell estimator handle overnight gaps?

No. It is computed entirely from each bar's open, high, low, and close, so a jump between yesterday's close and today's open never enters the formula, and total volatility is understated on gapping assets. When gaps matter, use it inside the Yang-Zhang estimator, which adds an explicit overnight variance component around the Rogers-Satchell core.

### Why does a perfect trend bar contribute zero?

Open at the low, close at the high, and both log products vanish: high-over-close pairs with a zero high-over-open term's counterpart, and the low terms mirror it. The bar traveled but never traded away from its path, so its measured wiggle is nil, which is exactly the estimator's claim: volatility is two-sided excursion, and pure progress is drift, deliberately excluded from the measurement.

### How much better is it than close-to-close volatility?

Range-based estimators extract information from four prices per bar instead of one, and the standard results put their efficiency at several times the close-to-close estimator, meaning materially fewer bars for the same estimation error. Rogers-Satchell sits in that family's efficiency class while adding drift independence. The gains assume clean OHLC data; wild venue-specific wicks feed straight into the formula, which is the practical caveat.

### How does Rogers-Satchell relate to ATR?

Different objects for different jobs. ATR averages true ranges, gaps included, in price units, built for stop distances and position sizing; Rogers-Satchell estimates return variance, gaps excluded, in annualizable volatility units, built for measurement and comparison. A market can print rising ATR from gaps alone while Rogers-Satchell stays flat, and reading the pair together separates the overnight component from intraday excursion.

### When is Rogers-Satchell the wrong estimator?

Whenever the risk you care about arrives between bars: earnings gappers, thin overnight sessions, and weekend-prone crypto all carry variance the formula never sees, so it systematically understates their totals. Zero-drift alternatives are also marginally more efficient in genuinely driftless, rangebound stretches. The composite answer is usually Yang-Zhang, which keeps the Rogers-Satchell core and repairs precisely the gap blindness.

## Implementations in the Library

- Rogers-Satchell Estimator (LuxAlgo): https://www.luxalgo.com/library/indicator/rogers-satchell-estimator/

## Related concepts

- Volatility Estimators: https://www.luxalgo.com/library/concept/volatility-estimators/
- Close-to-close Historical Volatility: https://www.luxalgo.com/library/concept/close-to-close-historical-volatility/
- EWMA Volatility: https://www.luxalgo.com/library/concept/ewma-volatility/
- Parkinson Estimator: https://www.luxalgo.com/library/concept/parkinson-estimator/
- Garman-Klass Estimator: https://www.luxalgo.com/library/concept/garman-klass-estimator/
- Yang-Zhang Estimator: https://www.luxalgo.com/library/concept/yang-zhang-estimator/
- Garman-Klass–Yang-Zhang Hybrid: https://www.luxalgo.com/library/concept/garman-klass-yang-zhang-hybrid/
- Jump Detection: https://www.luxalgo.com/library/concept/jump-detection/
- Volatility Signature Plot: https://www.luxalgo.com/library/concept/volatility-signature-plot/
- Volatility of Volatility: https://www.luxalgo.com/library/concept/volatility-of-volatility/

---

Source: https://www.luxalgo.com/library/concept/rogers-satchell-estimator/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/