How Correlation Affects Best-of and Worst-of Option Values
Summary
The document examines how correlation can affect best-of and worst-of options and discusses confusion arising from the payoff definition. The questioner's Monte Carlo example simulates correlated terminal prices for two assets and reports that the price of a worst-performing-asset call decreases as correlation falls. The answer emphasizes defining the payoff precisely, distinguishing performance-based options from other structures that may also be called worst-of or best-of.
Under the answer's simplified performance framing, best-of options benefit from lower correlation because one asset may perform well even when another does poorly. A worst-of payoff instead selects the weakest performance, so lower correlation can worsen its outcome. The explanation uses a two-asset setup and refers to Monte Carlo comparisons, but gives no detailed result table in the supplied text. Its conclusion depends on the stated payoff and simplifying assumptions; option terminology and strike conventions should be checked before applying the relationship to a particular contract.
Key ideas
- Specify whether the payoff selects the best or worst underlying performance before interpreting correlation exposure.
- The answer says lower correlation can raise the value of a best-of option by widening the range of relative outcomes.
- For the simplified worst-of payoff described, lower correlation can reduce the selected minimum performance.
- The questioner's Monte Carlo results show a falling worst-of call value as correlation declines.
- Payoff definitions and strike conventions can change how a correlation relationship should be interpreted.
Tags
Full text
# Worst-of Rainbow Option - Relationship with Correlation and price
# Worst-of Rainbow Option - Relationship with Correlation and price
I'm trying to build a worst-of and best-of option pricer, however, I am getting unexpected result while also trying to interpret the relationship between correlation and option price for these rainbow options.
Firstly, according to Frans de Weert: Exotic Options Trading in both cases a buyer of worst-of option or best-of option is short correlation. I.e. if correlation goes down, price of the option goes up. I'm trying to wrap my head around that as that means the lower the correlation, the higher the price, the lower the profit, on the other hand, high correlation would then result in lower price, resulting in higher profit. However intuitively I thought we want to lower correlation to maximize profit and maximize risk? Given if the correlation is positive, nearly equal to 1, the pricing should behave as just buying a vanilla call on the underlier, on the other hand, with low-correlation assets there is high probability that one of them outperforms while the other one will become the worst-performing asset and will result in worthless option. Thus making the trade more risky and the option would need to be cheaper.
My current implementation of the pricer in Python is as following:
```
class WorstOf():
def __init__(self, type, spots, vols, corr_matrices, r, T, strike, num_of_simulations = 100000):
self.type = type
self.spots = spots
self.vols = vols
self.corr_matrices = corr_matrices
self.r = r
self.T = T
self.strike = strike
self.num_of_simulations = num_of_simulations
def simulateGeoPaths(self):
"""
Simulation of multiple underlying assets under the
risk-neutral measure using a single-step Monte Carlo.
"""
n_assets = len(self.spots)
L = np.linalg.cholesky(self.corr_matrices) # Cholesky decomposition of the correlation matrix
Z = np.random.normal(0.0, 1.0, (self.num_of_simulations, n_assets))
correlated_Z = np.dot(Z, L.T)
#correlated_Z = Z @ L
single_step_terminal_price = np.zeros_like(correlated_Z)
for i in range(n_assets):
drift = (self.r - 0.5 * self.vols[i]**2) * self.T
diffusion = self.vols[i] * np.sqrt(self.T) * correlated_Z[:, i]
single_step_terminal_price[:, i] = self.spots[i] * np.exp(drift + diffusion)
return single_step_terminal_price
def price(self):
"""
Price the worst of option using the simulated price paths.
"""
price_Paths = self.simulateGeoPaths()
percentage_performance = price_Paths / self.spots
worst_performer_index = np.argmin(percentage_performance, axis=1)
worst_performer_dollar = np.array([percentage_performance[i, idx] * self.spots[idx] for i, idx in enumerate(worst_performer_index)])
if self.type == 'Call':
payoff = np.maximum(0.0, worst_performer_dollar - self.strike*self.spots[worst_performer_index])
elif self.type == 'Put':
payoff = np.maximum(0.0, self.strike*self.spots[worst_performer_index] - worst_performer_dollar)
discount_payoff = payoff * np.exp(-self.r * self.T)
return np.mean(discount_payoff)
```
When pricing a Worst-of on high-correlated two assets with same volatility, risk free rate and 110% strike:
```
WorstOf('Call', np.array([100, 100]), np.array([0.25, 0.25]), np.array([ [1.0, 0.999999999], [0.999999999, 1.0] ]), 0.05, 1, 1.1, 1000000)
```
I get a price of 8$, close to the vanilla option price, however with lower correlation my price goes down as well:
```
correlation matrix: [1.0, 0.6], [0.6, 1.0] Price: 3.884
correlation matrix: [1.0, 0.3], [0.3, 1.0] Price: 2.573
correlation matrix: [1.0, -0.5], [-0.5, 1.0] Price: 0.512391
```
Thank you
## Answer by Kai (score 3, accepted)
https://quant.stackexchange.com/a/81944
I think definitions are pretty important here. If you want to be able to price both best-of and worst-of options for both puts and calls, then we can perhaps define the following:
- Worst-of option: an option that pays the worst performance of the underlying assets, i.e. $\min\{\text{Performance}_1, \text{Performance}_2, \ldots, \text{Performance}_n\}$.
- Best-of option: an option that pays the best performance of the underlying assets, i.e. $\max\{\text{Performance}_1, \text{Performance}_2, \ldots, \text{Performance}_n\}$.
For example, a worst-of put option on 2 assets with a strike of $K\%$ of the initial price (we are simplifying this problem) would have the payoff of: $$ \max\left\{0, \min\left\{\frac{S_1^0 \cdot K - S_1^T}{S_1^0 \cdot K}, \frac{S_2^0 \cdot K - S_2^T}{S_2^0 \cdot K}\right\}\right\} $$ where $S_1^0$ and $S_2^0$ are the initial prices of the assets and $S_1^T$ and $S_2^T$ are the prices of the assets at maturity.
We want to see the relationship so we price these using \$100 as the initial price for both $S_1$ and $S_2$, $r_f = 5\%$ , $(\sigma_1,\sigma_2) = (20\%, 25\%)$, and $T=1$.
Pricing these via Monte Carlo, we see the following:
You will see here that your intuition is right if this is indeed the definition you are following, i.e.:
- In a best-of option (call or put), your price goes up as correlation falls as we have an option that produces "higher chances" of positive return (think if one is negative another must be positive).
- In the other way, a worst-of option by this definition must have worse performance as correlation decreases, since you are almost guaranteed a negative to zero return (if stock 1 rallies, stock 2 must be falling).
Hope this helps :)Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.