Table of Contents

Class SingleFactorBsmBasketEngine

Namespace
NanoQL.PricingEngines
Assembly
NanoQL.dll

The engine for European average-basket options whose assets are all driven by one stochastic factor: each asset's deviation is its Black volatility at the spot, signed, times the square root of the time.

public static class SingleFactorBsmBasketEngine
Inheritance
SingleFactorBsmBasketEngine
Inherited Members

Remarks

J. Choi, "Sum of all Black-Scholes-Merton Models: An efficient Pricing Method for Spread, Basket and Asian Options", https://arxiv.org/pdf/1805.03172. The price is closed form at the root of a sum of exponentials, found by Brent's solver, and the root's d is returned among the additional results as "d", as QuantLib's.

The processes must discount alike: QuantLib's check that every risk-free discount is close enough to the first's ("interest rates need to be the same for all underlyings"). The structures are read by date, accruing nothing before their dates, where QuantLib's reads throw for an option expiring before a later structure's date (Divergences/BasketExpiryBeforeReferenceDateTests.cs).

Methods

Calculate(BasketOption, EvaluationContext, ImmutableArray<GeneralizedBlackScholesProcess>, double)

Prices a European average-basket option.

public static MultiAssetOptionResults Calculate(BasketOption option, EvaluationContext context, ImmutableArray<GeneralizedBlackScholesProcess> processes, double xTol = 2.220446049250313E-12)

Parameters

option BasketOption

The basket option, on an average-basket payoff of a plain vanilla.

context EvaluationContext

The evaluation context.

processes ImmutableArray<GeneralizedBlackScholesProcess>

The assets' processes, one per weight.

xTol double

The root solver's accuracy.

Returns

MultiAssetOptionResults

The value, and the root's d among the additional results where a deviation isn't 0.

Exceptions

ArgumentNullException

An argument is null.

NanoQLException

The payoff isn't an average basket of a plain vanilla, the weights aren't one per process, the exercise isn't European, the processes discount differently, or the root can't be found.