32 lines
976 B
Python
32 lines
976 B
Python
import time
|
|
import os
|
|
import sys
|
|
BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
|
if BASE not in sys.path:
|
|
sys.path.insert(0, BASE)
|
|
from crossvenue_arbx.core import LocalArbProblem, SharedSignals, PlanDelta
|
|
|
|
|
|
def test_local_arb_problem_serialization():
|
|
p = LocalArbProblem(
|
|
id="v1-p1",
|
|
venue="VenueA",
|
|
assets=["AAPL", "MSFT"],
|
|
target_misprice=0.001,
|
|
max_exposure=1000.0,
|
|
latency_budget=0.1,
|
|
)
|
|
d = p.to_dict()
|
|
assert d["id"] == "v1-p1"
|
|
assert d["venue"] == "VenueA"
|
|
assert d["assets"] == ["AAPL", "MSFT"]
|
|
|
|
|
|
def test_shared_signals_merge_basic():
|
|
s1 = SharedSignals(version=1, price_delta_by_asset={"AAPL": 0.001, "MSFT": -0.0003})
|
|
s2 = SharedSignals(version=2, price_delta_by_asset={"AAPL": 0.0008, "MSFT": -0.0005})
|
|
merged = s1.merge(s2)
|
|
assert merged.version >= 2
|
|
assert "AAPL" in merged.price_delta_by_asset
|
|
assert "MSFT" in merged.price_delta_by_asset
|