Ana səhifə

# Orf335 Precept matlab basics Feb 15th, 2011 Preparatory Steps

 tarix 25.06.2016 ölçüsü 34.17 Kb.
 ORF335 Precept - MATLAB Basics Feb 15th, 2011 Preparatory Steps: Open MATLAB Locate “Command Window” Check “Current Directory” Open new m-file: File ( New(M-file %%%%%%% Basic Commands %%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% General clear %free up system memory help plot %display help for the command 'plot' % Ctrl+C % To break a computation / infinite loop %%%% Numbers 1+4*sqrt(16) a=max(3,sqrt(8)); result=exp(log(3)); result^(1/2) sin(pi*5/3) %%%% Vectors x=[1;2;4] y=[2;3;4] length(x) x(1) x(1:2) x' x_transp=[1 2 4] % Entry by entry operation x.*y; %entry by entry product % Regular operation x*y' %x*y; % This is wrong x.^y % Entry by entry power %%%% Matrices A=[1 1 1 ; 1 2 3 ; 1 3 6] %3 by 3 matrix size(A) % dimensions of A, which is 3*3 Q = ones(3,3) % Matrix with all entries 1 P = zeros(size(A)) % Matrix with the size of A with all entries 0 B = A' % transpose of A C1 = A * B % Regular matrix multiplication C2 = A .* B % Entry by entry X = inv(A) I = inv(A) * A %%%% Randomness n=5; u=rand(n); % matrix of n by n independent realizations % of a uniform in [0,1] v_0=randn(n); % matrix of n by n independent realizations % of a standard gaussian N(0,1) mu=1; sigma=0.3; v=mu+sigma*rand(n); % matrix of n by n independent realizations % of a gaussian N(mu,sigma^2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% Loops, Tests...%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear; %%%% Tests x=randn(1); if x>0 disp('Pick is positive'); disp(x); else disp('Pick is negative and absolute value is'); disp(abs(x)); end %%%% Logical operator a=1; b=0; (a==1) (b~=0) % '&' is AND (a==1) & (b~=2) % '|' is OR (a>-3) | (b==0) %%%% Loops n=5; sum=0; for i=1:5 sum=sum+i; end disp(sum) disp(n*(n+1)/2) % when step is not 1 % for x=0:0.02:5 i=0; sum=0; while (i i=i+1; sum=sum+i; end disp(sum) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% Plots...%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x=0:0.01:2*pi; y=zeros(length(x),1); for i=1:length(x) y(i)=sin(x(i)); end figure(1) plot(y) figure(2) plot(x,y,'b--') title('Sin(x)') xlabel('x') ylabel('sin(x)') figure(3) plot(x,y,'r--',x,y.^2,'b') legend('sin x','sin^2 x') % equivalently figure(4) plot(x,y,'r--'); hold on; plot(x,y.^2,'b'); hold off; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Example %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 4-period Binomial tree, starting at 100, with u=1.1, d=0.9, r=0.05, T=1. %set parameter values S0=100; u=1.1; d=0.9; r=0.05; T=1; %create matrix to represent stock price tree (only use top right) S=zeros(5,5); for n=1:5 for j=1:n S(j,n)=d^(j-1)*u^(n-j)*S0; end end S %now the tree `looks’ correct (using the top right half of the matrix), and the indices are consistent with lecture notes, except with time and space swapped (time=1st index in notes, 2nd here), and each shifted by 1 (since can’t use 0). % S_{n,j} in the notes = S(j+1,n+1) here. You can use a different convention if you prefer! %price call option with strike K=93, T=1 (remember to work backwards now): K=93; C=zeros(5,5); for j=1:5 C(j,5)=max(S(j,5)-K,0); %payoffs end C q=(exp(r*T/4)-d)/(u-d) %risk neutral prob for n=4:-1:1 for j=1:n C(j,n)=exp(-r*T/4)*(q*C(j,n+1)+(1-q)*C(j+1,n+1)); end end C %The same looping idea can be used to find the replicating portfolio (a and b) throughout the tree by adding extra lines above. First define additional matrices. %Note that if the question asked only for initial option price, then we could use a vector instead of a matrix for C and avoid storing unnecessary numbers – important when the tree becomes very large! %Finally, explain how the indices of matrices are counted in MATLAB. ie, %they are in this order: [(1:5)' (6:10)' (11:15)' (16:20)' (21:25)'] % %Hence the up up up up stock path is: path1=[1 6 11 16 21]; C(path1) %whereas up down up down is: path2=[1 6 12 17 23]; C(path2) %to get both the stock and call prices along this path: [S(path2); C(path2)] % Each index is 5*n+j+1 where j is number of down steps so far.

Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət