clf ;
randn('seed',53275111)
fsize = 14 ;
E = 100 ;
T = 1 ;
r = .06 ;
sigma = .1;
ngrid = 200 ;
s0 = 100 ;
t=0 ;
% Set up storage
pricecallvec = ones(ngrid,1) ;
priceputvec = pricecallvec ;
tvec = pricecallvec ;
s0vec = pricecallvec ;
Thetavec = pricecallvec ;
Deltavec = pricecallvec ;

for i = 1:(ngrid+1) ;
    if t < 1 ;
        [pr,pr2,d1,d2,Delta,Gamma,Theta] = BlackScholes01(s0,E,T-t,r,sigma) ;
    else ;
        pr = max([0,s0-E]) ;
        pr2 = max([0,E-s0]) ;
    end ;
    pricecallvec(i) = pr ;
    priceputvec(i) = pr2 ;
    Deltavec(i) = Delta ;
    Thetavec(i) = Theta ;
    tvec(i) = t ;
    s0vec(i) = s0 ;
    t = t+1/ngrid ;
    s0 = s0* exp(sigma*randn(1,1)/sqrt(ngrid) ) ;
end ;

stockreturn = diff(log(s0vec)) ;
callreturn = diff(log(pricecallvec)) ;
putreturn = diff(log(priceputvec)) ;
stockgrossreturn = exp(stockreturn) ;
callgrossreturn = exp(callreturn) ;
grossratio = callgrossreturn./stockgrossreturn ;
ratiocall = callreturn./stockreturn ;
ratioput = putreturn ./ stockreturn ;

s0vec1=s0vec ;
pricevec1 = pricecallvec ;
priceputvec1 = priceputvec ;

s0 = 100 ;
t=0 ;
pricecallvec = zeros(ngrid,1) ;
priceputvec = pricecallvec ;
s0vec = pricecallvec ;
tvec = pricecallvec ;
s0vec = pricecallvec ;

for i = 1:(ngrid+1) ;
    if t < 1 ;
        [pr,pr2] = BlackScholes01(s0,E,T-t,r,sigma) ;
    else ;
        pr = max([0,s0-E]) ;
        pr2 = max([0,E-s0]) ;
    end ;
    pricecallvec(i) = pr ;
    priceputvec(i) = pr2 ;
    tvec(i) = t ;
    s0vec(i) = s0 ;
    t = t+1/ngrid ;
    s0 = s0* exp(sigma*randn(1,1)/sqrt(ngrid) ) ;
end ;

s0vec2 = s0vec ;
pricevec2 = pricecallvec ;
priceputvec2 = priceputvec ;

figure(1)
clf
subplot(3,1,1) ;
p=plot(tvec,s0vec1,tvec,s0vec2,'--',tvec, 0*tvec + E) ;
set(p(1),'color','blue') ;
set(p(2),'color','red') ;
set(p(3),'color','black') ;
set(p,'linewidth',2) ;
set(gca,'xlim',[0,1]) ;
% xlabel('time','fontsize',fsize-2) ;
set(gca,'fontsize',fsize) ;
ylabel('stock price','fontsize',fsize) ;
grid ;

subplot(3,1,2) ;
p=plot(tvec,pricevec1,tvec,pricevec2,'--') ;
set(p,'linewidth',2) ;
set(gca,'xlim',[0,1]) ;
% xlabel('time','fontsize',fsize-2) ;
set(gca,'fontsize',fsize) ;
ylabel('call price','fontsize',fsize) ;
set(gca,'ylim',[0,max([pricevec1;pricevec2])]) ;
set(p(1),'color','blue') ;
set(p(2),'color','red') ;
grid ;

subplot(3,1,3) ;
p=plot(tvec,priceputvec1,tvec,priceputvec2,'--') ;
set(p,'linewidth',2) ;
set(gca,'xlim',[0,1]) ;
xlabel('time','fontsize',fsize) ;
set(gca,'fontsize',fsize) ;
ylabel('put price','fontsize',fsize) ;
set(gca,'ylim',[0,max([priceputvec1;priceputvec2])]) ;
set(p(1),'color','blue') ;
set(p(2),'color','red') ;
grid ;

figure(2)
clf
plot(tvec(2:ngrid),ratiocall(1:ngrid-1))
set(gca,'xlim',[0 1]) 
set(gca,'fontsize',fsize) ;
ylabel('call return/stock return','fontsize',fsize) ;
xlabel('time','fontsize',fsize) ;
set(gca,'ylim',[-30 60]) ;


figure(3)
clf
plot(tvec(2:ngrid+1),ratioput)
set(gca,'xlim',[0 1]) ;
set(gca,'fontsize',fsize) ;
ylabel('our return/stock return','fontsize',fsize) ;
xlabel('time','fontsize',fsize) ;
set(gca,'ylim',[-120 60]) ;

