Defining Historical Volatility vs Price

Updated 29th May, 2017

Due to Yahoo!'s service being inaccessible for use with API's, the Downloader now works with Google Finance.

Downloads full price stock history in an instant.

Calculates Realized Volatility for your defined period.

Graphs price vs market volatility.

Download Volatility Excel

Calculating Historical Volatility

Volatility is the most crucial of all option trading concepts. Volatility indicators provide traders with an estimate of how much movement a stock can be expected to make over a given time frame. This is crucial in determining whether an option is likely to expire in or out of the money by the expiration date.

Understanding volatility also helps traders understand whether an option is cheap/expensive relative to the historical facts of the underlying instrument.

There are two types of volatility that we will be looking at: Implied Volatility and Historical Volatility.

Volatility Definition

Historical Volatility is a statistical calculation that tells option traders how rapid price movements have been over a given time frame. The most common method of calculating historical volatility is called the Standard Deviation.

Standard Deviation measures the dispersion of a set of data points from its average. The more disperse (spread out) the data is, the higher the deviation. This deviation is referred by traders as volatility.

Don't get too caught up in trying to understand the how's and whys of the standard deviation, just accept that all traders use this method for determining historical volatility. However, if you want more of an explanation you can refer to Appendix C of Option Volatility & Pricing for a calculated example of standard deviation.

Or, you can download the Historical Volatility.xls spreadsheet for an example of how to calculate historical volatility.

Assets that have large and frequent price movements are said to be volatile or said to be of high volatility. Consequently, assets whose price movements are slow and predictable are said be low volatile instruments. Take a look at the following examples of high and low volatile assets.

Take a look at the examples below of a highly volatile stock and a low volatile stock;

High Volatility

High Volatility Stock Chart $CLF

Low Volatility

Low Volatility Stock Chart $XOM

Why is volatility so important to option traders? Because volatility is a measure of the possible price changes of the asset in the future. Assets that have high volatility can be expected to have large price changes in the future. As a result, options that are based on assets with high volatility can be expected to have higher prices.

The higher the volatility, the more likely it is that the underlying asset will trade higher (or lower) than the exercise price by the expiry date.

Implied Volatility

Implied volatility is the markets view of where volatility will be in the future. To determine an option's implied volatility, the trader must use a pricing model.


But for now, take a look at the following illustration;


Historical Volatility tells us how volatile as asset has been in the past. Implied Volatility is the markets view on how volatile as asset will be in the future.

We can tell how high/low implied volatility is by comparing the market price of an option to the options theoretical fair value. This is why we need to use an option pricing model - to determine the fair value of an option and hence know if the market price for the option is over/under valued.

When the market price of an option is higher than it's theoretical value (based off past information) it is considered expensive and so to if the market price of the option is less than the theoretical price, it is considered cheap.

The Volcone Analyzer

Another way to look at implied volatility is to compare the current level of implied volatility to the average level of implied volatility for the same option.

It's a sound approach, however, building your own database of implied volatility data for every US stock requires a huge investment of time and resources. If you're interested in this idea though, then I suggest you take a look at the Volcone Analyzer Pro by Options University. It instantly tells you if an option is cheap or expensive relative to the historical volatility levels.

Volcone Analyzer Pro

Comments (44)

PeterSeptember 25th, 2017 at 8:26pm

Hi Melanie,

Yes, there was a change in the format of data provided by Google. A fix was made yesterday. If you download the file again it should work correctly. Let me know if you still have problems.

MelanieSeptember 25th, 2017 at 5:23pm

I am only able to get one year looking back worth of data from the day, even if i put the start date much earlier such as 2015. is anyone else having this problem? how do i fix.

PeterSeptember 12th, 2017 at 11:31am

Hi Kristine,

Yes, since Yahoo! removed support for the historical data many instruments are no longer available for download. Google's API doesn't provide as many symbols as Yahoo! Until I find another provider that supports all exchanges for free, I'm not sure what else you can do. Sorry about that!

KristineSeptember 11th, 2017 at 12:16pm

I have been using your Black Sholes calculator for years, however I haven't needed it for about 6 months.
I was surprised that it no longer works. I tried downloading the new one and using my code CVE:NCI, however I still get the message "Error Symbol not found" when I Extract Data.
Please help. This is an invaluable too for a small business like mine.

PeterJuly 17th, 2017 at 6:08am

Hi Rob,

Thanks for pointing it out! Someone else has reported it recently also. Not sure how to resolve this...I'll take a look soon though. Anyone with VBA skills that wants to take a look is more than welcome ;-)

RobJuly 14th, 2017 at 9:56am

Thank you for updating the spreadsheet, it is an amazingly useful tool.

Unfortunately, the update introduced a bug thanks to the way Google handles lightly traded stocks. If you use the symbol "ROSE" from 1/1/17 you will see the problem with the data Google sends back. On days with no trading the data reads "30-Jan-17,-,-,-,10.45,0" The "-" seems to trip-up your calculations.

I am not sure if this fix is easy or not, but it would be greatly appreciated.


PeterJune 19th, 2017 at 1:23am

Hi Lakru,

When using Google, not all instruments are supported via their CSV download option. When checking a symbol on Google, go to Historical Prices and on the right hand side check for a Download CSV option...if it is not there, then the spreadsheet won't work. I know that currently, HK stocks aren't on provided via CSV. However, I noticed that ETFs weren't provided a couple of months ago but have since been maybe it is a matter of time until they are added...

LakruJune 18th, 2017 at 4:05am

Hello, I have a problem with using the table. Whenever I press the "extract data" button, I get the following message: "Error! Symbol not found, or Yahoo! has changed the data format". I have selected Google as the source, I do not know why the message mentions Yahoo. Anyway, I have macros enabled and I am quite sure I use correct ticker name (eg. BABA).

PeterJune 1st, 2017 at 7:11pm

Hi Philip,

Mmm, doesn't look like Google likes the HK data when accessed this way. I used the same code i.e. HKG:0011 but it returns "Symbol not found". Let me look into it some more. Send me an email so I have your address and can reply if I find a way around it.

PhilipJune 1st, 2017 at 2:46am

Hello, may I know how your revised speadsheet calculate the volatililty for stock in Hong Kong, e.g. what to be inputted into the ticker cell for Hang Seng Bank stock with stock code 0011?

JohnMay 31st, 2017 at 6:03pm

Awesome! Thank you so much for the new Worksheet update. I love it and had been using this spreadsheet for years now since 2007. Greatly appreciate it.

PeterJuly 29th, 2010 at 6:31pm

Hi Luis,

Unfortunately Yahoo doesn't provide historical data for FOREX - only quotes.

As soon as Yahoo add support for this FOREX historical data will just work like stocks do now with the spreadsheet.

LuisJuly 29th, 2010 at 11:39am

Great job. How about a similar sheet for FX? Should be a simple modification to the macro, but it is protected.


SAIFEEJune 25th, 2010 at 3:38am


PeterFebruary 2nd, 2010 at 4:47am

Hi Mike, the risk free rate is the current level of interest rates and dividend schedules/yields can be obtained from your broker.

MikeFebruary 1st, 2010 at 1:55pm

That would be on the "Basic" tab

MikeFebruary 1st, 2010 at 1:54pm

I am fairly new and was wondering where would I get the figures to enter into cell #'s C8 & C9?

PeterJanuary 14th, 2010 at 11:29pm

Mmm, works fine for me. What symbol are you trying? Can you retrieve that data directly from the Yahoo! site?

KyleJanuary 12th, 2010 at 6:50am

"Error! Symbol not found, or Yahoo! has changed the data format".

Have they changed the code?

PeterJanuary 11th, 2010 at 6:16am

Yep, the lookback period is configurable, so you can enter 100 if you like...I chose 50 as a default arbitary value.

MilosJanuary 11th, 2010 at 3:58am

Shouldn't the rolling window be bigger than 50? When the sample is small you can get evolution of volatility just by chance - Say you had one day very extraordinary large observation, this was in day 1, and on day 51 you have relatively small observation. Once you delete day one and add day 51 you have a change and volatility become time varying. I have seen that in other places 100 day rolling window is used, that is why I am asking

ArtunJanuary 5th, 2010 at 11:32pm

There are couple of obvious fixes required to fit into actual trading volatility calculation, I think the most obvious one is there are not 365 trading days, so you need to use 252 trading days for the sqrt part.

DaveNovember 7th, 2009 at 12:30pm

Peter - You're welcome. I thought that might be the case. The Offset() method of defining a range is an incredibly powerful tool, one which seems to be little known or used, even among savvy Excel users. I was one of them ... a whole new world was opened to me when I "discovered" it. Keep up the good work! Dave

PeterNovember 5th, 2009 at 2:41pm

Hi Dave,

Volatility Days certainly is used in the's written into the Macro...not in the formula. When you hit the "Extract Data" button the array for the volatility calculation changes according to what you've entered into the "Volatility Days" cell.

Having said that...I do appreciate your formula below. The reason I included it in the Macro was because I didn't know how to do it with a formula ;-) But now I know, thanks a lot...very useful!

DaveNovember 5th, 2009 at 11:05am

Wont' accept less than symbol. =IF(ROW() is less than (Days+11),"",STDEV(OFFSET(C100,0,0,-Days,1))*SQRT($B$2)). Copy it to all the cells in column D.

DaveNovember 5th, 2009 at 11:00am

=IF(ROW()<Days+11,"",STDEV(OFFSET(C100,0,0,-Days,1))*SQRT($B$2)) and copy it to all the cells in column D.

DaveNovember 5th, 2009 at 10:57am

Clearly the "Volatiliy Days" variable isn't used in the volatility calculations, but it can be. Assign the name "Days" to cell B3, then relace the formulas in cell D100 with =IF(ROW()<Days+11,"",STDEV(OFFSET(C100,0,0,-Days,1))*SQRT($B$2)) and copy it to all the rest of the relevant cells in column D. Now you can vary the number of volatility days and the volatility will change accordingly.

Alan ChuaOctober 19th, 2009 at 4:03pm

Thanks so much Peter for a job well done. Your spreadsheet has helped me track volatility with ease.

PeterOctober 13th, 2009 at 7:05am

Thanks very much for the positive feedback engineer!

engineerOctober 12th, 2009 at 3:25am

This website describes the formula in depth and with details links.

engineerOctober 12th, 2009 at 3:20am

I am an engineer and was studying pricing movement.
I used and applied the online formula found on googling historical volatility formula.

I was trying to compare my result with yours.

thanks for the great work. I like your chart.

I tried other place like
but it is a joke nowaday that they force people to sign up just to get a stock quote. and they try to charge you money for data download for historical volatility where people can use yours spreadsheet or programmers like us that can generate it from google or yahoo finiance api using very simple and basic programming calculation.

samanthaOctober 9th, 2009 at 2:25pm

thanks very much for sharing this.
Great spreadsheet
Happy Trading!

Kenneth K. SeibelSeptember 25th, 2009 at 12:09pm

Thanks a bunch for sharing your spreadsheet - you saved me many hours of work and your version is better taht the one I had intended to create!

PeterSeptember 14th, 2009 at 6:25am

Thanks Hazem! You could check out

HazemSeptember 13th, 2009 at 11:36am

Great stuff... thanks for doing this and for sharing...
I have a macbook and vb macros don't work on mac office. Is there any other alternative? An online version or something?

AydinAugust 27th, 2009 at 4:14am


PeterJuly 10th, 2009 at 7:32am

Hi Aydin, try this:

It does the same thing.

AydinJuly 2nd, 2009 at 5:39am

I appreciate your effort for the excel. Nice job... Can I please get the VBA password :)))

PeterJune 6th, 2009 at 5:49am

Hi Michael,

That's a good question and to be honest I've never thought about it before ;-). All the stats books I've looked at always used STDEV only...perhaps because the data used is only a sample dataset. I believe STDEVP is used when the population data is 100% complete.

What are your thoughts? Do you think STDEVP is a better alternative?

MichaelJune 5th, 2009 at 9:34pm

Fantastic product! I really appreciate this...I just have one question: Why do you use sample standard deviation when computing volatility as opposed to standard deviation of the population (excel function: stdevp)

PeterMarch 31st, 2009 at 8:07pm

Hi Ben, I plan to release the source code in the future, however, for the time being it is locked. You can check out a similar example from:

BenMarch 31st, 2009 at 1:23pm

How did you create the Macro that downloads data from Yahoo!?

JoeyJanuary 17th, 2009 at 6:38pm

really appreciate this - Thank You! (the excel spreadsheet is especially helpful)

Dominique NguyenNovember 25th, 2008 at 2:23am

That's great. Thanks a lot for your work.

Add a Comment

     Subscribe for Comment Updates