diff --git a/docker-compose.yml b/docker-compose.yml index 1143ab3..c8e8877 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,8 +46,8 @@ services: RAIN_TUNE_HYPERPARAMETERS: "true" RAIN_MAX_HYPERPARAM_TRIALS: "12" RAIN_CALIBRATION_METHODS: "none,sigmoid,isotonic" - RAIN_THRESHOLD_POLICY: "validation" - RAIN_WALK_FORWARD_FOLDS: "0" + RAIN_THRESHOLD_POLICY: "walk_forward" + RAIN_WALK_FORWARD_FOLDS: "4" RAIN_ALLOW_EMPTY_DATA: "true" RAIN_MODEL_PATH: "/app/models/rain_model.pkl" RAIN_MODEL_BACKUP_PATH: "/app/models/rain_model.pkl.last_good" diff --git a/docs/rain_model_runbook.md b/docs/rain_model_runbook.md index 3fc743d..0c01a0a 100644 --- a/docs/rain_model_runbook.md +++ b/docs/rain_model_runbook.md @@ -143,7 +143,7 @@ The script exits non-zero on failure, so it can directly drive alerting. Recommended production defaults: - Enable tuning daily or weekly (`RAIN_TUNE_HYPERPARAMETERS=true`) -- Keep walk-forward folds `0` in continuous mode, run fold backtests in scheduled evaluation jobs +- Set `RAIN_THRESHOLD_POLICY=walk_forward` with `RAIN_WALK_FORWARD_FOLDS=4` for temporally robust threshold selection ## 8) Auto-Recommend Candidate diff --git a/scripts/run_rain_ml_worker.py b/scripts/run_rain_ml_worker.py index 20a0494..8d48100 100644 --- a/scripts/run_rain_ml_worker.py +++ b/scripts/run_rain_ml_worker.py @@ -303,7 +303,7 @@ def load_config() -> WorkerConfig: tune_hyperparameters=read_env_bool("RAIN_TUNE_HYPERPARAMETERS", False), max_hyperparam_trials=read_env_int("RAIN_MAX_HYPERPARAM_TRIALS", 12), calibration_methods=read_env("RAIN_CALIBRATION_METHODS", "none,sigmoid,isotonic"), - threshold_policy=read_env("RAIN_THRESHOLD_POLICY", "validation"), + threshold_policy=read_env("RAIN_THRESHOLD_POLICY", "walk_forward"), walk_forward_folds=read_env_int("RAIN_WALK_FORWARD_FOLDS", 0), allow_empty_data=read_env_bool("RAIN_ALLOW_EMPTY_DATA", True), dataset_path_template=read_env(