Skip to main content

MarginModel

Trait MarginModel 

Source
pub trait MarginModel {
    // Required methods
    fn calculate_initial_margin(
        &self,
        instrument: &dyn Instrument,
        quantity: Quantity,
        price: Price,
        leverage: Decimal,
        use_quote_for_inverse: Option<bool>,
    ) -> Result<Money>;
    fn calculate_maintenance_margin(
        &self,
        instrument: &dyn Instrument,
        quantity: Quantity,
        price: Price,
        leverage: Decimal,
        use_quote_for_inverse: Option<bool>,
    ) -> Result<Money>;
}
Expand description

Determines how margin requirements are calculated for leveraged positions.

Required Methods§

Source

fn calculate_initial_margin( &self, instrument: &dyn Instrument, quantity: Quantity, price: Price, leverage: Decimal, use_quote_for_inverse: Option<bool>, ) -> Result<Money>

Calculates the initial (order) margin requirement.

§Errors

Returns an error if margin cannot be computed (e.g. invalid instrument).

Source

fn calculate_maintenance_margin( &self, instrument: &dyn Instrument, quantity: Quantity, price: Price, leverage: Decimal, use_quote_for_inverse: Option<bool>, ) -> Result<Money>

Calculates the maintenance (position) margin requirement.

§Errors

Returns an error if margin cannot be computed (e.g. invalid instrument).

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§