]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
refactor(ReforceXY): harmonize logging messages
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 27 Dec 2025 13:14:59 +0000 (14:14 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 27 Dec 2025 13:14:59 +0000 (14:14 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
ReforceXY/reward_space_analysis/reward_space_analysis.py
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py

index 3d1cf2982926a15458a171f21466c2cd261f539a..a27edefe1eec4729a719c0cb373a05bd8f480e4a 100644 (file)
@@ -866,20 +866,13 @@ def _compute_time_attenuation_coefficient(
 
     def _half_life_kernel(dr: float) -> float:
         hl = _get_float_param(params, "exit_half_life")
-        if np.isclose(hl, 0.0):
+        if hl <= 0.0 or np.isclose(hl, 0.0):
             warnings.warn(
                 f"Param: exit_half_life={hl} <= 0; falling back to 1.0",
                 RewardDiagnosticsWarning,
                 stacklevel=2,
             )
             return 1.0
-        if hl < 0.0:
-            warnings.warn(
-                f"Param: exit_half_life={hl} < 0; falling back to 1.0",
-                RewardDiagnosticsWarning,
-                stacklevel=2,
-            )
-            return 1.0
         return math.pow(2.0, -dr / hl)
 
     kernels = {
@@ -3626,7 +3619,7 @@ def write_complete_statistical_analysis(
     analysis_stats = None
     partial_deps = {}
     if skip_feature_analysis or len(df) < 4:
-        print("Skipping feature analysis: insufficient samples or flag set")
+        print("CLI: Skipping feature analysis; insufficient samples or flag set")
         # Do NOT create feature_importance.csv when skipped (tests expect absence)
         # Create minimal partial dependence placeholders only if feature analysis was NOT explicitly skipped
         if not skip_feature_analysis and not skip_partial_dependence:
@@ -3659,7 +3652,7 @@ def write_complete_statistical_analysis(
                         f"{feature},partial_dependence\n", encoding="utf-8"
                     )
         except ImportError:
-            print("Skipping feature analysis: scikit-learn unavailable")
+            print("CLI: Skipping feature analysis; scikit-learn unavailable")
             (output_dir / "feature_importance.csv").write_text(
                 "feature,importance_mean,importance_std\n", encoding="utf-8"
             )
@@ -4340,7 +4333,7 @@ def main() -> None:
             f"  - {k}: {v['original']} -> {v['adjusted']} ({v['reason']})"
             for k, v in adjustments.items()
         ]
-        print("Parameter adjustments applied:\n" + "\n".join(adj_lines))
+        print("CLI: Parameter adjustments applied\n" + "\n".join(adj_lines))
 
     base_factor = _get_float_param(params, "base_factor", float(args.base_factor))
     profit_aim = _get_float_param(params, "profit_aim", float(args.profit_aim))
@@ -4454,11 +4447,11 @@ def main() -> None:
     # Load real episodes if provided
     real_df = None
     if args.real_episodes and args.real_episodes.exists():
-        print(f"Loading real episodes from: {args.real_episodes}...")
+        print(f"CLI: Loading real episodes from {args.real_episodes}")
         real_df = load_real_episodes(args.real_episodes)
 
     # Generate consolidated statistical analysis report (with enhanced tests)
-    print("Generating statistical analysis...")
+    print("CLI: Generating statistical analysis")
 
     write_complete_statistical_analysis(
         df,
@@ -4476,7 +4469,7 @@ def main() -> None:
         rf_n_jobs=int(getattr(args, "rf_n_jobs", -1)),
         perm_n_jobs=int(getattr(args, "perm_n_jobs", -1)),
     )
-    print(f"Statistical analysis saved to: {args.out_dir / 'statistical_analysis.md'}")
+    print(f"CLI: Statistical analysis saved to {args.out_dir / 'statistical_analysis.md'}")
     # Generate manifest summarizing key metrics
     try:
         manifest_path = args.out_dir / "manifest.json"
@@ -4513,13 +4506,13 @@ def main() -> None:
             manifest["simulation_params"] = sim_params
         with manifest_path.open("w", encoding="utf-8") as mh:
             json.dump(manifest, mh, indent=2)
-        print(f"Manifest saved to: {manifest_path}")
+        print(f"CLI: Manifest saved to {manifest_path}")
     except Exception as e:
-        print(f"Manifest generation failed: {e}")
+        print(f"CLI: Manifest generation failed; {e}")
 
-    print(f"Generated {len(df):,} synthetic samples")
-    print(sample_output_message)
-    print(f"Artifacts saved to: {args.out_dir.resolve()}")
+    print(f"CLI: Generated {len(df):,} synthetic samples")
+    print(f"CLI: {sample_output_message}")
+    print(f"CLI: Artifacts saved to {args.out_dir.resolve()}")
 
 
 if __name__ == "__main__":
index 9e1701c69c4434b0483721c1cc8943ac1bc38ff5..d24e9271f0009d124ad32bd8ce5fb6cd0471168e 100644 (file)
@@ -499,7 +499,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
 
     def _log_model_configuration(self) -> None:
         logger.info("=" * 60)
-        logger.info("QuickAdapterRegressor Configuration")
+        logger.info("QuickAdapterRegressor Model Configuration")
         logger.info("=" * 60)
 
         logger.info(f"Model Version: {self.version}")