idea144-crossvenuearbx-fede.../tests/test_core.py

61 lines
1.9 KiB
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, AuditLog, PrivacyBudget
from crossvenue_arbx.governance import GraphOfContracts
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
def test_plan_delta_signature_is_stable():
plan = PlanDelta(
delta_actions=[{"from_venue": "VenueA", "to_venue": "VenueB", "asset": "AAPL", "size": 1.0, "time": 1.0}],
timestamp=1.0,
contract_id="contract-x",
)
assert plan.signature
assert plan.signature == plan.fingerprint()
def test_audit_log_hash_chain_and_privacy_budget():
log = AuditLog()
log.log("first")
log.log("second")
assert log.root_hash()
budget = PrivacyBudget(leakage_budget=1.0)
assert budget.can_consume(0.25)
budget.consume(0.25)
assert budget.remaining() == 0.75
def test_governance_registry_tracks_metadata():
registry = GraphOfContracts()
registry.register("contract-x", "1.2.3", "schema-abc")
assert registry.get_version("contract-x") == "1.2.3"
assert registry.get_record("contract-x")["schema_hash"] == "schema-abc"