Skip to main content

Pricing Engines

DerivFabric supports multiple pricing engines. The caller selects the engine via the pricer field in pricing requests.

Engine matrix

EngineIDVanillaAmericanExoticGreeks
Analytical (BS)1YesNoPartialClosed-form
Monte Carlo2Tree fallbackNoYesBump-and-reprice
Finite Difference3YesYesNoFinite diff
Binomial Tree4YesYesNoTree Greeks
Trinomial Tree5YesYesNoTree Greeks
FFT (Carr-Madan)6YesNoNoBump-and-reprice
LSM (Longstaff-Schwartz)7YesYesNoPathwise
Barone-Adesi-Whaley8YesYesNoBump-and-reprice

Analytical pricers

PricerAsset classInstruments
BlackScholesAnalyticalPricerEquityVanilla European call/put
BaroneAdesiWhaleyPricerEquityAmerican call/put (quadratic approximation)
BjerksundStenslandPricerEquityAmerican call/put (alternative approximation)
GeometricAsianPricerEquityGeometric-average Asian
TurnbullWakemanPricerEquityArithmetic-average Asian
LevyAsianPricerEquityArithmetic Asian (Levy)
KemnaVorstPricerEquityGeometric Asian (Kemna-Vorst)
ConzeViswanathanPricerEquityLookback (floating/fixed strike)
GoldmanSosinGattoPricerEquityLookback (alternative)
IkedaKunitomoPricerEquitySingle/double barrier
KirkPricerEquitySpread options
VannaVolgaPricerFXVanna-Volga method
CDSBlackPricerCreditCDS options

Monte Carlo

  • GBM paths for European exotics and DSL contracts
  • LSM (Longstaff-Schwartz) for American options with configurable basis functions (Laguerre, Hermite, Chebyshev, Monomials)
  • Multi-asset correlated paths via Cholesky decomposition for basket/worst-of products
  • Antithetic variance reduction supported

FFT

Carr-Madan FFT pricing with pluggable characteristic functions:

  • Heston stochastic volatility
  • Merton jump-diffusion
  • Bates (stochastic vol + jumps)

Contract DSL pricing

The DSL evaluator compiles contracts to payoff functions and prices via Monte Carlo:

Contract  →  ContractEvaluator::compile()  →  Box<dyn Fn(&[f64]) -> f64>
→ Generate GBM paths
→ Evaluate payoff on each path
→ Discount average payoff