pub enum PricingError {
Show 15 variants
MethodError {
method: String,
reason: String,
},
SimulationError {
reason: String,
},
InvalidEngine {
reason: String,
},
Greeks(GreeksError),
Options(OptionsError),
Position(PositionError),
Decimal(DecimalError),
ExpirationDate(ExpirationDateError),
DeltaAdjustmentNotApplicable {
strategy: &'static str,
},
BinomialNodeMissing {
node: &'static str,
},
SqrtFailure {
value: Decimal,
},
Positive(PositiveError),
UnsupportedOptionType {
option_type: String,
method: String,
},
NonFinite {
context: &'static str,
value: f64,
},
InvalidParameter {
parameter: &'static str,
value: Decimal,
reason: &'static str,
},
}Expand description
Error type for option pricing operations.
This enum represents the various errors that can occur during option pricing, providing domain-specific error handling for different pricing scenarios.
Variants§
MethodError
Error from a specific pricing method (e.g., Black-Scholes, Binomial).
Fields
SimulationError
Error during Monte Carlo simulation.
InvalidEngine
Error due to invalid pricing engine configuration.
Greeks(GreeksError)
Error from Greeks calculations.
Options(OptionsError)
Error from Options operations.
Position(PositionError)
Error from Position operations.
Decimal(DecimalError)
Error from Decimal operations.
ExpirationDate(ExpirationDateError)
Expiration-date conversion error surfaced during pricing.
DeltaAdjustmentNotApplicable
A delta adjustment was requested on a strategy that does not support it.
BinomialNodeMissing
A required intermediate value on a binomial lattice or pricing kernel was missing (typically a node that should have been populated by an earlier induction step).
SqrtFailure
A square-root computation inside a pricing kernel failed (the operand was negative or not representable — e.g. a negative discriminant in a closed-form solver).
Fields
Positive(PositiveError)
Error from Positive operations.
UnsupportedOptionType
Error for unsupported option types.
Fields
NonFinite
A pricing kernel produced a non-finite f64 value (NaN /
±∞) at an f64 → Decimal boundary.
Emitted wherever a Black-Scholes style closed-form, a
numerical integrator, or a Monte-Carlo payoff computes an
intermediate f64 that would otherwise be wrapped in
Decimal::from_f64(..) and silently become Decimal::ZERO
or saturate. context is a static call-site tag following the
same convention as optionstratlib_core::error::DecimalError::Overflow
(for example "pricing::bs::call::d1" or
"pricing::monte_carlo::payoff::cast"), so the failing
kernel is identifiable without a stack trace.
Fields
InvalidParameter
A model parameter passed to a pricing kernel lies outside its admissible domain, for example a regime volatility that is not strictly positive or a negative transition rate of the telegraph pricer.
Implementations§
Source§impl PricingError
impl PricingError
Sourcepub fn method_error(method: &str, reason: &str) -> Self
pub fn method_error(method: &str, reason: &str) -> Self
Creates a new MethodError variant.
§Arguments
method- Name of the pricing method that failedreason- Detailed reason for the failure
Sourcepub fn simulation_error(reason: &str) -> Self
pub fn simulation_error(reason: &str) -> Self
Creates a new SimulationError variant.
§Arguments
reason- Detailed reason for the simulation failure
Sourcepub fn invalid_engine(reason: &str) -> Self
pub fn invalid_engine(reason: &str) -> Self
Sourcepub fn other(reason: &str) -> Self
pub fn other(reason: &str) -> Self
Creates a typed MethodError with method = "pricing" as a lightweight
replacement for the former OtherError catch-all. Prefer
PricingError::method_error with a specific method name when known.
Sourcepub fn unsupported_option_type(option_type: &str, method: &str) -> Self
pub fn unsupported_option_type(option_type: &str, method: &str) -> Self
Creates a new UnsupportedOptionType variant.
§Arguments
option_type- The option type that is not supportedmethod- The pricing method that does not support this option type
Sourcepub fn non_finite(context: &'static str, value: f64) -> Self
pub fn non_finite(context: &'static str, value: f64) -> Self
Creates a PricingError::NonFinite from a static call-site
tag and the offending f64 value.
Intended to be used at f64 → Decimal boundaries inside
pricing kernels, as a thin constructor paired with an
if !value.is_finite() { .. } guard.
Sourcepub fn invalid_parameter(
parameter: &'static str,
value: Decimal,
reason: &'static str,
) -> Self
pub fn invalid_parameter( parameter: &'static str, value: Decimal, reason: &'static str, ) -> Self
Creates a PricingError::InvalidParameter naming the rejected
parameter, its value and the domain it violates.
Trait Implementations§
Source§impl Debug for PricingError
impl Debug for PricingError
Source§impl Display for PricingError
impl Display for PricingError
Source§impl Error for PricingError
impl Error for PricingError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<DecimalError> for PricingError
impl From<DecimalError> for PricingError
Source§fn from(source: DecimalError) -> Self
fn from(source: DecimalError) -> Self
Source§impl From<ExpirationDateError> for PricingError
impl From<ExpirationDateError> for PricingError
Source§fn from(source: ExpirationDateError) -> Self
fn from(source: ExpirationDateError) -> Self
Source§impl From<GreeksError> for PricingError
impl From<GreeksError> for PricingError
Source§fn from(source: GreeksError) -> Self
fn from(source: GreeksError) -> Self
Source§impl From<OptionsError> for PricingError
impl From<OptionsError> for PricingError
Source§fn from(source: OptionsError) -> Self
fn from(source: OptionsError) -> Self
Source§impl From<PositionError> for PricingError
impl From<PositionError> for PricingError
Source§fn from(source: PositionError) -> Self
fn from(source: PositionError) -> Self
Source§impl From<PositiveError> for PricingError
impl From<PositiveError> for PricingError
Source§fn from(source: PositiveError) -> Self
fn from(source: PositiveError) -> Self
Source§impl From<PricingError> for GreeksError
impl From<PricingError> for GreeksError
Source§fn from(err: PricingError) -> Self
fn from(err: PricingError) -> Self
Source§impl From<PricingError> for OptionsError
impl From<PricingError> for OptionsError
Source§fn from(value: PricingError) -> Self
fn from(value: PricingError) -> Self
Auto Trait Implementations§
impl Freeze for PricingError
impl RefUnwindSafe for PricingError
impl Send for PricingError
impl Sync for PricingError
impl Unpin for PricingError
impl UnsafeUnpin for PricingError
impl UnwindSafe for PricingError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.