From b2f3da9d66f4911e697e8c5a9ab967e3231d2feb Mon Sep 17 00:00:00 2001 From: ao gong <41768719+ageorge156@users.noreply.github.com> Date: Fri, 21 Aug 2026 22:29:32 +0800 Subject: [PATCH] test: require signal facts in research artifact --- tests/test_artifact.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/test_artifact.py b/tests/test_artifact.py index 17b5505..ee2e3e1 100644 --- a/tests/test_artifact.py +++ b/tests/test_artifact.py @@ -89,6 +89,22 @@ def test_research_artifact_projects_versioned_queryable_fact_tables() -> None: assert artifact.nav["benchmark_return"].tolist() == pytest.approx( [0.0, 0.01, -0.01, 0.02] ) + assert artifact.signals.columns.tolist() == [ + "run_id", + "signal_date", + "execution_date", + "asset_id", + "factor_score", + "target_weight", + ] + first_signal = artifact.signals[ + artifact.signals["signal_date"] == result.factor_scores.index[0].date() + ] + assert first_signal.set_index("asset_id").loc["A", "factor_score"] == 2.0 + assert first_signal.set_index("asset_id").loc["A", "target_weight"] == 1.0 + assert first_signal["execution_date"].unique().tolist() == [ + result.schedule.signal_to_execution.iloc[0].date() + ] assert set(artifact.trades["side"]) == {"buy", "sell"} assert {"security", "cash"}.issubset(set(artifact.positions["asset_type"])) assert artifact.positions.groupby("trade_date")["weight"].sum().tolist() == pytest.approx(