Exchange, Basket and other multi-asset options
Igor Hlivka
MUFG Securities International, LONDON
This application demonstration reviews several classes of multi-asset options and as such extends the concept on multi-variability in Finance presented / discussed in other applications. Multi-variability is important concept in financial engineering as many non-standard structured products in the market are exposed to multiple source of randomness. Multi-variability is not trivial in terms of handling multiple dependencies, however suitable change of martingale measure and dimension-reduction techniques can help simplifying the multi-variable process into more manageable routines.
Although multi-dependency in many instances requires numerical processing, we will show that with Maple we can do better. Our aim is to devise an analytical solution to this problem and will show how Maple's symbolic engine can efficiently cope with this task
Exchange Options
Exchange Options are special class of bi-variate options that give the buyer the right to exchange at option maturity
the asset
for
. This means that the option holder will exercise his (her) right to exchange the asset if one has greater value than the other. In this respect, we can define the option's payoff as:
A key to valuation of such options is to assess the behavior of assets under two sources of randomness:
and
Both
and
in isolation are independent Wiener processes with
with following properties:
In case of two source of randomness, we define the SDE for two stochastic processes as:
![`and`(dX = `+`(`*`(mu[1], `*`(X, `*`(dt))), `*`(X, `*`(`+`(`*`(sigma[11], `*`(W[1])), `*`(sigma[12], `*`(W[2]))), `*`(dY)))), `+`(`*`(mu[1], `*`(X, `*`(dt))), `*`(X, `*`(`+`(`*`(sigma[11], `*`(W[1])),...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_12.gif)
![`and`(dX = `+`(`*`(mu[1], `*`(X, `*`(dt))), `*`(X, `*`(`+`(`*`(sigma[11], `*`(W[1])), `*`(sigma[12], `*`(W[2]))), `*`(dY)))), `+`(`*`(mu[1], `*`(X, `*`(dt))), `*`(X, `*`(`+`(`*`(sigma[11], `*`(W[1])),...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_13.gif)
From here we can establish:
![`and`(`𝔼`[`*`(`/`(`*`(dX), `*`(X)), `/`(`*`(dX), `*`(X)))] = `+`(`*`(`^`(sigma[11], 2)), `*`(`^`(sigma[12], 2))), `and`(`+`(`*`(`^`(sigma[11], 2)), `*`(`^`(sigma[12], 2))) = `*`(`^`(sigma[X], 2),...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_15.gif)
![`and`(`𝔼`[`*`(`/`(`*`(dX), `*`(X)), `/`(`*`(dX), `*`(X)))] = `+`(`*`(`^`(sigma[11], 2)), `*`(`^`(sigma[12], 2))), `and`(`+`(`*`(`^`(sigma[11], 2)), `*`(`^`(sigma[12], 2))) = `*`(`^`(sigma[X], 2),...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_16.gif)
where
is the correlation between
To value this option analytically, we first change the option's payoff by performing the "change of measure"
The standard way of valuing option is to apply the risk-neutral measure, such that the asset processes when normalized by appropriate numeraire become martingale:
where B is money-market account
We can therefore express the Exchange option payoff with new measure as follows:
To see why the change is measured is required, we examine two stock process in detail. Under standard risk-neutral measure P we get:
> |
 |
> |
![`:=`(St[1], `*`(S0[1], `*`(exp(`+`(`*`(`+`(r, `-`(`*`(`/`(1, 2), `*`(`^`(sigma[1], 2))))), `*`(t)), `*`(sigma[1], `*`(W[1]))))))); 1; `:=`(St[2], `*`(S0[2], `*`(exp(`+`(`*`(`+`(r, `-`(`*`(`/`(1, 2), `...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_23.gif) |
![`*`(S0[1], `*`(exp(`+`(`*`(`+`(r, `-`(`*`(`/`(1, 2), `*`(`^`(sigma[1], 2))))), `*`(t)), `*`(sigma[1], `*`(W[1]))))))](/view.aspx?SI=6687/Exchng_and_Bsk_Options_24.gif) |
![`*`(S0[2], `*`(exp(`+`(`*`(`+`(r, `-`(`*`(`/`(1, 2), `*`(`^`(sigma[2], 2))))), `*`(t)), `*`(sigma[2], `*`(W[2]))))))](/view.aspx?SI=6687/Exchng_and_Bsk_Options_25.gif) |
(1.1) |
> |
![`:=`(RatioP, simplify(`/`(`*`(St[2]), `*`(St[1])), symbolic)); 1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_26.gif) |
![`/`(`*`(S0[2], `*`(exp(`+`(`-`(`*`(`/`(1, 2), `*`(t, `*`(`^`(sigma[2], 2))))), `*`(sigma[2], `*`(W[2])), `*`(`/`(1, 2), `*`(t, `*`(`^`(sigma[1], 2)))), `-`(`*`(sigma[1], `*`(W[1]))))))), `*`(S0[1]))](/view.aspx?SI=6687/Exchng_and_Bsk_Options_27.gif) |
(1.2) |
We observe that the volatility of the ratio of two assets is equal to
=
so for the ratio process to be martingale, the following condition has to to satisfied:
However, under the risk-neutral measure P, this is not the case as:
≠ (
because in bi-variate setting
Let's build the new volatility and transformed measure vectors under new measure Q
> |
![`:=`(SV, `<,>`(`+`(`*`(rho, `*`(sigma[2])), `-`(sigma[1])), `*`(sigma[2], `*`(sqrt(`+`(1, `-`(`*`(`^`(rho, 2))))))))); 1; `:=`(WV, `<,>`(`+`(W[1], `*`(sigma[1], `*`(t))), W[2])); 1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_34.gif) |
)](/view.aspx?SI=6687/Exchng_and_Bsk_Options_35.gif) |
)](/view.aspx?SI=6687/Exchng_and_Bsk_Options_36.gif) |
(1.3) |
> |
![`:=`(RatioQ, simplify(subs({`*`(sigma[2], `*`(W[2])) = `*`(SV[2], `*`(WV[2])), `+`(`-`(`*`(sigma[1], `*`(W[1])))) = `*`(SV[1], `*`(WV[1]))}, RatioP))); 1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_37.gif) |
![`/`(`*`(S0[2], `*`(exp(`+`(`-`(`*`(`/`(1, 2), `*`(t, `*`(`^`(sigma[2], 2))))), `*`(sigma[2], `*`(`^`(`+`(1, `-`(`*`(`^`(rho, 2)))), `/`(1, 2)), `*`(W[2]))), `-`(`*`(`/`(1, 2), `*`(t, `*`(`^`(sigma[1],...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_38.gif) |
(1.4) |
As we can see, under this measure transformation, the ratio
can be expressed as:
.
What does this imply?
- Under the transformed measure Q, the bi-variate process
`(W[1], W[2])" align="center" border="0">can be reduced to the univariate counterpart with :
![`*`(ln(`/`(`*`(S[2]), `*`(S[1]))), `*`(`~`, `*`(N(0, `#mover(mi(](/view.aspx?SI=6687/Exchng_and_Bsk_Options_42.gif)
We use this result for the option valuation:
- We will first define the new martingale process X
- Decide the limits of integration for which the option payoff holds
![`>`(`/`(`*`(S[2]), `*`(S[1])), 1)](/view.aspx?SI=6687/Exchng_and_Bsk_Options_43.gif)
- Integrate the payoff similar to Black-Scholes with

> |
 |
![`*`(`^`(`+`(`*`(`^`(sigma[1], 2)), `-`(`*`(2, `*`(rho, `*`(sigma[1], `*`(sigma[2]))))), `*`(`^`(sigma[2], 2))), `/`(1, 2)))](/view.aspx?SI=6687/Exchng_and_Bsk_Options_46.gif) |
![`/`(`*`(S0[2], `*`(exp(`+`(`-`(`*`(`/`(1, 2), `*`(`+`(`*`(`^`(sigma[1], 2)), `-`(`*`(2, `*`(rho, `*`(sigma[1], `*`(sigma[2]))))), `*`(`^`(sigma[2], 2))), `*`(t)))), `*`(`^`(`+`(`*`(`^`(sigma[1], 2)), ...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_47.gif) |
(1.5) |
> |
 |
![`+`(`/`(`*`(`/`(1, 2), `*`(`+`(`*`(t, `*`(`^`(sigma[1], 2))), `-`(`*`(2, `*`(rho, `*`(sigma[2], `*`(sigma[1], `*`(t)))))), `*`(t, `*`(`^`(sigma[2], 2))), `*`(2, `*`(ln(`/`(`*`(S0[1]), `*`(S0[2])))))))...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_49.gif) |
(1.6) |
> |
![`:=`(EO, `assuming`([int(`/`(`*`(`+`(X, `-`(1)), `*`(exp(`+`(`-`(`*`(`/`(1, 2), `*`(`^`(y, 2)))))))), `*`(sqrt(`+`(`*`(2, `*`(Pi)))))), y = crtval .. infinity)], [`>`(t, 0), `>`(sigma[1], 0), `>`(sigm...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_50.gif) |
![`+`(`-`(`/`(`*`(`/`(1, 2), `*`(`+`(`*`(S0[2], `*`(erf(`+`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(ln(`/`(`*`(S0[1]), `*`(S0[2]))))), `-`(`*`(t, `*`(`^`(sigma[1], 2)))), `*`(2, `*`...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_51.gif)
![`+`(`-`(`/`(`*`(`/`(1, 2), `*`(`+`(`*`(S0[2], `*`(erf(`+`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(ln(`/`(`*`(S0[1]), `*`(S0[2]))))), `-`(`*`(t, `*`(`^`(sigma[1], 2)))), `*`(2, `*`...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_52.gif) |
(1.7) |
> |
![`:=`(ExOpt, evalf(eval(EO, [S0[1] = 10, S0[2] = 10, t = 1, sigma[1] = .12, sigma[2] = .15, rho = -.9]))); 1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_53.gif) |
 |
(1.8) |
Maple calculates the sensitivities with ease. Since
is a denominator in the exchange option formula, the Delta (first derivative w.r.t
) for this factor is negative.
> |
![plot3d(eval(EO, [S0[1] = 10, S0[2] = 10, t = 1, sigma[2] = .15]), sigma[1] = 0.2e-1 .. .2, rho = -.5 .. .5, title = [](/view.aspx?SI=6687/Exchng_and_Bsk_Options_66.gif)
![plot3d(eval(EO, [S0[1] = 10, S0[2] = 10, t = 1, sigma[2] = .15]), sigma[1] = 0.2e-1 .. .2, rho = -.5 .. .5, title = [](/view.aspx?SI=6687/Exchng_and_Bsk_Options_67.gif) |
As the chart above shows, the Exchange Option is quite sensitive to correlation and volatility. Negative correlation between two assets will make the the ratio volatility
higher and hence lead to a higher premium.
Best / worst of two options
Results for the Exchange options easily extends into the valuation of option contract that pays the "best" or "worst" of two assets:
Best of two assets
The value of the Best of two option is then:
> |
![`:=`(V[max], simplify(`+`(S0[1], EO))); 1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_71.gif) |
![`+`(`-`(`/`(`*`(`/`(1, 2), `*`(`+`(`-`(`*`(2, `*`(`^`(S0[1], 2)))), `*`(S0[2], `*`(erf(`+`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(ln(`/`(`*`(S0[1]), `*`(S0[2]))))), `-`(`*`(t, `*...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_72.gif)
![`+`(`-`(`/`(`*`(`/`(1, 2), `*`(`+`(`-`(`*`(2, `*`(`^`(S0[1], 2)))), `*`(S0[2], `*`(erf(`+`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(ln(`/`(`*`(S0[1]), `*`(S0[2]))))), `-`(`*`(t, `*...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_73.gif) |
(2.1.1) |
Worst of two assets
The value of the Best of two option is then:
> |
![`:=`(V[min], simplify(`+`(S0[2], `-`(EO)))); 1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_75.gif) |
![`+`(`/`(`*`(`/`(1, 2), `*`(`+`(`*`(2, `*`(S0[2], `*`(S0[1]))), `*`(S0[2], `*`(erf(`+`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(ln(`/`(`*`(S0[1]), `*`(S0[2]))))), `-`(`*`(t, `*`(`^`...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_76.gif)
![`+`(`/`(`*`(`/`(1, 2), `*`(`+`(`*`(2, `*`(S0[2], `*`(S0[1]))), `*`(S0[2], `*`(erf(`+`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(ln(`/`(`*`(S0[1]), `*`(S0[2]))))), `-`(`*`(t, `*`(`^`...](/view.aspx?SI=6687/Exchng_and_Bsk_Options_77.gif) |
(2.2.1) |
> |
![`:=`(pmaxval, eval(V[max], [t = 1, rho = -.2, sigma[1] = .12, sigma[2] = .15])); -1; `:=`(pminval, eval(V[min], [t = 1, rho = -.2, sigma[1] = .12, sigma[2] = .15])); -1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_78.gif)
![`:=`(pmaxval, eval(V[max], [t = 1, rho = -.2, sigma[1] = .12, sigma[2] = .15])); -1; `:=`(pminval, eval(V[min], [t = 1, rho = -.2, sigma[1] = .12, sigma[2] = .15])); -1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_79.gif) |
It is worth mentioning that "Best of" / "Worst of" options are relatively expensive as their premium is close to the underlying asset price.
Basket options
Basket options are special case of multi-asset options where several underlying assets are bundled together and this basket performance then determines the option's payoff. By virtue of construction, baskets options are essentially a particular case of a broader family of portfolio options where the stochastic variable is the baskets (portfolio) of assets. As such, basket options can be utilized to monetize the expectation of the future behavior of combined assets pool.
Similar to the univariate case, basket options can be structured as Puts or Calls. Puts provide a positive payoff if the weighted-average of basket assets drops below a strike level. Calls give rise to a positive payoff if the weighted-averarge at maturity is greater than the strike.
Formally:

= ![sum(S[i], i = 1 .. n)](/view.aspx?SI=6687/Exchng_and_Bsk_Options_87.gif)
where
is i-th asset and
is its weight in the basket with
= 1

A key to valuation of basket options analytically is to determine the parameters of joint distribution. We observe that each asset return in the basket individually (under the appropriate measure) follows a normal distribute:
and return dependency structure is characterized by the correlation matrix Σ. This allows us deriving basket's variance as a product of individual weights and variance-covariance matrix. Once basket variance has been determined, we can proceed with valuation as in univariate case - just replace the asset with the weighted-average of basket assets and volatility with basket's volatility.
Let's examine this is practice and valued 5 stocks Call Basket Option:
> |
 |
Here we have derived the basket's variance-covariance matrix. We will obtain the basket's volatility and weighted average of assets through simple factor/matrix manipulation:
> |
 |
> |
![`:=`(BMn, add(`*`(U[i], `*`(W[i])), i = 1 .. N)); 1](/view.aspx?SI=6687/Exchng_and_Bsk_Options_114.gif) |
![`+`(`*`(S[1], `*`(w[1])), `*`(S[2], `*`(w[2])), `*`(S[3], `*`(w[3])), `*`(S[4], `*`(w[4])), `*`(S[5], `*`(w[5])))](/view.aspx?SI=6687/Exchng_and_Bsk_Options_115.gif) |
(3.3) |
The valuation is now straightforward -we have reduced the multivariate dependency to a univariate case which we know how to value. Assuming joint lognormality of each assets we set:
where
and
=
> |
 |
> |

 |
This is the "full-form" valuation, and despite the long string of functional parameters Maple handles it well. We can now compute the option premium with parameters substitution:
 |
(3.5) |
On the other hand, we could have taken a "shortcut" - computing the premium symbolically for the set of theoretical parameters and then making the substitution for volatility and mean.
> |
 |
 |
(3.8) |
As the above analysis indicates, the basket options can be quite complex, particularly when the number of underlying assets becomes large. In this respect, basket options are also more difficult to manage as multi-dependency and multi-variability creates complex web of sensitivities - including multiple deltas, gammas, vegas etc.
Conclusion
This application example shows that multi-asset options can become quite complex when number of underlying assets increases. Computational efficiency greatly increases when CAS is employed to simplify processes symbolically. Maple, as this example again demonstrates, handles these tasks very well.
Legal Notice: The copyright for this application is owned by the authors. Neither Maplesoft nor the authors are responsible for any errors contained within and are not liable for any damages resulting from the use of this material.. This application is intended for non-commercial, non-profit use only. Contact the authors for permission if you wish to use this application in for-profit activities.