idea149-deltax-forge-cross/deltax_forge_cross/dsl.py

61 lines
1.2 KiB
Python

from __future__ import annotations
from dataclasses import dataclass, field
from typing import List, Dict
@dataclass
class Asset:
symbol: str
kind: str # e.g., 'Equity'
@dataclass
class Leg:
asset: Asset
target_delta: float
@dataclass
class MarketSignal:
symbol: str
price: float
liquidity: float
latency_proxy: float
@dataclass
class AuditLogEntry:
timestamp: float
actor: str
action: str
note: str
@dataclass
class PlanDelta:
hedge_updates: Dict[str, float] # asset_symbol -> delta
authority: str
audit_log: List[AuditLogEntry] = field(default_factory=list)
def to_dict(self) -> Dict:
return {
"hedge_updates": self.hedge_updates,
"authority": self.authority,
"audit_log": [
{"timestamp": e.timestamp, "actor": e.actor, "action": e.action, "note": e.note}
for e in self.audit_log
],
}
@dataclass
class StrategyDelta:
delta_budget: float
vega_budget: float
gamma_budget: float
pnl_target: float
assets: List[Asset] = field(default_factory=list)
legs: List[Leg] = field(default_factory=list)
signals: List[MarketSignal] = field(default_factory=list)