docstr: show the newly report (mean, std, information_ratio, annualized_return)
  
  Parameters
  ----------
  id : str
      user id, need to be unique
  path : str
      Path to save user account.
  bench : str
      The benchmark that our result compared with.
      'SH000905' for csi500, 'SH000300' for csi300
docstr_tok: ["show","the","newly","report","(","mean",",","std",",","information_ratio",",","annualized_return",")","Parameters","--","--","--","--","--","id",":","str","user","id",",","need","to","be","unique","path",":","str","Path","to","save","user","account",".","bench",":","str","The","benchmark","that","our","result","compared","with",".","'SH000905","'","for","csi500",",","'SH000300","'","for","csi300"]
code: def show(self, id, path, bench="SH000905"):
      """show the newly report (mean, std, information_ratio, annualized_return)
  
      Parameters
      ----------
      id : str
          user id, need to be unique
      path : str
          Path to save user account.
      bench : str
          The benchmark that our result compared with.
          'SH000905' for csi500, 'SH000300' for csi300
      """
      um = self.init(self.client, path, None)[0]
      if id not in um.users:
          raise ValueError("Cannot find user ".format(id))
      bench = D.features([bench], ["$change"]).loc[bench, "$change"]
      portfolio_metrics = um.users[
          id
      ].account.portfolio_metrics.generate_portfolio_metrics_dataframe()
      portfolio_metrics["bench"] = bench
      analysis_result = {}
      r = (
          portfolio_metrics["return"] - portfolio_metrics["bench"]
      ).dropna()
      analysis_result["excess_return_without_cost"] = risk_analysis(r)
      r = (
          portfolio_metrics["return"]
          - portfolio_metrics["bench"]
          - portfolio_metrics["cost"]
      ).dropna()
      analysis_result["excess_return_with_cost"] = risk_analysis(r)
      print("Result:")
      print("excess_return_without_cost:")
      print(analysis_result["excess_return_without_cost"])
      print("excess_return_with_cost:")
      print(analysis_result["excess_return_with_cost"])
  
imports: import fire
  import pandas
  import pathlib
  import qlib
  import logging
  from ...data import D
  from ...log import get_module_logger
  from ...utils import get_pre_trading_date, is_tradable_date
  from ..evaluate import risk_analysis
  from ..backtest.backtest import update_account
  from .manager import UserManager
  from .utils import prepare
  from .utils import create_user_folder
  from .executor import load_order_list, save_order_list
  from .executor import SimulatorExecutor
  from .executor import save_score_series, load_score_series
label_desc: Use image node_id 9 for calling the Operator obj's underlying member method code with example usage: obj.show(id, path, bench) without return types