European option
spot 100 · strike 105 · interest rate 5% · dividend yield 2% · volatility 20% · maturity (years) 1 · option type call
NPV = 6.9869
The trace identified 17 implementation constants and 24 decision points across 12 source files; repeated uses of the same line are listed once.
Documented formula → the code that ran
Black-Scholes-Merton: C = S·e^(-qT)·N(d1) − K·e^(-rT)·N(d2)
| N(d1), N(d2) — the standard normal cumulative distribution function | a rational approximation to the error function | ql/math/errorfunction.cpp |
| d1, d2 and the closed-form price | QuantLib's Black calculator (the same formula, written on the forward price) | ql/pricingengines/blackcalculator.cpp |
| e^(-rT), e^(-qT) — interest-rate and dividend-yield discounting | interest-rate compounding to discount factors | ql/interestrate.cpp |
Implementation constants reached by this calculation (17)
Includes tolerances, cut-offs, numerical limits, the day-count convention, and thresholds for the sensitivities (Greeks) that this QuantLib engine calculates automatically with every price.
| value | role | source |
| 8.697191480061655e-29 | tolerance for comparing with zero, (42 × machine epsilon)² | ql/math/comparison.hpp:72 |
| 1e-08 | normal-distribution left-tail threshold (switches to the asymptotic formula) | ql/math/distributions/normaldistribution.cpp:36 |
| -690.0 | exponent cut-off below which e^x is treated as zero | ql/math/distributions/normaldistribution.hpp:279 |
| 0.84375 | error-function rational-approximation region switch | ql/math/errorfunction.cpp:209 |
| 3.7252902984e-09 | error-function small-argument cut-off | ql/math/errorfunction.cpp:210 |
| 2.220446049250313e-16 | zero-volatility threshold: selects the standard formula above machine epsilon and zero-volatility handling below it | ql/pricingengines/blackcalculator.cpp:77 |
| 2.220446049250313e-16 | zero-volatility threshold for delta (machine epsilon) | ql/pricingengines/blackcalculator.cpp:208 |
| 2.220446049250313e-16 | zero-volatility threshold for forward delta (machine epsilon) | ql/pricingengines/blackcalculator.cpp:251 |
| 2.220446049250313e-16 | near-zero price threshold in the elasticity calculation (machine epsilon) | ql/pricingengines/blackcalculator.cpp:291 |
| 2.220446049250313e-16 | zero-volatility threshold for gamma (machine epsilon) | ql/pricingengines/blackcalculator.cpp:320 |
| 2.220446049250313e-16 | zero-volatility threshold for vega (machine epsilon) | ql/pricingengines/blackcalculator.cpp:377 |
| 2.220446049250313e-16 | zero-volatility threshold for rho (machine epsilon) | ql/pricingengines/blackcalculator.cpp:396 |
| 2.220446049250313e-16 | zero-volatility threshold for dividend rho (machine epsilon) | ql/pricingengines/blackcalculator.cpp:415 |
| 2.220446049250313e-16 | zero-volatility threshold for strike sensitivity (machine epsilon) | ql/pricingengines/blackcalculator.cpp:433 |
| -1.7976931348623157e+308 | lowest representable number (no lower strike limit) | ql/termstructures/volatility/equityfx/blackconstantvol.hpp:118 |
| 1.7976931348623157e+308 | highest representable number (no upper strike limit) | ql/termstructures/volatility/equityfx/blackconstantvol.hpp:122 |
| 365.0 | Actual/365 (Fixed) day-count denominator | ql/time/daycounters/actual365fixed.hpp:57 |
Input-dependent decision points reached (24)
Repricing with shifted inputs can make the code take the other path at these points.
Suggested checks
Reprice on both sides of material decision points, then compare the results with an independent implementation or approved reference calculation.
The report contains selected details recorded while this trade was calculated. Validation judgement — tiering, materiality and sign-off — stays with your team.
