idea83-mercuriusmesh-cross-.../tests/test_simulation_replay.py

28 lines
883 B
Python

from mercuriusmesh.simulator import DeterministicSimulator
from mercuriusmesh.adapters import ToyVenueAdapter
from mercuriusmesh.contracts import OrderEvent
def test_deterministic_replay():
sim = DeterministicSimulator()
a = ToyVenueAdapter("V1", initial_bid=100.0, initial_ask=100.5)
b = ToyVenueAdapter("V2", initial_bid=99.8, initial_ask=100.3)
sim.add_adapter(a)
sim.add_adapter(b)
o1 = OrderEvent(order_id="o1", venue_id="V1", asset="TEST/USD", side="buy", price=None, size=1)
o2 = OrderEvent(order_id="o2", venue_id="V2", asset="TEST/USD", side="sell", price=None, size=2)
sim.submit_order(o1)
sim.submit_order(o2)
# snapshot state
s1 = sim.compute_shared_signals()
# replay and compare
sim.replay()
s2 = sim.compute_shared_signals()
assert s1.mid_price == s2.mid_price
assert s1.liquidity == s2.liquidity