docstr: RiskMetrics are calculated for rolling windows in four lengths::
      - 1_month
      - 3_month
      - 6_month
      - 12_month
  
  The return value of this function is a dictionary keyed by the above
  list of durations. The value of each entry is a list of RiskMetric
  dicts of the same duration as denoted by the top_level key.
  
  See :py:meth:`RiskMetrics.to_dict` for the detailed list of fields
  provided for each period.
code: def to_dict(self):
      """
      RiskMetrics are calculated for rolling windows in four lengths::
          - 1_month
          - 3_month
          - 6_month
          - 12_month
  
      The return value of this function is a dictionary keyed by the above
      list of durations. The value of each entry is a list of RiskMetric
      dicts of the same duration as denoted by the top_level key.
  
      See :py:meth:`RiskMetrics.to_dict` for the detailed list of fields
      provided for each period.
      """
      return {
          "one_month": [x.to_dict() for x in self.month_periods],
          "three_month": [
              x.to_dict() for x in self.three_month_periods
          ],
          "six_month": [x.to_dict() for x in self.six_month_periods],
          "twelve_month": [x.to_dict() for x in self.year_periods],
      }
  
file_path: catalyst/catalyst/finance/risk/report.py
imports: import logbook
  import datetime
  from dateutil.relativedelta import relativedelta
  from .period import RiskMetricsPeriod
  from catalyst.constants import LOG_LEVEL
label_desc: Use image node_id 2 for calling the RiskReport obj's underlying member method code with example usage: obj.to_dict() and returns: dict