"""The frozen bar-by-bar fill simulator (doc 02 §2, doc 03). The engine is **strategy-agnostic**: it consumes bars + signal arrays + stop/target arrays and simulates fills. All strategy math (when to enter, where to put stops) lives in the caller. Once an engine reproduces your EA within the expected fidelity gap (doc 03 §8) it is **frozen** (doc 04 Rule 1) — never edit a validated engine to test an idea; fork it instead. """ from .engine import Direction, Engine, Position, Result, Trade from .metrics import Metrics, compute_metrics __all__ = [ "Direction", "Engine", "Position", "Result", "Trade", "Metrics", "compute_metrics", ]