class_docstr: Convert a continuous ratio to deal amount.
  
  The ratio is relative to TWAP on the remainder of the day.
  For example, there are 5 steps left, and the left position is 300.
  With TWAP strategy, in each position, 60 should be traded.
  When this interpreter receives action $a$, its output is $60 \cdot a$.
class_docstr_tok: ["Convert","a","continuous","ratio","to","deal","amount",".","The","ratio","is","relative","to","TWAP","on","the","remainder","of","the","day",".","For","example",",","there","are","5","steps","left",",","and","the","left","position","is","300",".","With","TWAP","strategy",",","in","each","position",",","60","should","be","traded",".","When","this","interpreter","receives","action","$","a","$",",","its","output","is","$","60","\\cdot","a","$","."]
code: def interpret(self, state: SAOEState, action: float) -> float:
      estimated_total_steps = math.ceil(
          len(state.ticks_for_order) / state.ticks_per_step
      )
      twap_volume = state.position / (
          estimated_total_steps - state.cur_step
      )
      return min(state.position, twap_volume * action)
  
imports: from __future__ import annotations
  import math
  from typing import Any, List, Optional, cast
  import numpy
  import pandas
  from gym import spaces
  from qlib.constant import EPS
  from qlib.rl.data.base import ProcessedDataProvider
  from qlib.rl.interpreter import ActionInterpreter, StateInterpreter
  from qlib.rl.order_execution.state import SAOEState
  from qlib.typehint import TypedDict
  from qlib.utils import init_instance_by_config
label_desc: Use image node_id 2 for calling the TwapRelativeActionInterpreter obj's underlying member method code with example usage: obj.interpret(state, action) and returns: min