Commit 464443ac authored by Wenchao Zhang's avatar Wenchao Zhang ✍️
Browse files

add hw code

parent de5e5580
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
clf
clear all
s0 = 5;%initial price
n = 10; %% n sample paths 
dur = 1000;
step = 10000;
dt = dur/step;
Vect = linspace(0,dur,step); 
u = 0.10;
sigma = 0.3;
r = randn(n,step);
cr = cumsum(r,2);
increm = u*dt+sigma*sqrt(dt)*r-0.5*sigma^2*dt*r.^2;

logRatio = (ones(n,1)*Vect)*(u - sigma^2/2) + sigma*sqrt(dt)*cr;

s = s0*exp(logRatio);
ssq = s.^2;
plot(Vect',ssq');


+31 −0
Original line number Diff line number Diff line

% Plot discrete sample paths
% test timescale invariance


clear all;
close all;
clc;

seed = rng;
%%%%%%%%% Problem parameters 
%%%%%%%%%%% 
S = 1; 
mu = 0.05; 
sigma = 0.2; 
L = 1e2; 
T = 1e-3; 
dt = T/L; 
M = 1e1; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tvals = [0:dt:T];

% Hint: cumprod, cumulative product

Svals = S*cumprod(exp((mu-0.5*sigma^2)*dt + sigma*(dt)^(1/4)*randn(M,L)),2); 
Svals = [S*ones(M,1) Svals]; 
% add initial asset price
figure;
plot(tvals,Svals);
title([num2str(M) ' asset paths']);
xlabel('t'), ylabel('S(t)')
+31 −0
Original line number Diff line number Diff line

% Plot discrete sample paths
% test timescale invariance


clear all;
close all;
clc;

seed = rng;
%%%%%%%%% Problem parameters 
%%%%%%%%%%% 
S = 1; 
mu = 0.05; 
sigma = 0.2; 
L = 1e2; 
T = 1e-3; 
dt = T/L; 
M = 1e1; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tvals = [0:dt:T];

% Hint: cumprod, cumulative product

Svals = S*cumprod(exp((mu-0.5*sigma^2)*dt + sigma*dt*randn(M,L)),2); 
Svals = [S*ones(M,1) Svals]; 
% add initial asset price
figure;
plot(tvals,Svals);
title([num2str(M) ' asset paths']);
xlabel('t'), ylabel('S(t)')
+23 −0
Original line number Diff line number Diff line
e1=20;
e3=40;
e2=(e1+e3)/2;
s=linspace(0,80,1000);
plot(s,max(s-e1,0),'b');
hold on; 
plot(s,max(s-e3,0),'b');
hold on;
plot(s,max(s-e1,0)+max(s-e3,0)-2*max(s-e2,0),'r');
hold on;
em=max(max(s-e1,0)+max(s-e3,0)-2*max(s-e2,0));
plot(line([e2,e2],[em,0]));

xlabel('S(T)');
ylabel('V(T)')
title('Payoff of hw1');
axis([0 80 0 40]);
text(20,1,'E1');
text(30,1,'E2');
text(40,1,'E3');


+46 −0
Original line number Diff line number Diff line
function [C, Cdelta, Cgamma, Cvega, Crho, Ctheta, P, Pdelta, Pgamma, Pvega, Prho, Ptheta] = lect7_1(S,E,r,sigma,tau)
%
%
% Program for Chapter 10 This is a MATLAB function
% Input arguments: S = asset price at time t E = exercise price
% r = interest rate
% sigma = volatility
% tau = time to expiry (T-t)
% Output arguments: C = call value, Cdelta = delta value of call Cvega = vega value of call
% P = Put value, Pdelta = delta value of put Pvega = vega value of put
% function [C, Cdelta, Cvega, P, Pdelta, Pvega] = lect7_1(S,E,r,sigma,tau)
% 
S=1,E=1.5,r=0.05,sigma=0.2,tau=1; 

if tau > 0
    d1 = (log(S/E) + (r + 0.5*sigma^2)*(tau))/(sigma*sqrt(tau)); 
    d2 = d1 - sigma*sqrt(tau);
    N1 = 0.5*(1+erf(d1/sqrt(2)));
    N2 = 0.5*(1+erf(d2/sqrt(2)));
    C = S*N1-E*exp(-r*(tau))*N2;
    Cdelta = N1;
    Cgamma = exp(-0.5*d1^2)/(S*sigma*sqrt(2*pi*tau));
    Cvega = S*sqrt(tau)*exp(-0.5*d1^2)/sqrt(2*pi);
    Crho = tau*E*exp(-r*tau)*N2;
    Ctheta = -S*sigma/(2*sqrt(tau))*exp(-0.5*d1^2)/sqrt(2*pi)- r*E*exp(-r*tau)*N2;
    P = C + E*exp(-r*tau) - S;
    Pdelta = Cdelta - 1;
    Pgamma = Cgamma;
    Pvega = Cvega;
    Prho = Crho - tau*E*exp(-r*tau);
    Ptheta = Ctheta + r*E*exp(-r*tau);
else
    C = max(S-E,0);
    Cdelta = 0.5*(sign(S-E) + 1); 
    Cgamma = 0;
    Cvega = 0;
    Crho = 0;
    Ctheta = 0;
    P = max(E-S,0);
    Pdelta = Cdelta - 1;
    Pgamma = 0;
    Pvega = 0;
    Prho = 0;
    Ptheta = 0;
end
disp([C, Cdelta, Cgamma, Cvega, Crho, Ctheta, P, Pdelta, Pgamma, Pvega, Prho, Ptheta])
 No newline at end of file
Loading