docstr: Similar to 'get_spot_value' but for a single asset
  
  Notes
  -----
  We're writing each minute bar to disk using zipline's machinery.
  This is especially useful when running multiple algorithms
  concurrently. By using local data when possible, we try to reaching
  request limits on exchanges.
  
  Parameters
  ----------
  asset: TradingPair
  field: str
  data_frequency: str
  
  Returns
  -------
  float
      The spot value of the given asset / field
docstr_tok: ["Similar","to","'get_spot_value","'","but","for","a","single","asset","Notes","--","--","-","We","'re","writing","each","minute","bar","to","disk","using","zipline","'s","machinery",".","This","is","especially","useful","when","running","multiple","algorithms","concurrently",".","By","using","local","data","when","possible",",","we","try","to","reaching","request","limits","on","exchanges",".","Parameters","--","--","--","--","--","asset",":","TradingPair","field",":","str","data_frequency",":","str","Returns","--","--","--","-","float","The","spot","value","of","the","given","asset","\/","field"]
code: def get_single_spot_value(self, asset, field, data_frequency):
      """
      Similar to 'get_spot_value' but for a single asset
  
      Notes
      -----
      We're writing each minute bar to disk using zipline's machinery.
      This is especially useful when running multiple algorithms
      concurrently. By using local data when possible, we try to reaching
      request limits on exchanges.
  
      Parameters
      ----------
      asset: TradingPair
      field: str
      data_frequency: str
  
      Returns
      -------
      float
          The spot value of the given asset / field
  
      """
      log.debug(
          "fetching spot value {field} for symbol {symbol}".format(
              symbol=asset.symbol, field=field
          )
      )
  
      freq = "1T" if data_frequency == "minute" else "1D"
      ohlc = self.get_candles(freq, asset)
      if field not in ohlc:
          raise KeyError("Invalid column: %s" % field)
  
      value = ohlc[field]
      log.debug("got spot value: {}".format(value))
  
      return value
  
imports: import abc
  from abc import ABCMeta, abstractmethod, abstractproperty
  from datetime import timedelta
  from time import sleep
  import numpy
  import pandas
  from catalyst.constants import LOG_LEVEL
  from catalyst.data.data_portal import BASE_FIELDS
  from catalyst.exchange.exchange_bundle import ExchangeBundle
  from catalyst.exchange.exchange_errors import MismatchingQuoteCurrencies, SymbolNotFoundOnExchange, PricingDataNotLoadedError, NoDataAvailableOnExchange, NoValueForField, NoCandlesReceivedFromExchange, TickerNotFoundError, NotEnoughCashError
  from catalyst.exchange.utils.datetime_utils import get_delta, get_periods_range, get_periods, get_start_dt, get_frequency, get_candles_number_from_minutes
  from catalyst.exchange.utils.exchange_utils import get_exchange_symbols, resample_history_df, has_bundle, get_candles_df
  from logbook import Logger
label_desc: Use image node_id 15 for calling the Exchange obj's underlying member method code with example usage: obj.get_single_spot_value(asset, field, data_frequency) and returns: value