SAMPLE_SIZE_REPORT_MINIMAL: Minimal sample size for report smoke tests (10)
REPORT_DURATION_SCALE_UP: Duration scale applied to synthetic real episodes (1.01)
REPORT_DURATION_SCALE_DOWN: Duration scale applied to synthetic real episodes (0.99)
+ REPORT_PNL_MEAN_SHIFT: PnL mean shift applied to synthetic real episodes (0.001)
# API smoke parameters
API_MAX_IDLE_DURATION_CANDLES: Idle duration cap used in _sample_action tests (20)
SAMPLE_SIZE_REPORT_MINIMAL: int = 10
REPORT_DURATION_SCALE_UP: float = 1.01
REPORT_DURATION_SCALE_DOWN: float = 0.99
+ REPORT_PNL_MEAN_SHIFT: float = 0.001
# API smoke parameters
API_MAX_IDLE_DURATION_CANDLES: int = 20
synth_df = self.make_stats_df(n=SCENARIOS.SAMPLE_SIZE_TINY, seed=SEEDS.REPORT_FORMAT_1)
# Real df: shift slightly (different mean) so metrics non-zero
real_df = synth_df.copy()
- real_df["pnl"] = real_df["pnl"] + PARAMS.PNL_DUR_VOL_SCALE # small mean shift
+ real_df["pnl"] = real_df["pnl"] + SCENARIOS.REPORT_PNL_MEAN_SHIFT # small mean shift
real_df["trade_duration"] = real_df["trade_duration"] * SCENARIOS.REPORT_DURATION_SCALE_UP
real_df["idle_duration"] = real_df["idle_duration"] * SCENARIOS.REPORT_DURATION_SCALE_DOWN
content = self._write_report(synth_df, real_df=real_df)
params = self.base_params()
params.pop("base_factor", None)
base_factor = DEFAULT_MODEL_REWARD_PARAMETERS["base_factor"]
- profit_aim = PARAMS.PNL_MEDIUM
+ profit_aim = PARAMS.PROFIT_AIM
rr = PARAMS.RISK_REWARD_RATIO
for pnl, label in [(PARAMS.PNL_SMALL, "profit"), (-PARAMS.PNL_SMALL, "loss")]: