function [V_t]=drawVectorV_t(y_In,V_t,thetaIn) % This generates a draw of the variance vector conditonal on the % observations and the theta vector % Auteur: Lars Stentoft %y_In = Vecteur des Log-RETurn centrés à 0 %V_t = vecteur des log-variances %ThetaIn = vecteurs des 3 paramètres alpha, beta et sigma % assigning parameter values v(t+1) = alpha + beta*v(t) * sigma*N(0,1) omega=thetaIn(1); %alpha phi=thetaIn(2); %beta sigmasq=thetaIn(3); %sigma tempOBS=length(V_t); % updating the volatility vector V_t(1)=(V_t(2)-omega)/phi; %L'espérance de v(0) est choisie autrement que les autres for t_count=2:-1:1 %On le fait deux fois: pour les t pairs et les t impairs vtm1=[0; V_t(1:end-1)]; vtp1=[V_t(2:end); 0]; mt=.5*(vtm1+vtp1); %Vecteur de 0.5(v(t+1) + v(t-1)) et=randn(tempOBS,1); %Vecteur de N(0,1) prop=mt+sigmasq*et; %Proposition pour "updater" le vecteur v l_c=-.5*(V_t+exp(-V_t).*y_In.^2+(V_t-omega-phi*vtm1).^2/sigmasq^2+(vtp1-omega-phi*V_t).^2/sigmasq^2); l_p=-.5*(prop+exp(-prop).*y_In.^2+(prop-omega-phi*vtm1).^2/sigmasq^2+(vtp1-omega-phi*prop).^2/sigmasq^2); q_c=-.5*(V_t-mt).^2/sigmasq^2; q_p=-.5*et.^2; alpha=l_p-l_c+q_c-q_p; %log probabilité d'acceptation du nouveau scénario u=log(rand(tempOBS,1)); %vecteur de log uniformes accp=(alpha > u); %vecteur de décision 1==accepte le nouveau scénario, 0==rejet entries=t_count:2:tempOBS; V_t(entries)=accp(entries).*prop(entries)+(1-accp(entries)).*V_t(entries); end V_t(tempOBS)=omega+phi*V_t(tempOBS-1); %La dernière entrée est choisie différemment des autres