Skip to main content

Module position

Module position 

Source
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 failures
  • ValidationError - For position validation failures
  • LimitError - For position limit violations
  • UpdateError - For position update failures
  • DecimalError - For Decimal arithmetic failures
  • PositiveError - For Positive arithmetic 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 operations
  • strategy_full - Creates an error when strategy capacity is reached
  • invalid_position_size - Creates an error for invalid position sizes
  • invalid_position_type - Creates an error for incompatible position sides
  • invalid_position_style - Creates an error for incompatible option styles
  • invalid_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§

PositionError
Represents errors that can occur when managing positions in strategies
PositionLimitErrorKind
Represents errors related to position limits in trading operations.
PositionUpdateErrorKind
Represents errors related to position update in trading operations.
PositionValidationErrorKind
Errors related to position validation
StrategyErrorKind
Specific errors that can occur in strategy operations