Files
fx_quant_engine/options_quant_engine/options_quant_engine/schemas.py
T

79 lines
1.6 KiB
Python
Raw Normal View History

from __future__ import annotations
from dataclasses import asdict, dataclass, field
from datetime import datetime, timezone
from typing import Any
import pandas as pd
@dataclass
class DataFetchResult:
data: pd.DataFrame
source: str
reliability: str
latency_ms: int
success: bool = True
error: str | None = None
@dataclass
class RegimeState:
trend: str
volatility: str
dollar: str
risk: str
combined: str
stability: float
@dataclass
class SignalPayload:
engine: str
timestamp: str
asset: str
signal_type: str
signal_direction: str
signal_strength: float
confidence: float
regime: dict[str, Any]
expected_volatility: float
risk_flags: list[str]
drivers: dict[str, Any]
recommended_action: str
position_sizing_multiplier: float
def to_dict(self) -> dict[str, Any]:
return asdict(self)
@dataclass
class EvaluationReport:
generated_at: str
hit_rate: float
avg_forward_return: float
regime_performance: dict[str, float]
signal_decay: dict[str, float]
feature_importance: dict[str, float]
drift_flags: list[str]
calibration_score: float
@dataclass
class BacktestResult:
pair_level_returns: dict[str, float]
portfolio_return: float
max_drawdown: float
turnover: float
metrics: dict[str, float]
@dataclass
class SourceUsageRecord:
asset: str
source: str
usage_type: str
timestamp: str = field(default_factory=lambda: datetime.now(timezone.utc).isoformat())
success: bool = True
error: str | None = None