class_docstr: Interface to all of the data that a catalyst simulation needs.
  
  This is used by the simulation runner to answer questions about the data,
  like getting the prices of assets on a given day or to service history
  calls.
  
  Parameters
  ----------
  asset_finder : catalyst.assets.assets.AssetFinder
      The AssetFinder instance used to resolve assets.
  trading_calendar: catalyst.utils.calendar.exchange_calendar.TradingCalendar
      The calendar instance used to provide minute->session information.
  first_trading_day : pd.Timestamp
      The first trading day for the simulation.
  daily_reader : BcolzDailyBarReader, optional
      The daily bar reader for equities. This will be used to service
      daily data backtests or daily history calls in a minute backetest.
      If a daily bar reader is not provided but a minute bar reader is,
      the minutes will be rolled up to serve the daily requests.
  minute_reader : BcolzMinuteBarReader, optional
      The minute bar reader for equities. This will be used to service
      minute data backtests or minute history calls. This can be used
      to serve daily calls if no daily bar reader is provided.
  future_daily_reader : BcolzDailyBarReader, optional
      The daily bar ready for futures. This will be used to service
      daily data backtests or daily history calls in a minute backetest.
      If a daily bar reader is not provided but a minute bar reader is,
      the minutes will be rolled up to serve the daily requests.
  future_minute_reader : BcolzFutureMinuteBarReader, optional
      The minute bar reader for futures. This will be used to service
      minute data backtests or minute history calls. This can be used
      to serve daily calls if no daily bar reader is provided.
  adjustment_reader : SQLiteAdjustmentWriter, optional
      The adjustment reader. This is used to apply splits, dividends, and
      other adjustment data to the raw data from the readers.
  last_available_session : pd.Timestamp, optional
      The last session to make available in session-level data.
  last_available_minute : pd.Timestamp, optional
      The last minute to make available in minute-level data.
docstr: Given an asset and dt, returns the last traded dt from the viewpoint
  of the given dt.
  
  If there is a trade on the dt, the answer is dt provided.
docstr_tok: ["Given","an","asset","and","dt",",","returns","the","last","traded","dt","from","the","viewpoint","of","the","given","dt",".","If","there","is","a","trade","on","the","dt",",","the","answer","is","dt","provided","."]
code: def get_last_traded_dt(self, asset, dt, data_frequency):
      """
      Given an asset and dt, returns the last traded dt from the viewpoint
      of the given dt.
  
      If there is a trade on the dt, the answer is dt provided.
      """
      return self._get_pricing_reader(
          data_frequency
      ).get_last_traded_dt(asset, dt)
  
imports: from operator import mul
  from logbook import Logger
  import numpy
  from numpy import float64, int64, nan
  import pandas
  from pandas import isnull
  from pandas.tslib import normalize_date
  from six import iteritems
  from six.moves import reduce
  from catalyst.assets import Asset, AssetConvertible, Equity, Future, PricingDataAssociable
  from catalyst.assets.continuous_futures import ContinuousFuture
  from catalyst.data.continuous_future_reader import ContinuousFutureSessionBarReader, ContinuousFutureMinuteBarReader
  from catalyst.assets.roll_finder import CalendarRollFinder, VolumeRollFinder
  from catalyst.data.dispatch_bar_reader import AssetDispatchMinuteBarReader, AssetDispatchSessionBarReader
  from catalyst.data.resample import DailyHistoryAggregator, ReindexMinuteBarReader, ReindexSessionBarReader
  from catalyst.data.history_loader import DailyHistoryLoader, MinuteHistoryLoader
  from catalyst.data.us_equity_pricing import NoDataOnDate
  from catalyst.utils.math_utils import nansum, nanmean, nanstd
  from catalyst.utils.memoize import remember_last, weak_lru_cache
  from catalyst.utils.pandas_utils import timedelta_to_integral_minutes
  from catalyst.errors import NoTradeDataAvailableTooEarly, NoTradeDataAvailableTooLate, HistoryWindowStartsBeforeData
  from catalyst.constants import LOG_LEVEL
label_desc: Use image node_id 6 for calling the DataPortal obj's underlying member method code with example usage: obj.get_last_traded_dt(asset, dt, data_frequency) and returns: self