Learn R Programming

RTL (version 1.3.7)

spreadOption: Kirk's Approximation for Spread Option Pricing

Description

Computes the price and Greeks of European spread options using Kirk's 1995 approximation. The spread option gives the holder the right to receive the difference between two asset prices (F2 - F1) at maturity, if positive, in exchange for paying the strike price X.

Usage

spreadOption(F1, F2, X, sigma1, sigma2, rho, T2M, r, type = "call")

Value

A list containing the following elements:

  • price: The price of the spread option

  • delta_F1: The sensitivity of the option price to changes in F1

  • delta_F2: The sensitivity of the option price to changes in F2

  • gamma_F1: The second derivative of the option price with respect to F1

  • gamma_F2: The second derivative of the option price with respect to F2

  • gamma_cross: The mixed second derivative with respect to F1 and F2

  • vega_1: The sensitivity of the option price to changes in sigma1

  • vega_2: The sensitivity of the option price to changes in sigma2

  • theta: The sensitivity of the option price to the passage of time

  • rho: The sensitivity of the option price to changes in the interest rate

Arguments

F1

numeric, the forward price of the first asset.

F2

numeric, the forward price of the second asset.

X

numeric, the strike price of the spread option.

sigma1

numeric, the volatility of the first asset (annualized).

sigma2

numeric, the volatility of the second asset (annualized).

rho

numeric, the correlation coefficient between the two assets (-1 <= rho <= 1).

T2M

numeric, the time to maturity in years.

r

numeric, the risk-free interest rate (annualized).

type

character, the type of option to evaluate, either "call" or "put". Default is "call".

Details

Kirk's approximation is particularly useful for spread options where the exercise price is zero or small relative to the asset prices. The approximation assumes that the ratio of the assets follows a lognormal distribution.

The implementation includes a small constant (epsilon) to avoid numerical instabilities that might arise from division by zero.

References

Kirk, E. (1995) "Correlation in the Energy Markets." Managing Energy Price Risk, Risk Publications and Enron, London, pp. 71-78.

Examples

Run this code
# Price a call spread option with the following parameters:
F1 <- 100  # Forward price of first asset
F2 <- 110  # Forward price of second asset
X <- 5     # Strike price
sigma1 <- 0.2  # Volatility of first asset
sigma2 <- 0.25 # Volatility of second asset
rho <- 0.5     # Correlation between assets
T2M <- 1       # One year to maturity
r <- 0.05      # Risk-free rate

result_call <- spreadOption(F1, F2, X, sigma1, sigma2, rho, T2M, r, type = "call")
result_put <- spreadOption(F1, F2, X, sigma1, sigma2, rho, T2M, r, type = "put")

Run the code above in your browser using DataLab