finMath.net

# Tutorial 001: Analytic Black-Scholes option pricer with a GUI.

• Implement the Black-Scholes formula, which calculates the price of a European option under the Black-Scholes model, given the model parameters spot, risk free rate, volatility, and the product parameters maturity strike
• Implement an inverse of the Black-Scholes formula, which calculates the (implied) volatility of the Black-Scholes model, given the model parameters spot risk free rate and the product parameters of a European option maturity strike price
• Create a GUI

## Hints

• Create a class `AnalyticFormulas` whose purpose it will be to provide a collection of analytic formulas as class methods (static).
• Implement the analytic Black-Scholes formula as a class method `blackScholesOptionPrice`.
• For the cumulative normal distribution function use a library function, e.g., `cern.jet.stat.Probability.normal()` or `org.apache.commons.math.distribution.NormalDistributionImpl.cumulativeNormalDistribution()`.
• Implement the inverse of the Black-Scholes formula as a class method `blackScholesOptionImpliedVolatility`.
• Use `AnalyticFormulas.blackScholesOptionPrice()` from above in connection with a root finder, e.g., `net.finmath.rootFinder.BisectionSearch`.
• Create a GUI using your favored GUI builder (this is not a tutorial on how to use a GUI builder). Add gui elements for the model and product parameters. Implement the following behaviour:
• If any field except the price is changed, calculate the price and show it.
• If the price is changed, calculate the implied volatility and show it.
Note: You have to account for the case where an invalid volatility is entered!

## Solution / Example

See net.finmath.experiments.blackScholes.BlackScholesOptionCaclulator.java.