feat(calibration): complete step 1 data inspection with data quality v1

This commit is contained in:
DaM
2026-02-08 22:29:09 +01:00
parent f85c522f22
commit 4d769af8bf
89 changed files with 5014 additions and 203 deletions

0
src/shared/__init__.py Normal file
View File

View File

@@ -0,0 +1,8 @@
# src/shared/schemas/api.py
from pydantic import BaseModel
from typing import Optional
class BotStatus(BaseModel):
state: str # INIT/RUNNING/ERROR (derivado)
heartbeat_ts: Optional[str] = None
last_ts: Optional[str] = None

View File

@@ -0,0 +1,21 @@
# src/shared/schemas/broker.py
from pydantic import BaseModel
from typing import Dict, Any, Optional
class Position(BaseModel):
symbol: str
position_id: str
qty: float
avg_entry: float
class BrokerSnapshot(BaseModel):
initial_cash: float
cash: float
commission_rate: float
slippage_rate: float
realized_pnl: float
equity: float
positions: Dict[str, Position]
last_price: Dict[str, float]
trades_count: int
updated_at: str

View File

@@ -0,0 +1,8 @@
# src/shared/schemas/loop.py
from pydantic import BaseModel
from typing import List, Optional
class LoopState(BaseModel):
last_ts: Optional[str] = None
equity_curve: List[float] = []
equity_timestamps: List[str] = []

View File

@@ -0,0 +1,10 @@
# src/shared/schemas/metrics.py
from pydantic import BaseModel
class EquityMetrics(BaseModel):
cagr: float
max_drawdown: float
calmar_ratio: float
volatility: float
time_in_drawdown: float
ulcer_index: float

View File

@@ -0,0 +1,14 @@
# src/shared/schemas/trades.py
from pydantic import BaseModel
from typing import Dict, Any
class TradeRow(BaseModel):
symbol: str
side: str
qty: float
price: float
fee: float
notional: float
realized_pnl: float
timestamp: str
meta: Dict[str, Any]