| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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()
|