close all;
clear all;


% initialize
alpha_mean = 0.7;
s0 = 100;
std_v = 1;
sigma = 1.5;
T = 1;
time_step = 100;
dt = T / time_step;

yeta=0.07;



% genetate stock price
alpha(1:2)=alpha_mean+std_v*randn(1,2);
alpha(3)=alpha_mean;
t=0:dt:T;
for num=1:3
    
    X=ones(time_step+1,1);
    Y=X(1);
    s=s0+alpha(num)*t+sigma*sqrt(t).*randn(1,time_step+1); 
    
    figure(1);
    if num==1
    plot(t,s,'b','linewidth',2);hold on;
    elseif num==2
    plot(t,s,'black','linewidth',2);hold on;
    end 
    
    alpha_star = (alpha_mean*sigma^2+std_v^2*(s-s0))./(sigma^2+std_v^2*t);  
    for n=1:time_step   
        alpha_c=4*yeta*Y/(T-t(n))^2;
        if alpha_star(n)<-alpha_c
            v(n)=0;
        elseif alpha_star(n)>alpha_c
               v(n)=sqrt(alpha_star(n)*X(n)/yeta);
        else
            v(n)=X(n)/(T-t(n))+alpha_star(n)/(4*yeta)*(T-t(n));
        end          
        Y=Y-v(n)*dt;
        X(n+1)=Y;
        if Y<1e-6
            break;
        end
    end
    figure(2);
    m=0:dt:n*dt;
    if  num<3
    plot(m,X(1:n+1),'linewidth',2); hold on;
    plot(n*dt,X(n+1),'ro');
    ylim([0,1]);
    else
    plot(m,X(1:n+1),'--r','linewidth',2); hold on;
    plot(n*dt,X(n+1),'ro');
    ylim([0,1]); 
    end
end



