Re: Multi-asset options

Posted by Neil P Firth on
URL: http://quantlib.414.s1.nabble.com/Multi-asset-options-tp2771p2773.html

> >I'm looking at coding up some multi-asset options [...]
> >There are some library design issues, however. The current Option class
> >seems to be inherently single asset, as it has a Payoff as a data member
> >and Payoff calculates the value from a (double price). This needs to be
> >more general to deal with, say, a vector of prices.
>
> As long as the payoff is calculated comparing a double against the (double)
> strike the current interface could work for multi-asset options too.
> I agree that the label "price" for the double to be compared against the
> strike is inappropriate, as it could be the min/max between multiple
> prices, the average of different prices, etc.
>
> Please let me know if I'm missing something
>

I'm thinking of weigthed baskets, with payoffs such as:

\Sum_{i=0}^{n} w_i S_i - K

or

\max(S_1, S_2, S_3) - K

or

\min(S_1, S_2, S_3) - K

You can have a call or a put. Some code is required to define and
calculate the sum, max, or min at the expiry time. As the current Payoff
only allows (double price) this would have to be calculated elsewhere.
I'm thinking of having a BasketOption which is created using a Payoff and
a BasketPayoff which calls the Payoff object.

To calculate the payoff you would call

double finalOptionValue = payoff(basketPayoff(assetPriceVector));

where the payoff would be Call or Put, the basketPayoff would return the
max, min, k^th best, k^th worst, or whatever, asset price in the
assetPriceVector. I'll code it up like that and see how it works.

Neil