Skip to content
All library documents

QuantLib Option Values at Expiry and Reference Date Events

Article Quant Q&A · Author: funnycrab

Summary

The document explains why QuantLib may report a zero net present value for an option on its exercise date: by default, the option is treated as expired at that date. A user asks whether this convention can be changed to obtain intrinsic value instead. The accepted answer points to a global setting that includes events occurring on the reference date, which causes the option to be treated as still alive on the exercise date.

The answer reports that the analytic European engine handles the zero-time case and returns intrinsic value under this setting. It cautions that other pricing engines may not correctly support a time-to-expiry of zero. The material therefore describes a library convention and a configuration approach, while making clear that behavior can depend on the pricing engine. It provides no comparison of option models or broader valuation evidence.

Key ideas

  • QuantLib normally treats an option as expired on its exercise date, giving it a null net present value.
  • Including reference-date events changes whether exercise-date events are processed.
  • The accepted answer reports intrinsic value from the analytic European engine in the zero-time case.
  • Other pricing engines may not handle a zero-time-to-expiry valuation correctly.

Tags

Full text
# How many ways can QuantLib handle the price of option on its maturity date?


# How many ways can QuantLib handle the price of option on its maturity date?












I have been playing with QuantLib for some time. This is a great framework with amazing design and capabilities. However, one thing that I find hard to understand is the way it handles the price of option on maturity date. As far as I understand, it simply equates option price to zero on maturity date. However, I find this behavior is kind of awkward in some certain situations. Will it be better off if the framework figures out something else, e.g. the intrinsic value of the option on the maturity date, rather than just a zero.

So my question is is there any globe settings can be used to override this behavior?

If the answer is yes, please kindly instruct how to do it? If no, please kindly explain the reason behind this?

Thanks in advance!

## Answer by Luigi Ballabio (score 5, accepted)

https://quant.stackexchange.com/a/25000

As you saw, the default behavior is to consider the option expired at the exercise date, so the NPV is null. You can override this behavior by executing

```
Settings::instance().includeReferenceDateEvents() = true;
```

After the above, the option will be considered alive at exercise date. I'm not sure that all pricing engines will manage the case $T=0$ correctly (they might), but I checked that at least `AnalyticEuropeanEngine` does and will return the intrinsic value.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.