from __future__ import annotations import json import time from dataclasses import dataclass, field from typing import Dict, List @dataclass class LocalOrder: order_id: str venue: str symbol: str side: str # 'buy' or 'sell' quantity: float price: float timestamp: float = field(default_factory=lambda: time.time()) @dataclass class SharedSignals: venue: str risk_metrics: Dict[str, float] # e.g., {'net_exposure': 123.45, 'volatility': 0.12} @dataclass class DualVariables: # simple key/value dual variables per constraint values: Dict[str, float] = field(default_factory=dict) @dataclass class PlanDelta: # set of changes to enforce cross-venue constraints updates: List[Dict] = field(default_factory=list) @dataclass class AuditLogEntry: timestamp: float event: str details: Dict @dataclass class AuditLog: entries: List[AuditLogEntry] = field(default_factory=list) def add(self, event: str, details: Dict): self.entries.append(AuditLogEntry(time.time(), event, details)) def to_json(self) -> str: return json.dumps([e.__dict__ for e in self.entries], default=str) @dataclass class Policy: # Basic constraint block exposed to federation max_net_exposure: float max_position_per_symbol: float