Ejemplo n.º 1
0
class HistData(object):
    ''' a class for working with yahoo finance data '''
    def __init__(self, autoAdjust=True):
       
        self.startDate = (2008,1,1)
        self.autoAdjust=autoAdjust
        self.wp = Panel()
        
        
    def load(self,dataFile):
        """load data from HDF"""
        if os.path.exists(dataFile):
            store = HDFStore(dataFile)
            symbols = [str(s).strip('/') for s in list(store.keys()) ]   
            data = dict(list(zip(symbols,[store[symbol] for symbol in symbols])))
            self.wp = Panel(data)
            store.close()
        else:
            raise IOError('Data file does not exist')
            
        
    def save(self,dataFile):
        """ save data to HDF"""
        print(('Saving data to', dataFile))
        store = HDFStore(dataFile)
        for symbol in self.wp.items:
            store[symbol] = self.wp[symbol]
            
        store.close()
                    
            
            
    def downloadData(self,symbols='all'):
        ''' get data from yahoo  '''
        
        if symbols == 'all':
            symbols = self.symbols
        
        #store = HDFStore(self.dataFile)        
        p = ProgressBar(len(symbols))
        
        for idx,symbol in enumerate(symbols):
            
            try:            
                df = getSymbolData(symbol,sDate=self.startDate,verbose=False)
                if self.autoAdjust:
                    df =  _adjust(df,removeOrig=True)
                
                if len(self.symbols)==0:
                    self.wp = Panel({symbol:df})
                else:
                    self.wp[symbol] = df
            
            except Exception as e:
                print(e) 
            p.animate(idx+1)
    
    def getDataFrame(self,field='close'):
        ''' return a slice on wide panel for a given field '''
        return self.wp.minor_xs(field)
         
    
    @property
    def symbols(self):
        return self.wp.items.tolist()        
           
  
    def __repr__(self):
        return str(self.wp)
Ejemplo n.º 2
0
class Market(object):
    '''
    System object holds several data frames containing market information for each stock
    it comprises.
    '''
    def __init__(self, tickers, start_date, end_date):
        '''
        Constructor
        '''
        self.start = start_date
        self.end = end_date
        self.downloader = Data.Handler(
            "/home/mark/Data/MarketData/Stocks/Python/")
        self.instruments = Panel(
            {ticker: DataFrame(None)
             for ticker in sorted(tickers)})

    @property
    def tickers(self):
        return list(self.instruments.items)

    def __setitem__(self, key, val):
        instruments = dict(self.instruments)
        instruments[key] = val
        self.instruments = Panel.from_dict(instruments)

    def __getitem__(self, key):
        return self.instruments[key]

    @property
    def open(self):
        return self.get_series("Open")

    @property
    def high(self):
        return self.get_series("High")

    @property
    def low(self):
        return self.get_series("Low")

    @property
    def close(self):
        return self.get_series("Close")

    @property
    def volume(self):
        return self.get_series("Volume")

    def get_series(self, name):
        return self.instruments.minor_xs(name)

    @property
    def status(self):
        download_status = {}
        for ticker in self.tickers:
            download_status[ticker] = False if len(self[ticker]) is 0 else True
        return download_status

    def download_data(self):
        for ticker in self.tickers:
            self[ticker] = self.downloader.get(ticker + ".AX", self.start,
                                               self.end)

    def returns(self, indexer):
        returns = indexer.market_returns(self)
        return AverageReturns(returns)
Ejemplo n.º 3
0
class Market(object):
    '''
    System object holds several data frames containing market information for each stock
    it comprises.
    '''

    def __init__(self, tickers, start_date, end_date):
        '''
        Constructor
        '''
        self.start = start_date
        self.end = end_date
        self.downloader = Data.Handler("/home/mark/Data/MarketData/Stocks/Python/")
        self.instruments = Panel({ticker:DataFrame(None) for ticker in sorted(tickers)})
        
    @property
    def tickers(self):
        return list(self.instruments.items)
    
    def __setitem__(self, key, val):
        instruments = dict(self.instruments)
        instruments[key] = val
        self.instruments = Panel.from_dict(instruments)
    
    def __getitem__(self, key):
        return self.instruments[key]
    
    @property
    def open(self):
        return self.get_series("Open")
    
    @property
    def high(self):
        return self.get_series("High")
    
    @property
    def low(self):
        return self.get_series("Low")
    
    @property
    def close(self):
        return self.get_series("Close")
    
    @property
    def volume(self):
        return self.get_series("Volume")
    
    def get_series(self, name):
        return self.instruments.minor_xs(name)
    
    @property
    def status(self):
        download_status = {}
        for ticker in self.tickers:
            download_status[ticker] = False if len(self[ticker]) is 0 else True
        return download_status
    
    def download_data(self):
        for ticker in self.tickers:
            self[ticker] = self.downloader.get(ticker + ".AX", self.start, self.end)
            
    def returns(self, indexer):
        returns = indexer.market_returns(self)
        return AverageReturns(returns)
Ejemplo n.º 4
0
class HistData(object):
    ''' a class for working with yahoo finance data '''
    def __init__(self, autoAdjust=True):
       
        self.startDate = (2008,1,1)
        self.autoAdjust=autoAdjust
        self.wp = Panel()
        
        
    def load(self,dataFile):
        """load data from HDF"""
        if os.path.exists(dataFile):
            store = HDFStore(dataFile)
            symbols = [str(s).strip('/') for s in list(store.keys()) ]   
            data = dict(list(zip(symbols,[store[symbol] for symbol in symbols])))
            self.wp = Panel(data)
            store.close()
        else:
            raise IOError('Data file does not exist')
            
        
    def save(self,dataFile):
        """ save data to HDF"""
        print(('Saving data to', dataFile))
        store = HDFStore(dataFile)
        for symbol in self.wp.items:
            store[symbol] = self.wp[symbol]
            
        store.close()
                    
            
            
    def downloadData(self,symbols='all'):
        ''' get data from yahoo  '''
        
        if symbols == 'all':
            symbols = self.symbols
        
        #store = HDFStore(self.dataFile)        
        p = ProgressBar(len(symbols))
        
        for idx,symbol in enumerate(symbols):
            
            try:            
                df = getSymbolData(symbol,sDate=self.startDate,verbose=False)
                if self.autoAdjust:
                    df =  _adjust(df,removeOrig=True)
                
                if len(self.symbols)==0:
                    self.wp = Panel({symbol:df})
                else:
                    self.wp[symbol] = df
            
            except Exception as e:
                print(e) 
            p.animate(idx+1)
    
    def getDataFrame(self,field='close'):
        ''' return a slice on wide panel for a given field '''
        return self.wp.minor_xs(field)
         
    
    @property
    def symbols(self):
        return self.wp.items.tolist()        
           
  
    def __repr__(self):
        return str(self.wp)