Expand description
§Position Errors (PositionError)
Manages:
- Position validation
- Strategy operations
- Position limits
- Option style/side compatibility
§Position Error Module
This module provides error handling for position-related operations in option trading strategies. It defines error types to handle various scenarios related to position validation, strategy operations, and position limits.
§Error Types
§Position Error (PositionError)
The main error type with six variants:
StrategyError- For strategy operation failuresValidationError- For position validation failuresLimitError- For position limit violationsUpdateError- For position update failuresDecimalError- ForDecimalarithmetic failuresPositiveError- ForPositivearithmetic failures
§Strategy Errors (StrategyErrorKind)
Handles specific strategy-related errors:
- Unsupported operations
- Strategy capacity limits
- Invalid configurations
§Validation Errors (PositionValidationErrorKind)
Handles position validation failures:
- Invalid position sizes
- Invalid prices
- Incompatible sides (Long/Short)
- Incompatible styles (Call/Put)
- General position invalidity
§Limit Errors (PositionLimitErrorKind)
Handles position limit violations:
- Maximum positions reached
- Maximum exposure reached
§Usage Example
use optionstratlib_core::error::position::PositionError;
fn validate_position_size(size: f64) -> Result<(), PositionError> {
if size <= 0.0 {
return Err(PositionError::invalid_position_size(
size,
"Position size must be positive"
));
}
Ok(())
}§Helper Methods
The module provides several helper methods for creating common errors:
unsupported_operation- Creates an error for unsupported strategy operationsstrategy_full- Creates an error when strategy capacity is reachedinvalid_position_size- Creates an error for invalid position sizesinvalid_position_type- Creates an error for incompatible position sidesinvalid_position_style- Creates an error for incompatible option stylesinvalid_position- Creates a general position validation error
All error types implement std::error::Error and std::fmt::Display for proper
error handling and formatting capabilities.
Target crate (ADR-0001 D6, roadmap M1-14): core. Owns PositionError, StrategyErrorKind (a kind enum, no strategy type inside).
The ...Kind enums are canonical in this module (optionstratlib_core::error::position) and are not
flattened into optionstratlib_core::error: the facade gathers every crate’s errors
in one optionstratlib::error module, where flat kind names would collide
(StrategyErrorKind is defined in both core error::position and market
error::chains, PriceErrorKind in both analytics error::probability
and strategies error::strategies), so each crate keeps its kinds in its
kind module and the facade re-exports that module (#550).
Enums§
- Position
Error - Represents errors that can occur when managing positions in strategies
- Position
Limit Error Kind - Represents errors related to position limits in trading operations.
- Position
Update Error Kind - Represents errors related to position update in trading operations.
- Position
Validation Error Kind - Errors related to position validation
- Strategy
Error Kind - Specific errors that can occur in strategy operations