Ana səhifə

Orf335 Precept matlab basics Feb 15th, 2011 Preparatory Steps


Yüklə 34.17 Kb.
tarix25.06.2016
ölçüsü34.17 Kb.
ORF335 Precept - MATLAB Basics

Feb 15th, 2011


Preparatory Steps:

  1. Open MATLAB

  2. Locate “Command Window”

  3. Check “Current Directory”

  4. 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