Skip to content
All library documents

Using OHLC Data to Estimate Volatility and Track Price Levels

Article Quant Q&A · Author: Qbik

Summary

The document asks how models can use the full open, high, low, and close record instead of relying only on closing prices. It explains that the high–low range contains information about variation within an interval and may help estimate volatility, including in stochastic volatility models. A simulation compares sample variance with the maximum-minus-minimum range for samples of two different sizes, illustrating that their relationship depends on the number of observations.

The responses point to methods for estimating volatility from high, low, open, and close prices, including work building on a high–low estimator. They also note that OHLC data can show whether a price level was crossed during an interval, though not when the crossing occurred. The discussion is exploratory: it supplies no numerical simulation results, and an interval range does not reveal the path or timing of prices within that interval.

Key ideas

  • The high–low range can provide information about within-interval price variability.
  • The relationship between a sample range and variance depends on the number of observations.
  • OHLC-based estimators can use more price information than close-only volatility measures.
  • OHLC bars can indicate whether a threshold was crossed, but not the crossing time.

Tags

Full text
# Model which fully incorporate OHLC data (higl ald low also)


# Model which fully incorporate OHLC data (higl ald low also)












OHLC data are one of the most popular kind of data available. Are there models which could incorporate all the information provided by OHLC - regular 1-minute frequency data for example ? Usually only close price is used, but high - low difference provides information about price volatility in given period - because width of range in population is correlated with variance in population (but dependence varies with population size, dependence is stronger for smaller sizes), if high-min is correlated with volatility we could use it in case of estimation of stochastic volatility model for example. Simple simulation of variance and max-min difference in case of population sizes - 10 and 20 :

```
n_iter=1e5
n_obs=10

out <- matrix(0, n_iter, 2)
out <- as.data.frame(out)
names(out)=c("var", "max - min")

for(i in 1:n_iter){

    x <- rnorm(n_obs)

    out[i,1] = var(x)
    out[i,2] = diff(range(x))

}

plot(out, main = paste("n_iter = ",n_iter,", n_obs = ",n_obs))
abline(lm(out[,2]~out[,1]), col = 2, lwd = 2)
cor(out)

# case population size 20
n_iter=1e5
n_obs=20

out <- matrix(0, n_iter, 2)
out <- as.data.frame(out)
names(out)=c("var", "max - min")

for(i in 1:n_iter){

    x <- rnorm(n_obs)

    out[i,1] = var(x)
    out[i,2] = diff(range(x))

}

plot(out, main = paste("n_iter = ",n_iter,", n_obs = ",n_obs))
abline(lm(out[,2]~out[,1]), col = 2, lwd = 2)
cor(out)
```

## Answer by KarolisR (score 1)

https://quant.stackexchange.com/a/29499

Not a model as such, but this paper might be interesting to you:

A Simple Way to Estimate Bid-Ask Spreads from Daily High and Low Prices

It estimates bid-ask spreads from daily OLHC data. Perhaps you could use the same logic with minute data?

## Answer by Alex C (score 1)

https://quant.stackexchange.com/a/29514

If it is volatility you are interested in, a relevant paper is "Drift‐Independent Volatility Estimation Based on High, Low, Open, and Close Prices" by Dennis Yang and Qiang Zhang, The Journal of Business, Vol. 73, No. 3 (July 2000), pp. 477-492. This builds on the earlier HLC volatility estimator by Parkinson (1980) that was mentioned above.

Another application of OHLC data is to detect if prices crossed a certain level K during an interval of time (although it will not tell you at what time within the interval the level was crossed).

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.