Spaces:
Sleeping
Sleeping
| """Abstract base class for all prediction models.""" | |
| from abc import ABC, abstractmethod | |
| from dataclasses import dataclass | |
| from typing import Optional | |
| import numpy as np | |
| import pandas as pd | |
| class PredictionResult: | |
| """Standard prediction output from all models.""" | |
| direction: np.ndarray # -1 (down), 0 (flat), 1 (up) | |
| direction_proba: np.ndarray # probability for each class [n_samples, 3] | |
| magnitude: np.ndarray # expected return % | |
| volatility: np.ndarray # expected volatility | |
| confidence: np.ndarray # model confidence score [0, 1] | |
| class BaseModel(ABC): | |
| """Abstract base class all models must implement.""" | |
| def __init__(self, name: str, stock_type: str, horizon: int): | |
| self.name = name | |
| self.stock_type = stock_type | |
| self.horizon = horizon | |
| self.is_fitted = False | |
| def fit( | |
| self, | |
| X_train: pd.DataFrame, | |
| y_train: pd.DataFrame, | |
| X_val: Optional[pd.DataFrame] = None, | |
| y_val: Optional[pd.DataFrame] = None, | |
| ) -> "BaseModel": | |
| """Train the model. y_train has columns: direction, magnitude, volatility.""" | |
| ... | |
| def predict(self, X: pd.DataFrame) -> PredictionResult: | |
| """Generate predictions.""" | |
| ... | |
| def save(self, path: str) -> None: | |
| """Save model artifacts to disk.""" | |
| raise NotImplementedError | |
| def load(cls, path: str) -> "BaseModel": | |
| """Load model artifacts from disk.""" | |
| raise NotImplementedError | |
| def __repr__(self) -> str: | |
| return f"{self.__class__.__name__}(name={self.name!r}, type={self.stock_type!r}, horizon={self.horizon})" | |