/* Geometric Brownian Motion */ new; cls; mu=0.1; sig=0.3; S0=50; T=1; n=252; S=S0|gbm(mu,sig,S0,T,n); library pgraph; graphset; xy(seqa(0,T/n,n+1),S); proc gbm(mu,sig,S0,T,n); local delt,Z,S,i; delt=T/n; Z=rndn(n,1); S=zeros(n,1); S[1]=S0*exp((mu-1/2*sig^2)*delt+sig*sqrt(delt)*Z[1]); i=1; do while i<=n-1; S[i+1]=S[i]*exp((mu-1/2*sig^2)*delt+sig*sqrt(delt)*Z[i+1]); i=i+1; endo; retp(S); endp;