RandomSequenceGenerator<RNG>: 'dimensionality'

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

RandomSequenceGenerator<RNG>: 'dimensionality'

YuHong-4

I am trying to create a uniformly distributed random sequence generator via the following code:

srand( time(NULL) );
Ranlux3UniformRng u01_rng( rand() );
RandomSequenceGenerator<Ranlux3UniformRng> u01_generator( ?dimensionality?, u01_rng );

In the above code line-3, I need to specify the 'dimensionality' parameter.  May I ask, what does the 'dimensionality' parameter mean, and how to determine the correct parameter value?  Thanks a lot!

The reference QuantLib header file is 'ql/math/randomnumbers/randomsequencegenerator.hpp'.

Regards,

Hong Yu



------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: RandomSequenceGenerator<RNG>: 'dimensionality'

Luigi Ballabio
On Wed, 2011-07-13 at 08:01 +0000, YuHong wrote:

>
> I am trying to create a uniformly distributed random sequence
> generator via the following code:
>
> srand( time(NULL) );
> Ranlux3UniformRng u01_rng( rand() );
> RandomSequenceGenerator<Ranlux3UniformRng>
> u01_generator( ?dimensionality?, u01_rng );
>
> In the above code line-3, I need to specify the 'dimensionality'
> parameter.  May I ask, what does the 'dimensionality' parameter mean,
> and how to determine the correct parameter value?  Thanks a lot!

The RandomSequenceGenerator is for generating tuples (the word
'sequence' might be misleading there.)  The dimensionality is the size
of each tuple you want to be generated.  As Obi-Wan Kenobi once said,
these are not the droids you're looking for.

In your case, you can just use the Ranlux3UniformRng you instantiated
and call next() repeatedly.

Luigi


--

Brady's First Law of Problem Solving:
When confronted by a difficult problem, you can solve it more
easily by reducing it to the question, "How would the Lone
Ranger have handled this?"



------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: RandomSequenceGenerator<RNG>: 'dimensionality'

YuHong-4

Thanks for the suggestion!  So I'd rather present a more important question:

??? usg;
InverseCumulativeRsg<USG,InverseCumulativeNormal>   gsg( ?usg? );
      
In the above code, I wish to define 'gsg', an instance of class InverseCumulativeRsg<USG, InverseCumulativeNorma>.  'gsg' will later be used in PathGenerator instance for GeometricBrownianMotionProcess simulation.  The 'gsg' constructor needs parameter 'usg' of USG type, a uniformSequenceGenerator with class method 'dimension()'. 

May I ask, how to define the uniformSequenceGenerator 'usg' by using QuantLib?  Thanks a lot!

Regards,

Hong Yu



> Subject: Re: [Quantlib-users] RandomSequenceGenerator<RNG>: 'dimensionality'

> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
> Date: Wed, 13 Jul 2011 10:37:07 +0200
>
> On Wed, 2011-07-13 at 08:01 +0000, YuHong wrote:
> >
> > I am trying to create a uniformly distributed random sequence
> > generator via the following code:
> >
> > srand( time(NULL) );
> > Ranlux3UniformRng u01_rng( rand() );
> > RandomSequenceGenerator<Ranlux3UniformRng>
> > u01_generator( ?dimensionality?, u01_rng );
> >
> > In the above code line-3, I need to specify the 'dimensionality'
> > parameter. May I ask, what does the 'dimensionality' parameter mean,
> > and how to determine the correct parameter value? Thanks a lot!
>
> The RandomSequenceGenerator is for generating tuples (the word
> 'sequence' might be misleading there.) The dimensionality is the size
> of each tuple you want to be generated. As Obi-Wan Kenobi once said,
> these are not the droids you're looking for.
>
> In your case, you can just use the Ranlux3UniformRng you instantiated
> and call next() repeatedly.
>
> Luigi
>
>
> --
>
> Brady's First Law of Problem Solving:
> When confronted by a difficult problem, you can solve it more
> easily by reducing it to the question, "How would the Lone
> Ranger have handled this?"
>
>

------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: RandomSequenceGenerator<RNG>: 'dimensionality'

Luigi Ballabio

You can define the sequence generator like you were trying to do
previously.  In this case, the dimension you'll have to pass will be the
number of steps in the path, since that's how many random numbers you'll
need to generate each path.

Luigi


On Wed, 2011-07-13 at 08:56 +0000, YuHong wrote:

>
> Thanks for the suggestion!  So I'd rather present a more important
> question:
>
> ??? usg;
> InverseCumulativeRsg<USG,InverseCumulativeNormal>   gsg( ?usg? );
>        
> In the above code, I wish to define 'gsg', an instance of class
> InverseCumulativeRsg<USG, InverseCumulativeNorma>.  'gsg' will later
> be used in PathGenerator instance for GeometricBrownianMotionProcess
> simulation.  The 'gsg' constructor needs parameter 'usg' of USG type,
> a uniformSequenceGenerator with class method 'dimension()'.  
>
> May I ask, how to define the uniformSequenceGenerator 'usg' by using
> QuantLib?  Thanks a lot!
>
> Regards,
>
> Hong Yu
>
>
>
> > Subject: Re: [Quantlib-users] RandomSequenceGenerator<RNG>:
> 'dimensionality'
> > From: [hidden email]
> > To: [hidden email]
> > CC: [hidden email]
> > Date: Wed, 13 Jul 2011 10:37:07 +0200
> >
> > On Wed, 2011-07-13 at 08:01 +0000, YuHong wrote:
> > >
> > > I am trying to create a uniformly distributed random sequence
> > > generator via the following code:
> > >
> > > srand( time(NULL) );
> > > Ranlux3UniformRng u01_rng( rand() );
> > > RandomSequenceGenerator<Ranlux3UniformRng>
> > > u01_generator( ?dimensionality?, u01_rng );
> > >
> > > In the above code line-3, I need to specify the 'dimensionality'
> > > parameter. May I ask, what does the 'dimensionality' parameter
> mean,
> > > and how to determine the correct parameter value? Thanks a lot!
> >
> > The RandomSequenceGenerator is for generating tuples (the word
> > 'sequence' might be misleading there.) The dimensionality is the
> size
> > of each tuple you want to be generated. As Obi-Wan Kenobi once said,
> > these are not the droids you're looking for.
> >
> > In your case, you can just use the Ranlux3UniformRng you
> instantiated
> > and call next() repeatedly.
> >
> > Luigi
> >
> >
> > --
> >
> > Brady's First Law of Problem Solving:
> > When confronted by a difficult problem, you can solve it more
> > easily by reducing it to the question, "How would the Lone
> > Ranger have handled this?"
> >
> >
>

--

Everything that can be invented has been invented.
-- Charles Duell, Director of U.S. Patent Office, 1899



------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: RandomSequenceGenerator<RNG>: 'dimensionality'

YuHong-4

Thanks for the suggestions!  I have defined the random-sequence generator, and then PathGenerator; then the compilation passed.

The whole problem is: I wish to do monte-carlo simulation on geometric-brownian-motion process.  So I have defined GeometricBrownianMotion process and associated PathGenerator by using QuantLib, shown in the following code:

        // u01_rng
        srand( time(NULL) );
        Ranlux3UniformRng u01_rng( rand() );

        // u01_generator
        RandomSequenceGenerator<Ranlux3UniformRng> u01_generator(
                num_timeUnits, u01_rng
        );

        // gsg
        typedef InverseCumulativeRsg<RandomSequenceGenerator<Ranlux3UniformRng>,InverseCumulativeNormal> gbm_gsg_type;
        gbm_gsg_type gsg( u01_generator );

        // gbm_process
        boost::shared_ptr<StochasticProcess1D> gbm_process(
                new GeometricBrownianMotionProcess( S0, miu, sigma )
        );

        // gbm_generator_ptr
        boost::shared_ptr<PathGenerator<gbm_gsg_type> > gbm_generator_ptr(
                new PathGenerator<gbm_gsg_type>(
                        gbm_process, dt, num_timeUnits, gsg, false
                )
        );


I wish to apply MonteCarloModel to the above PathGenerator 'gbm_generator_ptr', to simulate multiple price paths.  May I ask, what is the correct way to define 'MonteCarloModel' then?  Thanks a lot!

Regards,

Hong Yu



> Subject: RE: [Quantlib-users] RandomSequenceGenerator<RNG>: 'dimensionality'

> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
> Date: Wed, 13 Jul 2011 11:39:21 +0200
>
>
> You can define the sequence generator like you were trying to do
> previously. In this case, the dimension you'll have to pass will be the
> number of steps in the path, since that's how many random numbers you'll
> need to generate each path.
>
> Luigi
>
>
> On Wed, 2011-07-13 at 08:56 +0000, YuHong wrote:
> >
> > Thanks for the suggestion! So I'd rather present a more important
> > question:
> >
> > ??? usg;
> > InverseCumulativeRsg<USG,InverseCumulativeNormal> gsg( ?usg? );
> >
> > In the above code, I wish to define 'gsg', an instance of class
> > InverseCumulativeRsg<USG, InverseCumulativeNorma>. 'gsg' will later
> > be used in PathGenerator instance for GeometricBrownianMotionProcess
> > simulation. The 'gsg' constructor needs parameter 'usg' of USG type,
> > a uniformSequenceGenerator with class method 'dimension()'.
> >
> > May I ask, how to define the uniformSequenceGenerator 'usg' by using
> > QuantLib? Thanks a lot!
> >
> > Regards,
> >
> > Hong Yu
> >
> >
> >
> > > Subject: Re: [Quantlib-users] RandomSequenceGenerator<RNG>:
> > 'dimensionality'
> > > From: [hidden email]
> > > To: [hidden email]
> > > CC: [hidden email]
> > > Date: Wed, 13 Jul 2011 10:37:07 +0200
> > >
> > > On Wed, 2011-07-13 at 08:01 +0000, YuHong wrote:
> > > >
> > > > I am trying to create a uniformly distributed random sequence
> > > > generator via the following code:
> > > >
> > > > srand( time(NULL) );
> > > > Ranlux3UniformRng u01_rng( rand() );
> > > > RandomSequenceGenerator<Ranlux3UniformRng>
> > > > u01_generator( ?dimensionality?, u01_rng );
> > > >
> > > > In the above code line-3, I need to specify the 'dimensionality'
> > > > parameter. May I ask, what does the 'dimensionality' parameter
> > mean,
> > > > and how to determine the correct parameter value? Thanks a lot!
> > >
> > > The RandomSequenceGenerator is for generating tuples (the word
> > > 'sequence' might be misleading there.) The dimensionality is the
> > size
> > > of each tuple you want to be generated. As Obi-Wan Kenobi once said,
> > > these are not the droids you're looking for.
> > >
> > > In your case, you can just use the Ranlux3UniformRng you
> > instantiated
> > > and call next() repeatedly.
> > >
> > > Luigi
> > >
> > >
> > > --
> > >
> > > Brady's First Law of Problem Solving:
> > > When confronted by a difficult problem, you can solve it more
> > > easily by reducing it to the question, "How would the Lone
> > > Ranger have handled this?"
> > >
> > >
> >
>
> --
>
> Everything that can be invented has been invented.
> -- Charles Duell, Director of U.S. Patent Office, 1899
>
>

------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: RandomSequenceGenerator<RNG>: 'dimensionality'

Luigi Ballabio

If you just want to simulate the paths, just call next() as many times
you want on the path generator you instantiated.  The MonteCarloModel,
instead, also wants a path pricer; that is, an instance of a class
inherited from PathPricer that takes a path and returns a realized
value.  That depends on the derivative you want to price; you can see,
for example, <ql/pricingengines/vanilla/mceuropeanengine.hpp>. Looking
at this engine will also show you how to instantiate a MC simulation.

Later,
        Luigi


On Thu, 2011-07-14 at 15:52 +0000, YuHong wrote:

> Thanks for the suggestions!  I have defined the random-sequence
> generator, and then PathGenerator; then the compilation passed.
>
> The whole problem is: I wish to do monte-carlo simulation on
> geometric-brownian-motion process.  So I have defined
> GeometricBrownianMotion process and associated PathGenerator by using
> QuantLib, shown in the following code:
>
>         // u01_rng
>         srand( time(NULL) );
>         Ranlux3UniformRng u01_rng( rand() );
>
>         // u01_generator
>         RandomSequenceGenerator<Ranlux3UniformRng> u01_generator(
>                 num_timeUnits, u01_rng
>         );
>
>         // gsg
>         typedef
> InverseCumulativeRsg<RandomSequenceGenerator<Ranlux3UniformRng>,InverseCumulativeNormal> gbm_gsg_type;
>         gbm_gsg_type gsg( u01_generator );
>
>         // gbm_process
>         boost::shared_ptr<StochasticProcess1D> gbm_process(
>                 new GeometricBrownianMotionProcess( S0, miu, sigma )
>         );
>
>         // gbm_generator_ptr
>         boost::shared_ptr<PathGenerator<gbm_gsg_type> >
> gbm_generator_ptr(
>                 new PathGenerator<gbm_gsg_type>(
>                         gbm_process, dt, num_timeUnits, gsg, false
>                 )
>         );
>
>
> I wish to apply MonteCarloModel to the above PathGenerator
> 'gbm_generator_ptr', to simulate multiple price paths.  May I ask,
> what is the correct way to define 'MonteCarloModel' then?  Thanks a
> lot!
>
> Regards,
>
> Hong Yu
>
>
>
> > Subject: RE: [Quantlib-users] RandomSequenceGenerator<RNG>:
> 'dimensionality'
> > From: [hidden email]
> > To: [hidden email]
> > CC: [hidden email]
> > Date: Wed, 13 Jul 2011 11:39:21 +0200
> >
> >
> > You can define the sequence generator like you were trying to do
> > previously. In this case, the dimension you'll have to pass will be
> the
> > number of steps in the path, since that's how many random numbers
> you'll
> > need to generate each path.
> >
> > Luigi
> >
> >
> > On Wed, 2011-07-13 at 08:56 +0000, YuHong wrote:
> > >
> > > Thanks for the suggestion! So I'd rather present a more important
> > > question:
> > >
> > > ??? usg;
> > > InverseCumulativeRsg<USG,InverseCumulativeNormal> gsg( ?usg? );
> > >
> > > In the above code, I wish to define 'gsg', an instance of class
> > > InverseCumulativeRsg<USG, InverseCumulativeNorma>. 'gsg' will
> later
> > > be used in PathGenerator instance for
> GeometricBrownianMotionProcess
> > > simulation. The 'gsg' constructor needs parameter 'usg' of USG
> type,
> > > a uniformSequenceGenerator with class method 'dimension()'.
> > >
> > > May I ask, how to define the uniformSequenceGenerator 'usg' by
> using
> > > QuantLib? Thanks a lot!
> > >
> > > Regards,
> > >
> > > Hong Yu
> > >
> > >
> > >
> > > > Subject: Re: [Quantlib-users] RandomSequenceGenerator<RNG>:
> > > 'dimensionality'
> > > > From: [hidden email]
> > > > To: [hidden email]
> > > > CC: [hidden email]
> > > > Date: Wed, 13 Jul 2011 10:37:07 +0200
> > > >
> > > > On Wed, 2011-07-13 at 08:01 +0000, YuHong wrote:
> > > > >
> > > > > I am trying to create a uniformly distributed random sequence
> > > > > generator via the following code:
> > > > >
> > > > > srand( time(NULL) );
> > > > > Ranlux3UniformRng u01_rng( rand() );
> > > > > RandomSequenceGenerator<Ranlux3UniformRng>
> > > > > u01_generator( ?dimensionality?, u01_rng );
> > > > >
> > > > > In the above code line-3, I need to specify the
> 'dimensionality'
> > > > > parameter. May I ask, what does the 'dimensionality' parameter
> > > mean,
> > > > > and how to determine the correct parameter value? Thanks a
> lot!
> > > >
> > > > The RandomSequenceGenerator is for generating tuples (the word
> > > > 'sequence' might be misleading there.) The dimensionality is the
> > > size
> > > > of each tuple you want to be generated. As Obi-Wan Kenobi once
> said,
> > > > these are not the droids you're looking for.
> > > >
> > > > In your case, you can just use the Ranlux3UniformRng you
> > > instantiated
> > > > and call next() repeatedly.
> > > >
> > > > Luigi
> > > >
> > > >
> > > > --
> > > >
> > > > Brady's First Law of Problem Solving:
> > > > When confronted by a difficult problem, you can solve it more
> > > > easily by reducing it to the question, "How would the Lone
> > > > Ranger have handled this?"
> > > >
> > > >
> > >
> >
> > --
> >
> > Everything that can be invented has been invented.
> > -- Charles Duell, Director of U.S. Patent Office, 1899
> >
> >
>

--

Glendower: I can call spirits from the vasty deep.
Hotspur: Why, so can I, or so can any man;
But will they come when you do call for them?
-- King Henry the Fourth Part I, Act III, Scene I



------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: RandomSequenceGenerator<RNG>: 'dimensionality'

Smith, Dale (Norcross)
Luigi,

This answers a previous question I had as well. Thanks.

Thanks,
Dale Smith, Ph.D.
Senior Financial Quantitative Analyst
Risk & Compliance
Fiserv.
107 Technology Park
Norcross, GA 30092
Office: 678-375-5315
Mobile: 678-982-6599
Mail: [hidden email]
www.fiserv.com

-----Original Message-----
From: Luigi Ballabio [mailto:[hidden email]]
Sent: Friday, July 15, 2011 9:21 AM
To: YuHong
Cc: [hidden email]
Subject: Re: [Quantlib-users] RandomSequenceGenerator<RNG>:
'dimensionality'


If you just want to simulate the paths, just call next() as many times
you want on the path generator you instantiated.  The MonteCarloModel,
instead, also wants a path pricer; that is, an instance of a class
inherited from PathPricer that takes a path and returns a realized
value.  That depends on the derivative you want to price; you can see,
for example, <ql/pricingengines/vanilla/mceuropeanengine.hpp>. Looking
at this engine will also show you how to instantiate a MC simulation.

Later,
        Luigi


On Thu, 2011-07-14 at 15:52 +0000, YuHong wrote:

> Thanks for the suggestions!  I have defined the random-sequence
> generator, and then PathGenerator; then the compilation passed.
>
> The whole problem is: I wish to do monte-carlo simulation on
> geometric-brownian-motion process.  So I have defined
> GeometricBrownianMotion process and associated PathGenerator by using
> QuantLib, shown in the following code:
>
>         // u01_rng
>         srand( time(NULL) );
>         Ranlux3UniformRng u01_rng( rand() );
>
>         // u01_generator
>         RandomSequenceGenerator<Ranlux3UniformRng> u01_generator(
>                 num_timeUnits, u01_rng
>         );
>
>         // gsg
>         typedef
>
InverseCumulativeRsg<RandomSequenceGenerator<Ranlux3UniformRng>,InverseC
umulativeNormal> gbm_gsg_type;

>         gbm_gsg_type gsg( u01_generator );
>
>         // gbm_process
>         boost::shared_ptr<StochasticProcess1D> gbm_process(
>                 new GeometricBrownianMotionProcess( S0, miu, sigma )
>         );
>
>         // gbm_generator_ptr
>         boost::shared_ptr<PathGenerator<gbm_gsg_type> >
> gbm_generator_ptr(
>                 new PathGenerator<gbm_gsg_type>(
>                         gbm_process, dt, num_timeUnits, gsg, false
>                 )
>         );
>
>
> I wish to apply MonteCarloModel to the above PathGenerator
> 'gbm_generator_ptr', to simulate multiple price paths.  May I ask,
> what is the correct way to define 'MonteCarloModel' then?  Thanks a
> lot!
>
> Regards,
>
> Hong Yu
>
>
>
> > Subject: RE: [Quantlib-users] RandomSequenceGenerator<RNG>:
> 'dimensionality'
> > From: [hidden email]
> > To: [hidden email]
> > CC: [hidden email]
> > Date: Wed, 13 Jul 2011 11:39:21 +0200
> >
> >
> > You can define the sequence generator like you were trying to do
> > previously. In this case, the dimension you'll have to pass will be
> the
> > number of steps in the path, since that's how many random numbers
> you'll
> > need to generate each path.
> >
> > Luigi
> >
> >
> > On Wed, 2011-07-13 at 08:56 +0000, YuHong wrote:
> > >
> > > Thanks for the suggestion! So I'd rather present a more important
> > > question:
> > >
> > > ??? usg;
> > > InverseCumulativeRsg<USG,InverseCumulativeNormal> gsg( ?usg? );
> > >
> > > In the above code, I wish to define 'gsg', an instance of class
> > > InverseCumulativeRsg<USG, InverseCumulativeNorma>. 'gsg' will
> later
> > > be used in PathGenerator instance for
> GeometricBrownianMotionProcess
> > > simulation. The 'gsg' constructor needs parameter 'usg' of USG
> type,
> > > a uniformSequenceGenerator with class method 'dimension()'.
> > >
> > > May I ask, how to define the uniformSequenceGenerator 'usg' by
> using
> > > QuantLib? Thanks a lot!
> > >
> > > Regards,
> > >
> > > Hong Yu
> > >
> > >
> > >
> > > > Subject: Re: [Quantlib-users] RandomSequenceGenerator<RNG>:
> > > 'dimensionality'
> > > > From: [hidden email]
> > > > To: [hidden email]
> > > > CC: [hidden email]
> > > > Date: Wed, 13 Jul 2011 10:37:07 +0200
> > > >
> > > > On Wed, 2011-07-13 at 08:01 +0000, YuHong wrote:
> > > > >
> > > > > I am trying to create a uniformly distributed random sequence
> > > > > generator via the following code:
> > > > >
> > > > > srand( time(NULL) );
> > > > > Ranlux3UniformRng u01_rng( rand() );
> > > > > RandomSequenceGenerator<Ranlux3UniformRng>
> > > > > u01_generator( ?dimensionality?, u01_rng );
> > > > >
> > > > > In the above code line-3, I need to specify the
> 'dimensionality'
> > > > > parameter. May I ask, what does the 'dimensionality' parameter
> > > mean,
> > > > > and how to determine the correct parameter value? Thanks a
> lot!
> > > >
> > > > The RandomSequenceGenerator is for generating tuples (the word
> > > > 'sequence' might be misleading there.) The dimensionality is the
> > > size
> > > > of each tuple you want to be generated. As Obi-Wan Kenobi once
> said,
> > > > these are not the droids you're looking for.
> > > >
> > > > In your case, you can just use the Ranlux3UniformRng you
> > > instantiated
> > > > and call next() repeatedly.
> > > >
> > > > Luigi
> > > >
> > > >
> > > > --
> > > >
> > > > Brady's First Law of Problem Solving:
> > > > When confronted by a difficult problem, you can solve it more
> > > > easily by reducing it to the question, "How would the Lone
> > > > Ranger have handled this?"
> > > >
> > > >
> > >
> >
> > --
> >
> > Everything that can be invented has been invented.
> > -- Charles Duell, Director of U.S. Patent Office, 1899
> >
> >
>

--

Glendower: I can call spirits from the vasty deep.
Hotspur: Why, so can I, or so can any man;
But will they come when you do call for them?
-- King Henry the Fourth Part I, Act III, Scene I



------------------------------------------------------------------------
------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users

------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: RandomSequenceGenerator<RNG>: 'dimensionality'

YuHong-4
In reply to this post by Luigi Ballabio

Yes, calling PathGenerator.next().value shall return one simulated price path.  Thanks!

Regards,

Hong Yu

 

> Subject: RE: [Quantlib-users] RandomSequenceGenerator<RNG>: 'dimensionality'

> From: [hidden email]
> To: [hidden email]
> CC: [hidden email]
> Date: Fri, 15 Jul 2011 15:21:15 +0200
>
>
> If you just want to simulate the paths, just call next() as many times
> you want on the path generator you instantiated. The MonteCarloModel,
> instead, also wants a path pricer; that is, an instance of a class
> inherited from PathPricer that takes a path and returns a realized
> value. That depends on the derivative you want to price; you can see,
> for example, <ql/pricingengines/vanilla/mceuropeanengine.hpp>. Looking
> at this engine will also show you how to instantiate a MC simulation.
>
> Later,
> Luigi
>
>
> On Thu, 2011-07-14 at 15:52 +0000, YuHong wrote:
>
> > Thanks for the suggestions! I have defined the random-sequence
> > generator, and then PathGenerator; then the compilation passed.
> >
> > The whole problem is: I wish to do monte-carlo simulation on
> > geometric-brownian-motion process. So I have defined
> > GeometricBrownianMotion process and associated PathGenerator by using
> > QuantLib, shown in the following code:
> >
> > // u01_rng
> > srand( time(NULL) );
> > Ranlux3UniformRng u01_rng( rand() );
> >
> > // u01_generator
> > RandomSequenceGenerator<Ranlux3UniformRng> u01_generator(
> > num_timeUnits, u01_rng
> > );
> >
> > // gsg
> > typedef
> > InverseCumulativeRsg<RandomSequenceGenerator<Ranlux3UniformRng>,InverseCumulativeNormal> gbm_gsg_type;
> > gbm_gsg_type gsg( u01_generator );
> >
> > // gbm_process
> > boost::shared_ptr<StochasticProcess1D> gbm_process(
> > new GeometricBrownianMotionProcess( S0, miu, sigma )
> > );
> >
> > // gbm_generator_ptr
> > boost::shared_ptr<PathGenerator<gbm_gsg_type> >
> > gbm_generator_ptr(
> > new PathGenerator<gbm_gsg_type>(
> > gbm_process, dt, num_timeUnits, gsg, false
> > )
> > );
> >
> >
> > I wish to apply MonteCarloModel to the above PathGenerator
> > 'gbm_generator_ptr', to simulate multiple price paths. May I ask,
> > what is the correct way to define 'MonteCarloModel' then? Thanks a
> > lot!
> >
> > Regards,
> >
> > Hong Yu
> >
> >
> >
> > > Subject: RE: [Quantlib-users] RandomSequenceGenerator<RNG>:
> > 'dimensionality'
> > > From: [hidden email]
> > > To: [hidden email]
> > > CC: [hidden email]
> > > Date: Wed, 13 Jul 2011 11:39:21 +0200
> > >
> > >
> > > You can define the sequence generator like you were trying to do
> > > previously. In this case, the dimension you'll have to pass will be
> > the
> > > number of steps in the path, since that's how many random numbers
> > you'll
> > > need to generate each path.
> > >
> > > Luigi
> > >
> > >
> > > On Wed, 2011-07-13 at 08:56 +0000, YuHong wrote:
> > > >
> > > > Thanks for the suggestion! So I'd rather present a more important
> > > > question:
> > > >
> > > > ??? usg;
> > > > InverseCumulativeRsg<USG,InverseCumulativeNormal> gsg( ?usg? );
> > > >
> > > > In the above code, I wish to define 'gsg', an instance of class
> > > > InverseCumulativeRsg<USG, InverseCumulativeNorma>. 'gsg' will
> > later
> > > > be used in PathGenerator instance for
> > GeometricBrownianMotionProcess
> > > > simulation. The 'gsg' constructor needs parameter 'usg' of USG
> > type,
> > > > a uniformSequenceGenerator with class method 'dimension()'.
> > > >
> > > > May I ask, how to define the uniformSequenceGenerator 'usg' by
> > using
> > > > QuantLib? Thanks a lot!
> > > >
> > > > Regards,
> > > >
> > > > Hong Yu
> > > >
> > > >
> > > >
> > > > > Subject: Re: [Quantlib-users] RandomSequenceGenerator<RNG>:
> > > > 'dimensionality'
> > > > > From: [hidden email]
> > > > > To: [hidden email]
> > > > > CC: [hidden email]
> > > > > Date: Wed, 13 Jul 2011 10:37:07 +0200
> > > > >
> > > > > On Wed, 2011-07-13 at 08:01 +0000, YuHong wrote:
> > > > > >
> > > > > > I am trying to create a uniformly distributed random sequence
> > > > > > generator via the following code:
> > > > > >
> > > > > > srand( time(NULL) );
> > > > > > Ranlux3UniformRng u01_rng( rand() );
> > > > > > RandomSequenceGenerator<Ranlux3UniformRng>
> > > > > > u01_generator( ?dimensionality?, u01_rng );
> > > > > >
> > > > > > In the above code line-3, I need to specify the
> > 'dimensionality'
> > > > > > parameter. May I ask, what does the 'dimensionality' parameter
> > > > mean,
> > > > > > and how to determine the correct parameter value? Thanks a
> > lot!
> > > > >
> > > > > The RandomSequenceGenerator is for generating tuples (the word
> > > > > 'sequence' might be misleading there.) The dimensionality is the
> > > > size
> > > > > of each tuple you want to be generated. As Obi-Wan Kenobi once
> > said,
> > > > > these are not the droids you're looking for.
> > > > >
> > > > > In your case, you can just use the Ranlux3UniformRng you
> > > > instantiated
> > > > > and call next() repeatedly.
> > > > >
> > > > > Luigi
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > Brady's First Law of Problem Solving:
> > > > > When confronted by a difficult problem, you can solve it more
> > > > > easily by reducing it to the question, "How would the Lone
> > > > > Ranger have handled this?"
> > > > >
> > > > >
> > > >
> > >
> > > --
> > >
> > > Everything that can be invented has been invented.
> > > -- Charles Duell, Director of U.S. Patent Office, 1899
> > >
> > >
> >
>
> --
>
> Glendower: I can call spirits from the vasty deep.
> Hotspur: Why, so can I, or so can any man;
> But will they come when you do call for them?
> -- King Henry the Fourth Part I, Act III, Scene I
>
>

------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users