quant-econ Solutions: The Lucas Asset Pricing Model


In [1]:
using QuantEcon, QuantEcon.Models
using PyPlot


INFO: Loading help data...

Exercise 1


In [2]:
# == Define primitives == #
n = 5
P = 0.0125 .* ones(n, n) 
P .+= diagm(0.95 .- 0.0125 .* ones(5))
s = [1.05, 1.025, 1.0, 0.975, 0.95]
gamm = 2.0
bet = 0.94
zet = 1.0
ap = AssetPrices(bet, P, s, gamm)

v = tree_price(ap)
println("Lucas Tree Prices: $v\n")

v_consol = consol_price(ap, 1.0)
println("Consol Bond Prices: $(v_consol)\n")

P_tilde = P .* s'.^(1-gamm)
temp = bet .* (P_tilde * v) + bet * (P_tilde * ones(n))
println("Should be 0: $(temp - v)\n") 

p_s = 150.0
w_bar, w_bars = call_option(ap, zet, p_s, [10, 20, 30])


Lucas Tree Prices: [12.722217630644252,14.725150017725886,17.571422357262904,21.935706611219704,29.474015777145]

Consol Bond Prices: [87.5686013853112,109.25108965024711,148.67554548466478,242.55144081989457,753.8710047641986]

Should be 0: [1.7763568394002505e-15,1.7763568394002505e-15,0.0,0.0,0.0]

Out[2]:
([64.3084,80.0518,108.677,176.839,603.871],[30=>[60.6265,74.6761,98.3839,153.805,603.871],10=>[44.7982,50.8141,58.6139,115.698,603.871],20=>[56.7336,68.5191,86.6904,138.46,603.871]])

Exercise 2


In [ ]:
fig, ax = subplots()

ax[:set_xlabel](L"$y$", fontsize=16)
ax[:set_ylabel]("price", fontsize=16)

for bet in (.95, 0.98)
    tree = LucasTree(2.0, bet, 0.90, 0.1)
    my_grid, price_vals = compute_lt_price(tree)
    label = LaTeXString("\$\\beta =$(bet)\$")
    ax[:plot](my_grid, price_vals, lw=2, alpha=0.7, label=label)
    ax[:set_xlim](minimum(my_grid), maximum(my_grid));
end

ax[:legend](loc="upper left")
plt.show()


Iteration: 10	 error:0.835991908
Iteration: 20	 error:0.409779125
Iteration: 30	 error:0.228549566
Iteration: 40	 error:0.133427933
Iteration: 50	 error:0.079153760
Iteration: 60	 error:0.047239586
Iteration: 70	 error:0.028426261
Iteration: 80	 error:0.016904155
Iteration: 90	 error:0.010123119
Iteration: 100	 error:0.006066151
Iteration: 110	 error:0.003638810
Iteration: 120	 error:0.002186431
Iteration: 130	 error:0.001317397
Iteration: 10	 error:1.140843864
Iteration: 20	 error:0.763130760
Iteration: 30	 error:0.580837312
Iteration: 40	 error:0.462749273
Iteration: 50	 error:0.374623607
Iteration: 60	 error:0.304983839
Iteration: 70	 error:0.248775487
Iteration: 80	 error:0.203064794
Iteration: 90	 error:0.165792508
Iteration: 100	 error:0.135372762
Iteration: 110	 error:0.110537628
Iteration: 120	 error:0.090259609
Iteration: 130	 error:0.073701839
Iteration: 140	 error:0.060181631
Iteration: 150	 error:0.049141803
Iteration: 160	 error:0.040126847
Iteration: 170	 error:0.032765813
Iteration: 180	 error:0.026755080
Iteration: 190	 error:0.021847007
Iteration: 200	 error:0.017839294
Iteration: 210	 error:0.014566773
Iteration: 220	 error:0.011894617
Iteration: 230	 error:0.009712583
Iteration: 240	 error:0.007930861
Iteration: 250	 error:0.006475990
Iteration: 260	 error:0.005288007
Iteration: 270	 error:0.004317950
Iteration: 280	 error:0.003525852
Iteration: 290	 error:0.002879047
Iteration: 

In [ ]: