| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from __future__ import annotations
- import unittest
- from pathlib import Path
- import pandas as pd
- from dragon_branch_configs import alpha_first_glued_refined_hot_cap_config
- from dragon_rc1_golden_baseline import _load_indicator_snapshot
- from dragon_shared import END_DATE, START_DATE
- from dragon_strategy import DragonRuleEngine
- class TestBridgeChainRegression(unittest.TestCase):
- def setUp(self) -> None:
- self.base_dir = Path(__file__).resolve().parents[1]
- indexed, _ = _load_indicator_snapshot(self.base_dir)
- events, _ = DragonRuleEngine(config=alpha_first_glued_refined_hot_cap_config()).run(indexed)
- self.events = events[(events["date"] >= START_DATE) & (events["date"] <= END_DATE)].copy()
- self.events["date"] = pd.to_datetime(self.events["date"])
- def test_predictive_reentry_requires_recent_predictive_exit(self) -> None:
- reentries = self.events[
- (self.events["side"] == "BUY")
- & (self.events["layer"] == "real_trade")
- & (self.events["reason"] == "predictive_error_reentry_buy")
- ].copy()
- self.assertGreaterEqual(len(reentries), 1)
- sells = self.events[
- (self.events["side"] == "SELL")
- & (self.events["layer"] == "real_trade")
- ][["date", "reason"]].copy()
- for _, buy_row in reentries.iterrows():
- prior = sells[sells["date"] < buy_row["date"]].sort_values("date")
- self.assertFalse(prior.empty)
- last_sell = prior.iloc[-1]
- self.assertEqual(str(last_sell["reason"]), "predictive_b1_break_exit")
- self.assertLessEqual((buy_row["date"] - last_sell["date"]).days, 3)
- def test_predictive_events_stay_in_bridge_family(self) -> None:
- predictive_events = self.events[self.events["reason"].isin(["predictive_b1_break_exit", "predictive_error_reentry_buy"])].copy()
- self.assertGreaterEqual(len(predictive_events), 2)
- self.assertTrue((predictive_events["reason_layer"] == "bridge").all())
- self.assertTrue((predictive_events["reason_family"] == "predictive_break").all())
- if __name__ == "__main__":
- unittest.main()
|