fix predict

This commit is contained in:
2026-08-24 19:10:32 +08:00
parent 286626dfe5
commit 1f72dfdc1e
3 changed files with 96 additions and 15 deletions

View File

@@ -1,6 +1,12 @@
import json
import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from cbpred.latest_predict import OUTPUT_COLUMNS
import pandas as pd
from cbpred.latest_predict import OUTPUT_COLUMNS, build_predictions
class LatestPredictTests(unittest.TestCase):
@@ -21,6 +27,51 @@ class LatestPredictTests(unittest.TestCase):
),
)
def test_batch_skips_symbols_without_training_profiles(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
data_dir = root / "data"
output_dir = root / "output"
data_dir.mkdir()
for symbol, filename in (
("TRAIN/USDT:USDT", "train.csv"),
("STALE/USDT:USDT", "stale.csv"),
):
pd.DataFrame(
[{"timestamp": 1, "quote": 10.0, "close": 100.0}]
).to_csv(data_dir / filename, index=False)
(data_dir / "manifest.json").write_text(
json.dumps(
{
"symbols": [
{"symbol": "TRAIN/USDT:USDT", "path": "train.csv"},
{"symbol": "STALE/USDT:USDT", "path": "stale.csv"},
]
}
)
)
result = {
"symbol": "TRAIN/USDT:USDT",
"timestamp": 1,
"close": 100.0,
"volatility_rank_200": 0.5,
"eligible_for_model": False,
}
with patch(
"cbpred.latest_predict.joblib.load",
return_value={"asset_profiles": {"TRAIN/USDT:USDT": {}}},
), patch(
"cbpred.latest_predict.predict_from_csv", return_value=result
) as predict:
summary = build_predictions(data_dir, root / "model.joblib", output_dir)
predict.assert_called_once_with(
root / "model.joblib", data_dir / "train.csv", symbol="TRAIN/USDT:USDT"
)
self.assertEqual(summary["symbols"], 1)
self.assertEqual(summary["skipped_symbols"], ["STALE/USDT:USDT"])
if __name__ == "__main__":
unittest.main()