From Breeden-Litzenberger, we know that the second derivative of a European call option's price with respect to the strike price is equal to the risk-neutral probability density function of the underlying asset's price at the option's expiration. However, options_price(strike_price) is not a continuous function, so additional calculations are needed, such as interpolating in IV space and converting back to price space.

One thing that I've not managed to find in the literature is analysis regarding the possibility of validating such a generated risk-neutral distribution by integrating it twice, and therefore, by Breeden-Litzenberger, arriving at prices-according-to-the-RND, and then comparing said prices with the original prices.

Here's a theoretical example where the risk-neutral-distribution to be validated is just a log-normal distribution. The y-value of the resulting second numerical integration would be compared to the initial set of prices, and conclusions would be drawn:

# PDF of the lognormal distribution
# In a real context, we would receive this from the PDF-generating model,
# which takes in option prices and strike prices
pdf_lognorm = lognorm.pdf(x_ln, sigma_ln, scale=scale_ln)

# Numerical Integration of the PDF
integral_pdf = np.cumsum(pdf_lognorm) * (x_ln[1] - x_ln[0])

# Second Integration of the PDF
second_integral_pdf = np.cumsum(integral_pdf) * (x_ln[1] - x_ln[0])

enter image description here

Would this be at least the beginning of a theoretically-valid validation method? Thank you.

EDIT: Of course, the implementation of the double integration method above is incomplete. It would always generate a monotonically increasing set of option prices - but the options are calls, which ought to have monotonically decreasing prices. The correct calculation would be option_price(strike_price)=the_incorrect_double_integration_i_have_above(strike_price)+ C1*strike_price+C2, where C1 and C2 are constants to be determined.

  • $\begingroup$ So are you trying to say that you want to validate the (interpolated) RNDs via the implied option prices? How are you going validate the implied option prices if you do not have the market option prices (that can supposedly be used to imply those interpolated RNDs, but we do not have) in the first place? $\endgroup$
    – KaiSqDist
    Commented Jan 8 at 1:53
  • 1
    $\begingroup$ The idea is that in real-world usage of the method, one would validate an RND that has been calculated using a set of option prices - so you would just compare the implied option prices with those original option prices. In my post, the log-normal distribution is just given as an example, because I did not want to write my own 1. Simulator of option prices. 2. Generator of RNDs. $\endgroup$
    – v.y.
    Commented Jan 8 at 6:49
  • $\begingroup$ I see... I too was working on an implied RND code myself in R, but honestly I just looked at the fit of the plot as a means of validation. From how I would validate it (going by your method), would be to use a RMSE measure computed between the implied option prices and actual market option prices. Then, I would compare it against other interpolation methods. $\endgroup$
    – KaiSqDist
    Commented Jan 8 at 6:53
  • $\begingroup$ Maybe missing the obvious bit isn't that exactly what local vol is doing and calculating? $\endgroup$
    – user70573
    Commented Jan 8 at 6:53
  • $\begingroup$ @Alex Can you please go into more details? $\endgroup$
    – v.y.
    Commented Jan 8 at 7:15


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.