{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PS 1\n",
    "# 1. Two period consumption savings problem with the utility function\n",
    "\n",
    "$$U(c)=-\\frac{1}{a}e^{-ac}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.A.1\n",
    "\n",
    "- A.1.1 Verify increasing and concave\n",
    "- A.1.2 Draw a picture of the utility function over positive c\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.A.1.1\n",
    "\n",
    "$$U(c)= -\\frac{1}{a}e^{-ac}$$\n",
    "$$U(c)\\prime = e^{-ac}, \\ \\ a>0$$\n",
    "$$U(c)\\prime\\prime =-ae^{-ac}, \\ \\ a<0$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.A.1.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "def u(a,c):\n",
    "    solu = (-1/a)*np.exp(-a*c)\n",
    "    return solu\n",
    "def u_1d(a,c):\n",
    "    solu = np.exp(-a*c)\n",
    "    return solu\n",
    "def u_2d(a,c):\n",
    "    solu = -a*np.exp(-a*c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0,10,101)\n",
    "y1 = np.zeros(len(x))\n",
    "y2 = np.zeros(len(x))\n",
    "y3 = np.zeros(len(x))\n",
    "\n",
    "for idx,i in enumerate(x):\n",
    "        y1[idx] = u(1, i)\n",
    "        y2[idx] = u_1d(1, i)\n",
    "        y3[idx] = u_2d(1, i)\n",
    "plt.plot(x,y1)\n",
    "plt.plot(x, y2, label=r'$U\\prime$')\n",
    "plt.plot(x, y3, label=r'$U\\prime\\prime$')\n",
    "plt.ylabel('U(c)')\n",
    "plt.xlabel('c')\n",
    "plt.axhline(u(1,0), color='red', label=r\"$\\frac{-1}{a}$\")\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.B\n",
    "\n",
    "- Set up the maximization problem, derive the exact form of the Euler equation with this utility function, and derive a closed-form solution for optimal consumption at time 1.  Assume that capital markets are perfect.\n",
    "\n",
    "$$c_1= y_1+s_1 \\tag{3}$$\n",
    "$$c_2 = y_2 + s_1(1+r)\\tag{4}$$\n",
    "$$\\max_{c1,c2,s1}\\beta^{t-1}\\sum^{2}_{t=1}U(c_t)$$\n",
    "$$L= -\\frac{1}{a}e^{-a c_1}+-\\frac{\\beta}{a}e^{-a c_2}+\\lambda[y_1+s_1-c_1]+\\varphi[y_2+(1+r)s_1-c_2]$$\n",
    "\n",
    "ANSWER"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ibc(y1, y2, r, k=1):\n",
    "    c1_1 = (1+r)/(2+r)\n",
    "    c1_2 = (y1+(y2/(1+r)))-(k/(1+r))\n",
    "    c1 = c1_1*c1_2\n",
    "    \n",
    "    c2_1 = (1+r)/(2+r)\n",
    "    c2_2 = (y1+(y2/(1+r)))+k\n",
    "    c2 = c2_1*c2_2\n",
    "    return c1,c2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0,.5,10)\n",
    "y = np.zeros(len(x))\n",
    "y1, y2,r = [20,20, .1]\n",
    "for idx,i in enumerate(x):\n",
    "        ans1, ans2 = ibc(y1,y2,i, k=2)    \n",
    "        plt.scatter(ans1,ans2, label='r= {:.2f}'.format(i))\n",
    "        plt.legend()\n",
    "        plt.ylabel(r'$C_2$')\n",
    "        plt.xlabel(r'$C_1$')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0,5,6)\n",
    "y = np.zeros(len(x))\n",
    "y1, y2,r = [20,20, .25]\n",
    "for idx,i in enumerate(x):\n",
    "        ans1, ans2 = ibc(y1,y2,r, k=i)    \n",
    "        plt.scatter(ans1,ans2, label='k= {}'.format(i))\n",
    "        plt.legend()\n",
    "        plt.ylabel(r'$C_2$')\n",
    "        plt.xlabel(r'$C_1$')"
   ]
  }
 ],
 "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.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}