Add single-command GTL tuning matrix
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""Tests for the single-command GTL research matrix."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from scripts import run_gtl_tuning_matrix as matrix
|
||||
|
||||
|
||||
def test_matrix_is_single_variable_and_has_unique_names():
|
||||
assert len(matrix.GTL_TUNING_ARMS) == 20
|
||||
assert matrix.GTL_TUNING_ARMS[0]["name"] == "control"
|
||||
names = [arm["name"] for arm in matrix.GTL_TUNING_ARMS]
|
||||
assert len(names) == len(set(names))
|
||||
|
||||
for arm in matrix.GTL_TUNING_ARMS[1:]:
|
||||
config = matrix._arm_config(arm)
|
||||
changed = [
|
||||
key
|
||||
for key, value in matrix.BASE_CONFIG.items()
|
||||
if config[key] != value
|
||||
]
|
||||
assert len(changed) == 1, arm["name"]
|
||||
|
||||
|
||||
def _compact_result(*, sharpe: float, drawdown: float, trades: int, robust_r: float) -> dict:
|
||||
return {
|
||||
"full_book": {
|
||||
"sharpe": sharpe,
|
||||
"max_drawdown_pct": drawdown,
|
||||
"trades": trades,
|
||||
},
|
||||
"holdout": {
|
||||
"train": {"sharpe": sharpe},
|
||||
"test": {"sharpe": sharpe},
|
||||
},
|
||||
"qualified_net_avg_r_ex_top5": robust_r,
|
||||
}
|
||||
|
||||
|
||||
def test_screen_requires_every_pre_registered_guardrail():
|
||||
control = _compact_result(sharpe=2.0, drawdown=20.0, trades=100, robust_r=0.1)
|
||||
passing = _compact_result(sharpe=2.1, drawdown=19.0, trades=90, robust_r=0.05)
|
||||
failing = _compact_result(sharpe=2.1, drawdown=19.0, trades=79, robust_r=0.05)
|
||||
|
||||
passed = matrix._screen_arm(passing, control)
|
||||
failed = matrix._screen_arm(failing, control)
|
||||
|
||||
assert passed["advances"] is True
|
||||
assert passed["passed"] == passed["total"] == 6
|
||||
assert failed["advances"] is False
|
||||
assert failed["checks"]["retains_80pct_trades"] is False
|
||||
Reference in New Issue
Block a user