Last active
February 26, 2020 04:24
-
-
Save johntyree/4587049 to your computer and use it in GitHub Desktop.
Calculate annualized volatility from historical data.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/usr/bin/env python | |
from pandas import np | |
from pandas.io.data import DataReader | |
def historical_volatility(sym, days): | |
"Return the annualized stddev of daily log returns of `sym`." | |
try: | |
quotes = DataReader(sym, 'yahoo')['Close'][-days:] | |
except Exception, e: | |
print "Error getting data for symbol '{}'.\n".format(sym), e | |
return None, None | |
logreturns = np.log(quotes / quotes.shift(1)) | |
return np.sqrt(252*logreturns.var()) | |
if __name__ == "__main__": | |
print historical_volatility('GOOG', 30) |
the reason for multiplying with 252 is to convert daily volatility to annualised volatility.
When I run this, I get a syntax error?
File "volatility_test.py", line 11
except Exception, e:
^
SyntaxError: invalid syntax
So what is 252 represent? Number of days that trading is open in a year?
I barely remember writing this, but yes, on average it's around 252 trading days a year.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Why have you multiplied var with 252 in line 15?