Introducción a la Programación en MATLAB (C8)

Mauricio Tejada

ILADES - Universidad Alberto Hurtado

Agosto 2017

8. Aplicaciones II

8.1 Flujos Vs. Stocks

En esta aplicación vamos a construir una serie de stock de capital para la economía chilena usando el método de inventarios perpetuos. Para ello contamos con información de cuentas nacionales sobre la formación bruta de capital fijo.

El stock de capital de la economía ($K$) se comporta de acuerdo a $$K_{t+1} = K_t - \delta K_t + I_t$$ donde $I$ es la inversión y $\delta$ la tasa de depreciación.

EL primer paso es cargar en Matlab los datos de inversión. Contamos con información anual desde 1960 a 2015:

In [1]:
datos = xlsread('FBKFChile.xlsx','Datos','A2:B57');

tiempo = datos(:,1);
I = datos(:,2);

Usando los datos de inversión y la ecuación de acumulación capital, podemos construir la serie de stock de capital recursivamente:

$$K_{1961} = K_{1960} - \delta K_{1960} + I_{1960}$$$$K_{1962} = K_{1961} - \delta K_{1961} + I_{1961}$$$$\vdots$$$$K_{2015} = K_{2014} - \delta K_{2014} + I_{2014}$$

Los ingredientes necesarios son el capital inicial y la tasa de depreciación. Algunas estimaciones indican que $K_{1960} = 30201645$ y usamos $\delta=0.05$ típicamente aplicada a datos anuales.

In [2]:
T = length(I)
T =

    56

Usamos un Loop for para construir la serie:

In [3]:
K = zeros(T,1);
K(1) = 30201645;
delta = 0.05;

for i=2:T
    K(i) = K(i-1) - delta*K(i-1) + I(i-1);
end;
In [4]:
plot(tiempo,K,'r');
title('Stock Real de Capital de Chile');
ylabel('Miles de Millones de Pesos Encadenados');
xlabel('Año');
set(gca,'FontSize',8);
In [5]:
plot(tiempo,I,'b');
title('Formación Bruta de Capital Fijo en Chile');
ylabel('Miles de Millones de Pesos Encadenados');
xlabel('Año');
set(gca,'FontSize',8);

8.2 Ciclos Económicos

Aplicación tomada de Análisis Económico con Matlab de Gonzalo Fernández de Córdoba Martos.

Conjetura de Slutsky: La economía es impedida de crecer sostenida y establemente a través de una senda de crecimiento lineal y sin fluctuaciones, debido a la actuación de factores exógenos o shocks.

  • Slutsky (1927) estableció las bases de una teoría del ciclo económico en La sumatoria de causas aleatorias como fuente de procesos cíclicos.
  • Frisch (1933) expone ideas similares en Problemas de propagación y problemas de impulsos en la economía.

Supondremos que la economía está sujeta a shocks y que dichos shocks tienen asociados dos estados (llamémoslos, bueno y malo).

El componente cíclico de la producción de la economía puede ser modelado como un procesos persistente (autoregresivo) sujeto a los shocks mencionados:

$$y_t = \rho y_{t-1} + \epsilon_t$$

donde $\epsilon_t=1$ si el estado es bueno y $\epsilon_t=-1$ si el estado es malo. La probabilidad de que la economía se encuentre en un estado bueno es 0.5.

Suponemos que la economía inicialmente se encuentra en su tendencia.

Definimos los parámetros del modelo:

In [6]:
clear all;

T    = 100;
y    = zeros(T,1);
eps  = zeros(T,1);
phi  = 0.9;
prob = 0.5;
y(1) = 0;

Simulamos el comportamiento del ciclo usando un loop for y un condicional if:

In [7]:
for t=2:T
    if rand<=prob 
        eps(t) = 1;
    else
        eps(t) = -1;
    end
    y(t) = phi*y(t-1)+eps(t);
end
In [8]:
plot(y);

Note que la presencia de shocks aleatorio genera ciclos en la serie $y_t$. Si $\epsilon_t=0$ para todo $t$, entonces $y_t=0$ para todo $t$.

La serie no es suave debido a la naturaleza discreta de los estados y el número reducido de ellos.

Repitamos el ejercicio usando 4 estados: $\epsilon_t$ puede tomar los siguientes valores $(-1,-0.5,0.5,1)$ cada uno con probabilidad 0.25.

In [9]:
y   = zeros(T,1);
eps = zeros(T,1);

for t=2:T 
    a=rand;
    if a<=0.25
        eps(t) = 1;
    elseif a<=0.5 
        eps(t) = 0.5;
    elseif a<=0.75 
        eps(t) = -0.5;
    else
        eps(t) = -1;
    end
    y(t) = phi*y(t-1)+eps(t);
end
In [10]:
plot(y);

Suponiendo ahora que los shocks son una variable continua.

In [11]:
y   = zeros(T,1);
eps = zeros(T,1);

for t=2:T 
    eps(t)=0+2*randn(1,1);
    y(t) = phi*y(t-1)+eps(t);
end
plot(y);

8.3 La Curva de Laffer

Aplicación tomada de Análisis Económico con Matlab de Gonzalo Fernández de Córdoba Martos.

En este ejercicio vamos a analizar el efecto de los impuestos en el equilibrio de mercado.

Suponemos que el gobierno impone un impuesto $t$ por unidad de producto en el mercado del bien $A$. Las funciones de demanda y la oferta de mercado están dadas por:

$$p+t = a - b q^D$$$$p = c + d q^S$$

con $p$ el precio, $q^D$ la cantidad demandada, $q^S$ la cantidad ofrecida y $a$, $b$, $c$ y $d$ parámetros.

Usando el equilibrio de mercado $q^D=q^S=q$ y algo de álgebra podemos calcular:

$$q = \frac{a-(c+t)}{b+d}$$$$p_c = \frac{ad+b(c+t)}{b+d}$$$$p_v = \frac{d(a-t)+cb}{b+d}$$

La recaudación del gobierno será:

$$T = tq$$

Usando algo de geometría podemos calcular también los excedentes de los productores, de los consumidores y del gobierno, así como también de la pérdida irrecuperable de bienestar ocasionada por el impuesto.

$$EE = tq$$$$EC = \frac{(a-p_c)q}{2}$$$$EP = \frac{(p_v-c)q}{2}$$$$PIE = \frac{t(q^{*}-q)}{2}$$

con $q^*=\frac{a-c}{b+d}$.

Escribamos una función que, dados los parámetros y el impuesto, calcule el equilibrio y los excedentes.

function out = equilibrio(param,t)

% Calcula el equilibrio de mercado dados los parámetros del modelo

a = param(1);
b = param(2);
c = param(3);
d = param(4);

% Equilibrio
q  = (a-(c+t))/(b+d);
pc = (a*d+b*(c+t))/(b+d);
pv = (d*(a-t)+c*b)/(b+d);

qstar = (a-c)/(b+d); 

%Excedentes
EE = t*q;
EC = ((a-pc)*q)/2;
EP = ((pv-c)*q)/2;
PIE = (t*(qstar-q))/2; 
ET = EC + EP + EE; 

% Guardando resultados
out.q = q;
out.pc = pc;
out.pv = pv;
out.EE = EE;
out.EC = EC;
out.EP = EP;
out.PIE = PIE;
out.ET = ET;

end

Definamos los valores de los parámetros y probemos la función en un contexto sin impuestos:

In [12]:
clear all;

a = 10;
b = 0.1;
c = 2;
d = 0.5;

p = [a; b; c; d];

res_si = equilibrio(p,0);
disp(res_si);
q: 13.3333
     pc: 8.6667
     pv: 8.6667
     EE: 0
     EC: 8.8889
     EP: 44.4444
    PIE: 0
     ET: 53.3333

Ahora supongamos que $t=1$:

In [13]:
res_si.EC
ans =

    8.8889
In [14]:
res_ci = equilibrio(p,1);
disp(res_ci);
q: 11.6667
     pc: 8.8333
     pv: 7.8333
     EE: 11.6667
     EC: 6.8056
     EP: 34.0278
    PIE: 0.8333
     ET: 52.5000

La Curva de Laffer

Recordemos que la Curva de Laffer muestra la relación entre la recaudación y el impuesto. Para encontrar dicha curva tenemos que resolver el equilibrio para varios niveles de $t$. Usamos un loop while.

In [15]:
inc = 0.1;

t = 0;
q = 1;

Imp = [];
Rec = [];

while q>=0
    res = equilibrio(p,t);
    q   = res.q;
    Rec  = [Rec; res.EE];
    Imp  = [Imp; t];
    t = t+inc;
end
In [17]:
plot(Imp,Rec,'r');
title('Curva de Laffer');
xlabel('Impuesto');
ylabel('Recaudación Fiscal');

David Ricardo: Si la función de oferta se hace más y más inelástica entonces la tasa a partir de la cual los ingresos fiscales se hacen decrecientes tiende a infinito.

Repitamos el ejercicio anterior pero para dos curvas de oferta. Definamos nuevamente los parámetros:

In [18]:
a = 10;
b = 0.1;
c = [2 -10];
d = [0.5 1.4];

inc = 0.1;

np = length(d);
T  = 200;

Imp = zeros(T,np);
Rec = zeros(T,np);
    
for j = 1:np;
    p = [a; b; c(j); d(j)];
    
    t = 0;

    for i=1:T;
        res = equilibrio(p,t);
        q   = res.q;
        if q>=0;
            Rec(i,j) = res.EE;
            Imp(i,j) = t;
        else
            Rec(i,j) = 0;
            Imp(i,j) = t;
        end;
        t = t+inc;
    end;
end;
In [19]:
plot(Imp(:,1),Rec(:,1),'r',Imp(:,2),Rec(:,2),'b');
title('Curva de Laffer');
xlabel('Impuesto');
ylabel('Recaudación Fiscal');
legend('Oferta Elástica','Oferta Inelástica');

Veamos como lucen las curvas de oferta:

In [20]:
of1 = @(x) c(1) + d(1)*x;
of2 = @(x) c(2) + d(2)*x;

x = 0:0.1:25;

po1 = of1(x);
po2 = of2(x);

plot(x,po1,'r',x,po2,'b');
title('Curva de Oferta');
xlabel('Cantidad');
ylabel('Precio');
legend('Oferta Elástica','Oferta Inelástica');

8.4 El Modelo de la Telaraña

Aplicación tomada de Análisis Económico con Matlab de Gonzalo Fernández de Córdoba Martos.

El modelo de la telaraña supone que en un mercado son necesarios algunos periodos de prueba y error para que los agentes económicos aprendan cuáles son los precios de equilibrio. Durante este periodo la cantidad ofrecida podría no ser igual a la cantidad demandada.

Como antes, suponemos que las funciones de demanda y la oferta de mercado están dadas por:

$$p = a - b q^D$$$$p = c + d q^S$$

Típicamente suponemos que $p$ se ajusta instantáneamente para que $q^D=q^S=q$.

Ahora suponemos que existe un proceso en el que tanto consumidores como productores modifican sus planes de consumo e inversión hasta que encuentran el equilibrio.

El proceso de ajuste vendrá dado por una ley de movimiento que gobierna el mercado:

$$p_{t+1}-p_t = \alpha (q_t^D - q_t^S)$$

con $\alpha>0$.

  • Si $q_t^D - q_t^S>0$, entonces $p_{t+1}-p_t>0$.
  • Si $q_t^D - q_t^S<0$, entonces $p_{t+1}-p_t<0$.

El tamaño del ajuste depende del parámetro $\alpha$. Sustituyendo las cantidades en oferta y demanda en la ley de movimiento del mercado en el instante $t$ obtenemos:

$$p_{t+1}-p_t = \alpha \left(\frac{ad+cb}{db}\right) - \alpha \left(\frac{d+b}{db}\right) p_t $$

En equilibrio $p_{t+1}=p_t=p^*$ (estado estacionario), entonces: $$p^* = \frac{ad+cb}{b+d}$$. Usando este resultado:

$$p_{t+1}-p_t = \alpha \left(\frac{d+b}{db}\right) (p^*-p_t )$$

tenemos una ecuación en diferencias de primer orden.

  • Equilibrio estable con convergencia uniforme:
In [23]:
clear all;

% Definicion de parametros
a = 10;
b = 0.6;
c = 2;
d = 1.6;

alpha = 0.08;
T = 40;
init = 0.5;
pstar = (a*d + c*b)/(b+d);
disp('Precio de Equilibrio:');
disp(pstar);
disp('Ajuste:');
disp(alpha*(d+b)/(d*b));
init*pstar

p    = zeros(T,1);
p(1) = init*pstar;

for i = 2:T;
    p(i) = p(i-1) + alpha*((d+b)/(d*b))*(pstar-p(i-1));
end;
Precio de Equilibrio:
    7.8182

Ajuste:
    0.1833


ans =

    3.9091
In [24]:
plot(p)
  • Equilibrio estable con convergencia no uniforme:
In [25]:
alpha = 0.8;

disp('Precio de Equilibrio:');
disp(pstar);
disp('Ajuste:');
disp(alpha*(d+b)/(d*b));

p    = zeros(T,1);
p(1) = init*pstar;

for i = 2:T;
    p(i) = p(i-1) + alpha*((d+b)/(d*b))*(pstar-p(i-1));
end;
Precio de Equilibrio:
    7.8182

Ajuste:
    1.8333
In [26]:
plot(p);
  • Equilibrio explosivo:
In [27]:
alpha = 0.9;

disp('Precio de Equilibrio:');
disp(pstar);
disp('Ajuste:');
disp(alpha*(d+b)/(d*b));

p    = zeros(T,1);
p(1) = init*pstar;

for i = 2:T;
    p(i) = p(i-1) + alpha*((d+b)/(d*b))*(pstar-p(i-1));
end;
Precio de Equilibrio:
    7.8182

Ajuste:
    2.0625
In [28]:
plot(p)