Spaces:
Sleeping
Sleeping
| from typing import List, Dict | |
| from pydantic import BaseModel, Field | |
| class PortfolioRequest(BaseModel): | |
| tickers: List[str] = Field(min_length=2, max_length=20) | |
| lookback_days: int = Field(default=365, ge=120, le=1500) | |
| risk_aversion: float = Field(default=8.0, ge=0.1, le=50.0) | |
| max_weight: float = Field(default=0.35, ge=0.05, le=1.0) | |
| sector_limit: float = Field(default=0.70, ge=0.10, le=1.0) | |
| beta_limit: float = Field(default=1.20, ge=0.50, le=3.0) | |
| class WeightItem(BaseModel): | |
| ticker: str | |
| weight: float | |
| class MetricCard(BaseModel): | |
| label: str | |
| value: float | |
| class FactorExposure(BaseModel): | |
| factor: str | |
| exposure: float | |
| limit: float | |
| class QuoteItem(BaseModel): | |
| ticker: str | |
| price: float | |
| day_change_pct: float | |
| class ShapItem(BaseModel): | |
| feature: str | |
| contribution: float | |
| class PortfolioResponse(BaseModel): | |
| tickers: List[str] | |
| weights: List[WeightItem] | |
| metrics: List[MetricCard] | |
| factor_exposures: List[FactorExposure] | |
| quotes: List[QuoteItem] | |
| monte_carlo_quantiles: Dict[str, float] | |
| backtest_points: List[Dict[str, float]] | |
| shap_top_features: Dict[str, List[ShapItem]] | |
| notes: List[str] = Field(default_factory=list) | |