1 / 28

Simulation

Simulation. Downloads. Today’s work is in: matlab_lec03.m Datasets we need today: data_msft.m. Histograms: hist(). >>X=[2*ones(3,1); 3*ones(5,1); 7*ones(4,1)]; >>subplot(2,1,1); >>hist(X); %draws histogram of X >>subplot(2,1,2); >>hist(X,[0:.25:10]); %draws histogram of X

rhian
Download Presentation

Simulation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Simulation

  2. Downloads • Today’s work is in: matlab_lec03.m • Datasets we need today: data_msft.m

  3. Histograms: hist() >>X=[2*ones(3,1); 3*ones(5,1); 7*ones(4,1)]; >>subplot(2,1,1); >>hist(X); %draws histogram of X >>subplot(2,1,2); >>hist(X,[0:.25:10]); %draws histogram of X %on the interval [0 10] with bins of size .25 • Default is a histogram with 20 bins, from min(X) to max(X) • hist(X,n) will keep default min and max but make n bins

  4. Uniform rv: rand() • A uniform random variable (rv) has equal probability of occurring at any point on its support >>T=1000; >>X=rand(T,1); %creates a matrix of size %(Tx1) of uniform rv’s on (0,1) >>a=5; b=50; >>Y=a+b*rand(T,1); %creates a matrix of %size (Tx1) of unifrom rv’s on (a,a+b)

  5. Using hist() and rand() >>subplot(3,1,1); >>hist(X,[-.25:.025:1.25]); %draws %histogram of X >>subplot(3,1,2); >>hist(Y,[.9*a:(b/30):1.1*(a+b)]); %draw >>T=100000; Z=a+b*rand(T,1); >>subplot(3,1,3); >>hist(Z,[.9*a:(b/30):1.1*(a+b)]); subplot;

  6. Law of Large Numbers (LLN) • Note that E[X]=.5 >>X=rand(5,1); disp(mean(X)); >>X=rand(10,1); disp(mean(X)); >>clear Y; for i=1:200; Y(i)=mean(rand(i,1)); end; >>plot(Y); • How quickly does Y tend to .5? CLT will tell us

  7. Discrete rv’s • Oftentimes you will need to simulate rv’s with a small number of possible outcomes • You can use the uniform rv to create discrete rv’s (ie coinflips) %x=1 with probability p and 0 with (1-p) >>p=.25; if rand(1,1)<p; x=1; else; x=0; end; %x=3 with p=.25, 2 with p=.5, 1 with p=.25 >>y=rand(20,1); >>x=3.*(y>.75)+2*(y<=.75 & y>.25)+1*(y<=.25); >>hist(x,[0:.25:4]);

  8. Central Limit Theorem (CLT) • Tells us that means of many rv’s converge to a normal rv • This is why normals are so common in nature! • Let x=uniform rv • Let y=0 if x<.3 and 1 if x>=.3 • Let z be the mean of j binomial rv’s • Note that z itself is a rv, in particular, when j=1, y=z

  9. CLT (cont’d) • Think of y as a biased coin flip • Think of z as the mean of j coinflips >>A=[1 5 10 25 50 100]; for k=1:6; j=A(k); for i=1:5000; x=rand(j,1); y=(x<.3)*0+(x>=.3)*1; z(i,k)=mean(y); end; end;

  10. CLT (con’d) >>for k=1:6; subplot(3,2,k); hist(z(:,k),50); end; subplot; • We will now have 6 plots. Each will have a histogram of rv z, which is a mean of j binomial rv’s y. • What do distributions with high j look like? • Ever wonder why distribution of human heights looks like a normal rv?

  11. Normal rv:randn() • Works same as uniform, but produces a normal of mean 0, standard deviation 1 >>X=randn(10000,1); >>subplot(2,1,1); hist(X,50); • To produce normal rv’s with different mean or variance, just skew and shift >>m=1.1; s=.16; X=m+s*randn(10000,1); >>subplot(2,1,2); hist(X,50);

  12. A simple security process • R(t)=mu+sigma*x(t) (x is normal, R is normal) • 10% annual return and 30% annual standard deviation are quite typical for equity >>T=10000; mu=1.1; sigma=.3; >>x=randn(T,1); >>R=mu+sigma*x; >>subplot; hist(R,50); • Do you notice anything “strange” about this process or the histogram?

  13. A better process • R=exp(mu+sigma*X(t)) (R is log-normal) • exp(x) is approximately 1+x, so if want mean of process approximately 1.1, you need x to be approximately .1 • Can this return be negative?

  14. Calibration Issue: Jensen’s Inequality • Jensen’s Inequality: E[f(X)] ≠ f(E[X]) • Stein’s Lemma: E[exp(X)]=exp(m+.5*s2) where X is normal rv with mean m, standard deviation s • If you want R to have mean exp(m), than make sure rv X inside of exponent has mean m-.5*s2 • With non-normal processes (ie jumps), things will be more complicated

  15. Calibration Issue: Interval length • The “right” way to simulate is: • X(t) is N(0,1) • dt=1/T where T is the number simulations per period • m is the mean per period, σ is the standard deviation per period • For example, if one period is one year and we are simulating monthly, than T=12, m is the annual mean (ie 10%), σ is the annual standard dev (ie 20%) • When the length of the period (over which we measure parameters) is equal to the simulation period, than T=1 and this reduces to what we saw earlier

  16. Calibrate Microsoft • Get daily microsoft data from CRSP or course website >>data_msft; >>disp(mean(msft(:,4))); >>disp(std(msft(:,4))); %Microsoft returns have a daily mean of %.097% and standard deviation of 2.21% >>subplot(2,1,1); hist(msft(:,4),[-.2:.01:.2]); >>axis([-.2 .2 0 800]); xlabel('Actual');

  17. Simulate Microsoft >>T=3022; >>mu=.00097-.5*.0221^2; sigma=.0221; >>x=randn(T,1); >>r=exp(mu+sigma*x)-1; >>subplot(2,1,2); >>hist(r,[-.2:.01:.2]); axis([-.2 .2 0 800]); >>disp(mean(r)); disp(std(r)); >>disp([skewness(r) skewness(msft(:,4))]); >>disp([kurtosis(r) kurtosis(msft(:,4))]);

  18. Compare simulated to actual • Mean, standard deviation, skewness match well • Kurtosis (extreme events) does not match well • Actual has much more mass in the tails (fat tails) • This is extremely important for option pricing! • CLT fails when tails are “too” fat

  19. Next Week: Modelling Volatility • How to make tales fatter? • Add jumps to log normal distribution to make tails fatter • Jumps also help with modeling default • Make volatility predictable: • Stochastic volatility, governed by state variable • ARCH process (2003 Nobel prize, Rob Engle)

  20. Optional Homework (1) • Create a function that will simulate microsoft stock using a log-normal process • The function should take in arguments mu (mean), sigma (standard deviation), and T (number of days) • Its output should be a vector of daily returns

More Related