def __init__(self, token, tickers, stockmarket=StockMarket.NASDAQ, start=datetime.datetime(2016, 1, 1), end=datetime.datetime(2016, 1, 30), verify=None): """ Initializer Args: token (str): quandl access token tickers (str or list): tickers stockmarket (StockMarket): NYSE or NASDAQ start (datetime): first data point end (datetime): last data point precedes this date verify (None or str or boolean): if verify is None, certify certificates will be used (default); if this is False, no certificates will be checked; if this is a string, it should be pointing to a certificate for the HTTPS connection to NASDAQ (dataondemand.nasdaq.com), either in the form of a CA_BUNDLE file or a directory wherein to look. Raises: QiskitFinanceError: invalid data """ # if not isinstance(atoms, list) and not isinstance(atoms, str): # raise QiskitFinanceError("Invalid atom input for DOD Driver '{}'".format(atoms)) super().__init__() if isinstance(tickers, list): self._tickers = tickers else: self._tickers = tickers.replace('\n', ';').split(";") self._n = len(self._tickers) if stockmarket not in [StockMarket.NASDAQ, StockMarket.NYSE]: msg = "NASDAQ Data on Demand does not support " msg += stockmarket.value msg += " as a stock market." raise QiskitFinanceError(msg) # This is to aid serialization; string is ok to serialize self._stockmarket = str(stockmarket.value) self._token = token self._start = start self._end = end self._verify = verify
def run(self): """ Loads data, thus enabling get_similarity_matrix and get_covariance_matrix methods in the base class. """ self.check_provider_valid() if self._token: quandl.ApiConfig.api_key = self._token quandl.ApiConfig.api_version = '2015-04-09' self._data = [] for (cnt, s) in enumerate(self._tickers): try: d = quandl.get("WIKI/" + s, start_date=self._start, end_date=self._end) except NotFoundError as ex: raise QiskitFinanceError( "Cannot retrieve Wikipedia data due to an invalid token." ) from ex # The exception will be urllib3 NewConnectionError, but it can get dressed by quandl except Exception as ex: # pylint: disable=broad-except raise QiskitFinanceError( "Cannot retrieve Wikipedia data.") from ex try: self._data.append(d["Adj. Close"]) except KeyError as ex: raise QiskitFinanceError("Cannot parse quandl output.") from ex
def __init__(self, token=None, tickers=None, stockmarket=StockMarket.NASDAQ, start=datetime.datetime(2016, 1, 1), end=datetime.datetime(2016, 1, 30)): """ Initializer Args: token (str): quandl access token, which is not needed, strictly speaking tickers (str or list): tickers stockmarket (StockMarket): NASDAQ, NYSE start (datetime.datetime): start time end (datetime.datetime): end time Raises: QiskitFinanceError: provider doesn't support stock market input """ # if not isinstance(atoms, list) and not isinstance(atoms, str): # raise QiskitFinanceError("Invalid atom input for Wikipedia Driver '{}'".format(atoms)) super().__init__() tickers = tickers if tickers is not None else [] if isinstance(tickers, list): self._tickers = tickers else: self._tickers = tickers.replace('\n', ';').split(";") self._n = len(self._tickers) if stockmarket not in [StockMarket.NASDAQ, StockMarket.NYSE]: msg = "WikipediaDataProvider does not support " msg += stockmarket.value msg += " as a stock market." raise QiskitFinanceError(msg) # This is to aid serialization; string is ok to serialize self._stockmarket = str(stockmarket.value) self._token = token self._tickers = tickers self._start = start self._end = end self._data = []
def __init__(self, token, tickers, stockmarket=StockMarket.LONDON, start=datetime.datetime(2016, 1, 1), end=datetime.datetime(2016, 1, 30)): """ Initializer Args: token (str): quandl access token tickers (str or list): tickers stockmarket (StockMarket): LONDON, EURONEXT, or SINGAPORE start (datetime): first data point end (datetime): last data point precedes this date Raises: QiskitFinanceError: provider doesn't support stock market """ super().__init__() if isinstance(tickers, list): self._tickers = tickers else: self._tickers = tickers.replace('\n', ';').split(";") self._n = len(self._tickers) if stockmarket not in [ StockMarket.LONDON, StockMarket.EURONEXT, StockMarket.SINGAPORE ]: msg = "ExchangeDataProvider does not support " msg += stockmarket.value msg += " as a stock market." raise QiskitFinanceError(msg) # This is to aid serialization; string is ok to serialize self._stockmarket = str(stockmarket.value) self._token = token self._tickers = tickers self._start = start self._end = end
def init_from_input(cls, section): """ Initialize via section dictionary. Args: params (dict): section dictionary Returns: Driver: Driver object """ if section is None or not isinstance(section, dict): raise QiskitFinanceError( 'Invalid or missing section {}'.format(section)) params = section kwargs = {} #for k, v in params.items(): # if k == ExchangeDataDriver. ...: v = UnitsType(v) # kwargs[k] = v logger.debug('init_from_input: {}'.format(kwargs)) return cls(**kwargs)
def __init__(self, tickers=["TICKER1", "TICKER2"], stockmarket=StockMarket.RANDOM, start=datetime.datetime(2016, 1, 1), end=datetime.datetime(2016, 1, 30), seed=None): """ Initializer Args: tickers (str or list): tickers stockmarket (StockMarket): RANDOM start (datetime): first data point end (datetime): last data point precedes this date seed (None or int): shall a seed be used? """ super().__init__() # if not isinstance(atoms, list) and not isinstance(atoms, str): # raise QiskitFinanceError("Invalid atom input for RANDOM data provider '{}'".format(atoms)) if isinstance(tickers, list): self._tickers = tickers else: self._tickers = tickers.replace('\n', ';').split(";") self._n = len(self._tickers) if not (stockmarket in [StockMarket.RANDOM]): msg = "RandomDataProvider does not support " msg += stockmarket.value msg += " as a stock market. Please use Stockmarket.RANDOM." raise QiskitFinanceError(msg) # This is to aid serialisation; string is ok to serialise self._stockmarket = str(stockmarket.value) self._start = start self._end = end self._seed = seed
def init_from_input(cls, section): """ Initialize via section dictionary. Args: section (dict): section dictionary Returns: WikipediaDataProvider: data provider object Raises: QiskitFinanceError: Invalid section """ if section is None or not isinstance(section, dict): raise QiskitFinanceError( 'Invalid or missing section {}'.format(section)) # params = section kwargs = {} # for k, v in params.items(): # if k == ExchangeDataDriver. ...: v = UnitsType(v) # kwargs[k] = v logger.debug('init_from_input: %s', kwargs) return cls(**kwargs)
def __init__(self, tickers=None, stockmarket=StockMarket.RANDOM, start=datetime.datetime(2016, 1, 1), end=datetime.datetime(2016, 1, 30), seed=None): """ Initializer Args: tickers (str or list): tickers stockmarket (StockMarket): RANDOM start (datetime): first data point end (datetime): last data point precedes this date seed (None or int): shall a seed be used? Raises: QiskitFinanceError: provider doesn't support stock market value """ super().__init__() tickers = tickers if tickers is not None else ["TICKER1", "TICKER2"] if isinstance(tickers, list): self._tickers = tickers else: self._tickers = tickers.replace('\n', ';').split(";") self._n = len(self._tickers) if stockmarket not in [StockMarket.RANDOM]: msg = "RandomDataProvider does not support " msg += stockmarket.value msg += " as a stock market. Please use Stockmarket.RANDOM." raise QiskitFinanceError(msg) # This is to aid serialization; string is ok to serialize self._stockmarket = str(stockmarket.value) self._start = start self._end = end self._seed = seed