Skip to main content

RNDAnalysis

Trait RNDAnalysis 

Source
pub trait RNDAnalysis {
    // Required methods
    fn calculate_rnd(
        &self,
        params: &RNDParameters,
    ) -> Result<RNDResult, ChainError>;
    fn calculate_skew(&self) -> Result<Vec<(Positive, Decimal)>, ChainError>;
}
Expand description

Trait defining Risk-Neutral Density analysis capabilities

This trait provides methods for calculating RND and analyzing volatility skew from option chain data.

Required Methods§

Source

fn calculate_rnd(&self, params: &RNDParameters) -> Result<RNDResult, ChainError>

Calculates the Risk-Neutral Density from the option chain

Uses the Breeden-Litzenberger formula to extract implied probabilities from option prices.

§Arguments
  • params - Parameters controlling the RND calculation
§Returns

Result containing either RNDResult or an error

§Errors

Returns ChainError::EmptyDensities when no valid density values can be extracted from the chain, or ChainError::OptionDataError when individual strikes produce numerical failures during the finite-difference second-derivative approximation.

Source

fn calculate_skew(&self) -> Result<Vec<(Positive, Decimal)>, ChainError>

Calculates the implied volatility skew

Analyzes how implied volatility varies across different strike prices, providing insight into market’s price expectations.

§Returns

Result containing vector of (strike_price, volatility) pairs or an error

§Errors

Returns ChainError::EmptySkewData when no strike in the chain produced a valid implied-volatility sample, or ChainError::OptionDataError if individual option records carry invalid volatility values.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§