class_docstr: The correctness of the metrics of Account in nested execution depends on the shallow copy of `trade_account` in
  qlib/backtest/executor.py:NestedExecutor
  Different level of executor has different Account object when calculating metrics. But the position object is
  shared cross all the Account object.
docstr: update history position
docstr_tok: ["update","history","position"]
code: def update_hist_positions(
      self, trade_start_time: pd.Timestamp
  ) -> None:
      """update history position"""
      now_account_value = self.current_position.calculate_value()
      # set now_account_value to position
      self.current_position.position[
          "now_account_value"
      ] = now_account_value
      self.current_position.update_weight_all()
      # update hist_positions
      # note use deepcopy
      self.hist_positions[trade_start_time] = copy.deepcopy(
          self.current_position
      )
  
imports: from __future__ import annotations
  import copy
  from typing import Dict, List, Optional, Tuple, cast
  import pandas
  from qlib.utils import init_instance_by_config
  from .decision import BaseTradeDecision, Order
  from .exchange import Exchange
  from .high_performance_ds import BaseOrderIndicator
  from .position import BasePosition
  from .report import Indicator, PortfolioMetrics
label_desc: Use image node_id 12 for calling the Account obj's underlying member method code with example usage: obj.update_hist_positions(trade_start_time) without return types