Skip to content

Fix SmileSectionRNDCalculator tail quantiles for smiles with fat wings - #2772

Merged
lballabio merged 1 commit into
lballabio:masterfrom
quantales:fix/smilesection-rnd-tail-quantiles
Sep 16, 2026
Merged

lballabio merged 1 commit into
lballabio:masterfrom
quantales:fix/smilesection-rnd-tail-quantiles

Conversation

@quantales

Copy link
Copy Markdown
Contributor

Follow-up to #2768.

With fat wings, the fixed ±5 ATM-standard-deviation strike grid can make
invcdf saturate too early. Computing the left-tail CDF as 1 - P(S > K)
also loses precision.

This tabulates log-moneyness against $z = \Phi^{-1}(P(S \leq K))$, with nodes
approximately uniform in z and an adaptive search for the range endpoints.
Each tail uses its own put or call digital, with a relative gap of |K| * 2e-6
to limit roundoff across widely varying strikes.

The nStd default changes from 5 to 8. This also changes
GaussianCopulaSpreadEngine prices, since it uses the calculator's defaults.

Five regression tests cover forward reproduction, quantile saturation,
low-ATM-volatility fat wings, spread put-call parity, and the left-tail CDF
against the analytic lognormal result.

@coveralls

Copy link
Copy Markdown

Coverage Status

coverage: 75.477% (+0.02%) from 75.462% — quantales:fix/smilesection-rnd-tail-quantiles into lballabio:master

@lballabio
lballabio merged commit 3d21442 into lballabio:master Sep 16, 2026
45 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants