Replicating Bloomberg 90-Day Historical Volatility from Closing Prices
Summary
The document explains how to retrieve Bloomberg historical volatility and reproduce a 90-day estimate from price history. It identifies a volatility field that can be requested through the API and reports that, for two Hong Kong stocks in the example, its values match the HVT display. It also points readers to Bloomberg’s help desk and to model details available through field overrides and an HVT white paper.
For the default calculation, the method uses closing prices rather than opening and closing ticks: calculate daily log returns, take their sample standard deviation over the chosen window, then annualize using the stated factor of 260. The example uses 90 days of volatility. Bloomberg may suppress the result when too many observations are missing; the answer estimates that roughly 90% of the data may be required. The exact field settings and model overrides can affect results, so replication depends on matching Bloomberg’s selected model and data window.
Key ideas
- Bloomberg exposes historical volatility through a volatility field that can be queried with its API.
- The described default estimate is based on closing prices, not opening and closing ticks.
- Calculate log returns, take their sample standard deviation, and annualize using the selected factor.
- Matching Bloomberg requires using the same model settings and sufficient price observations.
Tags
Full text
# Historical volatility on bloomberg API
# Historical volatility on bloomberg API
Is there a way to obtain the historical volatility of a stock from the bloomberg API? I would be looking for the data in the HVT table. Actually 3-months historical volatility from now would be enough.
I know there are functions to get the implied volatility for options (using IVOL_LAST_RT for example) but that is not what I am looking for.
I could also just get the day opening and closing ticks from the terminal and then calculate the historical volatility, but I am trying to avoid this step.
Thanks Honza
## Answer by AKdemy (score 1)
https://quant.stackexchange.com/a/71790
This is very late but it seems lots of people looked at this question. In general, for simple questions like this, asking the help desk (F1F1) should be best. They respond within a minute or 2 usually, and you should expect someone to guide you to these VOL fields in less than 30 minutes for sure.
I checked 330 HK as well as 3800HK and both have data available on HVT and the API matches. For example, `=BDH("3800 HK Equity","VOLATILITY_90D", "20200505","20200927","sort=d")` gives
which is identical to HVT
You have a choice of several models in the overrides (click on the name of the override to see details). The models itself are explained in the white paper on HVT. It is not computed with opening and closing ticks as the question suggests but purely with the history of closing prices. Sticking to the 3800 HK example, and teh default model, this is quick to replicate. You fetch the price history (just what HP shows) with `=BDH("3800 HK Equity","PX_LAST", "20200505","20200927","sort=d")`, compute the log return via $=LN(P_t/P_{t-1}$), calculate the sample standard deviation over the desired period (excel function STDEV.S - for 90 days, you need to use J1-J89 in the screenshot below) and multiple the result by the square root of the annualization factor (260 by default).
That is it, apart for a rule that Bloomberg uses to not display values if a certain number of data points is missing for the calculation (I think >90% is required).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.