Re: InverseCumulativeRsg

Posted by andrea loddo-2 on
URL: http://quantlib.414.s1.nabble.com/InverseCumulativeRsg-tp937p939.html

Sure it does! I will spend some quality time reading carefully what you have just suggested me.

Thanks very much.

Andrea


On 5/31/07, DU VIGNAUD DE VILLEFORT FRANCOIS GASAPRD PHI <[hidden email]> wrote:

>But still each one of them looks everything but "random". This is due to the nature of low discrepancy sequences.

True

 

> Is then reasonable to have one entire path where the generated sample is either a series of zeros or it has very low variability?

 

Sure it is ! Using a Sobol generator will provide you with a sample which will be statistically as close as possible to the multivariate normal law. Here is the way I have understood it the first time. Read Wilmott forum or a good book like Glasserman, or Joshi's ones for a much more detailed and clearer explanation.

Consider an example in dimension 1, say an exotic European option which has a non analytically tractable payoff. If you want to compute its value using a MC method you have to simulate a one dimensional normal law. In some way, this expectation computation can be viewed as an integral with respect to a normal measure. Alternatively it can also be viewed it as an integral with respect to the Lebesgue measure on the [0, 1] segment if one uses the following change of variable:

Y ->InverseCummulativeNormal(x).

[O,1] -> R

Then your problem is equivalent to a simple numerical integration problem. If you decide to compute this integral using a growing sequence of evaluation points then you will naturally find the Sobol sequence in one dimension …

Hope this help,

François

 

PS:

 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Andrea Loddo
Sent:
Thursday, May 31, 2007 4:41 PM
To: [hidden email]

Subject: Re: [Quantlib-users] InverseCumulativeRsg

 

Thanks guys, everything works perfectly. :)

 Just one consideration regarding low discrepancy sequences.  If I run  your code, Francois,
as well as mine, the first sequence I get is just a series of zeros. Then the sequences start to have some variability.  But still each one of them looks everything but "random". This is due to the nature of low discrepancy sequences.

 So, let's suppose that I have to price a contingent claim, such as a plain Vanilla call option. In this case the dimension will be simply the number of time steps from the settlement date to the maturity date. Is then reasonable to have one entire path where the generated sample is either a series of zeros or it has very low variability?

Regards,
Andrea.

On 5/31/07, DU VIGNAUD DE VILLEFORT FRANCOIS GASAPRD PHI <[hidden email]> wrote:

 

 

Hi Andrea,

 

Here is a sample code which produces the "expected" results

 

typedef InverseCumulativeRsg<SobolRsg , InverseCumulativeNormal> SobolGenerator;

typedef SobolGenerator::sample_type SobolGeneratorSampleType;

typedef SobolGeneratorSampleType::value_type SobolGeneratorValueType;

 

void main() {

    Size dimension = 3;

    SobolRsg sobol (dimension , 0) ;

    InverseCumulativeNormal invCumNorm (0 , 1) ;

    SobolGenerator myRSG (sobol, invCumNorm);

    for (Size i=0; i< 50; ++i) {

        const SobolGeneratorSampleType& sample = myRSG.nextSequence();

        const SobolGeneratorValueType& values = sample.value;

        copy(values.begin(), values.end(), ostream_iterator<Real>( cout, "\t" ) );

        cout << "\n";

    }

}

 

hope this help,

François

 

 

-----Original Message-----
From: [hidden email][mailto:[hidden email]] On Behalf Of Andrea Loddo
Sent:
Thursday, May 31, 2007 2:12 PM
To: [hidden email]
Subject: [Quantlib-users] InverseCumulativeRsg

 

Hi all,

What I need a random sequence generator that I instantiate in this way:

Size dimension = 3;
SobolRsg sobol ( dimension , 0 ) ;
InverseCumulativeNormal invCumNorm ( 0 , 1 ) ;
InverseCumulativeRsg<SobolRsg , InverseCumulativeNormal> myRSG ( sobol , invCumNorm ) ;

Everything works perfectly. The only thing I don't get is the concept of dimensionality. I would expect the member

x_.value

of myRSG to be an Array of 3 elements. The member n_,  which should be the dimension of the Array, is correctly set to 3 but apparently just one normal random number is generated. Is there any way to generate as many numbers as I need through the parameter dimension?

Any help will be appreciated.

Andrea.

 



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users