Skip to content
All library documents

Numerical Limits of Put-Call Parity in Option Analytics

Article Quant Q&A · Author: THATS MY QUANT MY QUANTITATIVE

Summary

The note explains a practical numerical limitation in option pricing: calculating a deeply in-the-money option can lose precision when the cumulative normal distribution is nearly one. Jäckel’s suggested approach is to imply Black volatility from out-of-the-money options, using a normal cumulative distribution implementation that remains accurate for negative inputs.

The discussion clarifies that the warning about put-call parity concerns using it inside pricing analytics to derive one option price from the other. For example, deriving puts from calls by parity can prevent computed put prices from going below machine precision when prices are very small. The note does not argue that parity is theoretically invalid or never useful. Whether this extreme precision is needed depends on the application; greater numerical accuracy can make algorithms more robust, while needing it may expose methodological weaknesses.

Key ideas

  • Deeply in-the-money options can cause precision loss when the cumulative normal probability is numerically indistinguishable from one.
  • Implying volatility from out-of-the-money options helps avoid this numerical issue.
  • Put-call parity can be theoretically valid yet unsuitable for deriving tiny option prices in numerical analytics.
  • The practical need for extreme precision depends on the application and the robustness of the pricing method.

Tags

Full text
# In the paper "By Implication" by Jaeckel, he says that put-call parity should never be used in practic


# In the paper "By Implication" by Jaeckel, he says that put-call parity should never be used in practic












In this paper by Jackel (2006), on page 2, he writes:

The normalised option price $b$ is a positively monotic function in $\sigma \in[0, \infty)$ with the limits $$ h(\theta x) \cdot \theta \cdot\left(\mathrm{e}^{x / 2}-\mathrm{e}^{-x / 2}\right) \leq b<\mathrm{e}^{\theta x / 2} \quad \quad (2.5) $$ wherein $h(\cdot)$ is the Heaviside function. In order to understand the asymptotic behaviour of (2.2) from a purely technical point of view, let us recall [AS84, (26.2.12)] $$ \Phi(z)=h(z)-\frac{\varphi(z)}{z}\left[1-\frac{1}{z^2}+\mathcal{O}\left(\frac{1}{z^4}\right)\right] \text { for }|z| \rightarrow \infty \quad \quad (2.6) $$ with $\varphi(z)=\mathrm{e}^{-z^2 / 2} / \sqrt{2 \pi}$. Equation (2.6) highlights a common practical issue with the cumulative normal distribution function: when its argument $z$ is significantly positive, as is the case here for deeply in the money options ${ }^2$, $\Phi(z)$ becomes indistinguishable from 1 , or has only very few digits in its numerical representation that separates it from 1. The best way to overcome this problem is to use an implementation of $\Phi(z)$ that is highly accurate for negative $z$, and to only ever use out-of-the-money options when implying Black volatility ${ }^3$.

In the footnote for [3], he writes:

"This is the reason why put-call parity should never be used in applications: it is a nice theoretical result but useless when you rely on it in your option pricing analytics."

What does he mean by this? Why is put-call parity useless in practice when many papers use it "in-practice"?

## Answer by jherek (score 5, accepted)

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

P. Jäckel says so because of numerical errors. The key words are "in your option pricing analytics". In particular he does not say it should not be used.

For example if you decide to price all options as Call options, and then use the Put-Call parity to compute the Put option prices, then you won't be able to have Put option prices below machine epsilon (around $2 \times 10^{-16}$), assuming a forward of 1.0 and discount factors = 1.0.

Whether it is very important to reach this kind of accuracy is debatable. It usually makes the algorithms more robust, but the necessity may point to methodological issues.

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.