Add honest Torch validation gate
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from tools.accept_torch_candidate import _decision
|
||||
|
||||
|
||||
def _report(*, validation_passed: bool = True, trades: int = 30, total: float = 10.0) -> dict:
|
||||
return {
|
||||
"recommended": {"score": 0.5},
|
||||
"full_replay": {
|
||||
"trades": trades,
|
||||
"avg_net_percent": 0.4,
|
||||
"total_net_percent": total,
|
||||
"profit_factor": 2.0,
|
||||
"max_drawdown_percent": 1.0,
|
||||
},
|
||||
"walk_forward": {"summary": {"trades": trades, "avg_net_percent": 0.3}},
|
||||
"validation": {"passed": validation_passed, "status": "pass" if validation_passed else "fail"},
|
||||
}
|
||||
|
||||
|
||||
def test_guard_rejects_candidate_without_honest_validation() -> None:
|
||||
decision = _decision(
|
||||
_report(),
|
||||
_report(validation_passed=False),
|
||||
min_trades=8,
|
||||
min_profit_factor=1.05,
|
||||
min_avg_net_percent=0.0,
|
||||
max_score_regression=0.05,
|
||||
)
|
||||
|
||||
assert decision == {"accepted": False, "reason": "candidate_failed_honest_validation"}
|
||||
|
||||
|
||||
def test_guard_accepts_candidate_that_passes_honest_validation() -> None:
|
||||
decision = _decision(
|
||||
_report(total=9.0),
|
||||
_report(total=12.0),
|
||||
min_trades=8,
|
||||
min_profit_factor=1.05,
|
||||
min_avg_net_percent=0.0,
|
||||
max_score_regression=0.05,
|
||||
)
|
||||
|
||||
assert decision == {"accepted": True, "reason": "candidate_passed_guard"}
|
||||
Reference in New Issue
Block a user