Source code for jactus.exceptions

"""Custom exception classes for ACTUS-specific errors.

This module defines a hierarchy of exceptions used throughout the actus_jax package.
All exceptions inherit from ActusException, which provides common functionality
for error handling and context preservation.
"""

from typing import Any


[docs] class ActusException(Exception): """Base exception for all ACTUS-related errors. This is the base class for all custom exceptions in the actus_jax package. It provides common functionality for storing context information about errors. Attributes: message: Human-readable error description context: Additional context information about the error """
[docs] def __init__(self, message: str, context: dict[str, Any] | None = None) -> None: """Initialize the exception. Args: message: Human-readable error description context: Optional dictionary with additional error context (e.g., contract_id, event_type, timestamp) """ super().__init__(message) self.message = message self.context = context or {}
[docs] def __str__(self) -> str: """Return string representation of the exception.""" if self.context: context_str = ", ".join(f"{k}={v}" for k, v in self.context.items()) return f"{self.message} (Context: {context_str})" return self.message
[docs] class ContractValidationError(ActusException): """Exception raised for invalid contract attributes or configuration. This exception should be raised when: - Required contract attributes are missing - Attribute values are outside valid ranges - Attribute combinations are inconsistent - Contract type is not supported Example: >>> raise ContractValidationError( ... "Nominal value must be positive", ... context={"contract_id": "PAM-001", "nominal": -1000} ... ) """
[docs] class ScheduleGenerationError(ActusException): """Exception raised for errors during schedule generation. This exception should be raised when: - Schedule generation algorithm fails - Date sequences are invalid - Calendar or business day adjustments fail - Cycle specifications are inconsistent Example: >>> raise ScheduleGenerationError( ... "Invalid cycle specification for interest payment", ... context={"cycle": "P0M", "anchor_date": "2024-01-01"} ... ) """
[docs] class StateTransitionError(ActusException): """Exception raised for invalid state transitions. This exception should be raised when: - State transition function encounters invalid inputs - Numerical instability in state calculations - State values violate invariants - JAX compilation issues in state transitions Example: >>> raise StateTransitionError( ... "Negative interest rate sensitivity detected", ... context={"event": "IP", "time": "2024-06-01", "state": {...}} ... ) """
[docs] class PayoffCalculationError(ActusException): """Exception raised for errors in payoff calculations. This exception should be raised when: - Payoff function produces invalid results (NaN, Inf) - Required market data is missing - Numerical overflow/underflow occurs - Business rules are violated Example: >>> raise PayoffCalculationError( ... "Division by zero in fee calculation", ... context={"event": "FP", "time": "2024-03-15", "fee_basis": 0} ... ) """
[docs] class ObserverError(ActusException): """Exception raised for risk factor or child contract observation errors. This exception should be raised when: - Risk factor observer cannot provide required data - Market data is unavailable for the requested time - Child contract evaluation fails - Observer state is inconsistent Example: >>> raise ObserverError( ... "No exchange rate data available for requested date", ... context={"currency_pair": "EUR/USD", "date": "2024-01-15"} ... ) """
[docs] class DateTimeError(ActusException): """Exception raised for date/time parsing or calculation errors. This exception should be raised when: - Date string parsing fails - Timezone conversion issues occur - Date arithmetic produces invalid results - Calendar operations fail Example: >>> raise DateTimeError( ... "Unable to parse ISO date string", ... context={"date_string": "2024-13-45", "format": "ISO8601"} ... ) """
[docs] class ConventionError(ActusException): """Exception raised for day count or business day convention errors. This exception should be raised when: - Unknown day count convention specified - Business day adjustment fails - End-of-month rules produce invalid dates - Convention application is ambiguous Example: >>> raise ConventionError( ... "Unsupported day count convention", ... context={"convention": "ACT/999", "supported": ["30E/360", "ACT/365"]} ... ) """
[docs] class ConfigurationError(ActusException): """Exception raised for configuration and initialization errors. This exception should be raised when: - Package configuration is invalid - Required environment variables are missing - Initialization parameters are inconsistent - Resource loading fails Example: >>> raise ConfigurationError( ... "Invalid logging configuration", ... context={"log_level": "INVALID", "valid_levels": ["DEBUG", "INFO"]} ... ) """
[docs] class EngineError(ActusException): """Exception raised for simulation and portfolio engine errors. This exception should be raised when: - Portfolio simulation fails - Batch processing encounters errors - Resource allocation issues occur - Parallel execution fails Example: >>> raise EngineError( ... "Portfolio simulation failed due to memory constraints", ... context={"num_contracts": 10000, "memory_gb": 8} ... ) """