diff --git a/cobweb.ipynb b/cobweb.ipynb new file mode 100644 index 000000000..a111d6b1c --- /dev/null +++ b/cobweb.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e6d6f10d-8223-4d55-9ff2-f7b6c50082a6", + "metadata": {}, + "source": [ + "# The Cobweb Model" + ] + }, + { + "cell_type": "markdown", + "id": "de1d1f16-141a-441d-824c-5c4338b44276", + "metadata": {}, + "source": [ + "The cobweb model is a model of prices and quantities in a given market --- let's say, a market for soy beans.\n", + "\n", + "The model dates back to the 1930s [add references] \n", + "\n", + "Although the model is quite old and rather simple, it helps build economic understanding because of its focus on expectations.\n", + "\n", + "One aspect of the model is that soy beans cannot be produced instantaneously.\n", + "\n", + "Due to this \"production lag\", sellers need to forecast the prices they expect to hold when their soy beans are ready to take to the market.\n", + "\n", + "This informational friction can cause complicated dynamics.\n", + "\n", + "Here we investigate and simulate the basic model under different assumptions regarding the way that produces form expectations.\n", + "\n", + "Our discussion and simulations draw on [high quality lectures](https://comp-econ.org/CEF_2013/downloads/Complex%20Econ%20Systems%20Lecture%20II.pdf) by [Cars Hommes](https://www.uva.nl/en/profile/h/o/c.h.hommes/c.h.hommes.html).\n", + "\n", + "We will use the following imports:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a0ae4df6-f5b0-43db-9278-dde3336403fb", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "48eb8c13-21a9-4ab2-811c-00be8b87f2e3", + "metadata": {}, + "source": [ + "## The Model\n", + "\n", + "Suppose demand for soy beans is given by\n", + "\n", + "$$\n", + " D(p_t) = a - b p_t\n", + "$$\n", + "\n", + "where $a, b$ are nonnegative constants and $p_t$ is the spot (i.e, current market) price at time $t$.\n", + "\n", + "($D(p_t)$ is the quantity demanded in some fixed unit, such as thousands of tons.)\n", + "\n", + "Supply of soy beans depends on *expected* prices at time $t$, which we denote $p^e_t$.\n", + "\n", + "We suppose that supply is nonlinear in expected prices, and takes the form\n", + "\n", + "$$\n", + " S(p^e_t) = \\tanh(\\lambda(p^e_t - c)) + d\n", + "$$\n", + "\n", + "where $\\lambda$ is a positive constant and $c, d \\geq 0$.\n", + "\n", + "Let's make a plot of supply and demand for particular choices of the parameter values.\n", + "\n", + "We will store the parameters in a class and define the functions above as methods." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "dbd933f8-5618-4046-88f8-7e1f06cc9ede", + "metadata": {}, + "outputs": [], + "source": [ + "class Market:\n", + " \n", + " def __init__(self,\n", + " a=8, # demand parameter\n", + " b=1, # demand parameter\n", + " c=6, # supply parameter\n", + " d=1, # supply parameter\n", + " λ = 2.0): # supply parameter\n", + " self.a, self.b, self.c, self.d = a, b, c, d\n", + " self.λ = λ\n", + " \n", + " def demand(self, p):\n", + " a, b = self.a, self.b\n", + " return a - b * p\n", + " \n", + " def supply(self, p):\n", + " c, d, λ = self.c, self.d, self.λ\n", + " return np.tanh(λ * (p - c)) + d\n" + ] + }, + { + "cell_type": "markdown", + "id": "ec14c952-5b45-46b2-9404-fe6f172d28cb", + "metadata": {}, + "source": [ + "Here's the plot." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "125fdf2e-860d-49ca-b307-d7f3b4b3f8ee", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZUUlEQVR4nO3dd3wUdeLG8c9m00mjJSQQeu9NamJDQUMVFAFFlJ8IUsLJedY7PfU89PROCSiIYkEEW+jEgkogoZfQO4SeEGoSCKk7vz9WUSRAEpJMNvu8X6997e7szO6TuTn2cb6zMxbDMAxERERETOJidgARERFxbiojIiIiYiqVERERETGVyoiIiIiYSmVERERETKUyIiIiIqZSGRERERFTqYyIiIiIqVzNDlAQNpuNEydO4Ovri8ViMTuOiIiIFIBhGKSnpxMSEoKLy7X3fzhEGTlx4gShoaFmxxAREZEiOHr0KDVq1Ljm6w5RRnx9fQH7H+Pn52dyGhERESmItLQ0QkNDL3+PX4tDlJHfhmb8/PxURkRERBzMjQ6x0AGsIiIiYiqVERERETGVyoiIiIiYyiGOGREREXEUhmGQm5tLXl6e2VFKnNVqxdXV9aZPu6EyIiIiUkyys7NJSkoiIyPD7Cilxtvbm+DgYNzd3Yv8HiojIiIixcBms5GYmIjVaiUkJAR3d/dyfaJOwzDIzs7m1KlTJCYm0qBBg+ue2Ox6VEZERESKQXZ2NjabjdDQULy9vc2OUyq8vLxwc3Pj8OHDZGdn4+npWaT30QGsIiIixaioewccVXH8vc61xkRERKTMKVQZmTp1Ki1btrx8JtTOnTvz3XffXXeZ5cuX065dOzw9Palbty7Tpk27qcAiIiJSvhSqjNSoUYM33niDDRs2sGHDBu6880769u3Ljh078p0/MTGRiIgIwsPDSUhI4IUXXiAyMpLo6OhiCS8iIiKOr1BlpHfv3kRERNCwYUMaNmzI66+/jo+PD2vWrMl3/mnTplGzZk3effddmjRpwuOPP87w4cN5++23iyW8iIiIFI9bb70Vi8WCxWLB1dWV4OBg7rvvPlatWlXin13kY0by8vL48ssvuXjxIp07d853ntWrV9O9e/crpvXo0YMNGzaQk5NzzffOysoiLS3tiltJ2HL0PI9+so6U9MwSeX8RERFHYBgGmzdv5o033iApKYn9+/czZ84c3N3dufXWW4mJiSnRzy/0T3u3bdtG586dyczMxMfHh3nz5tG0adN8501OTiYoKOiKaUFBQeTm5nL69GmCg4PzXW7ixIm88sorhY1WKDabwTPfbmXPyXQiJsUzaVBrutavUqKfKSIizsMwDC7lmHMWVi83a6HOcbJv3z7S09O59dZbqVatGgC1a9fm9ttv58477+TFF18kIiKipOIWvow0atSIzZs3c/78eaKjoxk2bBjLly+/ZiH588owDCPf6X/0/PPPM2HChMvP09LSCA0NLWzU63JxsfDeQ20Y80UCe06m8/CMtYy7oz7j72qI1aX8nqRGRERKx6WcPJq+9IMpn73z1R54uxf8K37jxo1YrVZatWp11Wt33303//jHP7DZbCX2s+VCv6u7uzv169enffv2TJw4kVatWjFp0qR8561WrRrJyclXTEtJScHV1ZXKlStf8zM8PDwu/2Lnt1tJqB/oy/wxXRl0SyiGAVG/7GfIh2s4maZhGxERcR6bNm2icePG+Z6szc3NDavVWqLnT7npM7AahkFWVla+r3Xu3JlFixZdMe3HH3+kffv2uLm53exHFwsvdytvDGhJ53qVeWHuNtYmnuXeSXH8b2Arbm8UaHY8ERFxUF5uVna+2sO0zy6MjRs30rZt23xf27t3L40bNy6OWNdUqDLywgsvcO+99xIaGkp6ejpffvklsbGxfP/994B9eOX48ePMnDkTgFGjRjFlyhQmTJjAiBEjWL16NTNmzGDOnDnF/5fcpL6tq9Oiuj9jZiewKymNRz9Zz5O31+OvdzfE1apzw4mISOFYLJZCDZWYKSEhgT59+lw1/dKlSyxYsIAxY8aU6OcX6lv25MmTDB06lEaNGtGtWzfWrl3L999/z9133w1AUlISR44cuTx/nTp1iImJITY2ltatW/Paa68RFRXFgAEDivevKCZ1q/owb3QXHu5UE4CpsQcYNH0NJ85fMjmZiIhIyTh48CDnz5+/as+IzWbjySefxNXVlXHjxpVoBovx2xGlZVhaWhr+/v6kpqaW2PEjf7Z46wmej95GelYuAd5u/PeBVnRrEnTjBUVExCllZmaSmJhInTp1inzBODN88803DBw4kL179+Lr60taWhobN24kKiqKw4cPs2jRItq1a3fN5a/3dxf0+9sx9h+ZoFfLEFpU92fs7AS2HU/l/z7bwIjw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xWJheFgdop/swj3NqjHmjvqmZSnUAaxVqlTBarVetRckJSXlqr0fv6lWrVq+87u6ulK5cv5XnPXw8MDDw6Mw0URERKQIWtYIYNrQdqZmKNSeEXd3d9q1a8fSpUuvmL506VK6dOmS7zKdO3e+av4ff/yR9u3b4+amX62IiIg4u0IP00yYMIGPPvqIjz/+mF27dvHUU09x5MiRy+cNef7553nkkUcuzz9q1CgOHz7MhAkT2LVrFx9//DEzZszg6aefLr6/QkRERBxWoc8z8uCDD3LmzBleffVVkpKSaN68OTExMdSqVQuApKQkjhw5cnn+OnXqEBMTw1NPPcV7771HSEgIUVFR5p9jRERERMoE5z4dvIiIiJSYEjnPiIiIiEhxUxkRERERU6mMiIiIiKlURkRERMRUKiMiIiJiKpURERERMZXKiIiIiJhKZURERERMpTIiIiIipir06eDN8NtJYtPS0kxOIiIiIgX12/f2jU727hBlJD09HYDQ0FCTk4iIiEhhpaen4+/vf83XHeLaNDabjRMnTuDr64vFYim2901LSyM0NJSjR4/qmjcFoPVVcFpXBad1VXBaVwWndVVwJbmuDMMgPT2dkJAQXFyufWSIQ+wZcXFxoUaNGiX2/n5+ftpYC0Hrq+C0rgpO66rgtK4KTuuq4EpqXV1vj8hvdACriIiImEplREREREzl1GXEw8ODl19+GQ8PD7OjOAStr4LTuio4rauC07oqOK2rgisL68ohDmAVERGR8sup94yIiIiI+VRGRERExFQqIyIiImIqlRERERExVbktI//85z+xWCxX3KpVq3bdZZYvX067du3w9PSkbt26TJs2rZTSmq+w6ys2Nvaq+S0WC7t37y7F1OY5fvw4Dz/8MJUrV8bb25vWrVuzcePG6y7jrNtXYdeVs25btWvXzvfvHjNmzDWXcdZtqrDrylm3KYDc3Fz+/ve/U6dOHby8vKhbty6vvvoqNpvtusuV9rblEGdgLapmzZrx008/XX5utVqvOW9iYiIRERGMGDGCWbNmsXLlSkaPHk3VqlUZMGBAacQ1XWHW12/27NlzxRn7qlatWiLZypJz587RtWtX7rjjDr777jsCAwM5cOAAAQEB11zGWbevoqyr3zjbtrV+/Xry8vIuP9++fTt33303DzzwQL7zO+s2BYVfV79xtm0K4M0332TatGl89tlnNGvWjA0bNvDYY4/h7+/P+PHj813GlG3LKKdefvllo1WrVgWe/5lnnjEaN258xbSRI0canTp1KuZkZVNh19eyZcsMwDh37lyJZSqrnn32WSMsLKxQyzjr9lWUdeXM29YfjR8/3qhXr55hs9nyfd1Zt6n83GhdOfM21bNnT2P48OFXTOvfv7/x8MMPX3MZM7atcjtMA7Bv3z5CQkKoU6cOgwYN4uDBg9ecd/Xq1XTv3v2KaT169GDDhg3k5OSUdNQyoTDr6zdt2rQhODiYbt26sWzZslJIab6FCxfSvn17HnjgAQIDA2nTpg0ffvjhdZdx1u2rKOvqN864bf0mOzubWbNmMXz48GteHNRZt6k/K8i6+o0zblNhYWH8/PPP7N27F4AtW7YQHx9PRETENZcxY9sqt2WkY8eOzJw5kx9++IEPP/yQ5ORkunTpwpkzZ/KdPzk5maCgoCumBQUFkZuby+nTp0sjsqkKu76Cg4OZPn060dHRzJ07l0aNGtGtWzdWrFhRyslL38GDB5k6dSoNGjTghx9+YNSoUURGRjJz5sxrLuOs21dR1pUzb1u/mT9/PufPn+fRRx+95jzOuk39WUHWlTNvU88++yyDBw+mcePGuLm50aZNG/7yl78wePDgay5jyrZVYvtcypgLFy4YQUFBxn//+998X2/QoIHx73//+4pp8fHxBmAkJSWVRsQy5UbrKz+9evUyevfuXYKpygY3Nzejc+fOV0wbN27cdXdhOuv2VZR1lR9n2bZ+0717d6NXr17XncdZt6k/K8i6yo+zbFNz5swxatSoYcyZM8fYunWrMXPmTKNSpUrGp59+es1lzNi2yu2ekT+rUKECLVq0YN++ffm+Xq1aNZKTk6+YlpKSgqurK5UrVy6NiGXKjdZXfjp16lSo+R1VcHAwTZs2vWJakyZNOHLkyDWXcdbtqyjrKj/Osm0BHD58mJ9++onHH3/8uvM56zb1RwVdV/lxlm3qb3/7G8899xyDBg2iRYsWDB06lKeeeoqJEydecxkzti2nKSNZWVns2rWL4ODgfF/v3LkzS5cuvWLajz/+SPv27XFzcyuNiGXKjdZXfhISEgo1v6Pq2rUre/bsuWLa3r17qVWr1jWXcdbtqyjrKj/Osm0BfPLJJwQGBtKzZ8/rzues29QfFXRd5cdZtqmMjAxcXK78qrdardf9aa8p21aJ7G8pA/76178asbGxxsGDB401a9YYvXr1Mnx9fY1Dhw4ZhmEYzz33nDF06NDL8x88eNDw9vY2nnrqKWPnzp3GjBkzDDc3N+Pbb781608oVYVdX++8844xb948Y+/evcb27duN5557zgCM6Ohos/6EUrNu3TrD1dXVeP311419+/YZX3zxheHt7W3MmjXr8jzavuyKsq6cedvKy8szatasaTz77LNXvaZt6kqFWVfOvE0NGzbMqF69urF48WIjMTHRmDt3rlGlShXjmWeeuTxPWdi2ym0ZefDBB43g4GDDzc3NCAkJMfr372/s2LHj8uvDhg0zbrvttiuWiY2NNdq0aWO4u7sbtWvXNqZOnVrKqc1T2PX15ptvGvXq1TM8PT2NihUrGmFhYcaSJUtMSG6ORYsWGc2bNzc8PDyMxo0bG9OnT7/idW1fvyvsunLmbeuHH34wAGPPnj1XvaZt6kqFWVfOvE2lpaUZ48ePN2rWrGl4enoadevWNV588UUjKyvr8jxlYduyGIZhlMw+FxEREZEbc5pjRkRERKRsUhkRERERU6mMiIiIiKlURkRERMRUKiMiIiJiKpURERERMZXKiIiIiJhKZURERERMpTIiIiIiplIZEREREVOpjIiIiIipVEZERETEVP8PTFtRrwUU8+gAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "p_grid = np.linspace(5, 8, 200)\n", + "m = Market()\n", + "fig, ax = plt.subplots()\n", + "\n", + "ax.plot(p_grid, m.demand(p_grid), label=\"$D$\")\n", + "ax.plot(p_grid, m.supply(p_grid), label=\"S\")\n", + "ax.legend()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f66123e9-c6f9-4b97-ac6f-5fa0b4df025a", + "metadata": {}, + "source": [ + "Market equilibrium requires that supply equals demand, or\n", + "\n", + "$$\n", + " a - b p_t = S(p^e_t)\n", + "$$\n", + "\n", + "Rewriting in terms of $p_t$ gives\n", + "\n", + "$$\n", + " p_t = - \\frac{1}{b} [S(p^e_t) - a]\n", + "$$\n", + "\n", + "Finally, to complete the model, we need to describe how price expectations are formed.\n", + "\n", + "For now, let's just assume that expected prices at time $t$ depend on past prices.\n", + "\n", + "In particular, we suppose that \n", + "\n", + "$$\n", + " p^e_t = f(p_{t-1}, p_{t-2})\n", + "$$\n", + "\n", + "where $f$ is some function.\n", + "\n", + "Thus, we are assuming that producers expect the time-$t$ price to be some function of lagged prices, up to $2$ lags.\n", + "\n", + "(We could of course add additional lags and readers are encouraged to experiment with such cases.)\n", + "\n", + "Combining the last two equations gives the dynamics for prices:\n", + "\n", + "$$\n", + " p_t = - \\frac{1}{b} [ S(f(p_{t-1}, p_{t-2}))) - a]\n", + "$$\n", + "\n", + "The price dynamics depend on the parameter values and also on the function $f$ that tells us how producers form expectations.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "4e77baf5-92f6-4e2a-8638-fc9501048474", + "metadata": {}, + "source": [ + "## Naive Expectations\n", + "\n", + "Naive expectations refers to the case where producers expect the next period spot price to be whatever the price is in the current period.\n", + "\n", + "In other words,\n", + "\n", + "$$ p_t^e = p_{t-1} $$\n", + "\n", + "TODO Simulate and discuss. Try to explain the dynamics as much as possible. Use a 45 degree diagram. " + ] + }, + { + "cell_type": "markdown", + "id": "bccf9a3f-c725-40cb-8a33-627eabbf98fe", + "metadata": {}, + "source": [ + "## Adaptive Expectations\n", + "\n", + "Adaptive expectations refers to the case where producers form expectations for the next period price as a weighted average of their last guess and the current spot price.\n", + "\n", + "That is,\n", + "\n", + "$$ p_t^e = \\alpha p_{t-1} + (1-\\alpha) p^e_{t-1} $$\n", + "\n", + "TODO Simulate and discuss. Try to explain the dynamics as much as possible. " + ] + }, + { + "cell_type": "markdown", + "id": "a86873b1-6972-4745-88c7-06f93e532a0b", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "Add some exercises and solutions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6592ad2-5dd7-4318-b58d-0cbd03e97545", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}