This function evaluations an American-style option on a common stock using finite differences. The option value as well as the common first derivatives ("Greeks") are returned.
# S3 method for default
AmericanOption(type, underlying, strike,
dividendYield, riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=149, engine="BaroneAdesiWhaley",
discreteDividends, discreteDividendsTimeUntil)
A string with one of the values call
or put
Current price of the underlying stock
Strike price of the option
Continuous dividend yield (as a fraction) of the stock
Risk-free rate
Time to maturity (in fractional years)
Volatility of the underlying stock
Time steps for the “CrankNicolson” finite differences method engine, default value is 150
Grid points for the “CrankNicolson” finite differences method, default value is 149
String selecting pricing engine, currently supported are “BaroneAdesiWhaley” and “CrankNicolson”
Vector of discrete dividends (optional)
Vector of times to discrete dividends (in fractional years, optional)
An object of class AmericanOption
(which inherits from class
Option
) is returned. It contains a list with the
following components:
Value of option
Sensitivity of the option value for a change in the underlying
Sensitivity of the option delta for a change in the underlying
Sensitivity of the option value for a change in the underlying's volatility
Sensitivity of the option value for a change in t, the remaining time to maturity
Sensitivity of the option value for a change in the risk-free interest rate
Sensitivity of the option value for a change in the dividend yield
Note that under the new pricing framework used in QuantLib, pricers do not provide analytics for all 'Greeks'. When CrankNicolson is selected, then at least delta, gamma and vega are available. With the default pricing engine of BaroneAdesiWhaley, no greeks are returned. The CrankNicolson engine needs to be used when setting discrete dividends.
The Finite Differences method is used to value the American Option.
Please see any decent Finance textbook for background reading, and
the QuantLib
documentation for details on the QuantLib
implementation.
http://quantlib.org for details on QuantLib
.
# NOT RUN {
# simple call with unnamed parameters
AmericanOption("call", 100, 100, 0.02, 0.03, 0.5, 0.4)
# simple call with some explicit parameters
AmericanOption("put", strike=100, volatility=0.4, 100, 0.02, 0.03, 0.5)
# simple call with unnamed parameters, using Crank-Nicolons
AmericanOption("put", strike=100, volatility=0.4, 100, 0.02, 0.03, 0.5, engine="CrankNicolson")
# }
Run the code above in your browser using DataLab