def setUp(self):
"""Set up test fixtures with reproducible random seed."""
- self.seed_all(SEEDS.BASE)
+ RewardSpaceTestBase.seed_all(SEEDS.BASE)
self.temp_dir = tempfile.mkdtemp()
self.output_path = Path(self.temp_dir)
pnl, trade_duration, idle_duration, position. Guarantees: no NaN; reward_idle==0 where idle_duration==0.
"""
if seed is not None:
- self.seed_all(seed)
+ RewardSpaceTestBase.seed_all(seed)
pnl_std_eff = PARAMS.PNL_STD if pnl_std is None else pnl_std
reward = np.random.normal(reward_mean, reward_std, n)
pnl = np.random.normal(pnl_mean, pnl_std_eff, n)
def _make_idle_variance_df(self, n: int = 100) -> pd.DataFrame:
"""Synthetic dataframe focusing on idle_duration ↔ reward_idle correlation."""
- self.seed_all(SEEDS.BASE)
+ RewardSpaceTestBase.seed_all(SEEDS.BASE)
idle_duration = np.random.exponential(10, n)
reward_idle = -0.01 * idle_duration + np.random.normal(0, 0.001, n)
return pd.DataFrame(
if method == STANDARDIZATION_TYPES[0]: # none
return values
if method == STANDARDIZATION_TYPES[3]: # mmad
- return self._apply_mmad(
+ return LabelTransformer._apply_mmad(
values,
mask,
state.median,
scaler = getattr(state, scaler_attr, None)
if scaler is None:
raise RuntimeError(f"{scaler_attr} not fitted")
- return self._apply_scaler(values, mask, scaler, inverse=inverse)
+ return LabelTransformer._apply_scaler(values, mask, scaler, inverse=inverse)
def _normalize(
self,
) -> NDArray[np.floating]:
method = state.config["normalization"]
if method == NORMALIZATION_TYPES[2]: # sigmoid
- return self._apply_sigmoid(
+ return LabelTransformer._apply_sigmoid(
values, mask, state.config["sigmoid_scale"], inverse=inverse
)
if method == NORMALIZATION_TYPES[3]: # none
scaler = getattr(state, scaler_attr, None)
if scaler is None:
raise RuntimeError(f"{scaler_attr} not fitted")
- return self._apply_scaler(values, mask, scaler, inverse=inverse)
+ return LabelTransformer._apply_scaler(values, mask, scaler, inverse=inverse)
def _fit_standardization(
self, values: NDArray[np.floating], state: _ColumnState
mask = np.isfinite(values)
if inverse:
- degamma = self._apply_gamma(
+ degamma = LabelTransformer._apply_gamma(
values, mask, state.config["gamma"], inverse=True
)
denorm = self._normalize(degamma, mask, state, inverse=True)
else:
standardized = self._standardize(values, mask, state, inverse=False)
normalized = self._normalize(standardized, mask, state, inverse=False)
- return self._apply_gamma(
+ return LabelTransformer._apply_gamma(
normalized, mask, state.config["gamma"], inverse=False
)