function L = Dynamik_Grundmodell(del) 

del_pi=del(1);
del_x=del(2);
Seed = 1;   % Zufallsgenerator
Q=20;       % Burn-in Phase
P=100;      % Anzahl der Perioden nach der Burn-in Phase
K=1;        % Anzahl der Durchl?ufe
shock=13;   % Schockperiode
randn('seed', 1) % Zufallsgenerator

T=Q+P;

run('Parameter_Grundmodell.m')

% Parameter für Erwartungsbildungen; in globale Parameterdatei überführen
alp_pi  = 0.2; % Extraplolieren
alp_x   = 0.2; % Extraplolieren
xquer   = 0;   % Outputgap wird auf 0 normiert
pistern = 0;   % Zielinflationsrate wird auf 0 normiert


% Random Impulse
RI = randn(3,T);

nu  = RI(1,:)*noise; % Nachfrageschock
u   = RI(2,:)*noise; % Kostenschock
k   = RI(3,:)*noise; % Zinsschock


% Startwerte
output = zeros(1,T);
inflation = zeros(1,T);
interest = zeros(1,T);

% Attraktivitätswerte
attr_x_tar = zeros(1,T);
attr_x_ext = zeros(1,T);
attr_x_sta = zeros(1,T);

attr_pi_tar = zeros(1,T);
attr_pi_ext = zeros(1,T);
attr_pi_sta = zeros(1,T);

% Anteile der drei Heuristiken
frac_x_tar = ones(1,T)/3;
frac_x_sta = ones(1,T)/3;
frac_x_ext = ones(1,T)/3;

frac_pi_tar = ones(1,T)/3;
frac_pi_sta = ones(1,T)/3;
frac_pi_ext = ones(1,T)/3;

% Erwartungen der drei Heuristiken
E_x_tar = zeros(1,T);
E_x_sta = zeros(1,T);
E_x_ext = zeros(1,T);

E_pi_tar = zeros(1,T);
E_pi_sta = zeros(1,T);
E_pi_ext = zeros(1,T);


% Simulationsresultate
for t = 3:T
        
    
    
    % Attraktivitätswerte der Erwartungsbildungen
    attr_x_tar(t) = - (output(t-1) - E_x_tar(t-2))^2 + zet * attr_x_tar(t-1);
    attr_x_ext(t) = - (output(t-1) - E_x_ext(t-2))^2 + zet * attr_x_ext(t-1);
    attr_x_sta(t) = - (output(t-1) - E_x_sta(t-2))^2 + zet * attr_x_sta(t-1);
    
    attr_pi_tar(t) = - (inflation(t-1) - E_pi_tar(t-2))^2 + zet * attr_pi_tar(t-1);
    attr_pi_ext(t) = - (inflation(t-1) - E_pi_ext(t-2))^2 + zet * attr_pi_ext(t-1);
    attr_pi_sta(t) = - (inflation(t-1) - E_pi_sta(t-2))^2 + zet * attr_pi_sta(t-1);
    
    % Anteile der Heuristiken
    frac_x_all    = exp(pphi * attr_x_tar(t)) + exp(pphi * attr_x_sta(t)) + exp(pphi * attr_x_ext(t));
    frac_x_tar(t) = exp(pphi * attr_x_tar(t)) / frac_x_all;
    frac_x_sta(t) = exp(pphi * attr_x_sta(t)) / frac_x_all;
    frac_x_ext(t) = exp(pphi * attr_x_ext(t)) / frac_x_all;
    if sum(isnan([frac_x_tar(t) frac_x_sta(t) frac_x_ext(t)])) > 0
        frac_x_tar(t) = 0; 
        frac_x_sta(t) = 0;
        frac_x_ext(t) = 0;
        if attr_x_tar(t) > attr_x_sta(t) && attr_x_tar(t) > attr_x_ext(t) % Set values manually
           frac_x_tar(t) = 1; 
        elseif attr_x_sta(t) > attr_x_ext(t) && attr_x_sta(t) > attr_x_tar(t)
           frac_x_sta(t) = 1;
        else
           frac_x_ext(t) = 1;
        end
    end
    
    frac_pi_all    = exp(pphi * attr_pi_tar(t)) + exp(pphi * attr_pi_sta(t)) + exp(pphi * attr_pi_ext(t));
    frac_pi_tar(t) = exp(pphi * attr_pi_tar(t)) / frac_pi_all;
    frac_pi_sta(t) = exp(pphi * attr_pi_sta(t)) / frac_pi_all;
    frac_pi_ext(t) = exp(pphi * attr_pi_ext(t)) / frac_pi_all;
    if sum(isnan([frac_pi_tar(t) frac_pi_sta(t) frac_pi_ext(t)])) > 0
        frac_pi_tar(t) = 0; 
        frac_pi_sta(t) = 0;
        frac_pi_ext(t) = 0;
        if attr_pi_tar(t) > attr_pi_sta(t) && attr_pi_tar(t) > attr_pi_ext(t) % Set values manually
           frac_pi_tar(t) = 1; 
        elseif attr_pi_sta(t) > attr_pi_ext(t) && attr_pi_sta(t) > attr_pi_tar(t)
           frac_pi_sta(t) = 1;
        else
           frac_pi_ext(t) = 1;
        end
    end
    
    % Zweidimensionales Lösungssystem für die Inflation und Outputgap 
    A = [1-bet*frac_pi_ext(t)*(1+alp_pi)   -gam;
        del_pi-frac_pi_ext(t)*(1+alp_pi)   sig-sig*frac_x_ext(t)*(1+alp_x)+del_x];
    
    B = [bet*(frac_pi_sta(t)-alp_pi*frac_pi_ext(t))  0 ;
        frac_pi_sta(t)-alp_pi*frac_pi_ext(t)         sig*(frac_x_sta(t)-alp_x*frac_x_ext(t))];
    
    Z_backw = [inflation(t-1); output(t-1)];
    Z       = inv(A)*(B*Z_backw) + inv(A)*[nu(t) ; sig*u(t)-k(t)] ;
          
    % Lösungspfade
    inflation(t) = Z(1); 
    output(t) = Z(2);
    interest(t) = del_pi*inflation(t) + del_x*output(t) + RI(3,t);
    
    % Erwartungen tar, sta, ext
    E_x_tar(t) = xquer;
    E_x_sta(t) = output(t-1);
    E_x_ext(t) = output(t) + alp_x * (output(t) - output(t-2));
    
    E_pi_tar(t) = pistern;
    E_pi_sta(t) = inflation(t-1);
    E_pi_ext(t) = inflation(t) + alp_pi * (inflation(t) - inflation(t-1)); 
end
    % Ergebnisse sichern 
    res.infl = inflation(0+1:T);
    res.outp = output(0+1:T);
    res.inte = interest(0+1:T); 
    
    res.xsta = E_x_sta(0+1:T);
    res.xext = E_x_ext(0+1:T);
    res.pista = E_pi_sta(0+1:T);
    res.piext = E_pi_ext(0+1:T);
    
    res.frac_pi_tar = frac_pi_tar(0+1:T); 
    res.frac_pi_sta = frac_pi_sta(0+1:T); 
    res.frac_pi_ext = frac_pi_ext(0+1:T); 
    res.frac_x_tar  = frac_x_tar(0+1:T); 
    res.frac_x_sta  = frac_x_sta(0+1:T); 
    res.frac_x_ext  = frac_x_ext(0+1:T); 
    
    res.E_pi_tar    = E_pi_tar(0+1:T);
    res.E_pi_sta    = E_pi_sta(0+1:T);
    res.E_pi_ext    = E_pi_ext(0+1:T);
    
    res.E_x_tar    = E_x_tar(0+1:T);
    res.E_x_sta    = E_x_sta(0+1:T);
    res.E_x_ext    = E_x_ext(0+1:T);

    % Anteile der optimistischen und pessimistischen Erwartungen; für
% pessimistische Erwartungen: 0 für optimistische 1
 E1=logical(res.xsta>0);
 E2=logical(res.xext>0);
 E3= res.E_x_tar +0.5;
 
 E4=logical(res.pista>0);
 E5=logical(res.piext>0);
 E6= res.E_pi_tar + 0.5;
 
 F1=res.frac_x_sta.* E1;
 F2=res.frac_x_ext.* E2;
 F3=res.frac_x_tar.* E3;
 F4=res.frac_pi_sta.*E4;
 F5=res.frac_pi_ext.*E5;
 F6=res.frac_pi_tar.*E6;
 
 W_x=F1+F2+F3;
 W_pi=F3+F4+F6;
 
 res.W_x = W_x(0+1:T);
 res.W_pi= W_pi(0+1:T);
 %Plot_Grundmodell(res);
 size(inflation)
 size(output)
 size(interest)
 L = var(inflation)+1/2*var(output)+var(interest)
end







