code: def setup(self):
      log.info("creating bitfinex exchange")
      exchanges = get_exchanges(["bitfinex", "bittrex", "poloniex"])
      open_calendar = get_calendar("OPEN")
      asset_finder = ExchangeAssetFinder()
  
      self.data_portal_live = DataPortalExchangeLive(
          exchanges=exchanges,
          asset_finder=asset_finder,
          trading_calendar=open_calendar,
          first_trading_day=pd.to_datetime("today", utc=True),
      )
  
      self.data_portal_backtest = DataPortalExchangeBacktest(
          exchanges=exchanges,
          asset_finder=asset_finder,
          trading_calendar=open_calendar,
          first_trading_day=None,  # will set dynamically based on assets
      )
  
file_path: catalyst/tests/exchange/test_data_portal.py
imports: import pandas
  from logbook import Logger
  from catalyst import get_calendar
  from catalyst.exchange.exchange_asset_finder import ExchangeAssetFinder
  from catalyst.exchange.exchange_data_portal import DataPortalExchangeBacktest, DataPortalExchangeLive
  from catalyst.exchange.utils.factory import get_exchanges
label_desc: Use image node_id 1 for calling the TestExchangeDataPortal obj's underlying member method code with example usage: obj.setup() without return types