code: def __repr__(self):
      statements = []
      metrics = [
          "algorithm_period_returns",
          "benchmark_period_returns",
          "excess_return",
          "num_trading_days",
          "benchmark_volatility",
          "algorithm_volatility",
          "sharpe",
          "sortino",
          "information",
          "beta",
          "alpha",
          "max_drawdown",
          "max_leverage",
          "algorithm_returns",
          "benchmark_returns",
      ]
  
      for metric in metrics:
          value = getattr(self, metric)
          statements.append("{m}:{v}".format(m=metric, v=value))
  
      return "\n".join(statements)
  
file_path: catalyst/catalyst/finance/risk/period.py
imports: import functools
  import warnings
  import logbook
  from six import iteritems
  import numpy
  import pandas
  from .None import risk
  from .risk import check_entry
  from empyrical import alpha_beta_aligned, annual_volatility, downside_risk, information_ratio, sharpe_ratio, sortino_ratio
  from catalyst.patches.stats import max_drawdown, cum_returns
  from catalyst.constants import LOG_LEVEL
label_desc: Use image node_id 4 for calling the RiskMetricsPeriod obj's underlying member method code with example usage: obj.__repr__() and returns: str