Example #1
0
def fetch_keyratios(self, ticker, datacode):
    """Get Morningstar key ratio data and return desired element to user"""
    #Check for sane user input for datacode.
    if datacode < 1 or datacode > 946:
        return 'Invalid Datacode'
    #Check whether flags indicate that we already have the data we need.
    if self.keyratio_flag[0] == '1' or self.keyratio_flag[1] != ticker:
        #Query NASDAQ for exchange and check for errors.
        exchange = smf.find_exchange(self, ticker)
        if exchange not in ['XNYS', 'XASE', 'XNAS']:
            return exchange
        #Query Morningstar for key ratios and check for errors.
        url_ending = '&region=usa&culture=en-US&cur=USD&order=desc'
        self.keyratio_reader = query_morningstar(self, exchange, ticker, 
                                                 url_ending)
        if self.keyratio_flag[0] == '1':
            return self.keyratio_reader
        #Set flags and read data into memory upon successful query.
        else:
            self.keyratio_flag[0] = '0'
            self.keyratio_flag[1] = ticker
            self.keyratio_data = [row for row in self.keyratio_reader]
            #Append day for ISO standard dates.
            for idx in range (2, 12):
                self.keyratio_data[0][idx] += '-01' 
    #Check for existing datacode -> value map, if none exists then create it.
    if not hasattr(self, 'key_datacode_map'):
        self.key_datacode_map = keyratio_datacode_map()
    #Lookup and return value from map.
    row, col = self.key_datacode_map[datacode]
    element = self.keyratio_data[row][col]
    #Strip , from str so we can convert to float
    return element.replace(',','')
def fetch_keyratios(self, ticker, datacode):
    """Get Morningstar key ratio data and return desired element to user"""
    #Check for sane user input for datacode.
    if datacode < 1 or datacode > 946:
        return 'Invalid Datacode'
    #Check whether flags indicate that we already have the data we need.
    if self.keyratio_flag[0] == '1' or self.keyratio_flag[1] != ticker:
        #Query NASDAQ for exchange and check for errors.
        exchange = smf.find_exchange(self, ticker)
        if exchange not in ['XNYS', 'XASE', 'XNAS']:
            return exchange
        #Query Morningstar for key ratios and check for errors.
        url_ending = '&region=usa&culture=en-US&cur=USD&order=desc'
        self.keyratio_reader = query_morningstar(self, exchange, ticker, 
                                                 url_ending)
        if self.keyratio_flag[0] == '1':
            return self.keyratio_reader
        #Set flags and read data into memory upon successful query.
        else:
            self.keyratio_flag[0] = '0'
            self.keyratio_flag[1] = ticker
            self.keyratio_data = [row for row in self.keyratio_reader]
            #Append day for ISO standard dates.
            for idx in range (2, 12):
                self.keyratio_data[0][idx] += '-01' 
    #Check for existing datacode -> value map, if none exists then create it.
    if not hasattr(self, 'key_datacode_map'):
        self.key_datacode_map = keyratio_datacode_map()
    #Lookup and return value from map.
    row, col = self.key_datacode_map[datacode]
    element = self.keyratio_data[row][col]
    #Strip , from str so we can convert to float
    return element.replace(',','')
Example #3
0
def advfn_exchange(self, ticker):
    """Determine exchange ticker is traded on so we can query advfn"""
    exchange = smf.find_exchange(self, ticker)    
    if exchange == 'XNAS':
        return 'NASDAQ'
    elif exchange == 'XNYS':
        return 'NYSE'
    elif exchange == 'XASE':
        return 'AMEX'
    return exchange
Example #4
0
def advfn_exchange(self, ticker):
    """Determine exchange ticker is traded on so we can query advfn"""
    exchange = smf.find_exchange(self, ticker)
    if exchange == 'XNAS':
        return 'NASDAQ'
    elif exchange == 'XNYS':
        return 'NYSE'
    elif exchange == 'XASE':
        return 'AMEX'
    return exchange
Example #5
0
def fetch_financials(self, fin_type, ticker, datacode):
    """Get Morningstar financial data and return desired element to user"""
    if datacode < 1 or datacode > 162:
        return 'Invalid Datacode'
    #Check whether flags indicate that we already have the data we need.
    flags = self.financial_flag
    if fin_type == 'qtr':
        flags = self.qfinancial_flag
    if flags[0] == '1' or flags[1] != ticker:
        #Query NASDAQ for exchange and check for errors.
        exchange = smf.find_exchange(self, ticker)
        if exchange not in ['XNYS', 'XASE', 'XNAS']:
            return exchange
        #Query Morningstar for financials and check for errors.
        if fin_type == 'qtr':
            url_ending = (
                '&region=usa&culture=en-US&cur=USD&reportType=is'
                '&period=3&dataType=A&order=desc&columnYear=5&rounding=3'
                '&view=raw&r=113199&denominatorView=raw&number=3')
        else:
            url_ending = (
                '&region=usa&culture=en-US&cur=USD&reportType=is'
                '&period=12&dataType=A&order=desc&columnYear=5&rounding=3'
                '&view=raw&r=113199&denominatorView=raw&number=3')
        financial_reader = query_morningstar(self, exchange, ticker,
                                             url_ending)
        if flags[0] == '1':
            return financial_reader
        #Set flags and read data into memory upon successful query.
        else:
            flags[0] = '0'
            flags[1] = ticker
            financial_data_setup(self, financial_reader)
    #Check for existing datacode -> value map, if none exists then create it.
    if not hasattr(self, 'fin_datacode_map'):
        self.fin_datacode_map = financial_datacode_map()
    #Lookup and return value from map.
    row, col = self.fin_datacode_map[datacode]
    element = self.financial_data[row][col]
    #Strip , from str so we can convert to float
    return element.replace(',', '')
def fetch_financials(self, fin_type, ticker, datacode):
    """Get Morningstar financial data and return desired element to user"""
    if datacode < 1 or datacode > 162:
        return 'Invalid Datacode'
    #Check whether flags indicate that we already have the data we need.
    flags = self.financial_flag
    if fin_type == 'qtr': 
        flags = self.qfinancial_flag   
    if flags[0] == '1' or flags[1] != ticker:
        #Query NASDAQ for exchange and check for errors.
        exchange = smf.find_exchange(self,ticker)
        if exchange not in ['XNYS', 'XASE', 'XNAS']:
            return exchange
        #Query Morningstar for financials and check for errors.
        if fin_type == 'qtr':      
            url_ending = ('&region=usa&culture=en-US&cur=USD&reportType=is'
                      '&period=3&dataType=A&order=desc&columnYear=5&rounding=3'
                      '&view=raw&r=113199&denominatorView=raw&number=3')
        else:
            url_ending = ('&region=usa&culture=en-US&cur=USD&reportType=is'
                      '&period=12&dataType=A&order=desc&columnYear=5&rounding=3'
                      '&view=raw&r=113199&denominatorView=raw&number=3')
        financial_reader = query_morningstar(self, exchange, ticker, url_ending)
        if flags[0] == '1':
            return financial_reader
        #Set flags and read data into memory upon successful query.
        else:
            flags[0] = '0'
            flags[1] = ticker
            financial_data_setup(self, financial_reader)
    #Check for existing datacode -> value map, if none exists then create it.
    if not hasattr(self, 'fin_datacode_map'):
        self.fin_datacode_map = financial_datacode_map()
    #Lookup and return value from map.
    row, col = self.fin_datacode_map[datacode]
    element = self.financial_data[row][col]
    #Strip , from str so we can convert to float
    return element.replace(',','')