abaquant.derivatives.calibration.sabr

Import path: abaquant.derivatives.calibration.sabr

Domain: Derivative pricing, simulation, calibration, diagnostics, and strategy analysis.

Purpose

SABR smile calibration.

When to use it

This module fits model parameters to observations. Inspect convergence status, residual scale, bounds, weighting, and data provenance before treating fitted parameters as stable estimates.

Public objects

  • function: calibrate_sabr — Calibrate SABR smile parameters with beta fixed.

Detailed reference

SABR smile calibration.

Purpose

The module fits SABR alpha, rho, and nu parameters with beta held fixed to a supplied implied-volatility smile.

Conventions

Forward and strikes share units; maturity is in years; all volatilities are decimal annual quantities.

References

[ 1 ] Hagan, P. S., D. Kumar, A. S. Lesniewski, and D. E. Woodward (2002), “Managing Smile Risk”.

abaquant.derivatives.calibration.sabr.calibrate_sabr(forward, maturity, strikes, market_ivs, *, beta, initial_alpha=0.2, initial_rho=-0.3, initial_nu=0.4, tol=1e-8, max_iter=500)

Calibrate SABR smile parameters with beta fixed.

Parameters:
  • forward (float) – Forward price or rate in the same units as the relevant strike.

  • maturity (float) – Time to option expiry in years.

  • strikes (np.ndarray) – Strike-price grid in the same currency units as the underlying or forward.

  • market_ivs (np.ndarray) – Observed market implied volatilities, expressed as annualized decimals.

  • beta (float) – Model-specific beta parameter; consult the module convention.

  • initial_alpha (float, default=0.2) – Initial calibration guess for SABR alpha.

  • initial_rho (float, default=-0.3) – Initial calibration guess for SABR rho.

  • initial_nu (float, default=0.4) – Initial calibration guess for SABR nu.

  • tol (float, default=1e-08) – Numerical convergence tolerance.

  • max_iter (int, default=500) – Maximum numerical-optimizer or root-finder iterations.

Returns:

Named outputs of the calibrate sabr calculation.

Return type:

dict[str, float]

Notes

Model inputs are interpreted according to the module-level rate, maturity, and volatility conventions. Numerical outputs depend on the validity of those assumptions.