import sys import pandas as pd from pandas.io.data import DataReader from datetime import date, timedelta import numpy as np ticker = sys.argv[1] n = int(sys.argv[2]) start = (date.today() - timedelta(days=n)) end = date.today() # Get data frame of that period df = DataReader(ticker ,'yahoo',start,end) dfm = DataReader('^GSPC','yahoo',start,end) # Group the data monthly resample_stock_series = df.resample('M').last() resample_mkt_series = dfm.resample('M').last() #create new combined dataframe by using ADJ_CLOSE column of respective data frame dfsm = pd.DataFrame({'s_adjclose' : resample_stock_series['Adj Close'], 'm_adjclose' : resample_mkt_series['Adj Close']}, index=resample_stock_series.index) # Calculate the returns based on close dfsm[['s_returns','m_returns']] = dfsm[['s_adjclose','m_adjclose']]/\ dfsm[['s_adjclose','m_adjclose']].shift(1) -1 # Calculate the volatility of a stock dfsm = dfsm.dropna() covarience_matrix = np.cov(dfsm["s_returns"],dfsm["m_returns"]) volatility = np.sqrt(covarience_matrix[0,0]) print volatility