class_docstr: The algorithm's interface to the registered risk and performance
  metrics.
  
  Parameters
  ----------
  trading_calendar : TrandingCalendar
      The trading calendar used in the simulation.
  first_session : pd.Timestamp
      The label of the first trading session in the simulation.
  last_session : pd.Timestamp
      The label of the last trading session in the simulation.
  capital_base : float
      The starting capital for the simulation.
  emission_rate : {'daily', 'minute'}
      How frequently should a performance packet be generated?
  data_frequency : {'daily', 'minute'}
      The data frequency of the data portal.
  asset_finder : AssetFinder
      The asset finder used in the simulation.
  metrics : list[Metric]
      The metrics to track.
docstr: When the simulation is complete, run the full period risk report
  and send it out on the results socket.
docstr_tok: ["When","the","simulation","is","complete",",","run","the","full","period","risk","report","and","send","it","out","on","the","results","socket","."]
code: def handle_simulation_end(self, data_portal):
      """
      When the simulation is complete, run the full period risk report
      and send it out on the results socket.
      """
      log.info(
          "Simulated {} trading days\n"
          "first open: {}\n"
          "last close: {}",
          self._session_count,
          self._trading_calendar.session_open(self._first_session),
          self._trading_calendar.session_close(self._last_session),
      )
  
      packet = {}
      self.end_of_simulation(
          packet,
          self._ledger,
          self._trading_calendar,
          self._sessions,
          data_portal,
          self._benchmark_source,
      )
      return packet
  
imports: from __future__ import division
  import logbook
  from ..ledger import Ledger
  from zipline.utils.exploding_object import NamedExplodingObject
label_desc: Use image node_id 19 for calling the MetricsTracker obj's underlying member method code with example usage: obj.handle_simulation_end(data_portal) and returns: packet