Add honest Torch validation gate
This commit is contained in:
@@ -64,6 +64,8 @@ def _decision(
|
||||
candidate_replay = candidate.get("full_replay") if isinstance(candidate.get("full_replay"), dict) else {}
|
||||
candidate_walk = candidate.get("walk_forward") if isinstance(candidate.get("walk_forward"), dict) else {}
|
||||
walk_summary = candidate_walk.get("summary") if isinstance(candidate_walk.get("summary"), dict) else {}
|
||||
if not _validation_passed(candidate):
|
||||
return {"accepted": False, "reason": "candidate_failed_honest_validation"}
|
||||
if int(candidate_replay.get("trades", 0) or 0) < min_trades:
|
||||
return {"accepted": False, "reason": "candidate_has_too_few_full_replay_trades"}
|
||||
if float(candidate_replay.get("profit_factor", 0.0) or 0.0) < min_profit_factor:
|
||||
@@ -77,6 +79,15 @@ def _decision(
|
||||
return {"accepted": True, "reason": "candidate_passed_guard"}
|
||||
|
||||
|
||||
def _validation_passed(report: dict[str, Any]) -> bool:
|
||||
validation = report.get("validation")
|
||||
if not isinstance(validation, dict):
|
||||
return False
|
||||
if "passed" in validation:
|
||||
return bool(validation.get("passed"))
|
||||
return str(validation.get("status", "")).strip().lower() in {"pass", "passed", "ok"}
|
||||
|
||||
|
||||
def _score(report: dict[str, Any]) -> float:
|
||||
replay = report.get("full_replay") if isinstance(report.get("full_replay"), dict) else {}
|
||||
recommended = report.get("recommended") if isinstance(report.get("recommended"), dict) else {}
|
||||
@@ -97,6 +108,10 @@ def _summary(report: dict[str, Any]) -> dict[str, Any]:
|
||||
"walk_forward_summary": (report.get("walk_forward") or {}).get("summary", {})
|
||||
if isinstance(report.get("walk_forward"), dict)
|
||||
else {},
|
||||
"benchmark_summary": (report.get("benchmark") or {}).get("summary", {})
|
||||
if isinstance(report.get("benchmark"), dict)
|
||||
else {},
|
||||
"validation": report.get("validation", {}),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user