Cap DEB training version backtest
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from web.services.ops_api import _build_training_accuracy_payload
|
from web.services.ops_api import _build_training_accuracy_payload
|
||||||
|
from datetime import date, timedelta
|
||||||
|
|
||||||
|
|
||||||
def test_training_accuracy_payload_includes_recent_deb_summary():
|
def test_training_accuracy_payload_includes_recent_deb_summary():
|
||||||
@@ -36,3 +37,34 @@ def test_training_accuracy_payload_includes_recent_deb_summary():
|
|||||||
assert payload["deb_summary"]["recent_14d"]["samples"] == 5
|
assert payload["deb_summary"]["recent_14d"]["samples"] == 5
|
||||||
assert "deb_v1_raw" in payload["deb_summary"]["versions"]
|
assert "deb_v1_raw" in payload["deb_summary"]["versions"]
|
||||||
assert "deb_v2_bucket_calibrated" in payload["deb_summary"]["versions"]
|
assert "deb_v2_bucket_calibrated" in payload["deb_summary"]["versions"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_training_accuracy_payload_caps_version_backtest_samples(monkeypatch):
|
||||||
|
start = date(2025, 1, 1)
|
||||||
|
history = {
|
||||||
|
"alpha": {
|
||||||
|
(start + timedelta(days=idx)).isoformat(): {
|
||||||
|
"actual_high": 20.0 + (idx % 3),
|
||||||
|
"deb_prediction": 20.0 + (idx % 3),
|
||||||
|
}
|
||||||
|
for idx in range(405)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
captured = {}
|
||||||
|
|
||||||
|
def fake_backtest(rows, **_kwargs):
|
||||||
|
row_list = list(rows)
|
||||||
|
captured["count"] = len(row_list)
|
||||||
|
captured["first_date"] = row_list[0]["target_date"]
|
||||||
|
return {"versions": {}}
|
||||||
|
|
||||||
|
monkeypatch.setattr("src.analysis.deb_evaluation.backtest_deb_versions", fake_backtest)
|
||||||
|
|
||||||
|
_build_training_accuracy_payload(
|
||||||
|
history,
|
||||||
|
{"alpha": {"name": "Alpha"}},
|
||||||
|
today_str="2026-03-01",
|
||||||
|
)
|
||||||
|
|
||||||
|
assert captured["count"] == 400
|
||||||
|
assert captured["first_date"] == "2025-01-06"
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ from web.services.observation_freshness import (
|
|||||||
from web.core import GrantPointsRequest
|
from web.core import GrantPointsRequest
|
||||||
import web.routes as legacy_routes
|
import web.routes as legacy_routes
|
||||||
|
|
||||||
|
_DEB_VERSION_BACKTEST_SAMPLE_LIMIT = 400
|
||||||
|
|
||||||
|
|
||||||
def _sf(value: Any) -> Optional[float]:
|
def _sf(value: Any) -> Optional[float]:
|
||||||
try:
|
try:
|
||||||
@@ -2455,8 +2457,9 @@ def _build_training_accuracy_payload(
|
|||||||
recent_7_start = (today_date - timedelta(days=7)).isoformat()
|
recent_7_start = (today_date - timedelta(days=7)).isoformat()
|
||||||
recent_14_start = (today_date - timedelta(days=14)).isoformat()
|
recent_14_start = (today_date - timedelta(days=14)).isoformat()
|
||||||
end_date = (today_date - timedelta(days=1)).isoformat()
|
end_date = (today_date - timedelta(days=1)).isoformat()
|
||||||
|
version_rows = all_rows[-_DEB_VERSION_BACKTEST_SAMPLE_LIMIT:]
|
||||||
versions = backtest_deb_versions(
|
versions = backtest_deb_versions(
|
||||||
all_rows,
|
version_rows,
|
||||||
min_train_samples=2,
|
min_train_samples=2,
|
||||||
).get("versions", {})
|
).get("versions", {})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user