Statistical programming, matrix languages, and more

How to simulate a Weiner process in SAS

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 82
Accepted Solution

How to simulate a Weiner process in SAS

Is there a way to simulate data points that have been drawn from a Geometric Brownian Motion (Weiner Process)?

I am looking at this function:SAS(R) 9.2 Language Reference: Dictionary, Fourth Edition

But I don't see an option for a Weiner process.

I know the Black Scholes internally simulates a Weiner process but is it possible to see what a set of 10,000 numbers drawn from a Weiner process looks like?


Accepted Solutions
Solution
‎06-11-2015 02:47 PM
SAS Super FREQ
Posts: 3,420

Re: How to simulate a Weiner process in SAS

I'll show you the standard Weiner process (mean=0, std dev=1) and you can generalize it if necessary.

A reference is https://me.ucsb.edu/~moehlis/APC591/tutorials/tutorial7/node2.html

The key observation is that the STEP SIZES of the Weiner process are Gaussian distribution, so you can use the RAND function in the DATA step to simulate the step sizes. In SAS/IML, you can use the RANDGEN or RANDFUN functions to generate the normally distributed step sizes.

proc iml;
/* simulate N time steps from Weiner process on interval [0,Tf] */
N = 1000;
Tf = 5;
call randseed(12345);

/* algorithm: step sizes are normally distributed */
N = N-1;              /* X(0)=0, so N-1 random values */
dt = Tf/N;
sd = sqrt(dt);
steps = randfun(N, "Normal", 0, sd); /* random step sizes */
x = 0 // cusum(steps);               /* X(0)=0 */

View solution in original post


All Replies
Trusted Advisor
Posts: 1,061

Re: How to simulate a Weiner process in SAS

I suggest you post this under the "SAS Statistical Procedures" and "SAS/IML Software and Matrix Computations" forums, I think you'll be more likely to catch the eye of someone familiar with this topic.


Tom

Community Manager
Posts: 467

Re: How to simulate a Weiner process in SAS

Thanks Tom! eagles_dare13, I moved this thread to the SAS/IML community.

Anna

Solution
‎06-11-2015 02:47 PM
SAS Super FREQ
Posts: 3,420

Re: How to simulate a Weiner process in SAS

I'll show you the standard Weiner process (mean=0, std dev=1) and you can generalize it if necessary.

A reference is https://me.ucsb.edu/~moehlis/APC591/tutorials/tutorial7/node2.html

The key observation is that the STEP SIZES of the Weiner process are Gaussian distribution, so you can use the RAND function in the DATA step to simulate the step sizes. In SAS/IML, you can use the RANDGEN or RANDFUN functions to generate the normally distributed step sizes.

proc iml;
/* simulate N time steps from Weiner process on interval [0,Tf] */
N = 1000;
Tf = 5;
call randseed(12345);

/* algorithm: step sizes are normally distributed */
N = N-1;              /* X(0)=0, so N-1 random values */
dt = Tf/N;
sd = sqrt(dt);
steps = randfun(N, "Normal", 0, sd); /* random step sizes */
x = 0 // cusum(steps);               /* X(0)=0 */

Frequent Contributor
Posts: 82

Re: How to simulate a Weiner process in SAS

Thank you. I copied your code but am getting:

ERROR: Invocation of unresolved module RANDFUN

SAS Super FREQ
Posts: 3,420

Re: How to simulate a Weiner process in SAS

Then replace that line with

steps = j(N,1);

call randgen(steps, "Normal", 0, sd); /* random step sizes */

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 669 views
  • 0 likes
  • 4 in conversation