self._model_params_cache: Optional[Dict[str, Any]] = None
self.unset_unsupported()
+ @staticmethod
+ def _normalize_position(position: Any) -> Positions:
+ if isinstance(position, Positions):
+ return position
+ try:
+ position = float(position)
+ if position == float(Positions.Long.value):
+ return Positions.Long
+ if position == float(Positions.Short.value):
+ return Positions.Short
+ return Positions.Neutral
+ except Exception:
+ return Positions.Neutral
+
@staticmethod
@lru_cache(maxsize=8)
def get_action_masks(
position: Positions, force_action: Optional[ForceActions] = None
) -> NDArray[bool]:
+ position = ReforceXY._normalize_position(position)
+
action_masks = np.zeros(len(Actions), dtype=bool)
if force_action is not None and position in (Positions.Long, Positions.Short):
:param model: Any = the trained model used to inference the features.
"""
- def _normalize_position(position: Any) -> Positions:
- if isinstance(position, Positions):
- return position
- try:
- position = float(position)
- if position == float(Positions.Long.value):
- return Positions.Long
- if position == float(Positions.Short.value):
- return Positions.Short
- return Positions.Neutral
- except Exception:
- return Positions.Neutral
-
simulated_position: Positions = Positions.Neutral
def _update_simulated_position(action: int, position: Positions) -> Positions: