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
optionBasketOptionThe basket option, on an average-basket payoff of a plain vanilla.
contextEvaluationContextThe evaluation context.
processesImmutableArray<GeneralizedBlackScholesProcess>The assets' processes, one per weight.
xToldoubleThe 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.