예제 #1
0
def getAssetDataAndSanitize(tickers, quote_currency):
    # tickers = ['SPY', 'GLD', 'TLT', 'HVI.TO', 'CTC.TO', 'TD', 'DBA', 'XOM', 'BBD-B.TO', 'BBRY', 'GBP', 'EUR']
    # quote_currency = 'USD'

    ticker_data = []

    for x in range(0, len(tickers)):
        try:
            df = pdr.data.get_data_yahoo(symbols=tickers[x],
                                         start=datetime.now().date() -
                                         timedelta(days=120),
                                         end=datetime.now().date(),
                                         interval='d')

            ticker_data.append(df)
        except:
            df = oanda.get_oanda_currency_historical_rates(
                datetime.now().date() - timedelta(days=120),
                datetime.now().date(),
                quote_currency=quote_currency,
                base_currency=tickers[x])
            ticker_data.append(df)

    for x in range(0, len(ticker_data)):
        for y in range(0, len(ticker_data)):
            (ticker_data[x],
             ticker_data[y]) = ticker_data[x].align(ticker_data[y],
                                                    join='inner',
                                                    axis=0)

    return ticker_data
예제 #2
0
 def test_oanda_currency_historical_rate(self):
     start = "2016-01-01"
     end = "2016-06-01"
     quote_currency = "USD"
     base_currency = None
     reversed = True
     df_rates = get_oanda_currency_historical_rates(
         start, end,
         quote_currency=quote_currency,
         base_currency=base_currency, reversed=reversed
     )
     self.assertEqual(df_rates.index[0], pd.to_datetime("2016-01-01"))
     self.assertEqual(df_rates.index[-1], pd.to_datetime("2016-06-01"))
예제 #3
0
 def test_oanda_currency_historical_rate(self):
     start = "2016-01-01"
     end = "2016-06-01"
     quote_currency = "USD"
     base_currency = None
     reversed = True
     df_rates = get_oanda_currency_historical_rates(
         start,
         end,
         quote_currency=quote_currency,
         base_currency=base_currency,
         reversed=reversed)
     self.assertEqual(df_rates.index[0], pd.to_datetime("2016-01-01"))
     self.assertEqual(df_rates.index[-1], pd.to_datetime("2016-06-01"))
예제 #4
0
def DataReader(name,
               data_source=None,
               start=None,
               end=None,
               retry_count=3,
               pause=0.001,
               session=None):
    """
    Imports data from a number of online sources.

    Currently supports Yahoo! Finance, Google Finance, St. Louis FED (FRED),
    Kenneth French's data library, and the SEC's EDGAR Index.

    Parameters
    ----------
    name : str or list of strs
        the name of the dataset. Some data sources (yahoo, google, fred) will
        accept a list of names.
    data_source: {str, None}
        the data source ("yahoo", "yahoo-actions", "yahoo-dividends",
        "google", "fred", "ff", or "edgar-index")
    start : {datetime, None}
        left boundary for range (defaults to 1/1/2010)
    end : {datetime, None}
        right boundary for range (defaults to today)
    retry_count : {int, 3}
        Number of times to retry query request.
    pause : {numeric, 0.001}
        Time, in seconds, to pause between consecutive queries of chunks. If
        single value given for symbol, represents the pause between retries.
    session : Session, default None
            requests.sessions.Session instance to be used

    Examples
    ----------

    # Data from Yahoo! Finance
    gs = DataReader("GS", "yahoo")

    # Corporate Actions (Dividend and Split Data) with ex-dates from Yahoo! Finance
    gs = DataReader("GS", "yahoo-actions")

    # Data from Google Finance
    aapl = DataReader("AAPL", "google")

    # Data from FRED
    vix = DataReader("VIXCLS", "fred")

    # Data from Fama/French
    ff = DataReader("F-F_Research_Data_Factors", "famafrench")
    ff = DataReader("F-F_Research_Data_Factors_weekly", "famafrench")
    ff = DataReader("6_Portfolios_2x3", "famafrench")
    ff = DataReader("F-F_ST_Reversal_Factor", "famafrench")

    # Data from EDGAR index
    ed = DataReader("full", "edgar-index")
    ed2 = DataReader("daily", "edgar-index")
    """
    if data_source == "yahoo":
        return YahooDailyReader(symbols=name,
                                start=start,
                                end=end,
                                adjust_price=False,
                                chunksize=25,
                                retry_count=retry_count,
                                pause=pause,
                                session=session).read()

    elif data_source == "yahoo-actions":
        return YahooActionReader(symbols=name,
                                 start=start,
                                 end=end,
                                 retry_count=retry_count,
                                 pause=pause,
                                 session=session).read()
    elif data_source == "yahoo-dividends":
        return YahooDailyReader(symbols=name,
                                start=start,
                                end=end,
                                adjust_price=False,
                                chunksize=25,
                                retry_count=retry_count,
                                pause=pause,
                                session=session,
                                interval='v').read()

    elif data_source == "google":
        return GoogleDailyReader(symbols=name,
                                 start=start,
                                 end=end,
                                 chunksize=25,
                                 retry_count=retry_count,
                                 pause=pause,
                                 session=session).read()

    elif data_source == "fred":
        return FredReader(symbols=name,
                          start=start,
                          end=end,
                          retry_count=retry_count,
                          pause=pause,
                          session=session).read()

    elif data_source == "famafrench":
        return FamaFrenchReader(symbols=name,
                                start=start,
                                end=end,
                                retry_count=retry_count,
                                pause=pause,
                                session=session).read()

    elif data_source == "oecd":
        return OECDReader(symbols=name,
                          start=start,
                          end=end,
                          retry_count=retry_count,
                          pause=pause,
                          session=session).read()
    elif data_source == "eurostat":
        return EurostatReader(symbols=name,
                              start=start,
                              end=end,
                              retry_count=retry_count,
                              pause=pause,
                              session=session).read()
    elif data_source == "edgar-index":
        return EdgarIndexReader(symbols=name,
                                start=start,
                                end=end,
                                retry_count=retry_count,
                                pause=pause,
                                session=session).read()
    elif data_source == "oanda":
        return get_oanda_currency_historical_rates(start,
                                                   end,
                                                   quote_currency="USD",
                                                   base_currency=name,
                                                   reversed=True,
                                                   session=session)
    else:
        msg = "data_source=%r is not implemented" % data_source
        raise NotImplementedError(msg)
from pandas_datareader.oanda import get_oanda_currency_historical_rates
start, end = "2016-01-01", "2016-06-01"
quote_currency = "USD"
base_currency = ["EUR", "GBP", "JPY"]
df_rates = get_oanda_currency_historical_rates(start,
                                               end,
                                               quote_currency=quote_currency,
                                               base_currency=base_currency)
print(df_rates)
예제 #6
0
def DataReader(name, data_source=None, start=None, end=None,
               retry_count=3, pause=0.001, session=None):
    """
    Imports data from a number of online sources.

    Currently supports Yahoo! Finance, Google Finance, St. Louis FED (FRED),
    Kenneth French's data library, and the SEC's EDGAR Index.

    Parameters
    ----------
    name : str or list of strs
        the name of the dataset. Some data sources (yahoo, google, fred) will
        accept a list of names.
    data_source: {str, None}
        the data source ("yahoo", "yahoo-actions", "yahoo-dividends",
        "google", "fred", "ff", or "edgar-index")
    start : {datetime, None}
        left boundary for range (defaults to 1/1/2010)
    end : {datetime, None}
        right boundary for range (defaults to today)
    retry_count : {int, 3}
        Number of times to retry query request.
    pause : {numeric, 0.001}
        Time, in seconds, to pause between consecutive queries of chunks. If
        single value given for symbol, represents the pause between retries.
    session : Session, default None
            requests.sessions.Session instance to be used

    Examples
    ----------

    # Data from Yahoo! Finance
    gs = DataReader("GS", "yahoo")

    # Corporate Actions (Dividend and Split Data) with ex-dates from Yahoo! Finance
    gs = DataReader("GS", "yahoo-actions")

    # Data from Google Finance
    aapl = DataReader("AAPL", "google")

    # Data from FRED
    vix = DataReader("VIXCLS", "fred")

    # Data from Fama/French
    ff = DataReader("F-F_Research_Data_Factors", "famafrench")
    ff = DataReader("F-F_Research_Data_Factors_weekly", "famafrench")
    ff = DataReader("6_Portfolios_2x3", "famafrench")
    ff = DataReader("F-F_ST_Reversal_Factor", "famafrench")

    # Data from EDGAR index
    ed = DataReader("full", "edgar-index")
    ed2 = DataReader("daily", "edgar-index")
    """
    if data_source == "yahoo":
        return YahooDailyReader(symbols=name, start=start, end=end,
                                adjust_price=False, chunksize=25,
                                retry_count=retry_count, pause=pause,
                                session=session).read()

    elif data_source == "yahoo-actions":
        return YahooActionReader(symbols=name, start=start, end=end,
                                 retry_count=retry_count, pause=pause,
                                 session=session).read()
    elif data_source == "yahoo-dividends":
        return YahooDailyReader(symbols=name, start=start, end=end,
                                adjust_price=False, chunksize=25,
                                retry_count=retry_count, pause=pause,
                                session=session, interval='v').read()

    elif data_source == "google":
        return GoogleDailyReader(symbols=name, start=start, end=end,
                                 chunksize=25,
                                 retry_count=retry_count, pause=pause,
                                 session=session).read()

    elif data_source == "fred":
        return FredReader(symbols=name, start=start, end=end,
                          retry_count=retry_count, pause=pause,
                          session=session).read()

    elif data_source == "famafrench":
        return FamaFrenchReader(symbols=name, start=start, end=end,
                                retry_count=retry_count, pause=pause,
                                session=session).read()

    elif data_source == "oecd":
        return OECDReader(symbols=name, start=start, end=end,
                          retry_count=retry_count, pause=pause,
                          session=session).read()
    elif data_source == "eurostat":
        return EurostatReader(symbols=name, start=start, end=end,
                              retry_count=retry_count, pause=pause,
                              session=session).read()
    elif data_source == "edgar-index":
        return EdgarIndexReader(symbols=name, start=start, end=end,
                                retry_count=retry_count, pause=pause,
                                session=session).read()
    elif data_source == "oanda":
        return get_oanda_currency_historical_rates(
            start, end,
            quote_currency="USD", base_currency=name,
            reversed=True, session=session
        )
    else:
        msg = "data_source=%r is not implemented" % data_source
        raise NotImplementedError(msg)