Arte SheetsLearn. Try. Understand.

Quantitative Finance

Rogers-Satchell Drift-Independent OHLC Volatility Estimator Formula

Estimate unbiased intraday and annualized return volatility on trending assets using the Rogers-Satchell (1991) Open-High-Low-Close variance v_RS = ln(H/C)*ln(H/O) + ln(L/C)*ln(L/O).

Eliminate upward/downward trend bias from OHLC range volatility!

Classical High-Low volatility estimators (Parkinson and Garman-Klass) assume zero underlying price drift (mu = 0), causing them to systematically overestimate true volatility during strong bull rallies or directional sell-offs! Rogers & Satchell (1991) proved that cross-multiplying High and Low excursions relative to BOTH Open and Close—v_RS = LN(H / C) * LN(H / O) + LN(L / C) * LN(L / O)—cancels constant drift mu completely!

Notice the geometric intuition: on a pure straight-line drift day with zero noise where Low = Open = 100 and High = Close = 105, both LN(H / C) = 0 and LN(L / O) = 0, so Rogers-Satchell rightly reports 0% volatility instead of mistaking the 5% trend for noise!

OHLC Bar ScenarioDaily Variance v_RSDaily Vol %Annualized Vol % (252d)
Trending + Wicks (O=100, H=106, L=99, C=104)0.0016054.0064%63.5993%
Pure Monotone Drift (O=100, H=105, L=100, C=105)0.0000000.0000%0.0000%
Symmetric Doji (O=100, H=103, L=97, C=100)0.0018024.2446%67.3812%

Annualized Rogers-Satchell Volatility % from Single/Mean Bar OHLC

Validates L <= MIN(O, C) and H >= MAX(O, C), then annualizes v_RS across B6 trading days.

=IF(OR(B2 <= 0, B3 <= 0, B4 <= 0, B5 <= 0, B3 < MAX(B2, B5), B4 > MIN(B2, B5), B6 <= 0), "Invalid OHLC Bar", ROUND(100 * SQRT(B6 * (LN(B3 / B5) * LN(B3 / B2) + LN(B4 / B5) * LN(B4 / B2))), 4))

Single-Session Daily Rogers-Satchell Volatility %

Computes 100 * SQRT(LN(H/C)*LN(H/O) + LN(L/C)*LN(L/O)).

=IF(OR(B2 <= 0, B3 < MAX(B2, B5), B4 > MIN(B2, B5)), 0, ROUND(100 * SQRT(LN(B3 / B5) * LN(B3 / B2) + LN(B4 / B5) * LN(B4 / B2)), 4))

Try the example

Use the original values or change them to test your understanding.

Further reading