General Topics
Technical Topics
Brokerage Firms
Community Lounge
Site Support

# Historical volatility

Discussion in 'Options' started by yigal, Dec 21, 2008.

1. ### yigal

I would like to ask exactly what it means when a currency cross has a historical volatility of, say, 10%. I understand that the 10% is the volatility expressed in annual terms, and that it represents a one standard deviation move. Also, I understand that one standard deviation represents two thirds (approximately) of all occurences, but - but then my question is - what does that mean exactly?

Will it mean that Currency cross X, at the beginning of the year is trading at 100, will, in two thirds of the cases, stay between 90 and 110? Or will it, in two thirds of the cases, stay between 95 and 105? Or none of the above?

This is basically my doubt.

2. ### spindr0

Your first answer is correct. It's probable that in 2 out of 3 cases, in a one year period, your stock would trade b/t 90 and 110.

3. ### dmo

Right - this is precisely correct for a normal distribution. If the OP is interested in the precise answer for options, he'll need to take into account the fact that option pricing is based on a lognormal distribution, which factors in the fact that the underlying can go up to infinity but can only go down to zero.

So the actual range implied will be from a little higher than 90 to a little higher than 110.

Does anyone perchance know how to calculate those exact numbers? I'm sure there's an easy way to do it in Excel, I just don't know what it is.

4. ### Wayne Gibbous

This is written in wealth-script (Pascal-like), but should be easy to convert to C or put in Excel. This comes from McMillan's Option's as a Strategic Investment. 3rd edition, p-463.
Code:
```function LogVol(xdays, currentBar: integer):float;
begin

//This function calculates the log-normal historical volatility of the stock
//  for the number of days in xdays.

var AvgOfLns, SumOfAvgs: float;
var count, i, endloop: integer;

var Pratio: array[0..500] of float;
var LNratio: array[0..500] of float;
var Avgarray: array[0..500] of float;

count := currentBar;
AvgOfLns := 0.0;
SumOfAvgs := 0.0;
endloop := xdays - 1;

for i := 0 to endloop do   //Get ratio of Closes
begin
Pratio[i] := PriceClose(count)/PriceClose(count - 1);
count := count - 1;
end;

for i := 0 to endloop do   //Take the LN and get average
begin
LNratio[i] := LN(Pratio[i]);
AvgOfLns := AvgOfLns + LN(Pratio[i]);
end;

AvgOfLns := AvgOfLns/xdays;

for i := 0 to endloop do   //Square difference and get average
begin
Avgarray[i] := Sqr(LNratio[i] - AvgOfLns);
SumOfAvgs := SumOfAvgs + Sqr(LNratio[i] - AvgOfLns);
end;
//Result is normalized to 1 year and expressed as a percent
Result := Sqrt(SumOfAvgs/(xdays-1)) * Sqrt(250.0) * 100.0;

end; //End LogVol function```

5. ### dmo

Wow Wayne, thanks for taking the trouble to post all that. I'm surprised it's so complicated - I would've thought some simple Excel function would do it. Apparently not.

WHILE YOU'RE HERE, TAKE A MINUTE TO VISIT SOME OF OUR SPONSORS: