Source code for jump_diffusion.models.base_model

"""
Base classes for stochastic process models.

This module provides abstract base classes that define the interface
for all stochastic process models in the library.
"""

from abc import ABC, abstractmethod
from typing import Dict, Any, Optional
import numpy as np


[docs] class BaseStochasticModel(ABC): """ Abstract base class for all stochastic process models. This class defines the common interface that all models must implement, ensuring consistency and extensibility across different model types. """ def __init__(self, **kwargs): """Initialize the model with parameters.""" self.parameters = kwargs self.fitted = False
[docs] @abstractmethod def simulate( self, T: float, n_steps: int, x0: float = 1.0, seed: Optional[int] = None, ) -> tuple: """ Simulate a path from the stochastic process. Parameters: ----------- T : float Total time horizon n_steps : int Number of time steps x0 : float Initial value seed : int, optional Random seed for reproducibility Returns: -------- tuple (times, path) or (times, path, additional_info) """ pass
[docs] @abstractmethod def log_likelihood(self, data: np.ndarray, dt: float) -> float: """ Calculate the log-likelihood of observed data. Parameters: ----------- data : np.ndarray Observed increments dt : float Time step size Returns: -------- float Log-likelihood value """ pass
[docs] @abstractmethod def get_parameter_bounds(self) -> list: """ Get parameter bounds for optimization. Returns: -------- list List of (lower, upper) tuples for each parameter """ pass
[docs] def update_parameters(self, **kwargs): """Update model parameters.""" self.parameters.update(kwargs) self.fitted = False
[docs] def get_parameters(self) -> Dict[str, Any]: """Get current model parameters.""" return self.parameters.copy()