{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Coding practice \\#5: Due end of class, December 10\n", "\n", "Files needed = ('JEC.xls', 'JEC_data_description.pdf', 'SP500_daily.csv' )\n", "\n", "Answer the questions below in a jupyter notebook. You can simply add cells to this notebook and enter your answers. When you are finished, print the notebook and hand it in during class. \$To print: From the file menu, choose 'print preview' which will open a new tab with the notebook ready to print. Please print on both sides of paper if possible.\$\n", "\n", "A reminder: Ruhl's office hours are T/R 2:30PM-3:30PM in Soc Sci 7444 and McWeeny's office hours are Monday 9:30AM-11:30AM in Soc Sci 6470. \n", "\n", "*You should feel free to discuss the coding practice with your classmates, but the work you turn in should be your own.*\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 0: Your name\n", "Replace 'Your name' above with your actual name. Enter it as last name, first name. Do not forget the comma!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 1: Estimating a demand curve\n", "\n", "This problem is taken from empirical exercise 12.1 in the textbook *Introduction to Econometrics*, 10th edition, by James H. Stock and Mark W. Watson.\n", "\n", "During the 1880s, a cartel known as the Joint Executive Committee (JEC) controlled the rail transport of grain from the Midwest to eastern cities in the United States. The cartel preceded the Sherman Antitrust Act of 1890, and it legally operated to increase the price of grain above what would have been the competitive price. From time to time, cheating by members of the cartel brought about a temporary collapse of the collusive price-setting agreement.\n", "\n", "In this exercise, you will use variations in supply associated with the cartel's collapses to estimate the elasticity of demand for rail transport of grain.\n", "\n", "The file 'JEC.xls' contains the data required for this exercise. It contains weekly observations on the rail shipping price and other factors from 1880 to 1886. See 'JEC_data_description.pdf' for a detailed description of the variables.\n", "\n", "Suppose that the **demand curve equation** for rail transport of grain is specified as \n", "\n", "$$\\ln(Q_i) = \\beta_0 + \\beta_1 \\ln(P_i) + \\beta_2 Ice_i + \\sum_{j=1}^{12} \\beta_{2+j} Seas_{j,i} + u_i,$$\n", "\n", "where $Q_i$ is the total tonnage of grain shipped in week $i$, $P_i$ is the price of shipping one ton (2,000 pounds) of grain by rail, $Ice_i$ is a binary variable that is equal to 1 if the Great Lakes are not navigable because of ice, and $Seas_{j,i}$ is a binary variable that captures seasonal variation in demand. $Ice$ is included because grain could also be transported by ship when the Great Lakes were navigable.\n", "\n", "\n", "### Part (a)\n", "\n", "Load the data as a Pandas dataframe. Then estimate the demand curve equation by OLS using the HC3 estimator for the standard errors. Print the summary table of the results. What is the estimated value of the price elasticity of demand and its standard error? Print these values after the results table, rounding to 3 decimal places." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import patsy \n", "import statsmodels.formula.api as smf" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
weekpricecartelquantityseas1seas2seas3seas4seas5seas6seas7seas8seas9seas10seas11seas12ice
010.401136321000000000001
120.401200351000000000001
230.401163191000000000001
340.401126031000000000001
450.401230790100000000001
560.401196520100000000001
670.401162110100000000001
780.401229140100000000001
890.401237100010000000001
9100.351230360010000000001
\n", "
" ], "text/plain": [ " week price cartel quantity seas1 seas2 seas3 seas4 seas5 seas6 \\\n", "0 1 0.40 1 13632 1 0 0 0 0 0 \n", "1 2 0.40 1 20035 1 0 0 0 0 0 \n", "2 3 0.40 1 16319 1 0 0 0 0 0 \n", "3 4 0.40 1 12603 1 0 0 0 0 0 \n", "4 5 0.40 1 23079 0 1 0 0 0 0 \n", "5 6 0.40 1 19652 0 1 0 0 0 0 \n", "6 7 0.40 1 16211 0 1 0 0 0 0 \n", "7 8 0.40 1 22914 0 1 0 0 0 0 \n", "8 9 0.40 1 23710 0 0 1 0 0 0 \n", "9 10 0.35 1 23036 0 0 1 0 0 0 \n", "\n", " seas7 seas8 seas9 seas10 seas11 seas12 ice \n", "0 0 0 0 0 0 0 1 \n", "1 0 0 0 0 0 0 1 \n", "2 0 0 0 0 0 0 1 \n", "3 0 0 0 0 0 0 1 \n", "4 0 0 0 0 0 0 1 \n", "5 0 0 0 0 0 0 1 \n", "6 0 0 0 0 0 0 1 \n", "7 0 0 0 0 0 0 1 \n", "8 0 0 0 0 0 0 1 \n", "9 0 0 0 0 0 0 1 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "jec = pd.read_excel('JEC.xls')\n", "jec.head(10)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "# We need to build the string that specifies the regression. Here are two ways\n", "\n", "# Tedious way (remember what triple quotes do?): \n", "# model_str = '''np.log(quantity) ~ np.log(price) + ice + seas1 + seas2 + seas3 + seas4 +\n", "# seas5 + seas6 + + seas7 + seas8 + seas9 + seas10 + seas11 + seas12'''\n", "\n", "\n", "# Let Python do the work!\n", "varlist = ['seas' + str(x) for x in range(1,13)]\n", "\n", "seasons = ' + '.join(varlist) # The .join() method concatenates all the elements \n", " # in varlist and puts a plus sign between them\n", " \n", "model_str = 'np.log(quantity) ~ np.log(price) + ice +' + seasons" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: np.log(quantity) R-squared: 0.313\n", "Model: OLS Adj. R-squared: 0.282\n", "Method: Least Squares F-statistic: 11.14\n", "Date: Tue, 04 Dec 2018 Prob (F-statistic): 1.14e-20\n", "Time: 11:35:20 Log-Likelihood: -154.95\n", "No. Observations: 328 AIC: 339.9\n", "Df Residuals: 313 BIC: 396.8\n", "Df Model: 14 \n", "Covariance Type: HC3 \n", "=================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "---------------------------------------------------------------------------------\n", "Intercept 8.8612 0.189 46.931 0.000 8.491 9.231\n", "np.log(price) -0.6389 0.075 -8.473 0.000 -0.787 -0.491\n", "ice 0.4478 0.145 3.081 0.002 0.163 0.733\n", "seas1 -0.1328 0.099 -1.345 0.179 -0.326 0.061\n", "seas2 0.0669 0.094 0.715 0.474 -0.116 0.250\n", "seas3 0.1114 0.100 1.116 0.265 -0.084 0.307\n", "seas4 0.1554 0.137 1.137 0.256 -0.113 0.423\n", "seas5 0.1097 0.137 0.801 0.423 -0.159 0.378\n", "seas6 0.0468 0.189 0.248 0.804 -0.324 0.417\n", "seas7 0.1226 0.212 0.579 0.563 -0.293 0.538\n", "seas8 -0.2350 0.187 -1.254 0.210 -0.602 0.132\n", "seas9 0.0036 0.185 0.019 0.985 -0.359 0.366\n", "seas10 0.1692 0.186 0.912 0.362 -0.194 0.533\n", "seas11 0.2152 0.185 1.161 0.246 -0.148 0.578\n", "seas12 0.2196 0.183 1.203 0.229 -0.138 0.577\n", "==============================================================================\n", "Omnibus: 14.928 Durbin-Watson: 0.528\n", "Prob(Omnibus): 0.001 Jarque-Bera (JB): 15.666\n", "Skew: -0.505 Prob(JB): 0.000396\n", "Kurtosis: 3.353 Cond. No. 35.6\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors are heteroscedasticity robust (HC3)\n", "\n", "\n", "The estimated price elasticity of demand is -0.639, and its standard error is 0.075.\n" ] } ], "source": [ "# Now estimate the model defined in model_str\n", "ols_res = smf.ols(model_str, data=jec).fit(cov_type = 'HC3')\n", "\n", "\n", "print(ols_res.summary())\n", "print('\\n\\nThe estimated price elasticity of demand is {0:2.3f}, and its standard error is {1:2.3f}.'\n", " .format(ols_res.params['np.log(price)'], ols_res.HC3_se['np.log(price)']))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part (b)\n", "\n", "Explain why the interaction of supply and demand could make the OLS estimator of the elasticity biased." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer:**\n", "\n", "Prices and quantities are determined by the intersection of supply and demand in market equilibrium. Due to this simultaneity problem, we cannot simply run OLS to estimate the demand curve. If we do run OLS, it is unclear which curve we are actually estimating -- in some sense we are not (consistently) estimating either supply or demand!\n", "\n", "Alternatively, you could think of $u_i$ as an unobserved factor that shifts demand. If $u_i$ is positive, then demand is shifted to the right, which would increase both price and quantity when supply is held fixed. Thus $Cov(\\ln(P_i), u_i) > 0$ and the OLS coefficient is biased upwards.\n", "\n", "If you would like to know more, [this note](http://econ.ucsb.edu/~doug/241b/Lectures/17%20Endogeneity%20Bias%20-%20Working's%20Example.pdf) by Douglas Steigerwald is provides a more detailed explanation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part (c)\n", "\n", "Consider using the variable $cartel_i$ as an instrumental variable for $\\ln(P_i)$ (see JEC_data_description.pdf for this variable's definition). Use economic reasoning to argue whether $cartel_i$ plausibly satisfies the two conditions for a valid instrument." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Answer:**\n", "\n", "Supply shifters are standard instruments for price when estimating a demand curve. If we have a variable that exogenously shifts the supply curve, we can use these shifts to trace out the demand curve.\n", "\n", "For $cartel_i$ to be a valid instrument for $\\ln(P_i)$, it must satisfy the following two conditions:\n", "1. Relevance: $Cov(cartel_i,\\ln(P_i)) \\neq 0$\n", "2. Exogeneity: $Cov(cartel_i, u_i) = 0$\n", "\n", "In this case, the first condition is satisfied: the cartel acts to restrict quantity and increase prices, so $Cov(cartel_i,\\ln(P_i)) > 0$. \n", "\n", "The second condition requires that the operation of the cartel was unrelated to other unobserved factors that shift the demand for rail transport of grain. Though it is impossible to verify this condition, it is difficult to think of a scenario in which it is violated in this case.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part (d)\n", "\n", "Estimate the demand equation using two stage least squares with $cartel_i$ as an instrument for $\\ln(P_i)$. Print the results summary table. What is the estimated value of the price elasticity of demand and its standard error? Print these values after the results table, rounding to 3 decimal places.\n", "\n", "**NOTE:** You might need to install the linearmodels package if you didn't attend the class on IV regression. To do so, open a command window and type\n", "\n", "pip install --user linearmodels\n", "\n", "then hit enter." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "import linearmodels.iv as iv " ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " IV-2SLS Estimation Summary \n", "==============================================================================\n", "Dep. Variable: np.log(quantity) R-squared: 0.2959\n", "Estimator: IV-2SLS Adj. R-squared: 0.2644\n", "No. Observations: 328 F-statistic: 165.29\n", "Date: Tue, Dec 04 2018 P-value (F-stat) 0.0000\n", "Time: 11:35:20 Distribution: chi2(14)\n", "Cov. Estimator: robust \n", " \n", " Parameter Estimates \n", "=================================================================================\n", " Parameter Std. Err. T-stat P-value Lower CI Upper CI\n", "---------------------------------------------------------------------------------\n", "Intercept 8.5735 0.2106 40.701 0.0000 8.1607 8.9864\n", "ice 0.4229 0.1315 3.2160 0.0013 0.1652 0.6807\n", "seas1 -0.1310 0.1005 -1.3027 0.1927 -0.3280 0.0661\n", "seas2 0.0910 0.0927 0.9807 0.3267 -0.0908 0.2727\n", "seas3 0.1359 0.0981 1.3852 0.1660 -0.0564 0.3281\n", "seas4 0.1525 0.1314 1.1610 0.2456 -0.1050 0.4100\n", "seas5 0.0736 0.1271 0.5786 0.5629 -0.1756 0.3227\n", "seas6 -0.0061 0.1722 -0.0352 0.9719 -0.3435 0.3314\n", "seas7 0.0602 0.1964 0.3066 0.7591 -0.3247 0.4452\n", "seas8 -0.2936 0.1708 -1.7194 0.0855 -0.6283 0.0411\n", "seas9 -0.0584 0.1714 -0.3405 0.7334 -0.3943 0.2776\n", "seas10 0.0858 0.1738 0.4937 0.6215 -0.2549 0.4265\n", "seas11 0.1518 0.1716 0.8845 0.3764 -0.1846 0.4882\n", "seas12 0.1787 0.1669 1.0707 0.2843 -0.1484 0.5057\n", "np.log(price) -0.8666 0.1307 -6.6285 0.0000 -1.1228 -0.6103\n", "=================================================================================\n", "\n", "Endogenous: np.log(price)\n", "Instruments: cartel\n", "Robust Covariance (Heteroskedastic)\n", "Debiased: False\n", "\n", "\n", "The estimated price elasticity of demand is -0.867, and its standard error is 0.131.\n" ] } ], "source": [ "# The seasons variable is the same as in the first regression.\n", "model_str_iv = 'np.log(quantity) ~ 1 + [np.log(price) ~ cartel] + ice + ' + seasons\n", "\n", "iv_res = iv.IV2SLS.from_formula(model_str_iv, jec).fit()\n", "\n", "\n", "print(iv_res.summary)\n", "print('\\n\\nThe estimated price elasticity of demand is {0:2.3f}, and its standard error is {1:2.3f}.'\n", " .format(iv_res.params['np.log(price)'], iv_res.std_errors['np.log(price)']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 2: Forecasting U.S. GDP growth\n", "\n", "In this exercise, we will forecast the growth rate of U.S. GDP for the next 9 quarters: the fourth quarter of 2018 through the fourth quarter of 2020. Some economists believe that the U.S. economy will enter a recession by the end of 2020:\n", "* According to a survey conducted by the National Association for Business Economists, two-thirds of the economists surveyed believed the U.S. will enter a recession by the end of 2020. [(Source)](https://apnews.com/5df2300faa8a4f74b9b0f3ae2b6c64aa)\n", "* In June, former Federal Reserve Chairman Ben Bernanke said \"\$The stimulus\$ is going to hit the economy in a big way this year and next year, and then in 2020 Wile E. Coyote is going to go off the cliff.\" [(Source)](https://www.bloomberg.com/news/articles/2018-06-07/bernanke-says-u-s-economy-faces-wile-e-coyote-moment-in-2020)\n", "\n", "What do you think? \n", "\n", "We'll expand on the model used in class: instead of using a pure autoregressive model, we will add other indicators that are predictive of GDP growth to the model. Follow the instructions below to create the forecast.\n", "\n", "### Part (a): Importing and preparing the data\n", "\n", "1. Use pandas_datareader and the FRED API to import the following variables into a Pandas dataframe. **Set the start date as January 1, 1980.**\n", "\n", " * Real GDP growth rate (quarterly): code 'A191RL1Q225SBEA'\n", " * Unemployment rate (monthly): code 'UNRATE'\n", " * Consumer price index (monthly): code 'CPIAUCSL'\n", " * New housing starts (monthly): code 'HOUST'\n", " \n", "Once the data are imported: \n", "\n", "* Give these variables more reasonable names. \n", "* Resample the data to the quarterly frequency. \n", "* Create a variable containing the inflation rate, calculated as the percentage change in the consumer price index. \n", "* Print the last 5 rows of the resulting dataframe." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from pandas_datareader import data, wb \n", "import datetime as dt " ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
gdpunempCPIAUCSLhousinginflation
DATE
2017-12-312.34.100000247.3013331259.3333330.817242
2018-03-312.24.100000249.4420001317.0000000.865611
2018-06-304.23.900000250.4683331260.6666670.411452
2018-09-303.53.833333251.7086671224.6666670.495206
2018-12-31NaN3.700000252.8270001228.0000000.444297
\n", "
" ], "text/plain": [ " gdp unemp CPIAUCSL housing inflation\n", "DATE \n", "2017-12-31 2.3 4.100000 247.301333 1259.333333 0.817242\n", "2018-03-31 2.2 4.100000 249.442000 1317.000000 0.865611\n", "2018-06-30 4.2 3.900000 250.468333 1260.666667 0.411452\n", "2018-09-30 3.5 3.833333 251.708667 1224.666667 0.495206\n", "2018-12-31 NaN 3.700000 252.827000 1228.000000 0.444297" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "macro_vars = ['A191RL1Q225SBEA','UNRATE','CPIAUCSL','HOUST']\n", "\n", "start = dt.datetime(1980, 1, 1)\n", "fred = data.DataReader(macro_vars, 'fred', start)\n", "\n", "fred.rename(columns={'A191RL1Q225SBEA':'gdp', 'UNRATE':'unemp', 'HOUST':'housing'}, inplace=True)\n", "fred = fred.resample('q').mean()\n", "fred['inflation'] = fred['CPIAUCSL'].pct_change()*100 # Inflation rate\n", "\n", "fred.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Import the file 'SP500_daily.csv' to obtain daily closing values of the S&P 500 Index. (Strangely, all of the finance APIs compatible with pandas_datareader only import data since 2010 or so, so we'll use a CSV file for this instead.) \n", "\n", "\n", "* Set the dates as the index. \n", "* Resample to the quarterly level. \n", "* Create a new column containing the quarterly growth rate of the S&P 500. \n", "* Print the last 5 rows of the resulting data frame." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
date
2017-12-312602.3109422608.3053772596.4611122603.2773172603.2773173.322159e+095.516541
2018-03-312735.4032722753.1595162715.9239482733.4767232733.4767233.816546e+095.001365
2018-06-302703.8367192715.7257962689.0521742703.1312452703.1312453.479775e+09-1.110142
2018-09-302847.0580982856.8996702839.9715872849.6014312849.6014313.115436e+095.418538
2018-12-312913.5333662921.2016602895.6550292907.5233562907.5233563.420157e+092.032633
\n", "
" ], "text/plain": [ " open high low close adj close \\\n", "date \n", "2017-12-31 2602.310942 2608.305377 2596.461112 2603.277317 2603.277317 \n", "2018-03-31 2735.403272 2753.159516 2715.923948 2733.476723 2733.476723 \n", "2018-06-30 2703.836719 2715.725796 2689.052174 2703.131245 2703.131245 \n", "2018-09-30 2847.058098 2856.899670 2839.971587 2849.601431 2849.601431 \n", "2018-12-31 2913.533366 2921.201660 2895.655029 2907.523356 2907.523356 \n", "\n", " volume sp500 \n", "date \n", "2017-12-31 3.322159e+09 5.516541 \n", "2018-03-31 3.816546e+09 5.001365 \n", "2018-06-30 3.479775e+09 -1.110142 \n", "2018-09-30 3.115436e+09 5.418538 \n", "2018-12-31 3.420157e+09 2.032633 " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Read in stock data, rename columns, format date, set date as index\n", "stocks = pd.read_csv(\"SP500_daily.csv\")\n", "stocks.columns = [col.lower() for col in stocks.columns]\n", "stocks['date'] = pd.to_datetime(stocks['date'], yearfirst=True)\n", "stocks.set_index('date', inplace = True)\n", "\n", "# Change frequency to quarterly level:\n", "stocks = stocks.resample('q').mean()\n", "\n", "# Generate quarterly returns:\n", "stocks['sp500'] = stocks['close'].pct_change()*100\n", "stocks.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Now merge the two data frames created above. Then, keep only the columns associated with the GDP growth rate, the unemployment rate, the inflation rate, new housing starts, and the S&P 500 growth rate. Print the last 5 rows of the data frame." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
gdpunempinflationhousingsp500
2017-12-312.34.1000000.8172421259.3333335.516541
2018-03-312.24.1000000.8656111317.0000005.001365
2018-06-304.23.9000000.4114521260.666667-1.110142
2018-09-303.53.8333330.4952061224.6666675.418538
2018-12-31NaN3.7000000.4442971228.0000002.032633
\n", "
" ], "text/plain": [ " gdp unemp inflation housing sp500\n", "2017-12-31 2.3 4.100000 0.817242 1259.333333 5.516541\n", "2018-03-31 2.2 4.100000 0.865611 1317.000000 5.001365\n", "2018-06-30 4.2 3.900000 0.411452 1260.666667 -1.110142\n", "2018-09-30 3.5 3.833333 0.495206 1224.666667 5.418538\n", "2018-12-31 NaN 3.700000 0.444297 1228.000000 2.032633" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.merge(left=fred, right=stocks, left_index=True, right_index=True, how = 'inner')\n", "\n", "# Drop unneeded variables: \n", "data = data[['gdp','unemp','inflation','housing','sp500']]\n", "#data.index = data.index.to_period(\"Q\")\n", "data.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part (b): The model and creating lagged and forward values\n", "\n", "Our goal is to forecast the growth rate of GDP $h$ quarters into the future, for $h=1,2,\\dots,9$. Do do so we will run a separate regression for each forecast horizon, and then use the most recent values of the data (i.e., the values for the third quarter of 2018) to create the predicted value of GDP growth for each $h$.\n", "\n", "In particular, we will use the model\n", "\n", "\n", "\\begin{align}\n", "gGDP_{t+h} = & \\rho^h_0 + \\rho^h_1 gGDP_t + \\rho^h_2 gGDP_{t-1} + \\rho^h_3 unemp_t + \\rho^h_4 unemp_{t-1} \\\\\n", " & \\\\\n", " & + \\rho^h_5 inflation_t + \\rho^h_6 inflation_{t-1} + \\rho^h_7 housing_t + \\rho^h_8 housing_{t-1} \\\\\n", " & \\\\\n", " & + \\rho^h_9 gSP500_t + \\rho^h_{10} gSP500_{t-1} + \\varepsilon_{t+h} \\\\\n", "\\end{align}\n", "\n", "\n", "where $gGDP_t$ is the GDP growth rate in quarter $t$, $unemp_t$ is the unemployment rate, $inflation_t$ is the inflation rate, $housing_t$ is the number of new housing starts, and $gSP500_t$ is the growth rate of the S&P 500. Note that the parameters are indexed by $h$, meaning that their values will be different for different forecast horizons.\n", "\n", "Follow the instructions below.\n", "\n", "1. Before estimating the model, create new columns that contain the lagged values of the explanatory variables: $gGDP_{t-1}, umep_{t-1}, inflation_{t-1}, housing_{t-1}$, and $gSP500_{t-1}$. Use the .shift() method to do so.\n", "2. We also need to create columns that contain the **forward** values of GDP growth, as these will be our dependent variables (i.e., $gGDP_{t+h}$ for $h=1,2,\\dots,9$). You can either do this manually or write a loop. Name these columns 'F1gdp', 'F2gdp', etc. Again, use the .shift() method. Print the last 5 rows of the resulting dataframe." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
gdpunempinflationhousingsp500L1gdpL1unempL1inflationL1housingL1sp500F1gdpF2gdpF3gdpF4gdpF5gdpF6gdpF7gdpF8gdpF9gdp
2017-12-312.34.1000000.8172421259.3333335.5165412.84.3000000.5273011171.6666672.8859272.24.23.5NaNNaNNaNNaNNaNNaN
2018-03-312.24.1000000.8656111317.0000005.0013652.34.1000000.8172421259.3333335.5165414.23.5NaNNaNNaNNaNNaNNaNNaN
2018-06-304.23.9000000.4114521260.666667-1.1101422.24.1000000.8656111317.0000005.0013653.5NaNNaNNaNNaNNaNNaNNaNNaN
2018-09-303.53.8333330.4952061224.6666675.4185384.23.9000000.4114521260.666667-1.110142NaNNaNNaNNaNNaNNaNNaNNaNNaN
2018-12-31NaN3.7000000.4442971228.0000002.0326333.53.8333330.4952061224.6666675.418538NaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " gdp unemp inflation housing sp500 L1gdp L1unemp \\\n", "2017-12-31 2.3 4.100000 0.817242 1259.333333 5.516541 2.8 4.300000 \n", "2018-03-31 2.2 4.100000 0.865611 1317.000000 5.001365 2.3 4.100000 \n", "2018-06-30 4.2 3.900000 0.411452 1260.666667 -1.110142 2.2 4.100000 \n", "2018-09-30 3.5 3.833333 0.495206 1224.666667 5.418538 4.2 3.900000 \n", "2018-12-31 NaN 3.700000 0.444297 1228.000000 2.032633 3.5 3.833333 \n", "\n", " L1inflation L1housing L1sp500 F1gdp F2gdp F3gdp F4gdp \\\n", "2017-12-31 0.527301 1171.666667 2.885927 2.2 4.2 3.5 NaN \n", "2018-03-31 0.817242 1259.333333 5.516541 4.2 3.5 NaN NaN \n", "2018-06-30 0.865611 1317.000000 5.001365 3.5 NaN NaN NaN \n", "2018-09-30 0.411452 1260.666667 -1.110142 NaN NaN NaN NaN \n", "2018-12-31 0.495206 1224.666667 5.418538 NaN NaN NaN NaN \n", "\n", " F5gdp F6gdp F7gdp F8gdp F9gdp \n", "2017-12-31 NaN NaN NaN NaN NaN \n", "2018-03-31 NaN NaN NaN NaN NaN \n", "2018-06-30 NaN NaN NaN NaN NaN \n", "2018-09-30 NaN NaN NaN NaN NaN \n", "2018-12-31 NaN NaN NaN NaN NaN " ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create new columns containing lagged values of GDP and explanatory variables:\n", "data['L1gdp'] = data['gdp'].shift()\n", "data['L1unemp'] = data['unemp'].shift()\n", "data['L1inflation'] = data['inflation'].shift()\n", "data['L1housing'] = data['housing'].shift()\n", "data['L1sp500'] = data['sp500'].shift()\n", "\n", "# Create new columns to contain forward values of the GDP growth rate:\n", "for h in range(1,10):\n", " var = 'F' + str(h) + 'gdp' # Create string containing the variable name, like \"F1gdp\"\n", " data[var] = data['gdp'].shift(-h) # Create column in data frame\n", "\n", "data.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part (c): Estimating the model\n", "\n", "Now we can estimate the model and create our forecast of GDP growth. This will require running 9 separate regressions and then obtaining the 9 predicted values. Follow the instructions below.\n", "\n", "1. Store the values of the right hand side variables for the third quarter of 2018 (i.e., '2018-09-30') as a series called current_values.\n", "2. Create an empty list called forecast_list. Then, append the value of the GDP growth rate for the third quarter of 2018 to this list. (We will append each value of our forecast to this list as we go along - adding the current value of GDP growth just makes plotting easier.)\n", "3. Write a for-loop that iterates through each forecast horizon $(h=1,2,\\dots,9)$ and estimates the model described in part (b) using OLS. The loop should do the following:\n", " 1. Fit the model for the given time horizon.\n", " 2. Print the summary table of results **for the first regression only (i.e., for $h=1$).**\n", " 3. Use the .predict() method and the series current_values to predict the future value of GDP for the current $h$. Then append this value to forecast_list.\n", " \n", "Print the values of forecast_list to see the predicted GDP growth rates.\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: F1gdp R-squared: 0.435\n", "Model: OLS Adj. R-squared: 0.394\n", "Method: Least Squares F-statistic: 10.83\n", "Date: Tue, 04 Dec 2018 Prob (F-statistic): 1.60e-13\n", "Time: 11:35:21 Log-Likelihood: -324.59\n", "No. Observations: 152 AIC: 671.2\n", "Df Residuals: 141 BIC: 704.4\n", "Df Model: 10 \n", "Covariance Type: nonrobust \n", "===============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "-------------------------------------------------------------------------------\n", "Intercept -2.6388 1.332 -1.981 0.050 -5.272 -0.005\n", "gdp -0.0553 0.094 -0.588 0.558 -0.241 0.131\n", "L1gdp 0.0393 0.082 0.478 0.633 -0.123 0.202\n", "unemp -1.7003 0.846 -2.011 0.046 -3.372 -0.028\n", "L1unemp 2.0362 0.853 2.386 0.018 0.349 3.723\n", "inflation -0.5521 0.357 -1.545 0.125 -1.258 0.154\n", "L1inflation -0.2163 0.338 -0.640 0.523 -0.884 0.452\n", "housing 0.0075 0.002 3.658 0.000 0.003 0.011\n", "L1housing -0.0048 0.002 -2.304 0.023 -0.009 -0.001\n", "sp500 0.1150 0.031 3.686 0.000 0.053 0.177\n", "L1sp500 0.0305 0.034 0.909 0.365 -0.036 0.097\n", "==============================================================================\n", "Omnibus: 0.434 Durbin-Watson: 1.998\n", "Prob(Omnibus): 0.805 Jarque-Bera (JB): 0.509\n", "Skew: -0.124 Prob(JB): 0.775\n", "Kurtosis: 2.861 Cond. No. 1.55e+04\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "[2] The condition number is large, 1.55e+04. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n", "\n", "[3.5, 1.9953303644485243, 1.8548493163274742, 1.5066022741777907, 1.1629696600535357, 1.4281405126201374, 1.438806549562976, 1.2649030333502935, 1.6916491637487372, 2.223748194260521]\n" ] } ], "source": [ "import patsy \n", "import statsmodels.formula.api as smf\n", "\n", "Xvars = ['gdp','L1gdp', 'unemp', 'L1unemp', 'inflation', 'L1inflation', 'housing','L1housing', 'sp500', 'L1sp500']\n", "\n", "Xvars_string = ' + '.join(Xvars)\n", "\n", "# Series containing current values of the explanatory variables.\n", "current_values = data.loc['2018-09-30',Xvars]\n", "\n", "# To make plotting easier, initialize forecast_list to current value of gdp.\n", "# This will simply connect the lines for the historical data and the forecast.\n", "forecast_list = []\n", "forecast_list.append(float(data.loc['2018-09-30','gdp']))\n", "\n", "\n", "# Loop through each forecast horizon:\n", "for h in range(1,10):\n", " var = var = 'F' + str(h) + 'gdp' \n", " # Use same trick as above to conveniently write the expression for the model:\n", " res = smf.ols(var + ' ~ + ' + Xvars_string, data=data).fit()\n", " if h == 1:\n", " print(res.summary()) # Print results summary for first regression only\n", " pt_forecast = float(res.predict(current_values)) # The .predict() method creates the forecast of GDP.\n", " forecast_list.append(pt_forecast) # Append the forecast for the current horizon to the list of forecasts\n", " \n", "print('') \n", "print(forecast_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part (d): Plotting the historical data and the forecast.\n", "\n", "1. Use the following line of code to create an object containing the values of the dates corresponding to each quarter from the third quarter of 2018 to the fourth quarter of 2020. These are the 'x' data you need for plotting the forecasts:\n", "python\n", "future_dates = pd.date_range('2018-09-30', periods=10, freq='Q')\n", "\n", "2. Now, create a plot of the historical GDP growth rates along with the forecasted values. **For the historical data, plot only the values since December 31, 2007 ('2007-12-31').** Make the historical data a solid black line and the forecast a blue dashed line. Make other aspects of the plot look nice, including appropriate labels and a legend.\n", "\n", "If you've followed all these directions, then your forecast should have a \"U\" shape: we're predicting GDP growth to slow slightly but then recover over the next few years. We do not appear to be predicting a recession, as GDP growth is not forecasted to be negative." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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40csERHJQFdeeaXfESTAVGymqezsbDp37txksalRTRERSaXevXv7HUECTNPoacrMmtxrU8WmiIik2vbt29m+fbvfMVolOzv7mMdz5szh29/+NgBPPPEEzz33XLM/u3TpUlasWNHq93z11Vd58MEHW/1zAAMHDqSysjLmaxp/hua0NXsiNLKZxo4vNg8dOsT27dtVbIqISEq99dZbAMyaNcvfIEly2223xXx+6dKlZGdnM27cuLjbrK2tZdq0aUybNi3ReAlpS/ZEaWQzjR1fbG7ZsgXQ4iAREUmtr371q3z1q1/1O0bSzJ49m4cffhiAxx9/nLPPPpuCggJuvPFGysvLeeKJJ/jlL3/JqFGj+Mtf/sLWrVuZNGkSBQUFTJo0iW3btgH1xfc999zDxIkT+cEPfnDMyGNFRQVXX301I0eOZOTIkQ2jjVdddRWjR49m+PDhPPnkky1mfeaZZxg2bBgTJkzgnXfeaTj+2muvcf7551NYWMjkyZOpqKhoMntTr0s2jWymsXA4zLJlyxoeayW6iIj4ofF+z6111113sXbt2iSmgVGjRvHoo4/GfM2hQ4cYNWpUw+O9e/c2Oer44IMPUlZWRseOHfn000/p3r07t912G9nZ2dx7770ATJ06lZtvvplbbrmFp59+mjvvvJNXXnkFgE2bNrF48WJCoRBz5sxpaPfOO+9kwoQJzJs3j6NHj1JdXQ3A008/TU5ODocOHeK8887ja1/7Grm5uU1+hp07d/LAAw+wZs0aunXrxsSJEyksLARg/PjxrFq1CjPjqaee4qGHHuKRRx45Ifu+ffuafF0yqdhMY+FwmKqqKo4cOUKHDh0ais38/Hyfk4mISCYpLy8H6s8rTBennHLKMUXunDlzeO+99054XUFBATNnzuSqq67iqquuarKtlStX8vLLLwNw00038f3vf7/hueuuu45QKHTCz/z5z39uOC80FArRrVs3oH4kdd68eUD9ubAlJSXNFpurV6/m4osvplevXgDccMMNbNq0CYAdO3Zwww03sHPnTo4cOcKgQYOabCPe1yVCxWYai25/tHv3bvr160dJSQk9e/ake/fuPicTEZFMsnTpUqBt52y2NALptzfeeIPly5fz6quv8uMf/5iNGze2+DNm1nD/1FNPjfu9li5dyuLFi1m5ciWdO3fm4osv5vDhw3G/V2N33HEH99xzD9OmTWPp0qXMnj07odclQudsprHj99rUSnQREfHD9OnTmT59ut8xkq6uro7t27czceJEHnroIT799FOqq6vp0qULn332WcPrxo0bxwsvvADA3LlzGT9+fIttT5o0iV//+tcAHD16lAMHDrB//3569OhB586dKSoqYtWqVTHbOP/881m6dClVVVXU1NTwhz/8oeG5/fv307dvXwCeffbZhuPHZ2/udcmkYjONqdgUEZEg6NGjBz169PA7RtIdPXqUr3/964wYMYLCwkLuvvtuunfvztSpU5k3b17DIpvHH3+cZ555hoKCAn7729/y2GOPtdj2Y489xpIlSxgxYgSjR49m48aNXH755dTW1lJQUMA//dM/MXbs2JhtnHbaacyePZsLLriAyZMnc+655zY8N3v2bK677jq+/OUvH3NO7fHZm3tdMplzzpOGvTBmzBjX1PkUmWr79u0MGDCA3/zmN8yYMYPs7Gx+/OMf86Mf/cjvaCIikkFKS0sBGDx4sM9JJMWansM/js7ZTGPRKzbs2rWLzZs3A1qJLiIiqbd8+XJAxaY0zZdi08xGAU8AnYBa4Hbn3F/9yJLOOnbsSE5ODrt27dK2RyIi4purr77a7wgSYH6NbD4E/Itz7o9mdmXk8cU+ZUlr0Y3dVWyKiIhfotv2iDTFrwVCDugaud8N+MSnHGmvcbHZp08funTp4nckERHJMJs3b244nUvkeH6NbN4F/MnMHqa+4E3dBTpPMuFwmNWrV2NmGtUUERFfvP3224AuKiJN86zYNLPFQLiJp+4HJgF3O+f+28yuB/4LmNxMO7cCtwIMGDDAo7TpKzqyWV1dzZVXXul3HBERyUDXXnut3xEkwDwrNp1zTRaPAGb2HPCdyMM/AE/FaOdJ4Emo3/oomRlPBuFwmIMHD3Lw4EGNbIqIiC+ys7P9jtBqoVCIESNGNDx+5ZVXAnG5zfLyclasWMHf/d3f+R0lafyaRv8EmAAsBS4BSnzKkfaiG7uDFgeJiIg/iouLATjjjDN8ThK/46+NHq/a2lrat/eufCovL+f3v//9SVVs+rVA6B+AR8xsHfCvRKbJpfVUbIqIiN9WrlzJypUr/Y6RsMOHD/ONb3yj4YpBS5YsAWDOnDlcd911TJ06lSlTpgDwi1/8gvPOO4+CggIeeOCBhjaee+45CgoKGDlyJDfddBMAr732Gueffz6FhYVMnjyZiooKAJYtW8aoUaMYNWoUhYWFfPbZZ9x333385S9/YdSoUfzyl79McQ94w5eRTefc28BoP977ZNO42NSJ2SIi4ofrr78+oZ+/+OKm2oTbb4fPP4emliTMmlV/q6yE408ZXbq05fc8dOgQo0aNAmDQoEHMmzePX/3qVwB8+OGHFBUVMWXKFDZt2gTUF9Tr168nJyeHhQsXUlJSwl//+lecc0ybNo3ly5eTm5vLT3/6U9555x169uzJ3r17ARg/fjyrVq3CzHjqqad46KGHeOSRR3j44Yf51a9+xYUXXkh1dTWdOnXiwQcf5OGHH+b111+Pr/PSgK4glOaixebpp5/Oqaee6nMaERHJRJ07d/Y7Qqs1NY3+9ttvc8cddwBw5plnkpeX11BsXnrppeTk5ACwcOFCFi5cSGFhIQDV1dWUlJSwbt06rr322oZrjEdfv2PHDm644QZ27tzJkSNHGDRoEAAXXngh99xzDzNnzuSaa66hX79+3n9wH6jYTHO5ubmEQiFNoYuIiG8++ugjAM4666w2/XyskcjOnWM/37NnfCOZ8XCu+XXIjQd0nHP88Ic/5B//8R+Pec3jjz+O2YmXC7/jjju45557mDZtGkuXLmX27NkA3HfffXzlK1/hzTffZOzYsSxevDg5HyRg/DpnU5KkXbt2nHnmmYwZM8bvKCIikqFWr17N6tWr/Y6RsIsuuoi5c+cCsGnTJrZt29bkoqfLLruMp59+murqagA+/vhjdu/ezaRJk3jxxRepqqoCaJhG379/P3379gXg2WefbWhny5YtjBgxgh/84AeMGTOGoqIiunTpwmeffebp50w1jWyeBN555x06derkdwwREclQN954o98RkuL222/ntttuY8SIEbRv3545c+bQsWPHE143ZcoUPvroIy644AKgfuun3/3udwwfPpz777+fCRMmEAqFKCwsZM6cOcyePZvrrruOvn37MnbsWMrKygB49NFHWbJkCaFQiLPPPpsrrriCdu3a0b59e0aOHMmsWbO4++67U9oHXrBYQ8ZBM2bMGPfee+/5HUNERERE4MRzBpqgaXQRERFJyIYNG9iwYYPfMSSgNI0uIiIiCYnOOp5zzjk+J5EgUrEpIiIiCZk5c6bfESTAVGyKiIhIQrKysvyOIAGmczZFREQkIevXr2f9+vV+x5CA0simiIiIJOT9998HoKCgwOckEkQqNkVERCQhN910k98RJMBUbIqIiEhCQqGQ3xEkwHTOpoiIiCRk7dq1rF271u8YElAqNkVERCQhKjYllrS6XKWZ7QG2+p0joHoClX6HOAmpX72hfk0+9ak31K/eUL96I9X9Wumcu7ylF6VVsSnNM7P3nHNj/M5xslG/ekP9mnzqU2+oX72hfvVGUPtV0+giIiIi4hkVmyIiIiLiGRWbJ48n/Q5wklK/ekP9mnzqU2+oX72hfvVGIPtV52yKiIiIiGc0sikiIiIinlGxGVBm1t/MlpjZR2a20cy+EzmeY2aLzKwk8t8ekeNmZo+b2WYzW29m5zZq6+dmtiFyu8GvzxQEbejXM81spZl9YWb3HtfW02a228w2+PFZgiRZ/Wpmnczsr2a2LtLOv/j1mfyW5O9quZl9aGZrzew9Pz5PUCTxu3pGpD+jtwNmdpdfn8tvSf6+fify+2pjJvcptKlfZ0ZqgPVmtsLMRjZqy7/fWc453QJ4A04Dzo3c7wJsAs4GHgLuixy/D/h55P6VwB8BA8YCqyPHvwIsov7SpKcC7wFd/f58adSvvYHzgJ8C9x7X1kXAucAGvz+X37dk9Wvk+5sduZ8FrAbG+v350rlPI8+VAz39/kxBuCWzXxu1GQJ2AXl+f75071fgHGAD0Dnye2sxMNTvz5dG/ToO6BG5fwWRWiDy2LffWRrZDCjn3E7n3PuR+58BHwF9genAs5GXPQtcFbk/HXjO1VsFdDez06j/Ui5zztU65w4C64AWN2A9WbW2X51zu51z7wI1TbS1HNibitxBl6x+jXx/qyMPsyK3jDyxPJnfVfkbj/p1ErDFOZexFx1JYr+eBaxyzn3unKsFlgFXp+AjBFIb+nWFc25f5PgqoF+jtnz7naViMw2Y2UCgkPpRnj7OuZ1Q/yWk/q9DqP/ybW/0Yzsix9YBV5hZZzPrCUwE+qcmebDF2a/SSon2q5mFzGwtsBtY5Jxb7V3a9JCE76oDFprZGjO71auc6SaJ/wbcCDyf7HzpKsF+3QBcZGa5ZtaZ+lk7/c6iTf3699TPePquvd8BJDYzywb+G7jLOXfAzJp9aRPHnHNuoZmdB6wA9gArgVpPwqaRVvSrtEIy+tU5dxQYZWbdgXlmdo5zLmPPi03Sd/VC59wnZtYbWGRmRZFRjoyVrH8DzKwDMA34YRLjpa1E+9U595GZ/Zz607+qqR8w0e+sVvarmU2kvtgcn4J4LdLIZoCZWRb1X665zrmXI4crItPjRP67O3J8B8f+9dcP+ATAOfdT59wo59yl1BelJanIH1St7FeJU7L71Tn3KbCUDD7tI1l96pyL/luwG5gHfMmbxOkhyd/VK4D3nXMVyU+aXpL4ff0v59y5zrmLqJ/21e+sVvSrmRUATwHTnXNVqc7bFBWbAWX1f7b8F/CRc+7fGj31KnBL5P4twPxGx2+2emOB/c65nZEpydxImwVAAbAwJR8igNrQrxKHZPWrmfWKjGhiZqcAk4Gi5CcOviT26alm1iV6H5hC/VRlRvLg34AZaAo9qf0aGYHHzAYA15DB/dvafo302cvATc65TanMGpNXK490S+xG/dC3A9YDayO3K4Fc4C3q/9J7C8iJvN6AXwFbgA+BMZHjnYD/idxWAaP8/mxp1q9h6keNDwCfRu53jTz3PLCT+hPcdwB/7/fnS/d+pf6PoQ8i7WwA/tnvz3YS9Olg6qci1wEbgfv9/mwnQ79GnusMVAHd/P5cft+S3K9/ifzOWgdM8vuzpVm/PgXsa/Ta9xq15dvvLF1BSEREREQ8o2l0EREREfGMik0RERER8YyKTRERERHxjIpNEREREfGMik0RERER8YyKTRERERHxjIpNEREREfGMik0RERER8cz/B9yUXdRa9b90AAAAAElFTkSuQmCC\n", "text/plain": [ "