from __future__ import annotations import unittest from pathlib import Path from dragon_branch_configs import alpha_first_glued_followthrough_mid_exit_probe_config from dragon_rc1_golden_baseline import _load_indicator_snapshot from dragon_shared import END_DATE, START_DATE from dragon_strategy import DragonRuleEngine class TestFollowthroughMidExitProbe(unittest.TestCase): def setUp(self) -> None: self.base_dir = Path(__file__).resolve().parents[1] self.indexed, _ = _load_indicator_snapshot(self.base_dir) def test_mid_exit_probe_promotes_single_reentry_trade_to_late_high_regime_exit(self) -> None: _, trades = DragonRuleEngine(config=alpha_first_glued_followthrough_mid_exit_probe_config()).run(self.indexed) trades = trades[ (trades["buy_date"] >= START_DATE) & (trades["buy_date"] <= END_DATE) & (trades["sell_date"] >= START_DATE) & (trades["sell_date"] <= END_DATE) ].copy() target = trades[ trades["buy_reason"].astype(str).str.startswith("glued_followthrough_reentry_buy:confirmed_mid_zone_very_weak_b1") ].copy() self.assertEqual(len(trades), 91) self.assertEqual(len(target), 1) row = target.iloc[0] self.assertEqual(row["buy_date"], "2020-12-01") self.assertEqual(row["sell_date"], "2021-02-19") self.assertEqual(row["sell_reason"], "high_regime_confirmed_exit:kdj_sell") self.assertEqual(int(row["holding_days"]), 80) self.assertAlmostEqual(float(row["return_pct"]), 0.266486841392223, places=12) if __name__ == "__main__": unittest.main()