American_option_value {NFCP}R Documentation

N-factor model American options on futures contracts valuation

Description

Value American options on futures contracts under the parameters of an N-factor model

Usage

American_option_value(
  x_0,
  parameters,
  futures_maturity,
  option_maturity,
  K,
  r,
  call = FALSE,
  N_simulations,
  dt,
  orthogonal = "Power",
  degree = 2,
  verbose = FALSE,
  debugging = FALSE
)

Arguments

x_0

vector. Initial values of the state variables, where the length must correspond to the number of factors specified in the parameters.

parameters

vector. A named vector of parameter values of a specified N-factor model. Function NFCP_parameters is recommended.

futures_maturity

numeric. Time, in years, when the underlying futures contract matures.

option_maturity

numeric. Time, in years, when the American option expires.

K

numeric. Strike price of the American Option.

r

numeric. Annualized risk-free interest rate.

call

logical. Is the American option a call or put option?

N_simulations

numeric. Total number of simulated price paths.

dt

numeric. Discrete time step, in years, of the Monte Carlo simulation.

orthogonal

character. The orthogonal polynomial used to approximate the continuation value of the option in the LSM simulation method. Orthogonal polynomial arguments available are: "Power", "Laguerre", "Jacobi", "Legendre", "Chebyshev", "Hermite".

degree

numeric. The degree of polynomials used in the least squares fit.

verbose

logical. Should additional option value information be output? see details.

debugging

logical Should the simulated state variables and futures prices be output?

Details

The American_option_value function calculates numerically the value of American options on futures contracts within the N-factor model. An American option on a commodity futures contract gives the holder the right, but not the obligation, to buy (call) or sell (put) the underlying asset at any time before option maturity. If the American option is exercised, the option devolves into buying or selling of the underlying futures asset at the exercise price.

The 'American_option_value' function uses Monte Carlo simulation and the Least-Squares Monte Carlo (LSM) simulation approach to numerically calculate the value of American options on futures contracts under the N-factor model. LSM simulation is a method that values options with early exercise opportunities, first presented by Longstaff and Schwartz (2001). LSM simulation uses discrete time steps to approximate the value of the American option and thus technically values Bermudan-style options, converging to American option values as the size of the time step approaches zero. For more information on LSM simulation, see help('LSM_American_option') of the 'LSMRealOption' package or Longstaff and Schwartz (2001).

For a provided N-factor model,the 'American_option_value' function simulates state variables under the N-factor framework through the 'spot_price_simulate' function, developing expected futures prices from these simulated state variables. The function then uses the 'LSM_American_option' of the 'LSMRealOption' package to calculate the value of the American option with early exercise opportunities.

The number of simulations has a large influence on the standard error and accuracy of calculated option values at the cost of computational expense. Large numbers of simulations are suggested to converge upon appropriate values.

Orthogonal polynomials are used in the LSM simulation method to approximate the value of continuing to hold the American option. In general, increasing the degree of orthogonal polynomials used should increase the accuracy of results, at the cost of increased computational expense.

Value

The 'American_option_value' function by default returns a numeric object corresponding to the calculated value of the American option.

When verbose = T, 6 objects related to the American option value are returned within a list class object. The objects returned are:

Value The calculated option value.
Standard Error The standard error of the calculated option value.
Expected Timing The expected time of early exercise.
Expected Timing SE The standard error of the expected time of early exercise.
Exercise Probability The probability of early exercise of the option being exercised.
Cumulative Exercise Probability vector. The cumulative probability of option exercise at each discrete observation point.

When debugging = T, an additional 2 simulation objects are returned within the list class object. These objects can have high dimensions and thus memory usage, so caution should be applied. The objects returned are:

Simulated State Variables An array of simulated state variables. The three dimensions of the array correspond to a discrete time observation, simulated price path, and factor of the N-factor model, respectively.
Simulated Futures Prices A matrix of simulated futures contract price paths. Each row represents one simulated discrete time observation and each column represents one simulated price path

References

Longstaff, F.A., and E.S. Schwartz, (2001). Valuing American Options by Simulation: A Simple Least-Squares Approach. The Review of Financial Studies., 14:113-147.

Schwartz, E. S., and J. E. Smith, (2000). Short-Term Variations and Long-Term Dynamics in Commodity Prices. Manage. Sci., 46, 893-911.

Cortazar, G., and L. Naranjo, (2006). An N-factor Gaussian model of oil futures prices. Journal of Futures Markets: Futures, Options, and Other Derivative Products, 26(3), 243-268.

Aspinall, T., A. Gepp, G. Harris, S. Kelly, C. Southam, and B. Vanstone, (2021). LSMRealOptions: Value American and Real Options Through LSM Simulation. R package version 0.1.1.

Examples


# Example 1 - An American put option on a futures contract following 'GBM'
American_option_value(x_0 = log(36),
                     parameters = c(mu_rn = 0.06, sigma_1 = 0.2),
                     N_simulations = 1e2,
                     futures_maturity = 1,
                     option_maturity = 1,
                     dt = 1/50,
                     K = 40,
                     r = 0.06,
                     verbose = FALSE,
                     orthogonal = "Laguerre",
                     degree = 3)

# Example 2 - An American put option under a two-factor crude oil model:

## Step 1 - Obtain current (i.e. most recent) state vector by filtering the
## two-factor oil model:
Schwartz_Smith_oil <- NFCP_Kalman_filter(parameter_values = SS_oil$two_factor,
                                        parameter_names = names(SS_oil$two_factor),
                                        log_futures = log(SS_oil$stitched_futures),
                                        dt = SS_oil$dt,
                                        futures_TTM = SS_oil$stitched_TTM,
                                        verbose = TRUE)

##Step 2 - Calculate 'put' option price:
American_option_value(x_0 = Schwartz_Smith_oil$x_t,
                     parameters = SS_oil$two_factor,
                     futures_maturity = 2,
                     option_maturity = 1,
                     K = 20,
                     r = 0.05,
                     call = FALSE,
                     N_simulations = 1e2,
                     dt = 1/12,
                     verbose = TRUE,
                     orthogonal = "Power",
                     degree = 2)

[Package NFCP version 1.2.1 Index]