41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import json
|
|
import time
|
|
|
|
from arbsphere.primitives import LocalArbProblem, SharedSignals, PlanDelta, DualVariables, PrivacyBudget, AuditLog, TimeRounds, GoCRegistry
|
|
from arbsphere.energi_bridge import to_ir, from_ir
|
|
|
|
|
|
def test_local_arb_problem_json_roundtrip():
|
|
orig = LocalArbProblem(
|
|
venue_id="VENUE-1",
|
|
asset_pair=["A", "B"],
|
|
target_mispricing=0.5,
|
|
liquidity_budget=100000.0,
|
|
latency_budget_ms=10,
|
|
)
|
|
payload = orig.to_json()
|
|
as_json = json.dumps(payload)
|
|
back = LocalArbProblem.from_json(json.loads(as_json))
|
|
assert back == orig
|
|
|
|
|
|
def test_plan_delta_roundtrip_via_ir():
|
|
pd = PlanDelta(delta=[{"action": "buy", "leg": "A-B", "size": 100}], timestamp=time.time(), author="org1")
|
|
ir = to_ir(pd)
|
|
assert ir["contract_type"] == "PlanDelta"
|
|
restored = from_ir(ir)
|
|
assert isinstance(restored, PlanDelta)
|
|
assert restored.author == pd.author
|
|
|
|
|
|
def test_dual_variables_and_privacy_audit_roundtrip():
|
|
dv = DualVariables(venue_shadows={"VENUE-1": 0.1, "VENUE-2": 0.2})
|
|
pb = PrivacyBudget(total_budget=1000.0, spent=150.0)
|
|
al = AuditLog(entries=[{"event": "init", "ts": time.time()}])
|
|
for obj in (dv, pb, al):
|
|
ir = to_ir(obj)
|
|
assert isinstance(ir, dict)
|
|
restored = from_ir(ir)
|
|
assert restored is not None
|
|
|