Implementation:Avhz RustQuant Asay82 Model
| Knowledge Sources | |
|---|---|
| Domains | Option_Pricing, Futures_Options, Quantitative_Finance |
| Last Updated | 2026-02-07 19:00 GMT |
Overview
Concrete tool for Asay (1982) margined futures option pricing provided by the RustQuant library.
Description
The Asay82 struct defines the parameter set for the Asay (1982) margined futures option model. This is a specialization of the Generalized Black-Scholes-Merton framework where both the cost of carry b and the risk-free rate r are set to zero, reflecting the economics of margined (mark-to-market) futures options.
In a margined futures option, no upfront premium is paid; instead, the option position is marked to market daily, similar to a futures contract. This eliminates the need for discounting and for a cost-of-carry adjustment, hence r = 0 and b = 0.
The struct stores two parameters:
f-- The futures price (used as the underlying spot pricesin the GBS framework).v-- The volatility of the futures price.
The actual option pricing, Greeks, and implied volatility computations are provided by the shared Generalized Black-Scholes-Merton engine in the RustQuant_instruments crate, which dispatches based on the s(), r(), and b() accessor methods.
Usage
Use the Asay82 model for pricing options on margined futures contracts, where the option premium is settled via daily variation margin rather than paid upfront. This is common in certain exchange-traded commodity and interest rate futures options markets.
Code Reference
Source Location
- Repository: RustQuant
- File: crates/RustQuant_models/src/asay82.rs
- Lines: 1-30
Signature
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Asay82 {
f: f64, // Futures price
v: f64, // Volatility
}
impl Asay82 {
pub fn new(f: f64, v: f64) -> Self;
fn s(&self) -> f64; // Returns f (futures price as spot)
fn r(&self) -> f64; // Returns 0.0
fn b(&self) -> f64; // Returns 0.0
}
Import
use RustQuant::models::Asay82;
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| f | f64 |
Yes | Futures price of the underlying. |
| v | f64 |
Yes | Volatility of the futures price. |
Outputs
| Name | Type | Description |
|---|---|---|
| s() | f64 |
Returns the futures price f as the effective spot price for the GBS framework. |
| r() | f64 |
Returns 0.0 (no discounting for margined options). |
| b() | f64 |
Returns 0.0 (zero cost of carry for margined futures). |
Usage Examples
use RustQuant::models::Asay82;
use RustQuant::instruments::{BlackScholesMerton, TypeFlag};
// Create Asay82 model for a margined futures option
let model = Asay82::new(
100.0, // futures price
0.20, // volatility (20%)
);
// The Asay82 model parameters feed into the Generalized BSM pricer:
// s = 100.0 (futures price), r = 0.0, b = 0.0
// These are used by the shared GBS option pricing engine.