The purpose of this report is to estimate the theoretical price of a European down-and-in put option with a barrier active between the moment of pricing and the option expiry, using a Monte Carlo approach and to analyze the relation between theoretical price of the option and volatility of the underlying instrument returns and time to maturity of the option.
A European Down-and-In Put Option with a barrier active between the moment of pricing and the option expiry has the following characteristics:
Option Type:Put Option. Gives the holder the right to sell the underlying asset at a predetermined strike price at expiry.
Barrier Type:Down-and-In. The option “activates” only if the underlying instrument’s price falls below a specific barrier level during the life of the option.
Key Parameters:
Underlying Asset Price (S₀):The current price of the
underlying instrument.
Strike Price (K):The price at which the option holder
can sell the underlying instrument if the option is active at
expiry.
Barrier Level (b): The price level below which the
barrier is triggered, activating the option.
Time to maturity(t): The time until the expiry of the
option.
Annualized volatility rate(σ): The price volatility of
the underlying instrument. annualized risk-free
rate(r):The interest rate used for discounting future cash
flows.
Activation Condition:The option becomes “alive” only if the price of the underlying instrument touches or falls below the barrier b during the life of the option.
Payoff at Expiry:If the option is activated and the underlying asset price \(S_T \leq K\) at expiry:
\[ \text{Payoff} = K - S_T \] Otherwise, the payoff is zero.
This type of option is commonly used for hedging against downside risk while benefiting from cost reduction due to the barrier feature.
Assumption 1: With higher volatility, the option price increases.
Assumption 2: With longer time to maturity, the option price increases.
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
options(repos = c(CRAN = "https://cloud.r-project.org"))
install.packages("ggplot2")
library(ggplot2)
install.packages("devtools")
devtools::install_github("YunWu-ly/downInPutMC_0.1.0")
library(downInPutMC)
# Define parameters
S0 <- 105 # Initial stock price
K <- 110 # Strike price
r <- 0.05 # Risk-free interest rate
b <- 95 # Barrier level
nSim <- 10000 # Number of Monte Carlo simulations
sigma_vals <- seq(0.15, 0.35, by = 0.05) # Range of volatility values
t_vals <- seq(0.5, 2, by = 0.5) # Range of time to maturity values
Run the Monte Carlo simulations for each combination of volatility and time to maturity and store the results.
# Store results in a data frame
results <- expand.grid(volatility = sigma_vals, time_to_maturity = t_vals)
results$option_price <- mapply(function(vol, t) {
downInPutMC(nSim, S0, K, r, vol, t, b) # call Monte Carlo function
}, results$volatility, results$time_to_maturity)
# Show the first few rows of the results
head(results)
## volatility time_to_maturity option_price
## 1 0.15 0.5 4.126805
## 2 0.20 0.5 6.252793
## 3 0.25 0.5 7.947892
## 4 0.30 0.5 9.346576
## 5 0.35 0.5 10.349911
## 6 0.15 1.0 5.942222
ggplot(results, aes(x = time_to_maturity, y = option_price, color = as.factor(volatility))) +
geom_line(size = 1) +
labs(title = "Down-and-In Put Option Price vs Time to Maturity",
x = "Time to Maturity (Years)",
y = "Option Price",
color = "Volatility") +
theme_minimal()
Interpretation 1: The option price increases with
higher volatility due to greater probability of hitting the
barrier.
Interpretation 2:Longer time to maturity also generally
leads to higher option prices as the stock price has more time to hit
the barrier.
In accordance with the Honor Code, I certify that my answers here are my own work, and I did not make my solutions available to anyone else.