Using Monte Carlo method to price European Basket Options

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
Report Content as Inappropriate

Using Monte Carlo method to price European Basket Options

Pedro Milet

Hi all,


I’m trying to use Quantlib’s MCEuropeanBasketEngine to price a simple basket option put so far have not been able to do so.

I’m using a C# SWIG compilation of Quantlib, and tried the following:


            _exercise = new EuropeanExercise(_maturity);


            var stochasticVector = new StochasticProcessVector((int)numAssets);

            for (int i = 0; i < numAssets; i++)


                stochasticVector.Add(new GeneralizedBlackScholesProcess(

                    new QuoteHandle(_spotQuotes[i]),

                    new YieldTermStructureHandle(_dividendCurves[i].TermStructure),

                    new YieldTermStructureHandle(_riskFreeCurves[0].TermStructure),

                    new BlackVolTermStructureHandle(_volMatrices[i].TermStructure)




            var stochasticProcessArray = new StochasticProcessArray(stochasticVector, _correlationMatrix);


            //Since quantlib uses the exponential formula for the Monte Carlo, only one time step is needed for european options.

            uint timeSteps = 1;

            uint QL_NULL_INTEGER = 0x7fffffff;

            bool brownianBridge = false;

            //Increases precision by sampling -x whenever x is sampled.

            bool antitheticVariate = true;

            int requiredSamples = 10000;

            double requiredTolerance = 1e-3;

            int maxSamples = 1000000;

            //int seed;


            _engine = new MCEuropeanBasketEngine(stochasticProcessArray, "pseudorandom", timeSteps, QL_NULL_INTEGER,

                brownianBridge, antitheticVariate, requiredSamples, requiredTolerance, maxSamples);

            _basketOption = new BasketOption(_payoff, _exercise);




This compiles fine, but using _basketOption.NPV() for a basket of a single asset (when it should approximately match the Black & Scholes price) consistently overpriced the option (i.e., the average of a large number of runs was consistently above the B&S price). I suspected it either had to do with the single time step (but since it’s an European option I thought this should work anyway) or with something I did not do regarding the random number generation.


What am I doing wrong?




Pedro Milet






Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.
QuantLib-users mailing list
[hidden email]