Login  Register

RE: Problem by pricing quanto asian basket options with MC simulation (multipath)

Posted by Giorgio Pazmandi on Feb 14, 2006; 3:34am
URL: http://quantlib.414.s1.nabble.com/Problem-by-pricing-quanto-asian-basket-options-with-MC-simulation-multipath-tp4466p4470.html

>Pricing quanto options this way is fairly standard. You just add
>fxvol * eqvol * corr to the yield on the equity, and then treat it as
>a domestic stock. The original paper is:
>
>Reiner, Eric (1992). Quanto mechanics, Risk, 5 (10), 59-63.
>
>But you can find desriptions in plenty of textbooks, e.g.
>Baxter&Rennie or recent editions of Hull.
>
>  - Ed

Thank you for the references, with this pricing method we got the correct
results :-)
Test#3: 8.24 +/- 0.09 (reference value is 8.22 +/- 0.08)
Test#4: 9.24 +/- 0.10 (reference value is 9.24 +/- 0.09)

Giorgio



PS1: Here is the detail of how we corrected the test function:

To get this result we modified the code considering just 2 assets and using
a "modified" yield (the correlation matrix used in the simulation is
consequently just 2x2 and has only the correlations beetwen the assets):

        // Asset1
        Handle<Quote> x0_2(boost::shared_ptr<Quote>(new SimpleQuote(75.0)));
        Handle<YieldTermStructure> r_2(flatRate(0.051, Actual360()));
        Handle<YieldTermStructure> q_2(flatRate(0.031, Actual360()));
        Handle<BlackVolTermStructure> sigma_2(flatVol(0.20, Actual360()));

        // Asset2
        Real correlationTerm = 0.4 * 0.15 * 0.15; // correlation * volAsset2 *
volExRate
        Handle<Quote> x0_3(boost::shared_ptr<Quote>(new SimpleQuote(100.0)));
        Handle<YieldTermStructure> r_3(flatRate(0.035 - correlationTerm ,
Actual360()));
        Handle<YieldTermStructure> q_3(flatRate(0.02, Actual360()));
        Handle<BlackVolTermStructure> sigma_3(flatVol(0.15, Actual360()));

        // The 2 stocastic processes
        std::vector<boost::shared_ptr<StochasticProcess1D> > processes(2);
        processes[0] = boost::shared_ptr<StochasticProcess1D>(
                                       new
BlackScholesProcess(x0_2,q_2,r_2,sigma_2));
        processes[1] = boost::shared_ptr<StochasticProcess1D>(
                                       new
BlackScholesProcess(x0_3,q_3,r_3,sigma_3));

        // Correlation matrix for the simulation
        Matrix correlation(2,2);
        correlation[0][0] = 1.00; correlation[0][1] = 0.30;
        correlation[1][0] = 0.30; correlation[1][1] = 1.00;


PS2: If somebody in the list is interested in the mathematical details i
have found a document online:
http://www.math.nyu.edu/faculty/kohn/cont-time-finance/section3.ps