idea69-tradeseal-federated-.../tradeseal/core.py

61 lines
1.3 KiB
Python

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