function [c,ceq] = fGARCHNB(vPara,vY,mX)
%Funktion zur Kontrolle der Nebenbedingungen eines GARCH-X(1,1)-Modells
%%Input:
%   vPara: (K+4)x1 Vektor, der K exogene Variablen enthält (inkl.
%   Konstante)
%           (K+1): Konstante des GARCH(1,1)-Prozesses
%           (K+2): Koeffizient des GARCH(1,1)-Prozesses
%           (K+3): Koeffizient des ARCH(1,1)-Prozesses
%           
%
%   vY:     Tx1 Vektor der empirischen Daten der abhängigen Variable
%   mX:     T*K Vektor der empirischen Daten der unabhängigen Variablen

%Bestimmen der Anzahl der Perioden(Beobachtungen)
AnzPerioden = size(vY,1);

%Berechnen der Residuen sowie quadrierten Residuen
vResid = vY - mX * vPara(1:end-3);
vResid2 = vResid.^2;

%Varianz der Residuen berechnen
%   Anlegen der Ergebnistabelle
vResidVar = zeros(AnzPerioden,1);
%   Startwert festlegen
vResidVar(1) = sum(vResid2) / AnzPerioden;
%   Setzen der Varianz-Koeffizienten
dOmega = vPara(end-2);
dGamma = vPara(end-1);
dPhi=vPara(end);

%   Berechnen der zeitabhängigen Varianzen
for t=2:AnzPerioden
    vResidVar(t) = dOmega + dGamma * vResidVar(t-1) + dPhi * vResid2(t-1);
end

%Kontrolle: Varianz der abhängigen Variable
dVarY = var(vY);
dVarEps = var(vResid);
dMinVar = 0.000001;

%Konsistenzbedingungen
%Die Varianz der abhängigen Variable muss größer als Null oder dMinVar
%sein. Außerdem muss die Varianz der Residuen kleiner als die der
%abhängigen Variable sein
c = [-vResidVar + dMinVar; dVarEps - dVarY];
%Die zeitabhängige Varianz der Residuen muss im Mittel gleich der
%unbedingten Varianz sein
ceq = mean(vResidVar) - dVarEps;
end

