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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I barely remember writing this, but yes, on average it's around 252 trading days a year.