Quiero utilizar un script de Matlab para calcular los precios Heston Nandi GARCH. Encontré un script apropiado en línea y pide la "varianza incondicional" como entrada. ¿Cómo puedo calcular la volatilidad incondicional apropiada? He encontrado esta fórmula en línea: $$\sigma^2 = s^2 = \frac{1}{n-1} * \sum_{t=1}^n [r^2_t] $$
¿Es éste el apropiado para usar? ¿Tomo la varianza según esta fórmula para todos los rendimientos de los activos hasta el momento de la opción que estoy tratando de valorar?
Guión completo: `función PrecioOpción=HestonNandi(S_0,X,Sig_,T,r)
%%%%%%%%%%%%% % esta función calcula el precio de la opción Call basándose en la fórmula de valoración de opciones GARCH de Heston y Nandi (2000). Los datos de entrada de la función son: el precio actual del activo subyacente, el precio de ejercicio, % varianza incondicional del activo subyacente, tiempo hasta el vencimiento en días, % y tipo de interés diario libre de riesgo. %%%%%%%%%%%
% Autor: Ali Boloorforoosh % correo electrónico: a_bol@jmsb.concordia.ca % Fecha: Nov. 1,08
%%%%% sample inputs %%%%%
% S_0=100; stock price at time t
% X=100; strike prices
% Sig_=.04/252; unconditional variances per day
% T=30; option maturity
% r=.05/365; daily risk free rate
Precio de la opción=.5*S_0+(exp(-r*T)/pi) quad(@Integrand1,eps,100)-X exp(-r T) (.5+(1/pi)*cuadro(@Integrand2,eps,100));
% function Integrand1 and Integrand2 return the values inside the
% first and the second integrals
function f1=Integrand1(phi)
f1=real((X.^(-i*phi).*charac_fun(i*phi+1))./(i*phi));
end
function f2=Integrand2(phi)
f2=real((X.^(-i*phi).*charac_fun(i*phi))./(i*phi));
end
% function that returns the value for the characteristic function
function f=charac_fun(phi)
phi=phi'; % the input has to be a row vector
% GARCH parameters
lam=2;
lam_=-.5; % risk neutral version of lambda
a=.000005;
b=.85;
g=150; % gamma coefficient
g_=g+lam+.5; % risk neutral version of gamma
w=Sig_*(1-b-a*g^2)-a; % GARCH intercept
% recursion for calculating A(t,T,Phi)=A_ and B(t,T,Phi)=B_
A(:,T-1)=phi.*r;
B(:,T-1)=lam_.*phi+.5*phi.^2;
for i=2:T-1
A(:,T-i)=A(:,T-i+1)+phi.*r+B(:,T-i+1).*w-.5*log(1-2*a.*B(:,T-i+1));
B(:,T-i)=phi.*(lam_+g_)-.5*g_^2+b.*B(:,T-i+1)+.5.*(phi-g_).^2./(1-2.*a.*B(:,T-i+1));
end
A_=A(:,1)+phi.*r+B(:,1).*w-.5*log(1-2.*a.*B(:,1)); % A(t;T,phi)
B_=phi.*(lam_+g_)-.5*g_^2+b.*B(:,1)+.5*(phi-g_).^2./(1-2.*a.*B(:,1)); % B(t;T,phi)
f=S_0.^phi.*exp(A_+B_.*Sig_);
f=f'; % the output is a row vector
end
Finalizar
`
0 votos
Esto podría ayudarte: quant.stackexchange.com/questions/26357/
0 votos
Gracias por el enlace, muestra la relación de $ \omega $ y la varianza incondicional, que el script que he publicado utiliza para calcular $ \omega $ . Sin embargo, ¿cómo puedo encontrar la varianza incondicional que se requiere como entrada? Gracias.
0 votos
Esto podría ayudarte: quant.stackexchange.com/questions/26076/
0 votos
Gracias por su rápida respuesta. ¿Significa esto que puedo utilizar simplemente la varianza de muestra de, por ejemplo, los últimos 20 valores de los rendimientos de los activos logarítmicos como entrada y debería recibir un resultado preciso? ¿Es esta la forma en que se implementa normalmente el HN-GARCH? Perdón por todas las preguntas, he buscado esto pero no pude encontrar ninguna información que pareciera servir para el script que quiero usar.
0 votos
Así que supongo que lo que realmente estoy preguntando es cómo implementar el código específico anterior. ¿Qué uso para $\sigma$ ?
0 votos
Algunos posts relacionados de Cross Validated: "¿Qué es la variación a largo plazo?" y "Estimación de la varianza incondicional en series temporales" .