{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Productividad Específica y Decisión de Aceptación Endógena" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "El modelo esta caracterizado completamente por tres ecuaciones. La primera es la que caracteriza la productividad de reserva (PR):\n", "$$y_{R} =b+\\frac{m(\\theta )\\beta }{r+\\lambda }\\int_{y_{R}}^{\\overline{y}}\\left( y-y_{R}\\right) f(y)dy$$\n", "\n", "La segunda es la condición de creación de empleo (CCE):\n", "$$c =\\frac{m(\\theta )}{\\theta }\\frac{1-\\beta }{r+\\lambda }\\int_{y_{R}}^{\\overline{y}}(y-y_{R})f(y)dy$$\n", "\n", "La tercera es la curva de Beveridge:\n", "$$m\\left( \\theta \\right) \\left( 1-F\\left( y_{R}\\right) \\right) u=\\lambda\\left( 1-u\\right)$$\n", "\n", "La parametrización que usamos es la siguiente: (1) $m(\\theta)= A \\theta ^\\alpha$ y (2) $\\log x \\sim N(\\mu, \\sigma)$.\n", "\n", "El algoritmo de solución es el siguiente:\n", "\n", "1. Conjeturar $\\theta_0$.\n", "2. Resolver por $y_R$, el punto fijo de PR, dado $\\theta_0$.\n", "3. Resolver $\\theta_1$ usando CCE y $y_R$.\n", "4. Si $\\theta_1$ = $\\theta_0$ tenemos la solución, caso contrario retornar a 1 con $\\theta_1$ como nueva conjetura." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Importamos los módulos necesarios\n", "import numpy as np\n", "import scipy.stats as stats\n", "from scipy import integrate\n", "from scipy.optimize import root" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Definimos la ecuación de Bellman para $y_R$:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def TyR(yr, θ, prms):\n", " b, λ, A, α, β, r, c, F = prms\n", " \n", " intf = lambda y: (y - yr)*F.pdf(y)\n", " \n", " yr1 = b + ((A*(θ**α)*β)/(λ+r))*integrate.quad(intf,yr,np.inf)[0]\n", " \n", " return yr1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Definimos la ecuación de creación de empleo:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def JCC(θ, yr, prms):\n", " b, λ, A, α, β, r, c, F = prms\n", " \n", " intf = lambda y: (y - yr)*F.pdf(y)\n", " \n", " out = c - (A*(θ**α)*(1 - β))/(θ*(r+λ))*integrate.quad(intf,yr,np.inf)[0]\n", " \n", " return out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Definimos el procedimiento que resuelve el modelo:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def SolveModel(prms, tol = 1e-6, step=0.5):\n", " b, λ, A, α, β, r, c, F = prms\n", " \n", " yr0, θ0 = 1, 1\n", " \n", " diftheta = 1\n", " \n", " while diftheta>tol:\n", " \n", " difyr = 1\n", " \n", " print('**** Solving for yr given theta')\n", " \n", " while difyr>tol:\n", " yr1 = TyR(yr0, θ0, prms)\n", " difyr = np.abs(yr1-yr0)\n", " print('**** convergence: ', difyr)\n", " yr0 = step*yr1 + (1-step)*yr0\n", " \n", " yrout = yr1\n", " \n", " print('Solving for theta')\n", " \n", " θ1 = root(lambda x: JCC(x, yrout, prms), θ0).x[0]\n", " \n", " diftheta = np.abs(θ1-θ0)\n", " print('convergence: ',diftheta)\n", " θ0 = step*θ1 + (1-step)*θ0\n", " \n", " θout = θ1\n", " \n", " uout = λ / ((A*(θout**α))*(1-F.cdf(yrout)) + λ)\n", " vout = θout*uout\n", " \n", " return yrout, θout, uout, vout" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Resolvemos el modelo:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "**** Solving for yr given theta\n", "**** convergence: 5.10538612284\n", "**** convergence: 1.83481533174\n", "**** convergence: 0.121075272636\n", "**** convergence: 0.0154280079264\n", "**** convergence: 0.00216479530974\n", "**** convergence: 0.000300212613543\n", "**** convergence: 4.1702290142e-05\n", "**** convergence: 5.79150266988e-06\n", "**** convergence: 8.04334050919e-07\n", "Solving for theta\n", "convergence: 1.50117938333\n", "**** Solving for yr given theta\n", "**** convergence: 0.510984047018\n", "**** convergence: 0.136094085393\n", "**** convergence: 0.0286789138869\n", "**** convergence: 0.00648005247797\n", "**** convergence: 0.00144352764124\n", "**** convergence: 0.000322608141384\n", "**** convergence: 7.20465772801e-05\n", "**** convergence: 1.60924133095e-05\n", "**** convergence: 3.5942925054e-06\n", "**** convergence: 8.02803278521e-07\n", "Solving for theta\n", "convergence: 0.0606289017393\n", "**** Solving for yr given theta\n", "**** convergence: 0.0153514657114\n", "**** convergence: 0.00349056513261\n", "**** convergence: 0.00078770951815\n", "**** convergence: 0.000178067218056\n", "**** convergence: 4.02377142041e-05\n", "**** convergence: 9.09328366783e-06\n", "**** convergence: 2.05494198635e-06\n", "**** convergence: 4.64387304167e-07\n", "Solving for theta\n", "convergence: 0.0120067630238\n", "**** Solving for yr given theta\n", "**** convergence: 0.0030093628574\n", "**** convergence: 0.000682446755244\n", "**** convergence: 0.000154532803086\n", "**** convergence: 3.50040548653e-05\n", "**** convergence: 7.92835390673e-06\n", "**** convergence: 1.79578845705e-06\n", "**** convergence: 4.06748191573e-07\n", "Solving for theta\n", "convergence: 0.00243198234351\n", "**** Solving for yr given theta\n", "**** convergence: 0.000608213687441\n", "**** convergence: 0.000137858237381\n", "**** convergence: 3.12377275331e-05\n", "**** convergence: 7.07873367745e-06\n", "**** convergence: 1.60407638639e-06\n", "**** convergence: 3.63492980604e-07\n", "Solving for theta\n", "convergence: 0.0004964307938\n", "**** Solving for yr given theta\n", "**** convergence: 0.000124202969024\n", "**** convergence: 2.81491366598e-05\n", "**** convergence: 6.37928008596e-06\n", "**** convergence: 1.44572027061e-06\n", "**** convergence: 3.2763893687e-07\n", "Solving for theta\n", "convergence: 9.99643596398e-05\n", "**** Solving for yr given theta\n", "**** convergence: 2.491736526e-05\n", "**** convergence: 5.64710880457e-06\n", "**** convergence: 1.27980815723e-06\n", "**** convergence: 2.90044608331e-07\n", "Solving for theta\n", "convergence: 2.1436310905e-05\n", "**** Solving for yr given theta\n", "**** convergence: 5.42483433152e-06\n", "**** convergence: 1.2294443783e-06\n", "**** convergence: 2.78631449024e-07\n", "Solving for theta\n", "convergence: 3.38976274139e-06\n", "**** Solving for yr given theta\n", "**** convergence: 7.84294539979e-07\n", "Solving for theta\n", "convergence: 1.79768486985e-07\n" ] } ], "source": [ "# Parametros\n", "b = 1\n", "λ = 0.05\n", "A = 1\n", "α = 0.5\n", "β = 0.5\n", "r = 0.1\n", "μ = 0.8\n", "σ = 0.5\n", "c = 1.0\n", "F = stats.lognorm(s = σ, loc = 0, scale = np.exp(μ)) \n", "\n", "parameters = [b, λ, A, α, β, r, c, F] \n", "\n", "# Solución\n", "yR, θ, u, v = SolveModel(parameters)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Productividad de reserva = 2.78843517574\n", "Tightness = 1.78843394607\n", "Tasa de desempleo = 0.102885066646\n", "Tasa de vacancias = 0.184003145733\n" ] } ], "source": [ "print('Productividad de reserva = ', yR)\n", "print('Tightness = ', θ)\n", "print('Tasa de desempleo = ', u)\n", "print('Tasa de vacancias = ', v)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.3" } }, "nbformat": 4, "nbformat_minor": 2 }