28 lines
883 B
Python
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
|