57 lines
1.0 KiB
Python
57 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import List, Optional
|
|
|
|
|
|
@dataclass
|
|
class Asset:
|
|
symbol: str
|
|
asset_type: str = "equity" # or option, future, etc.
|
|
|
|
|
|
@dataclass
|
|
class MarketSignal:
|
|
asset: Asset
|
|
price: float
|
|
timestamp: float
|
|
liquidity: float = 1.0
|
|
implied_vol: Optional[float] = None
|
|
|
|
|
|
@dataclass
|
|
class StrategyDelta:
|
|
asset: Asset
|
|
hedge_ratio: float
|
|
target_pnl: float
|
|
constraints: Optional[List[str]] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class PlanDelta:
|
|
steps: List[str] = field(default_factory=list)
|
|
timestamp: float = 0.0
|
|
provenance: Optional[str] = None
|
|
|
|
|
|
# Lightweight placeholders for governance primitives
|
|
@dataclass
|
|
class DualVariables:
|
|
values: List[float] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class PrivacyBudget:
|
|
budget: float = 0.0
|
|
|
|
|
|
@dataclass
|
|
class AuditLog:
|
|
entries: List[str] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class PolicyBlock:
|
|
name: str
|
|
rules: List[str] = field(default_factory=list)
|