Login  Register

BasketOption

Posted by Gísli Sigurbjörn Óttarsson KB banki on Mar 28, 2006; 2:53am
URL: http://quantlib.414.s1.nabble.com/BasketOption-tp4670.html

Hello all:
 
As one of my first forays into QuantLib, I am experimenting with a Monte Carlo simulation to price a basket option.  Among the classes I am using is the class EuropeanMultiPathPricer and I am slightly puzzled by what I see.  Perhaps one of you could throw me a bone.
 
Firstly, I find that there does not appear to be a way to specify different weights for the assets in the basket, or to specify the position in each of the assets.  It would seem that the designer of the BasketOption and the EuropeanMultiPathPricer have intended for this to be specified directly in the 'underlying' Array, which is populated by the SimpleQuote object specifying the initial price of the underlying.  In other words, the only way I have found to have a position of 2 in an asset currently priced at 3 is via:

        Handle<Quote> x0_1(boost::shared_ptr<Quote>(new SimpleQuote(2 * 3)));

However, the following code in the EuropeanMultiPathPricer constructor prevents a short position in any of the assets in the basket.
   
    for (Size i = 0; 0 && i < underlying.size(); i++) {
       QL_REQUIRE(underlying[i]>0.0, "underlying less/equal zero not allowed");
    }

Secondly, only two types of baskets are available, called Max and Min and the price of these baskets is computed as the price of the most or least expensive asset respectively, see:

 Real EuropeanMultiPathPricer::operator()(const MultiPath& multiPath) const;

in mcbasketengine.cpp.

My intention was to price the basket as the weighted sum of assets, which does not seem to be one of the available types:

I fear that I am missing an important design point of the QuantLib basket option.  Any help would be appreciated.
 
Best regards

Gísli