def getpricehistory(self, period=''): # Parameters #startdate_string = '2004-12-31' #symbol = '^GSPC ^OEX ^VIX ^OEX ^MID ^RUT symbol = self.Symbol # startdate_string = self.StartDateString # ########## # Date setup import datetime #today_datetime = datetime.datetime.today() today_date = datetime.date.today() df_00 = self._StockHistoryDataframe import pandas as pd if period == '': period = self.Period if period == 'monthly': dates1 = pd.date_range('1910-01', str(today_date)[:7], freq='M') else: dates1 = pd.date_range('1910-01-01', str(today_date), freq='D') rows_stockhistory = [] rows_stockhistory.append(['a_symbol', 'b_periodend', 'e_adjclose']) for dt in dates1: if str(dt.date()) in df_00.index: #print str(dt.date()),'ok' myobj = df_00.loc[str(dt.date())] #print myobj curr_date = dt.date() curr_value = myobj['Adj Close'] #if prev_date != dummy_date: rows_stockhistory.append([symbol, curr_date, curr_value]) #print df_00.index headers = rows_stockhistory.pop(0) df_monthlyprices = pd.DataFrame(rows_stockhistory, columns=headers) import numpy as np df_pricehistorytotodayfinite = df_monthlyprices[np.isfinite( df_monthlyprices['e_adjclose'])] import pullprices as pp stock_dataframe = pp.stock_dataframe(symbol) curr_price = stock_dataframe['last'][0] mydict = {} mydict[0] = { 'a_symbol': symbol, 'b_periodend': today_date, 'e_adjclose': curr_price } df_curr = pd.DataFrame(mydict).T df_pricehistorytotoday = df_pricehistorytotodayfinite.append( df_curr, ignore_index=True) df_pricehistorytotoday.set_index(['b_periodend'], inplace=True) #print df_pricehistorytotoday return df_pricehistorytotoday
def _monthlyreturnsusingyahoosymbol(self,): # Parameters #startdate_string = '2004-12-31' #symbol = '^GSPC ^OEX ^VIX ^OEX ^MID ^RUT symbol = self.Symbol startdate_string = self.StartDateString # ########## # Date setup import datetime #today_datetime = datetime.datetime.today() today_date = datetime.date.today() yesterday_date = datetime.date.fromordinal(datetime.date.today().toordinal()-1) #print str(today_date) import pullprices as pp df_00 = pp.stockhistorybackfilledtodatframeofstockhistoryinstancesusingcache(symbol,startdate_string,str(yesterday_date)) #,str(today_date)) #print list(df_00)#['Close','Adj Close'] #print df_00[['Close','Adj Close']] import pandas as pd dates1 = pd.date_range('1910-01', str(today_date)[:7], freq='M') dummy_date = datetime.datetime.strptime("1801-01-01", "%Y-%m-%d") prev_date = dummy_date prev_value = float('Nan') rows_monthlyreturns = [] #rows_optionpricescurrent.append(['optionsymbol','stockprice','strike','pdeltapct_to_sell_price','cumprob_to_sell_price','bid','ask','last']) rows_monthlyreturns.append(['a_symbol','b_monthend','e_pctchange','d_end']) for dt in dates1: if str(dt.date()) in df_00.index: #print dt.date() myobj = df_00.loc[str(dt.date())] #print myobj curr_date = dt.date() curr_value = myobj['Adj Close'] if prev_date != dummy_date: #print 'pullreturns curr_value,prev_value',curr_value,prev_value if is_number(curr_value) and is_number(prev_value): change_pct = (float(curr_value) - float(prev_value))/float(prev_value) else: change_pct = float('NaN') #print symbol,prev_date,prev_value,curr_date,curr_value,change_pct rows_monthlyreturns.append([symbol,curr_date,change_pct,curr_value]) #'{percent:.2%}'.format(percent=pdeltapct_to_sell_price) #print symbol,curr_date,change_pct prev_date = dt.date() prev_value = myobj['Adj Close'] headers = rows_monthlyreturns.pop(0) df_monthlyreturns = pd.DataFrame(rows_monthlyreturns,columns=headers) import numpy as np df_monthlyreturnsfinite = df_monthlyreturns[np.isfinite(df_monthlyreturns['e_pctchange'])] #print df_monthlyreturnsfinite #print df_00 stock_dataframe = pp.stock_dataframe(symbol) myobj = df_00.loc[str(prev_date)] prev_ending = myobj['Adj Close'] curr_price = stock_dataframe['last'][0] if is_number(curr_price) and is_number(prev_ending): curr_pctchange = (float(curr_price) - float(prev_ending)) / float(prev_ending) else: curr_pctchange = float('NaN') #df_curr = pd.DataFrame([symbol,today_date,curr_pctchange], columns=['a_symbol','b_monthend','e_pctchange']) #newrow = np.array([symbol,today_date,curr_pctchange]) #columns=['a_symbol','b_monthend','e_pctchange','d_end'] #import numpy as np mydict = {} mydict[0] = {'a_symbol':symbol,'b_monthend':str(today_date),'e_pctchange':curr_pctchange,'d_end':curr_price} df_curr = pd.DataFrame(mydict).T #print df_curr.T df_monthlyreturnstotoday = df_monthlyreturnsfinite.append(df_curr, ignore_index=True) #print df_monthlyreturns #print str(today_date)[:7] return df_monthlyreturnstotoday
rows_monthlyreturns.append([symbol,curr_date,change_pct,curr_value]) #'{percent:.2%}'.format(percent=pdeltapct_to_sell_price) #print symbol,curr_date,change_pct prev_date = dt.date() prev_value = myobj['Adj Close'] headers = rows_monthlyreturns.pop(0) df_monthlyreturns = pd.DataFrame(rows_monthlyreturns,columns=headers) import numpy as np df_monthlyreturnsfinite = df_monthlyreturns[np.isfinite(df_monthlyreturns['e_pctchange'])] #print df_monthlyreturnsfinite #print df_00 stock_dataframe = pp.stock_dataframe(symbol) myobj = df_00.loc[str(prev_date)] prev_ending = myobj['Adj Close'] curr_price = stock_dataframe['last'][0] curr_pctchange = (curr_price - prev_ending) / prev_ending #df_curr = pd.DataFrame([symbol,today_date,curr_pctchange], columns=['a_symbol','b_monthend','e_pctchange']) #newrow = np.array([symbol,today_date,curr_pctchange]) #columns=['a_symbol','b_monthend','e_pctchange','d_end '] #import numpy as np mydict = {} mydict[0] = {'a_symbol':symbol,'b_monthend':str(today_date),'e_pctchange':curr_pctchange,'d_end ':curr_price} df_curr = pd.DataFrame(mydict).T #print df_curr.T
def calculatereturns(self, period='', appendtodaysprice=True): # Parameters #startdate_string = '2004-12-31' #symbol = '^GSPC ^OEX ^VIX ^OEX ^MID ^RUT symbol = self.Symbol # startdate_string = self.StartDateString # ########## # Date setup import datetime #today_datetime = datetime.datetime.today() today_date = datetime.date.today() # yesterday_date = datetime.date.fromordinal(datetime.date.today().toordinal()-1) #print str(today_date) # import pullprices as pp # df_00 = pp.stockhistorybackfilledtodatframeofstockhistoryinstancesusingcache(symbol,startdate_string,str(yesterday_date)) #,str(today_date)) df_00 = self.StockHistoryDataframe import pandas as pd #dates1 = pd.date_range('1910-01', str(today_date)[:7], freq=self.MonthDayCharacter) if period == '': period = self.Period if period == 'monthly': dates1 = pd.date_range('1910-01', str(today_date)[:7], freq='M') else: dates1 = pd.date_range('1910-01-01', str(today_date), freq='D') dummy_date = datetime.datetime.strptime("1801-01-01", "%Y-%m-%d") prev_date = dummy_date prev_value = float('Nan') rows_calculatereturns = [] #rows_optionpricescurrent.append(['optionsymbol','stockprice','strike','pdeltapct_to_sell_price','cumprob_to_sell_price','bid','ask','last']) #rows_calculatereturns.append(['a_symbol','b_periodend','e_pctchange','d_end']) rows_calculatereturns.append( ['a_symbol', 'b_periodend', 'e_pctchange', 'e_logreturn', 'd_end']) import math for dt in dates1: if str(dt.date()) in df_00.index: #print dt.date() myobj = df_00.loc[str(dt.date())] #print myobj curr_date = dt.date() curr_value = myobj['Adj Close'] if prev_date != dummy_date: #print 'pullreturns curr_value,prev_value',curr_value,prev_value if is_number(curr_value) and is_number(prev_value): logreturn_pct = math.log( float(curr_value) / float(prev_value)) change_pct = (float(curr_value) - float(prev_value)) / float(prev_value) else: change_pct = float('NaN') #print symbol,prev_date,prev_value,curr_date,curr_value,change_pct rows_calculatereturns.append([ symbol, curr_date, change_pct, logreturn_pct, curr_value ]) #'{percent:.2%}'.format(percent=pdeltapct_to_sell_price) #print symbol,curr_date,change_pct prev_date = dt.date() prev_value = myobj['Adj Close'] headers = rows_calculatereturns.pop(0) df_calculatereturns = pd.DataFrame(rows_calculatereturns, columns=headers) import numpy as np df_calculatereturnsfinite = df_calculatereturns[np.isfinite( df_calculatereturns['e_pctchange'])] #print df_calculatereturnsfinite #print df_00 #yyyyyy if appendtodaysprice == True: import pullprices as pp stock_dataframe = pp.stock_dataframe(symbol) myobj = df_00.loc[str(prev_date)] prev_ending = myobj['Adj Close'] curr_price = stock_dataframe['last'][0] if is_number(curr_price) and is_number(prev_ending): curr_logreturn = math.log( float(curr_price) / float(prev_ending)) curr_pctchange = (float(curr_price) - float(prev_ending)) / float(prev_ending) else: curr_logreturn = float('NaN') curr_pctchange = float('NaN') #df_curr = pd.DataFrame([symbol,today_date,curr_pctchange], columns=['a_symbol','b_periodend','e_pctchange']) #newrow = np.array([symbol,today_date,curr_pctchange]) #columns=['a_symbol','b_periodend','e_pctchange','d_end'] #import numpy as np mydict = {} mydict[0] = { 'a_symbol': symbol, 'b_periodend': today_date, 'e_pctchange': curr_pctchange, 'e_logreturn': curr_logreturn, 'd_end': curr_price } df_curr = pd.DataFrame(mydict).T #print df_curr.T df_calculatereturnstotoday = df_calculatereturnsfinite.append( df_curr, ignore_index=True) else: df_calculatereturnstotoday = df_calculatereturnsfinite df_calculatereturnstotoday.set_index(['b_periodend'], inplace=True) #print df_calculatereturns #print str(today_date)[:7] return df_calculatereturnstotoday
def dailyreturns(self, ): #log(p_today / p_yesterday) symbol = self.Symbol #startdate_string = self.StartDateString # ########## # Date setup import datetime #today_datetime = datetime.datetime.today() today_date = datetime.date.today() #yesterday_date = datetime.date.fromordinal(datetime.date.today().toordinal()-1) #print str(today_date) import pullprices as pp #df_00 = pp.stockhistorybackfilledtodatframeofstockhistoryinstancesusingcache(symbol,startdate_string,str(yesterday_date)) #,str(today_date)) df_00 = self.StockHistoryDataframe #print list(df_00)#['Close','Adj Close'] #print df_00[['Close','Adj Close']] import pandas as pd dates1 = pd.date_range('1910-01-01', str(today_date), freq='D') dummy_date = datetime.datetime.strptime("1801-01-01", "%Y-%m-%d") prev_date = dummy_date prev_value = float('Nan') rows_dailyreturns = [] #rows_optionpricescurrent.append(['optionsymbol','stockprice','strike','pdeltapct_to_sell_price','cumprob_to_sell_price','bid','ask','last']) rows_dailyreturns.append( ['a_symbol', 'b_periodend', 'e_pctchange', 'e_logreturn', 'd_end']) import math for dt in dates1: if str(dt.date()) in df_00.index: #print dt.date() myobj = df_00.loc[str(dt.date())] #print myobj curr_date = dt.date() curr_value = myobj['Adj Close'] if prev_date != dummy_date: #print 'pullreturns curr_value,prev_value',curr_value,prev_value if is_number(curr_value) and is_number(prev_value): logreturn_pct = math.log( float(curr_value) / float(prev_value)) change_pct = (float(curr_value) - float(prev_value)) / float(prev_value) else: change_pct = float('NaN') #print symbol,prev_date,prev_value,curr_date,curr_value,change_pct rows_dailyreturns.append([ symbol, curr_date, change_pct, logreturn_pct, curr_value ]) #'{percent:.2%}'.format(percent=pdeltapct_to_sell_price) #print symbol,curr_date,change_pct prev_date = dt.date() prev_value = myobj['Adj Close'] headers = rows_dailyreturns.pop(0) df_dailyreturns = pd.DataFrame(rows_dailyreturns, columns=headers) import numpy as np df_dailyreturnsfinite = df_dailyreturns[np.isfinite( df_dailyreturns['e_pctchange'])] #print df_dailyreturnsfinite #print df_00 #print 'kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk' stock_dataframe = pp.stock_dataframe(symbol) myobj = df_00.loc[str(prev_date)] prev_ending = myobj['Adj Close'] curr_price = stock_dataframe['last'][0] if is_number(curr_price) and is_number(prev_ending): curr_logreturn = math.log(float(curr_price) / float(prev_ending)) curr_pctchange = (float(curr_price) - float(prev_ending)) / float(prev_ending) else: curr_logreturn = float('NaN') curr_pctchange = float('NaN') #df_curr = pd.DataFrame([symbol,today_date,curr_pctchange], columns=['a_symbol','b_periodend','e_pctchange']) #newrow = np.array([symbol,today_date,curr_pctchange]) #columns=['a_symbol','b_periodend','e_pctchange','d_end'] #import numpy as np mydict = {} mydict[0] = { 'a_symbol': symbol, 'b_periodend': today_date, 'e_pctchange': curr_pctchange, 'e_logreturn': curr_logreturn, 'd_end': curr_price } df_curr = pd.DataFrame(mydict).T #print df_curr.T df_dailyreturnstotoday = df_dailyreturnsfinite.append( df_curr, ignore_index=True) #wwwww #df_dailyreturnstotoday.to_csv('c:\\Batches\\$Work\\returnstest.csv',columns=('a_symbol','b_periodend','e_pctchange','e_logreturn','d_end')) #print df_dailyreturns #print str(today_date)[:7] return df_dailyreturnstotoday