test_no_silent_path_change.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from __future__ import annotations
  2. import unittest
  3. from pathlib import Path
  4. from dragon_branch_configs import alpha_first_glued_refined_hot_cap_config
  5. from dragon_rc1_golden_baseline import EVENTS_CORE_COLUMNS, TRADES_CORE_COLUMNS, _df_sha256, _load_indicator_snapshot
  6. from dragon_shared import END_DATE, START_DATE
  7. from dragon_rule_engine_v2 import LayeredDragonRuleEngine
  8. from dragon_strategy import DragonRuleEngine
  9. class TestNoSilentPathChange(unittest.TestCase):
  10. def setUp(self) -> None:
  11. self.base_dir = Path(__file__).resolve().parents[1]
  12. self.config = alpha_first_glued_refined_hot_cap_config()
  13. def test_layered_orchestrator_matches_legacy_core_paths(self) -> None:
  14. indexed, _ = _load_indicator_snapshot(self.base_dir)
  15. legacy_events, legacy_trades = DragonRuleEngine(config=self.config).run(indexed)
  16. layered_events, layered_trades = LayeredDragonRuleEngine(config=self.config).run(indexed)
  17. legacy_events = legacy_events[(legacy_events["date"] >= START_DATE) & (legacy_events["date"] <= END_DATE)].copy()
  18. layered_events = layered_events[(layered_events["date"] >= START_DATE) & (layered_events["date"] <= END_DATE)].copy()
  19. legacy_trades = legacy_trades[
  20. (legacy_trades["buy_date"] >= START_DATE)
  21. & (legacy_trades["buy_date"] <= END_DATE)
  22. & (legacy_trades["sell_date"] >= START_DATE)
  23. & (legacy_trades["sell_date"] <= END_DATE)
  24. ].copy()
  25. layered_trades = layered_trades[
  26. (layered_trades["buy_date"] >= START_DATE)
  27. & (layered_trades["buy_date"] <= END_DATE)
  28. & (layered_trades["sell_date"] >= START_DATE)
  29. & (layered_trades["sell_date"] <= END_DATE)
  30. ].copy()
  31. legacy_events.sort_values(["date", "side", "layer", "reason"], inplace=True)
  32. layered_events.sort_values(["date", "side", "layer", "reason"], inplace=True)
  33. legacy_trades.sort_values(["buy_date", "sell_date", "buy_reason", "sell_reason"], inplace=True)
  34. layered_trades.sort_values(["buy_date", "sell_date", "buy_reason", "sell_reason"], inplace=True)
  35. self.assertEqual(
  36. _df_sha256(legacy_events[EVENTS_CORE_COLUMNS]),
  37. _df_sha256(layered_events[EVENTS_CORE_COLUMNS]),
  38. )
  39. self.assertEqual(
  40. _df_sha256(legacy_trades[TRADES_CORE_COLUMNS]),
  41. _df_sha256(layered_trades[TRADES_CORE_COLUMNS]),
  42. )
  43. if __name__ == "__main__":
  44. unittest.main()