Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Qual é o equilíbrio de dois ativos e dois estados em uma economia com dois agentes?

+1 voto
236 visitas
perguntada Ago 30, 2016 em Finanças por Saulo (436 pontos)  

[Adaptada do Magill and Quinzii, 2002] Considere uma
economia com dois períodos com $S = 2$, estados na natureza na
data 1. Suponha que existam 2 agentes com funções de utilidade
\[ u^1 = log{c_0} + \frac{1}{2} \left( \frac{1}{2}\log{c_{1,1}} + \frac{1}{2}\log{c_{1,2}} \right) \]
\[ u^2 = log{c_0} + \frac{1}{3} \left( \frac{1}{2}\log{c_{1,1}} + \frac{1}{2}\log{c_{1,2}} \right) \]
e dotações \(w^1 = (19/8,1,3)\) e \(w^2 = (21/8,5,3)\)

a) Suponha que existam dois ativos sendo comercializados na data 0:
um ativo livre de risco e um ativo arriscado que paga 1 unidade
de consumo no estado 1 e nada no estado 2. Ache o o equilíbrio.
Dê uma interpretação da carteira escolhida por cada agente.

b) Suponha que apenas o ativo livre de risco se comercializado na
data 0. Ache o equilíbrio e comente as diferenças entre os dois
equilíbrios.

Compartilhe

3 Respostas

+2 votos
respondida Ago 30, 2016 por Saulo (436 pontos)  

Esta resposta contará com os seguintes passos:

  1. Será fornecida uma solução geral para o problema de escolha do consumo/carteira do agente

  2. Serão feitos alguns comentários sobre como resolver o problema para encontrar o equilíbrio

  3. Será encontrado o equilíbrio do item (a) da pergunta

  4. Será encontrado o equilíbrio do item (b) da pergunta

Os conceitos envolvidos nesta questão podem ser encontrados no livro "Principles of Financial Economics", de Stephen F. LeRoy.

1) Solução do problema de escolha do consumo/carteira do agente

Seja o problema de escolha do consumo/carteira do agente:
\[ \begin{array}{rrl} \displaystyle\max_{c_0, c_1,h} & ~ & u(c_0, c_1) \\ ~ & ~ & ~ \\ s.a. & c_0 & \leq w_0 - p \cdot h \\ ~ & c_1 & \leq w_1 + X h \\ ~ & c_0 & \geq 0 \\ ~ & c_1 & \geq 0 \end{array} \]

onde \(c_0\) é o consumo na data 0, \(c_1 = [c_{1,1} ~ \cdots ~ c_{1,s} ~ \cdots ~ c_{1,S}]^T\) é o consumo na data 1 nos estados \(s = 1, \ldots, S\), \(p = [p_1 ~ \cdots ~ p_J]^T\) é o vetor de preços, \(h = [h_1 ~ \cdots ~ h_J]^T\) é um vetor de ativos que corresponde à carteira, \(X = [x_1 ~ \cdots ~ x_j \cdots ~ x_J]\) é a matriz \(S \times J\) de payoffs.

Vamos assumir que a função de utilidade do consumidor é:
\[ u(c_0,c_1) = a_0 \log{c_0} + \sum_{s=1}^{S}{a_s \log{c_{1,s}}} \]

O Lagrangeano do problema é:
\[ \begin{array}{rcl} \mathcal{L} & = & u(c_0,c_1) + \lambda_0(w_0 - p \cdot h - c_0) \\ ~ & ~ & \displaystyle + \sum_{s=1}^{S}{\lambda_s (w_{1,s} + \sum_{j=1}^{J}{x_{sj} h_j} - c_{1,s} )} \\ ~ & ~ & \displaystyle + \alpha_0 c_0 + \sum_{s=1}^{S}{\alpha_s c_{1,s}} \end{array} \]

As condições de primeira ordem do problema são:

i. \(\lambda_0, \lambda_1, \ldots, \lambda_S, \alpha_0, \alpha_1, \ldots, \alpha_S) \neq 0\)

ii. \(\lambda_0 \geq 0, (w_0 - p \cdot h - c_0) \geq 0, \lambda_0 (w_0 - p \cdot h - c_0) = 0\)

\(\lambda_s \geq 0, (w_{1,s} + \sum_{j=1}^{J}{x_{sj} h_j} - c_{1,s}) \geq 0, \lambda_s (w_{1,s} + \sum_{j=1}^{J}{x_{sj} h_j} - c_{1,s}) = 0, \forall s\)

\(\alpha_0 \geq 0, c_0 \geq 0, \alpha_0 c_0 = 0\)

\(\alpha_s \geq 0, c_{1,s} \geq 0, \alpha_s c_{1,s} = 0, \forall s\)

iii. \(c_0: \frac{\partial u(c_0,c_1)}{\partial c_0} - \lambda_0 + \alpha_0 = 0\)

\(c_{1,s}: \frac{\partial u(c_0,c_1)}{\partial c_{1,s}} - \lambda_s + \alpha_s = 0, \forall s\)

\(h_j: - \lambda_0 p_j + \sum_{s=1}^{S}{\lambda_s x_{sj}} = 0, \forall j\)

Considerando a utilidade do consumidor, como \(\displaystyle \lim_{x \rightarrow 0^{+}}{\log{x}} = -\infty\), devemos ter \(c_0 > 0\) e \(c_{1,s} > 0\) para o problema de maximização ter solução. Mas \(c_0 > 0 \Rightarrow \alpha_0 = 0\) e \(c_s > 0 \Rightarrow \alpha_s = 0, \forall s\). Logo, as equações de \(c_0\) e \(c_{1,s}\) ficam:

\[ c_0: \frac{\partial u(c_0,c_1)}{\partial c_0} - \lambda_0 = 0 \Rightarrow \lambda_0 = \frac{\partial u(c_0,c_1)}{\partial c_0} \]

\[ c_{1,s}: \frac{\partial u(c_0,c_1)}{\partial c_{1,s}} - \lambda_s = 0, \forall s \Rightarrow \lambda_s = \frac{\partial u(c_0,c_1)}{\partial c_{1,s}}, \forall s \]

Levando em consideração este resultado e a utilidade do consumidor, a equação de \(h_j\) fica:

\[ h_j: \frac{\partial u(c_0,c_1)}{\partial c_0} p_j = \sum_{s=1}^{S}{\frac{\partial u(c_0,c_1)}{\partial c_{1,s}} x_{sj}}, \forall j \]
ou
\[ \frac{a_0}{c_0} p_j = \sum_{s=1}^{S}{\frac{a_s}{c_{1,s}} x_{sj}}, \forall j \]

Dado que a função de utilidade do agente é estritamente crescente, as restrições orçamentárias são atendidas com igualdade:

\[ c_0 = w_0 - p \cdot h \]

\[ c_{1,s} = w_{1,s} + \sum_{j=1}^{J}{x_{sj} h_j}, \forall s \]

Substituindo \(c_0\) e \(c_{1,s}\) nas \(J\) equações de \(h_j\), pode-se encontrar \(h\).
\(c_0\) e \(c_{1,s}\) são calculadas de forma imediata a partir das duas equações anteriores acima.

2) Comentários sobre como resolver o problema para encontrar o equilíbrio

Um equilíbrio no mercado de ativos consiste no vetor de preços \(p\), uma alocação de carteira \(\{h^i\}\), e uma alocação de consumo \(\{(c_0^i,c_1^i)\}\) tal que:

  1. \(\{h^i\}\) e \(\{(c_0^i,c_1^i)\}\) sejam soluções do problema de escolha dos agentes nos preços \(p\); e
  2. a condição de "market clearing" seja atendida, isto é:
    \[ (a) \sum_i{h^i} = 0 \]
    \[ (b) \sum_i{c_0^i} \leq \sum_i{w_0^i} \]
    \[ (c) \sum_i{c_1^i} \leq \sum_i{w_1^i} \]

Note que, fazendo a soma para todos os agentes das restrições orçamentárias do problema do consumidor, (a) implica (b) e (c). Se as funções utilidade dos consumidores for estritamente crescentes (de forma que as restrições orçamentárias sejam atendidas com igualdade) e não existem ativos redundantes, o contrário também é verdadeiro.

No problema de maximização mostrado na seção anterior, o problema de escolha do consumo/carteira do agente, assume-se que os preços são dados. Para encontrar o equilíbrio, vamos adotar a seguinte estratégia:

(i) resolver o problema de escolha do consumo/carteira do agente para cada agente,
mas com o preço sendo uma variável;
(ii) usar a equação de "market clearing", \(\sum_i{h^i} = 0\), para determinar o preço de equilíbrio;
(iii) substituir o preço de equilíbrio no problema de maximização para cada agente para encontrar \(\{h^i\}\) e \(\{(c_0^i, c_1^i)\}\).

A manipulação algébrica das equações será feita por meio de programa escrito em Python, usando a biblioteca SymPy. O SymPy também pode ser usado em R através do pacote rSymPy.

+2 votos
respondida Ago 30, 2016 por Saulo (436 pontos)  
editado Set 1, 2016 por Saulo

3) Equilíbrio do item (a)

A situação descrita no item (a) nos mostra que existem \(J = 2\) ativos e \(S = 2\) estados.

A matriz \(X\) de payoffs é dada por:
\[ X = \left[ \begin{array}{cc} x_{1} & x_{2} \end{array} \right] = \left[ \begin{array}{cc} x_{11} & x_{12} \\ x_{21} & x_{22} \end{array} \right] = \left[ \begin{array}{cc} 1 & 1 \\ 1 & 0 \end{array} \right] \]

ou seja, \(x_{1}\) é o ativo livre de risco e \(x_{2}\) é o ativo arriscado.

Seja o problema de escolha do consumo/carteira do agente \(i\):
\[ \begin{array}{rrl} \displaystyle\max_{c^i_0, c^i_{1,1}, c^i_{1,2}, h} & u(c^i_0, c^i_{1,1}, c^i_{1,2}) & = a^i_0 \log{c^i_0} + a^i_1 \log{c^i_{1,1}} + a^i_2 \log{c^i_{1,2}} \\ ~ & ~ & ~ \\ s.a. & c^i_0 & \leq w^i_0 - p_1 h^i_1 - p_2 h^i_2 \\ ~ & c^i_{1,1} & \leq w^i_{1,1} + x_{11} h^i_1 + x_{12} h^i_2 \\ ~ & c^i_{1,2} & \leq w^i_{1,2} + x_{21} h^i_1 + x_{22} h^i_2 \\ ~ & c^i_0 & \geq 0 \\ ~ & c^i_{1,1} & \geq 0 \\ ~ & c^i_{1,2} & \geq 0 \end{array} \]

Como \(u(c^i_0, c^i_{1,1}, c^i_{1,2})\) é estritamente crescente, então:

\[ \begin{array}{rcl} c^i_0 & = & w^i_0 - p_1 h^i_1 - p_2 h^i_2 \\ c^i_{1,1} & = & w^i_{1,1} + x_{11} h^i_1 + x_{12} h^i_2 \\ c^i_{1,2} & = & w^i_{1,2} + x_{21} h^i_1 + x_{22} h^i_2 \end{array} \]

Usando a equação de \(h_j\) (condição de primeira ordem) apresentada no final da seção 1, então:

\[ \frac{a^i_0}{c^i_0} p_j = \sum_{s=1}^{2}{\frac{a^i_s}{c^i_{1,s}} x_{sj}}, \forall j \]

\(\Rightarrow \frac{a^i_0}{w^i_0 - p_1 h^i_1 - p_2 h^i_2} p_j = \frac{a^i_1}{w^i_{1,1} + x_{11} h^i_1 + x_{12} h^i_2} x_{1j} + \frac{a^i_2}{w^i_{1,2} + x_{21} h^i_1 + x_{22} h^i_2} x_{2j}, \forall j\)

\[ \Rightarrow \left\{ \begin{array}{rcl} \frac{a^i_0}{w^i_0 - p_1 h^i_1 - p_2 h^i_2} p_1 & = & \frac{a^i_1}{w^i_{1,1} + x_{11} h^i_1 + x_{12} h^i_2} x_{11} + \frac{a^i_2}{w^i_{1,2} + x_{21} h^i_1 + x_{22} h^i_2} x_{21} \\ \frac{a^i_0}{w^i_0 - p_1 h^i_1 - p_2 h^i_2} p_2 & = & \frac{a^i_1}{w^i_{1,1} + x_{11} h^i_1 + x_{12} h^i_2} x_{12} + \frac{a^i_2}{w^i_{1,2} + x_{21} h^i_1 + x_{22} h^i_2} x_{22} \end{array} \right. \]

O agente \(i=1\) possui dotação \(w^i_0 = 19/8\), \(w^i_{1,1} = 1\), \(w^i_{1,2} = 3\) e sua função utilidade possui os parâmetros \(a^i_0 = 1\), \(a^i_1 = a^i_2= 1/4\). Substituindo estes valores nas equações acima, podemos resolver para encontrar \(h^i_1\) e \(h^i_2\). O seguinte programa escrito em Python calcula tais valores:

import numpy as np

from sympy import Symbol
from sympy import simplify
from sympy import N
from sympy.solvers import solve

def solucao_h1_h2(X, val_w0, val_w1, val_a0, val_a1, val_a2):
    a0, a1, a2 = Symbol("a0"), Symbol("a1"), Symbol("a2")

    w0, w11, w12 = Symbol("w0"), Symbol("w11"), Symbol("w12")

    x11, x12, x21, x22 = Symbol("x11"), Symbol("x12"), Symbol("x21"), Symbol("x22")

    h1, h2 = Symbol("h1"), Symbol("h2")

    p1, p2 = Symbol("p1"), Symbol("p2")

    eq1 = a0*p1/(w0 - p1*h1 - p2*h2) - a1*x11/(w11 + x11*h1 + x21*h2) - a2*x21/(w12 + x12*h1 + x22*h2)
    eq1 = eq1.subs({w0: val_w0, w11: val_w1[0], w12: val_w1[1], x11: X[0][0], x21: X[1][0], x12: X[0][1], x22: X[1][1], a0: val_a0, a1: val_a1, a2: val_a2})
    eq1 = simplify(96.0*eq1)
    print "eq1: ", eq1, " = 0"

    eq2 = a0*p2/(w0 - p1*h1 - p2*h2) - a1*x12/(w11 + x11*h1 + x21*h2) - a2*x22/(w12 + x12*h1 + x22*h2)
    eq2 = eq2.subs({w0: val_w0, w11: val_w1[0], w12: val_w1[1], x11: X[0][0], x21: X[1][0], x12: X[0][1], x22: X[1][1], a0: val_a0, a1: val_a1, a2: val_a2})
    eq2 = simplify(32.0*eq2)
    print "eq2: ", eq2, " = 0"

    solucoes_h1_h2 = solve((eq1, eq2), h1, h2, rational=True)

    print "Solucoes\n"
    for k, solucao in enumerate(solucoes_h1_h2):
    print "Solucao ", (k+1)
    print "h1 = ", solucao[0]
    print "h2 = ", solucao[1]

    return solucoes_h1_h2

X = [[1.0,1.0],[1.0,0.0]]

w0_ag1 = 19.0/8.0
w1_ag1 = [1.0, 3.0]
a0_ag1, a1_ag1, a2_ag1 = 1.0, 1.0/4.0, 1.0/4.0

print "Solucao do problema do agente 1"
solucoes_ag1 = solucao_h1_h2(X, val_w0 = w0_ag1, val_w1 = w1_ag1, val_a0 = a0_ag1, val_a1 = a1_ag1, val_a2 = a2_ag1)

Como resultado da execução do programa, temos que \(h^i_1\) e \(h^i_2\) para o agente \(i=1\) são dados por:
\[ i = 1: \left\{ \begin{array}{rcl} h^i_1 & = & \frac{-120 p_1 + 128 p_2 + 19}{48 (p_1 - p_2)} \\ h^i_2 & = & \frac{24 p_1^2 + 32 p_1 p_2 + 19 p_1 - 64 p_2^2 - 38 p_2}{48 p_2 (p_1 - p_2)} \end{array} \right. \]

Da mesma forma, considerando que o agente \(i=2\) possui dotação \(w^i_0 = 21/8\), \(w^i_{1,1} = 5\), \(w^i_{1,2} = 3\) e sua função utilidade possui os parâmetros \(a^i_0 = 1\), \(a^i_1 = a^i_2= 1/6\), podemos substituir estes valores nas equações e usar o programa em Python para encontrar \(h^i_1\) e \(h^i_2\):

w0_ag2 = 21.0/8.0
w1_ag2 = [5.0, 3.0]
a0_ag2, a1_ag2, a2_ag2 = 1.0, 1.0/6.0, 1.0/6.0

print "\nSolucao do problema do agente 2"
solucoes_ag2 = solucao_h1_h2(X, val_w0 = w0_ag2, val_w1 = w1_ag2, val_a0 = a0_ag2, val_a1 = a1_ag2, val_a2 = a2_ag2)

\(h^i_1\) e \(h^i_2\) para o agente \(i=2\) são dados por:
\[ i = 2: \left\{ \begin{array}{rcl} h^i_1 & = & \frac{-168 p_1 + 208 p_2 + 21}{64 (p_1 - p_2)} \\ h^i_2 & = & \frac{24 p_1^2 - 160 p_1 p_2 + 21 p_1 + 96 p_2^2 - 42 p_2}{64 p_2 (p_1 - p_2)} \end{array} \right. \]

E, usando a condição de "market clearing", podemos chegar nas seguintes de equações em \(p_1\) e \(p_2\):

\( h^1_1 + h^2_1 = 0 \Rightarrow \frac{-120 p_1 + 128 p_2 + 19}{48 (p_1 - p_2)} + \frac{-168 p_1 + 208 p_2 + 21}{64 (p_1 - p_2)} = 0 \)

\( h^1_2 + h^2_2 = 0 \Rightarrow \frac{24 p_1^2 + 32 p_1 p_2 + 19 p_1 - 64 p_2^2 - 38 p_2}{48 p_2 (p_1 - p_2)} + \frac{24 p_1^2 - 160 p_1 p_2 + 21 p_1 + 96 p_2^2 - 42 p_2}{64 p_2 (p_1 - p_2)} = 0 \)

O programa em Python abaixo resolve o sistema de equações acima e encontra \(p_1\) e \(p_2\), e também calcula os valores de \(\{h^i\}\) e \(\{(c^i_0, c^i_1)\}\):

p1, p2 = Symbol("p1"), Symbol("p2")

indice_solucao = 1
for solucao_ag1 in solucoes_ag1:
    sol_h1_ag1 = solucao_ag1[0]
    sol_h2_ag1 = solucao_ag1[1]

    for solucao_ag2 in solucoes_ag2:
    sol_h1_ag2 = solucao_ag2[0]
    sol_h2_ag2 = solucao_ag2[1]

    if ((p1 in sol_h1_ag1.free_symbols) or (p1 in sol_h2_ag1.free_symbols) or (p1 in sol_h1_ag2.free_symbols) or (p1 in sol_h2_ag2.free_symbols) or (p2 in sol_h1_ag1.free_symbols) or (p2 in sol_h2_ag1.free_symbols) or (p2 in sol_h1_ag2.free_symbols) or (p2 in sol_h2_ag2.free_symbols)):

        eq1_p = sol_h1_ag1 + sol_h1_ag2
        eq2_p = sol_h2_ag1 + sol_h2_ag2

        solucoes_p1_p2 = solve((eq1_p, eq2_p), p1, p2, rational=True)
        print "Verificando: "
        print "eq1_p: ", eq1_p
        print "eq2_p: ", eq2_p
        print "Solucao: ", solucoes_p1_p2
        print ""

        if (len(solucoes_p1_p2) > 0):
            if (type(solucoes_p1_p2) is list):
                for solucao_p1_p2 in solucoes_p1_p2:
                    sol_p1 = solucao_p1_p2[0]
                    sol_p2 = solucao_p1_p2[1]
            else:
                sol_p1 = solucoes_p1_p2[p1]
                sol_p2 = p2

            sol_h1_ag1_val = sol_h1_ag1.subs({Symbol('p1'): sol_p1, Symbol('p2'): sol_p2})
            sol_h2_ag1_val = sol_h2_ag1.subs({Symbol('p1'): sol_p1, Symbol('p2'): sol_p2})
            c0_ag1 = w0_ag1 - sol_p1*sol_h1_ag1_val - sol_p2*sol_h2_ag1_val
            c11_ag1 = w1_ag1[0] + x11*sol_h1_ag1_val + x12*sol_h2_ag1_val
            c12_ag1 = w1_ag1[1] + x21*sol_h1_ag1_val + x22*sol_h2_ag1_val

            sol_h1_ag2_val = sol_h1_ag2.subs({Symbol('p1'): sol_p1, Symbol('p2'): sol_p2})
            sol_h2_ag2_val = sol_h2_ag2.subs({Symbol('p1'): sol_p1, Symbol('p2'): sol_p2})
            c0_ag2 = w0_ag2 - sol_p1*sol_h1_ag2_val - sol_p2*sol_h2_ag2_val
            c11_ag2 = w1_ag2[0] + x11*sol_h1_ag2_val + x12*sol_h2_ag2_val
            c12_ag2 = w1_ag2[1] + x21*sol_h1_ag2_val + x22*sol_h2_ag2_val

            condicao_consumo_atendida = (float(c0_ag1)>1.0e-10) and (float(c11_ag1)>1.0e-10) and (float(c12_ag1)>1.0e-10) and (float(c0_ag2)>1.0e-10) and (float(c11_ag2)>1.0e-10) and (float(c12_ag2)>1.0e-10)

            if ((len((sol_h1_ag1_val+sol_h1_ag2_val+sol_h2_ag1_val+sol_h2_ag2_val).atoms(Symbol))==0) and (abs(N(sol_h1_ag1_val+sol_h1_ag2_val)) < 1e-6) and (abs(N(sol_h2_ag1_val+sol_h2_ag2_val)) < 1e-6) and condicao_consumo_atendida):
                print "[Solucao ", indice_solucao, "]"
                f_ag1 = a0_ag1*np.log(float(c0_ag1)) + a1_ag1*np.log(float(c11_ag1)) + a2_ag1*np.log(float(c12_ag1))
                f_ag2 = a0_ag2*np.log(float(c0_ag2)) + a1_ag2*np.log(float(c11_ag2)) + a2_ag2*np.log(float(c12_ag2))
                indice_solucao += 1
            else:
                f_ag1 = -np.Inf
                f_ag2 = -np.Inf
                print "[Sem Solucao]"

            print "p1 = ", sol_p1
            print "p2 = ", sol_p2
            print "Agente 1"
            print "h1 = ", sol_h1_ag1
            print "h1 = ", sol_h1_ag1_val
            print "h2 = ", sol_h2_ag1
            print "h2 = ", sol_h2_ag1_val
            print "c0 = ", c0_ag1
            print "c11 = ", c11_ag1
            print "c12 = ", c12_ag1
            print "a0*log(c0) + a1*log(c11) + a2*log(c12) = ", f_ag1

            print "Agente 2"
            print "h1 = ", sol_h1_ag2
            print "h1 = ", sol_h1_ag2_val
            print "h2 = ", sol_h2_ag2
            print "h2 = ", sol_h2_ag2_val
            print "c0 = ", c0_ag2
            print "c11 = ", c11_ag2
            print "c12 = ", c12_ag2
            print "a0*log(c0) + a1*log(c11) + a2*log(c12) = ", f_ag2

            print "-------------------------------------------------------\n"
        else:
            print "[Sem Solucao]"
            print "Agente 1"
            print "h1 = ", sol_h1_ag1
            print "h2 = ", sol_h2_ag1
            print "Agente 2"
            print "h1 = ", sol_h1_ag2
            print "h2 = ", sol_h2_ag2
            print "-------------------------------------------------------"
    else:
        if ((sol_h1_ag1 == -sol_h1_ag2) and (sol_h2_ag1 == -sol_h2_ag2)):
            print "[Solucao ", indice_solucao, "]"
            indice_solucao += 1
        else:
            print "[Sem Solucao]"
        print "Agente 1"
        print "h1 = ", sol_h1_ag1
        print "h2 = ", sol_h2_ag1
        print "Agente 2"
        print "h1 = ", sol_h1_ag2
        print "h2 = ", sol_h2_ag2
        print "-------------------------------------------------------\n"

O resultado do programa nos fornece o equilíbrio, isto é, \(p_1 = 139/416\), \(p_2 = 139/832\) e:
\[ \left\{ \begin{array}{rcl} h^1_1 & = & \frac{-168 p_1 + 208 p_2 + 21}{64 (p_1 - p_2)} = 5/139 \\ h^1_2 & = & \frac{24 p_1^2 + 32 p_1 p_2 + 19 p_1 - 64 p_2^2 - 38 p_2}{48 p_2 (p_1 - p_2)} = 2 \\ c^1_0 & = & w^1_0 - p_1 h^1_1 - p_2 h^1_2 = 2.02884615384615 \\ c^1_{1,1} & = & w^1_{1,1} + x_{11} h^1_1 + x_{12} h^1_2 = 3.03597122302158 \\ c^1_{1,2} & = & w^1_{1,2} + x_{21} h^1_1 + x_{22} h^1_2 = 3.03597122302158 \end{array} \right. \]
\[ \left\{ \begin{array}{rcl} h^2_1 & = & \frac{-168 p_1 + 208 p_2 + 21}{64 (p_1 - p_2)} = -5/139 \\ h^2_2 & = & \frac{24 p_1^2 - 160 p_1 p_2 + 21 p_1 + 96 p_2^2 - 42 p_2}{64 p_2 (p_1 - p_2)} = -2 \\ c^2_0 & = & w^2_0 - p_1 h^2_1 - p_2 h^2_2 = 2.97115384615385 \\ c^2_{1,1} & = & w^2_{1,1} + x_{11} h^2_1 + x_{12} h^2_2 = 2.96402877697842 \\ c^2_{1,2} & = & w^2_{1,2} + x_{21} h^2_1 + x_{22} h^2_2 = 2.96402877697842 \end{array} \right. \]

O agente 1 possui \(h^1_1 = 5/139 > 0\) e \(h^1_2 = 2 > 0\). Estes valores positivos significam um "long position" nos ativos. O agente 1 está escolhendo consumir menos na data 0 para poder consumir mais nada data 1, ou seja, \(c^1_0 = 2.02884615384615 < 3.03597122302158 = c^1_{1,1} = c^1_{1,2}\). Podemos fazer a análise oposta para o agente 2, pois, como \(\sum_{i}{h^i} = 0\), o agente 1 comprou os ativos do agente 2. O agente 2 possui \(h^1_1 = -5/139 < 0\) e \(h^1_2 = -2 < 0\). Estes valores negativos significam um "short position" nos ativos. O agente 2 está escolhendo consumir mais na data 0, mas
consumirá menos nada data 1, ou seja, \(c^2_0 = 2.97115384615385 > 2.96402877697842 = c^2_{1,1} = c^2_{1,2}\).

+2 votos
respondida Ago 30, 2016 por Saulo (436 pontos)  
editado Set 1, 2016 por Saulo

4) Equilíbrio do item (b)

Se apenas o ativo livre de risco é comercializado na data 0, então não existirá consumo do ativo arriscado. O problema agora possui \(J = 1\) ativo e \(S = 2\) estados, e a matriz \(X\) de payoffs será dada por:
\[ X = \left[ \begin{array}{c} x_{1} \end{array} \right] = \left[ \begin{array}{c} x_{11} \\ x_{21} \end{array} \right] = \left[ \begin{array}{cc} 1 \\ 1 \end{array} \right] \]

O problema de escolha do consumo/carteira do agente \(i\) passa a ser:
\[ \begin{array}{rrl} \displaystyle\max_{c^i_0, c^i_{1,1}, c^i_{1,2}, h} & u(c^i_0, c^i_{1,1}, c^i_{1,2}) & = a^i_0 \log{c^i_0} + a^i_1 \log{c^i_{1,1}} + a^i_2 \log{c^i_{1,2}} \\ ~ & ~ & ~ \\ s.a. & c^i_0 & \leq w^i_0 - p_1 h^i_1 \\ ~ & c^i_{1,1} & \leq w^i_{1,1} + x_{11} h^i_1 \\ ~ & c^i_{1,2} & \leq w^i_{1,2} + x_{21} h^i_1 \\ ~ & c^i_0 & \geq 0 \\ ~ & c^i_{1,1} & \geq 0 \\ ~ & c^i_{1,2} & \geq 0 \end{array} \]

Como \(u(c^i_0, c^i_{1,1}, c^i_{1,2})\) é estritamente crescente, então:

\[ \begin{array}{rcl} c^i_0 & = & w^i_0 - p_1 h^i_1 \\ c^i_{1,1} & = & w^i_{1,1} + x_{11} h^i_1 \\ c^i_{1,2} & = & w^i_{1,2} + x_{21} h^i_1 \end{array} \]

Usando a equação de \(h_j\) (condição de primeira ordem) apresentada no final da seção 1, então:

\[ \frac{a^i_0}{c^i_0} p_j = \sum_{s=1}^{2}{\frac{a^i_s}{c^i_{1,s}} x_{sj}}, j = 1 \]

\[ \Rightarrow \frac{a^i_0}{w^i_0 - p_1 h^i_1} p_1 = \frac{a^i_1}{w^i_{1,1} + x_{11} h^i_1} x_{11} + \frac{a^i_2}{w^i_{1,2} + x_{21} h^i_1} x_{21} \]

O agente \(i=1\) possui dotação \(w^i_0 = 19/8\), \(w^i_{1,1} = 1\), \(w^i_{1,2} = 3\) e sua função utilidade possui os parâmetros \(a^i_0 = 1\), \(a^i_1 = a^i_2= 1/4\). Substituindo estes valores nas equações acima, podemos resolver para encontrar \(h^i_1(p_1)\).
Da mesma forma, considerando que o agente \(i=2\) possui dotação \(w^i_0 = 21/8\), \(w^i_{1,1} = 5\), \(w^i_{1,2} = 3\) e sua função utilidade possui os parâmetros \(a^i_0 = 1\), \(a^i_1 = a^i_2= 1/6\), podemos substituir estes valores nas equações e encontrar \(h^i_1(p_1)\). E, usando a condição \(h^1_1 + h^2_1 = 0\) de "market clearing", podemos encontrar \(p_1\), \(\{h^i\}\) e \(\{(c^i_0, c^i_1)\}\). O programa abaixo executa todos este
procedimento e imprime o resultado:

import numpy as np

from sympy import Symbol
from sympy import simplify
from sympy import N
from sympy.solvers import solve

X = [[1.0,1.0],[1.0,0.0]]

w0_ag1 = 19.0/8.0
w1_ag1 = [1.0, 3.0]
a0_ag1, a1_ag1, a2_ag1 = 1.0, 1.0/4.0, 1.0/4.0

w0_ag2 = 21.0/8.0
w1_ag2 = [5.0, 3.0]
a0_ag2, a1_ag2, a2_ag2 = 1.0, 1.0/6.0, 1.0/6.0

a0, a1, a2 = Symbol("a0"), Symbol("a1"), Symbol("a2")
w0, w11, w12 = Symbol("w0"), Symbol("w11"), Symbol("w12")
x11, x21 = Symbol("x11"), Symbol("x21")
h1 = Symbol("h1")
p1 = Symbol("p1")

eq = (a0*p1)/(w0-p1*h1) - (a1*x11)/(w11+x11*h1) - (a2*x21)/(w12+x21*h1)
solucoes_h1 = solve(eq, h1, rational=True)

for sol_h1 in solucoes_h1:
    print "************************************************************"
    sol_h1_ag1 = sol_h1.subs({w0: w0_ag1, w11: w1_ag1[0], w12: w1_ag1[1], x11: X[0][0], x21: X[1][0], a0: a0_ag1, a1: a1_ag1, a2: a2_ag1})
    sol_h1_ag2 = sol_h1.subs({w0: w0_ag2, w11: w1_ag2[0], w12: w1_ag2[1], x11: X[0][0], x21: X[1][0], a0: a0_ag2, a1: a1_ag2, a2: a2_ag2})
    print "Tentando solucao em que:"
    print "h1 (agente 1) = ", sol_h1_ag1
    print "h1 (agente 2) = ", sol_h1_ag2
    print ""

    eq_p = sol_h1_ag1 + sol_h1_ag2
    print "Equacao em p1:"
    print eq_p, " = 0"

    solucoes_p1 = solve(eq_p, p1)
    print "Solucao:"
    print solucoes_p1

    for sol_p1 in solucoes_p1:
    print "-----------------------------------------------------------"
    print "p1 = ", sol_p1

    print "Agente 1"
    sol_h1_ag1_val = sol_h1_ag1.subs({p1: sol_p1})
    c0_ag1 = w0_ag1 - sol_p1*sol_h1_ag1_val
    c11_ag1 = w1_ag1[0] + X[0][0]*sol_h1_ag1_val
    c12_ag1 = w1_ag1[1] + X[1][0]*sol_h1_ag1_val
    f_ag1 = a0_ag1*np.log(float(c0_ag1)) + a1_ag1*np.log(float(c11_ag1)) + a2_ag1*np.log(float(c12_ag1))
    print "h1 = ", sol_h1_ag1
    print "h1 = ", sol_h1_ag1_val
    print "c0 = ", c0_ag1
    print "c11 = ", c11_ag1
    print "c12 = ", c12_ag1
    print "a0*log(c0) + a1*log(c11) + a2*log(c12) = ", f_ag1

    print "Agente 2"
    sol_h1_ag2_val = sol_h1_ag2.subs({p1: sol_p1})
    c0_ag2 = w0_ag2 - sol_p1*sol_h1_ag2_val
    c11_ag2 = w1_ag2[0] + X[0][0]*sol_h1_ag2_val
    c12_ag2 = w1_ag2[1] + X[1][0]*sol_h1_ag2_val
    f_ag2 = a0_ag2*np.log(float(c0_ag2)) + a1_ag2*np.log(float(c11_ag2)) + a2_ag2*np.log(float(c12_ag2))
    print "h1 = ", sol_h1_ag2
    print "h1 = ", sol_h1_ag2_val
    print "c0 = ", c0_ag2
    print "c11 = ", c11_ag2
    print "c12 = ", c12_ag2
    print "a0*log(c0) + a1*log(c11) + a2*log(c12) = ", f_ag2

Somente existe uma solução válida, que é o equilíbrio, e é dado por \(p_1 = 0.375\) e:
\[ \left\{ \begin{array}{rcl} h^1_1 & = & 1 \\ c^1_0 & = & 2 \\ c^1_{1,1} & = & 2 \\ c^1_{1,2} & = & 4 \end{array} \right. \]
\[ \left\{ \begin{array}{rcl} h^2_1 & = & -1 \\ c^2_0 & = & 3 \\ c^2_{1,1} & = & 4 \\ c^2_{1,2} & = & 2 \end{array} \right. \]

As diferenças entre os dois equilíbrios são:

  • A quantidade do ativo 1 no equilíbrio da letra (a), \(h^1_1 = -h^2_1 = 5/139\), é menor do que a quantidade do ativo 1 no equilíbrio da letra (b), \(h^1_1 = -h^2_1 = 1\). E o preço do ativo 1 no equilíbrio da letra (a), igual a \(p_1 = 139/416 \approx 0.3341346\), é menor do que o preço do ativo 1 no equilíbrio da letra (b), igual a \(p_1 = 0.375\). As funções de utilidade dos agentes fazem com que as restrições orçamentárias sejam atendidas com igualdade. Como o ativo 2 não está presente na economia da letra (b), é de se esperar que \(p_1\) e \(\{h^i_1\}\) se alterem. É interessante notar que o retorno \(r_1 = x_1/p_1\) é menor na letra (b), ou seja, os agentes captam o fato de que existe um ativo apenas livre de risco.

  • As quantidades consumidas da data 1 são iguais no equilíbrio da letra (a), e diferentes no equilíbrio da letra (b). A ausência do ativo 2 na letra (b) deixou o mercado incompleto, impedindo que os agentes possam "suavizar" o consumo nos dois estados.

comentou Dez 8, 2016 por Edmar Rocha Pereira (21 pontos)  
Outra questão excelente! inclusive usei ela pra estudar para a primeira prova! apesar de bem longa, tirou muitas dúvidas! foi muito útil, deve ter dado um trabalho danado pra resolver, pois no meu caso, como sou iniciante em Python, achei muito complicado, digamos que não é muito friendly rs! Mas a solução está bem organizada, vai contribuir com as gerações futuras! rs
...