Beispiel #1
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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