European calls and puts are the simplest options and exact solutions exist. There importance from our point of view is the ability to use the exact formulas to evaluate other valuation methods such as Monte-Carlo, Binomial and Trinomial trees and Finite Difference methods. A spreadsheet comparing the various methods is available here.
Description
A European Call can only be exercise at maturity. The payout is max(S - K, 0) where S is the value of the underlying at maturity and K is the strike of the option. A European Call is worthless at maturity if the value of the underlying is less than the strike.
Interfaces
Models must support IEuropeanCall.
interface IEuropeanCall { [propput] HRESULT TimeUntilExpiry([in] double TimeUntilExpiry); [propput] HRESULT Strike([in] double Strike); [propput] HRESULT Spot([in] double Spot); [propput] HRESULT Rate([in] double Rate); [propput] HRESULT Volatility([in] double Volatility); [propget] HRESULT PV([out, retval] double* Value); [propget] HRESULT Delta([out, retval] double* Value); [propget] HRESULT Gamma([out, retval] double* Value); [propget] HRESULT Theta([out, retval] double* Value); [propget] HRESULT Vega([out, retval] double* Value); }
Models
The following models are available.
Black-Scholes is supported. It uses a single volatility and interest rate, but that is not a problem since B-S is assumed to be valid even if volatility and interest rate are not constant over the life of the option. Since the option is European, the final option value is only dependent on the overall volatility and rate.
The spreadsheet contains comparisons between valuations using pseudo-random number generator and quasi-random number generators. Despite claims of superior convergence for quasi-random number generators, there appears to be little between them. A more details analysis may indeed show difference in performance, but they is sufficient variation that it is not apparent over a few valuations.
It is expected that quasi-random number generators will demonstrate superiority in multi-dimensional scenarios.
TODO: Use variance reduction techniques. Use reflection with psedo-random number generators.
Description
A European Put can only be exercise at maturity. The payout is max(K - S, 0) where S is the value of the underlying at maturity and K is the strike of the option. A European Put is worthless at maturity if the value of the underlying is less than the strike.
Interfaces
Models must support IEuropeanPut.
interface IEuropeanPut { [propput] HRESULT TimeUntilExpiry([in] double TimeUntilExpiry); [propput] HRESULT Strike([in] double Strike); [propput] HRESULT Spot([in] double Spot); [propput] HRESULT Rate([in] double Rate); [propput] HRESULT Volatility([in] double Volatility); [propget] HRESULT PV([out, retval] double* Value); [propget] HRESULT Delta([out, retval] double* Value); [propget] HRESULT Gamma([out, retval] double* Value); [propget] HRESULT Theta([out, retval] double* Value); [propget] HRESULT Vega([out, retval] double* Value); }
Models
The following models are available.
Copyright Bowmain Ltd (c) 2005.