# Option: payout if you beat index

A stock has a mean and volatility. A stock index has another mean and volatility. What is the value of an option that at time T pays out the stock price at time T if the stock has outperformed the index by 3%? In other words, if $S_T/I_T > 1.03$ then payoff = $S_T$ otherwise the payoff is zero.

One approach would be the monte carlo approach:

• simulate M=10,000 paths for the stock and index, each path of length 250. Use a GBM with mean and volatility estimated from historical data
• save the end price of each path, thus having a list of M stock prices and index prices
• Pr(payoff) = sum the number of times stock/index > 1.03 and divide by M
• the expected payoff = Pr(payoff) * average($S_T$)
• I assume MC would work, are you maybe more interested in an analytical solution? – Bob Jansen Feb 20 '18 at 15:15
• I suspect it would be possible to derive an analytical solution, using black scholes. – jacob Feb 20 '18 at 15:23
• I guess you meant $S_T/S_0 > 1.03 I_T/I_0$. Estimating mean and volatility from historical data is pretty vague. It's OK if you imply the vols and drifts from option data but not from usual time series (Q vs P). Yes you can use MC but you need to compute the price as: P = discount factor x average payoff The way you did indeed amounts to writing that $\Bbb{E}[ S_T 1\{A\} ] = \Bbb{E}[S_T] Q(A)$ which is wrong here since the event $A$ triggering the payout and $S_T$ are not indep. – Quantuple Feb 20 '18 at 15:23
• PS: I don't think there is a closed form formula in this particular case (there is one for a special kind of spread option paying $(S_T-I_T) 1\{ S_T - I_T \geq K\}$ for $K=0$ known as Magrabe's formula. But not for a general $K$.). Maybe a decent approximation exists though. – Quantuple Feb 20 '18 at 15:27
• There is a closed form formula: the payoff is $S_T \times \text{Indicator}(S_T/I_T > 1.03)$ and $e^{-rT}E_P[S_T \times \text{Indicator}(S_T/I_T > 1.03)] = S_0E_Q[\text{Indicator}(S_T/I_T > 1.03)]$ where $Q$ is the stock measure is easily computed. – Antoine Conze Feb 26 '18 at 7:56

Assume under risk neutral measure \begin{eqnarray} dS_t/S_t&=&\alpha_1 dt + \sigma_1 dW^1_t \\ dI_t/I_t&=&\alpha_2 dt + \sigma_2 dW^2_t \end{eqnarray} where $\alpha_1$ and $\alpha_2$ are the risk neutral drifts (containing the information on rate, dividends and repo cost. For instance $\alpha_1 = \alpha_2 = r$ if there is zero dividends and zero repo cost), $\sigma_1$ and $\sigma_2$ are the respective stock and index volatilities, and with correlation $\rho$ between $W^1$ and $W^2$,

Then \begin{eqnarray} \text{option value} &=& e^{-rT} E_P[S_T \times \text{Indicator}(S_T/I_T > 1.03)]\\ &=& e^{-rT} E_P[S_T] E_Q[\text{Indicator}(S_T/I_T > 1.03)] \\ &=& e^{-rT} E_P[S_T] Q(S_T/I_T > 1.03) \\ &=& e^{(\alpha_1-r)T} S_0 Q(S_T/I_T > 1.03) \\ \end{eqnarray}

where $dQ/dP|_{t=0}=S_T/E_P[S_T]$.

From the Girsanov theorem \begin{eqnarray} dS_t/S_t&=&(\alpha_1+\sigma_1^2) dt + \sigma_1 dW'^1_t \\ dI_t/I_t&=&(\alpha_2+\rho\sigma_1\sigma_2) dt + \sigma_2 dW'^2_t \end{eqnarray} with $W'^1$ and $W'^2$ standard Brownian motions under $Q$, with correlation $\rho$.

After integrating the SDE for $S_t$ and $I_t$, \begin{eqnarray} S_T&=&S_0\exp\left((\alpha_1+\frac{1}{2}\sigma_1^2) T+\sigma_1W'^1_T\right) \\ I_T&=&I_0\exp\left((\alpha_2-\frac{1}{2}\sigma_2^2+\rho\sigma_1\sigma_2) T+\sigma_2W'^2_T\right) \end{eqnarray} hence \begin{eqnarray} \frac{S_T}{I_T}&=&\frac{S_0}{I_0}\exp\left((\alpha_1+\frac{1}{2}\sigma_1^2) T-(\alpha_2-\frac{1}{2}\sigma_2^2+\rho\sigma_1\sigma_2) T+\sigma_1W'^1_T-\sigma_2W'^2_T\right) \\ &=& \frac{S_0}{I_0}\exp\left((\alpha_1-\alpha_2+\frac{1}{2}(\sigma_1^2+\sigma_2^2-2\rho\sigma_1\sigma_2)) T+\sigma_1W'^1_T-\sigma_2W'^2_T\right) \\ &=& \frac{S_0}{I_0}\exp\left((\alpha_1-\alpha_2+\frac{1}{2}\Sigma^2) T + \Sigma W'_T\right) \end{eqnarray} with $\boxed{\Sigma=\sqrt{\sigma_1^2+\sigma_2^2-2\rho\sigma_1\sigma_2}}$ and $W'$ a standard Brownian motion under $Q$.

Finally $$Q(S_T/I_T > 1.03) =N\left(\frac{\ln(\frac{S_0}{1.03 I_0})+(\alpha_1-\alpha_2+\frac{1}{2}\Sigma^2) T}{\Sigma\sqrt{T}}\right)$$ and $$\boxed{\text{option value} = e^{(\alpha_1-r)T} S_0 N\left(\frac{\ln(\frac{S_0}{1.03 I_0})+(\alpha_1-\alpha_2+\frac{1}{2}\Sigma^2) T}{\Sigma\sqrt{T}}\right) }$$

I get (with the params below) that the option is worth 58% of the stock's current value (which looks high to me).

## libraries

library(PerformanceAnalytics)
library(quantmod)
library(TTR)
library(xts)
library(sde) # needs fda.  https://cran.r-project.org/web/packages/sde/sde.pdf
library(dfa)
library(fOptions)

## params

y = 1 # year
rf <- 0 # risk free rate
M <- 1000 # number of simulations
S_0 <- 100 # current price
I_0 <- S_0
ret_i <- 0.07 # yearly return
ret_s <- 0.09
vol_i <- 0.10 # yearly vol
vol_s <- 0.22

## get list of retunrs, vols, end of ear stockprices

path_i <- NULL
path_s <- NULL
vols_i <- NULL
vols_s <- NULL
prices_i <- NULL
prices_s <- NULL
returns_i <- NULL
returns_s <- NULL

for (k in 1:M){
# an entire path
path_i[[k]] <- GBM(x = S_0, r = ret_i, sigma = vol_i, T = y, N = 250*y)
path_s[[k]] <- GBM(x = I_0, r = ret_s, sigma = vol_s, T = y, N = 250*y)
# returns of a path
returns_i[[k]] <- CalculateReturns(ts(path_i[[k]]))
returns_s[[k]] <- CalculateReturns(ts(path_s[[k]]))
# vol of a path, first day is NA
vols_i[[k]] <- sqrt(250)*stdev(returns_i[[k]][2:250])
vols_s[[k]] <- sqrt(250)*stdev(returns_s[[k]][2:250])
# price after 1 year:
prices_i[[k]] <- path_i[[k]][250]
prices_s[[k]] <- path_s[[k]][250]
}

## check

# check numerically::
length(path_i)
length(vols_i)
length(returns_i)
length(prices_i)

## index vs stock:

prices_q <- prices_s / prices_i

payoffs <- NULL
# if stock beats index by 1% then payoff = 0
# if stock beats index by >3% then payoff = stock price
# the payoff grows linearly between 1% and 3%
# so if stock beats index by 2% the payoff = half the stock price
for (p in 1:M){
pay <- NULL
endprice = prices_q[[p]]
pay <- ifelse(endprice < 1.01, 0,
ifelse(endprice > 1.03, prices_s[[p]],
50*(endprice - 1.01) * prices_s[[p]]))
payoffs[[p]] <- pay
}

(option_value <- mean(payoffs)/(1+rf)^y )
option_value / S_0

• Does your sim match @AntoineConze 's analytical solution? – vonjd Mar 6 '18 at 16:58