{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "id": "a6be4a95", "metadata": { "id": "a6be4a95" }, "source": [ "# Running the First Regression in Python" ] }, { "cell_type": "markdown", "id": "b7890b49", "metadata": { "id": "b7890b49" }, "source": [ "Suppose this is your first time to write the code. Perhaps, you want to run a simple regression using two series of asset prices to fin the equity beta. Let's use a step-by-step approach to complete the task.\n", "\n", " Step 1: Download two assets' prices from the web\n", " Step 2: Put them onto a matrix form\n", " Step 3: Run the OLS\n", " Step 4: Plot data" ] }, { "cell_type": "markdown", "id": "d844db66", "metadata": { "id": "d844db66" }, "source": [ "### Step 1: Download data\n", "We will use yahoo finance package (https://pypi.org/project/yfinance/) to download Yahoo Finance data from the web. We need to (1) install and (2) import this package." ] }, { "cell_type": "code", "execution_count": null, "id": "47c20bb7", "metadata": { "id": "47c20bb7" }, "outputs": [], "source": [ "!pip install yfinance # to install, remove # and run the cell\n", "import yfinance as yf # to import" ] }, { "cell_type": "code", "execution_count": 3, "id": "479eb94a", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "479eb94a", "outputId": "f4bb78f6-0070-43fd-d54a-339ddec9e1c4" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[*********************100%***********************] 1 of 1 completed\n", "[*********************100%***********************] 1 of 1 completed\n" ] } ], "source": [ "# download\n", "mystock = yf.download(\"TSLA\", start=\"2011-01-01\", end=\"2022-05-31\", interval='1mo')['Adj Close'].rename('TSLA')\n", "index = yf.download(\"SPY\", start=\"2011-01-01\", end=\"2022-05-31\", interval='1mo')['Adj Close'].rename('SPY')" ] }, { "cell_type": "markdown", "id": "9621734b", "metadata": { "id": "9621734b" }, "source": [ "### Step 2: Put two time series onto a matrix\n", "We need pandas module, so let's install and import it. https://pandas.pydata.org/" ] }, { "cell_type": "code", "execution_count": 4, "id": "6b7ec623", "metadata": { "id": "6b7ec623" }, "outputs": [], "source": [ "#!pip install pandas # Actually, you have this alread when you isntalled Anaconda.\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 5, "id": "d16cf519", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 455 }, "id": "d16cf519", "outputId": "de9b7b39-5378-4ccf-ff78-3c9e03266ecd" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " TSLA SPY\n", "Date \n", "2011-02-01 -0.008714 0.034737\n", "2011-03-01 0.161574 -0.004206\n", "2011-04-01 -0.005405 0.033431\n", "2011-05-01 0.092029 -0.011214\n", "2011-06-01 -0.033510 -0.021720\n", "... ... ...\n", "2022-01-01 -0.113609 -0.049413\n", "2022-02-01 -0.070768 -0.029517\n", "2022-03-01 0.238009 0.034377\n", "2022-04-01 -0.191945 -0.084935\n", "2022-05-01 -0.129197 0.002257\n", "\n", "[136 rows x 2 columns]" ], "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", "
TSLASPY
Date
2011-02-01-0.0087140.034737
2011-03-010.161574-0.004206
2011-04-01-0.0054050.033431
2011-05-010.092029-0.011214
2011-06-01-0.033510-0.021720
.........
2022-01-01-0.113609-0.049413
2022-02-01-0.070768-0.029517
2022-03-010.2380090.034377
2022-04-01-0.191945-0.084935
2022-05-01-0.1291970.002257
\n", "

136 rows × 2 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 5 } ], "source": [ "# combine two asset prices onto one matrix called pandas dataframe\n", "data = pd.concat([mystock, index], axis=1)\n", "\n", "# drop missing observations\n", "data2 = data.dropna()\n", "\n", "# compute monthly returns and drop the first observation\n", "data3 = data2.pct_change().dropna()\n", "data3" ] }, { "cell_type": "markdown", "id": "68175734", "metadata": { "id": "68175734" }, "source": [ "### Step 3: Run OLS\n", "We need to install and import statsmodels module. https://www.statsmodels.org/stable/index.html" ] }, { "cell_type": "code", "execution_count": 6, "id": "5dcb73ad", "metadata": { "id": "5dcb73ad" }, "outputs": [], "source": [ "#!pip install statsmodels\n", "import statsmodels.formula.api as smf\n", "import statsmodels.api as sm" ] }, { "cell_type": "code", "execution_count": 7, "id": "ddfd0025", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ddfd0025", "outputId": "d8ce23ce-dfe5-431e-98c9-a294b99f98d5" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: TSLA R-squared: 0.159\n", "Model: OLS Adj. R-squared: 0.153\n", "Method: Least Squares F-statistic: 25.35\n", "Date: Fri, 26 Aug 2022 Prob (F-statistic): 1.51e-06\n", "Time: 06:44:56 Log-Likelihood: 54.624\n", "No. Observations: 136 AIC: -105.2\n", "Df Residuals: 134 BIC: -99.42\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept 0.0319 0.015 2.198 0.030 0.003 0.061\n", "SPY 1.7553 0.349 5.035 0.000 1.066 2.445\n", "==============================================================================\n", "Omnibus: 43.835 Durbin-Watson: 1.592\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 109.887\n", "Skew: 1.285 Prob(JB): 1.37e-24\n", "Kurtosis: 6.576 Cond. No. 24.9\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" ] } ], "source": [ "# run OLS\n", "formula = 'TSLA ~ SPY' # set dep var and indep var\n", "results = smf.ols(formula, data3).fit() # run OLS\n", "print(results.summary()) # print " ] }, { "cell_type": "markdown", "id": "6839b273", "metadata": { "id": "6839b273" }, "source": [ "### beta of TSLA = 1.7553" ] }, { "cell_type": "markdown", "id": "a3f1572a", "metadata": { "id": "a3f1572a" }, "source": [ "### Step 4: Plot the result\n", "We need to install and import matplotlib module. https://matplotlib.org/" ] }, { "cell_type": "code", "execution_count": 8, "id": "0b0e60bb", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 426 }, "id": "0b0e60bb", "outputId": "23bc81df-dfdf-4757-c5a6-dbb18ab49359" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAGZCAYAAACezWnrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde3xU1bn/8c+TCxIRCAoeJUEFQRRKKxq8lLZeao3iESkgRXtqPWqxFa2tEosVkFpb0Hg5nur5nYP1UmsF8RZoRfBeK62X1KAIinipQBBBJQhJgGSyfn/MTEjC3DMze2byfb9evMrs2TN7zVDXPHutZz3LnHOIiIiIiGSTPK8bICIiIiISLwWxIiIiIpJ1FMSKiIiISNZRECsiIiIiWUdBrIiIiIhkHQWxIiIiIpJ1FMSKSEYwsx1mNiiG8w4zM2dmBeloVzqZ2TfNbI0H13VmNjjd1xUR6QwFsSISEzP7l5k1BoLNT83sfjPbL8H3etHMLml7zDm3n3PuwyS3c1Nn2pluzrm/OeeGJvt92wT+OwJ//mVm0xN4nwvN7OVkt09EJBEKYkUkHmc75/YDjgHKgBnxvNj80tHvBNt5NDASuDbZF8jSkeDiwPdyHjDLzM7wukEiIolSECsicXPO1QJPAV8xsz5m9hcz22JmWwN/Lw2eGxh1/Y2ZLQcagD8C3wTuDIwK3hk4r3VK28zOMrMaM/vSzNab2ewE27kJWIY/mA225wQz+7uZ1ZnZm2Z2cpvnBprZS2a23cyeNbO7zOzBwHPB0cyLzWwd8Hzg+EVm9k7gsy8zs0MDx83MbjezzYHPsdLMvhJ4boyZrQ5cp9bMpgWOn2xmG9q056jA91dnZqvMbGyb5+4PtO/JwPu8amaHx/i9/ANYBXyl43Nm1tvMHgj8e35sZjPMLM/MjgL+Fzgx8O9WF+u/g4hIKiiIFZG4mdkAYAxQg78fuQ84FDgEaATu7PCSHwBTgJ7AhcDfgMsDKQSXh7hEPXABUAycBfzEzMYl0M5S4Ezg/cDjEuBJ4EZgf2Aa8JiZ9Qu85CHgNeAAYHag3R2dBBwFlJvZOcAvgfFAv8Dnmh8473TgW8ARQG9gEvB54Ll7gEudcz3xB5LPh2h7IfBn4GngQOAK4E9m1jbdYDLwK6BP4DP+JobvxMxsNDAc/79fR78LtHdQ4LNeAPync+4d4MfAPwL/bsXRriUikkoKYkUkHlWBEbiXgb8Cv3XOfe6ce8w51+Cc244/kDqpw+vud86tcs41O+eaol3EOfeic26lc67FOfcW/sCw43tGa+d2YD2wGbg+cPw/gCXOuSWB934GqAbGmNkhwChglnNut3PuZWBxiPee7Zyrd8414g/q5jjn3nHONQO/BY4OjMY24Q/ajwQscM4ngfdoAoaZWS/n3Fbn3BshrnMCsB8wN9Ce54G/4E8FCHrCOfda4Np/os2IcxifAV8AvwemO+eea/ukmeXjD4yvdc5td879C7iV0MG8iIinFMSKSDzGOeeKnXOHOucuc841mtm+ZvZ/gannL4GXgOJAQBS0Pp6LmNnxZvZCYEp7G/5gsW+c7ewJnIw/iAy+9lDg3MD0fF0gIP8GcDDQH/jCOdcQpd1tjx0K3NHmvb4ADCgJBJ13AncBm81snpn1CrxuAv6R7I/N7K9mdmKI6/QH1jvnWtoc+xgoafN4U5u/N+APeiPp65zr45w7yjn336GeBwoD1wl3TRGRjKAgVkQ662pgKHC8c64X/il08AdzQa7Dazo+7ugh/KOgA5xzvfHnYlrkl+zNOfdX4H7glsCh9cAfA4F48E8P59xc4BNgfzPbt81bDAj1tm3+vh5/WkDb9ytyzv09cP3/ds4dCwzDn1ZQETj+unPuHPxpAlXAwhDX2QgM6LAQ7hCgNq4vIT6f4R8lPjTMNaP9u4mIpI2CWBHprJ7482DrzGx/9kzdR/Ip/pzLSO/5hXNup5kdB5zfifb9F/AdM/sa8CBwtpmVm1m+mXUPLKYqdc59jD+1YLaZdQuMjp4d5b3/F7jWzIZD66KocwN/HxUYUS7En+O7E2gJvPf3zax3ILXiS6AlxHu/in909RozKwwsQDsbWNCJ7yIi55wPf0D9GzPrGUiLuAr/9wb+f7dSM+uWqjaIiMTK0yDWzO4NrNx9O8zzZmb/bWbvm9lbZnZMutsoIlH9F1CEfxTvFWBpDK+5A5gYWNEfalr7MuCGQF7rLEKPVMbEObcFeAB/rut6ILgYawv+kdQK9vSF3wdOxL8A60bgYWBXhPd+ArgJWBBIpXgb/0IygF7A3cBW/FPynwOVged+APwr8JofB67b8b134w9az8T/3f4PcIFz7t24v4T4XIE/6P4Qf+7zQ8C9geeex1/VYJOZfZbidoiIRGTOeTc7ZGbfAnYADzjnQpV6GYO/Qx0DHA/c4Zw7Pr2tFJGuysweBt51zsUyuiwiImnk6Uisc+4l/AshwjkHf4DrnHOv4F8scnB6WiciXU0gBeDwQF3UM/D3QVVet0tERPaW6TvOlNB+JfCGwLFPOp5oZlPw16HkgAMOOPawww5LR/tEJIccfvjhrFu3jubmZrp168ZBBx1E37593ygrKwt5/ooVKzj66GhVrbLXv/71L9SXikiq/fOf/3TOubgHVjM9iI2Zc24eMA+grKzMVVdXe9wiEcl1ZWVlZEpfs3TpUq688kp8Ph+XXHIJ06dPb/f8unXr+OEPf0hdXR0+n4+5c+cyZsyYiO+ZSZ9PRHKXmTUm8rpMr05QS/sSN6WktryMiEjW8fl8TJ06laeeeorVq1czf/58Vq9e3e6cG2+8kUmTJlFTU8OCBQu47LLLPGqtiEhyZEIQexIwJFCBYHqH5xYDUwJFz9fgD2hHpr2FIiIZ7LXXXmPw4MEMGjSIbt26MXnyZBYtWtTuHDPjyy+/BGDbtm3079/fi6aKiCSNp+kEZrYAmIi/gHZ3YKqZdQc2Oef+F1gC3Iy/IPgm4If4y8wc5kmDRUQyUG1tLQMG7Jm0Ki0t5dVXX213zuzZszn99NP53e9+R319Pc8++2zI95o3bx7z5s0DYMuWLalrtIhIJ3k9EnsH8JxzrtA5V4o/QN0VCGBx/vpfLwO3OOdG4F/YtdGz1oqIZKn58+dz4YUXsmHDBpYsWcIPfvADWlr23mNhypQpVFdXU11dTb9+/TxoqYhIbLwOYsNVH2hrNvAfZrYB/8jsFaHeyMymmFm1mVVr9EBEupKSkhLWr9/TlW7YsIGSkvZd6T333MOkSZMAOPHEE9m5cyeffab9CkQke3kdxMbiPOD+wEjtGOCPHfYSB/zVCZxzZc65Mo0eiEhXMmrUKNauXctHH33E7t27WbBgAWPHjm13ziGHHMJzzz0HwDvvvMPOnTs10ioiWc3rIDaW6gMXE9hy0jn3D/y5s33T0joRkSxQUFDAnXfeSXl5OUcddRSTJk1i+PDhzJo1i8WLFwNw6623cvfdd/O1r32N8847j/vvvx8z87jlIiKJ83rb2QLgPeDb+IPX14HznXOr2pzzFPCwc+5+MzsKeA4ocREarjqxIpIOuV5HNdc/n4hkBjNrcM71iPd1Xm872wxcDiwD3gEWOudWmdkNZhacC7sa+JGZvQnMBy6MFMCKiIiISO7zfMcu59wS/Au22h6b1ebvq4HR6W6XiIiIiGQur3NiRURERETi5vlIrEisqmpqqVy2ho11jfQvLqKifCjjRnasyCYiIrlC/b5EoiBWskJVTS3XPr6SxiYfALV1jVz7+EoAdWgiIjlI/b5Eo3QCyQqVy9a0dmRBjU0+Kpet8ahFIiKSSur3JRoFsZIVNtY1xnVcRESym/p9iUZBrGSF/sVFcR0XEZHspn5folEQK1mhonwoRYX57Y4VFeZTUT7UoxaJiEgqqd+XaLSwS7JCMIlfq1RFRLoG9fsSjYJYyRrjRpao8xIR6ULU70skSicQERERkayjIFZEREREso6CWBERERHJOgpiRURERCTrKIgVERERkayjIFZEREREso6CWBERERHJOgpiRURERCTrKIgVERERkayjIFZEREREso6CWBERERHJOgpiRURERCTrKIgVERERkayjIFZEREREsk6B1w0QERERyRVVNbVULlvDxrpG+hcXUVE+lHEjS7xuVk5SECsiIiKSBFU1tVz7+Eoam3wA1NY1cu3jKwEUyKaA0glEREREkqBy2ZrWADaosclH5bI1HrUotymIFREREUmCjXWNcR2XzlEQKyIiIpIE/YuL4jounaMgVkRERCQJKsqHUlSY3+5YUWE+FeVDPWpRbtPCLhEREZEkCC7eUnWC9FAQKyIiIpIk40aWKGhNE6UTiIiIiEjWURArIiIiIllHQayIiIiIZB0FsSIiIiKSdRTEioiIiEjWURArIiIiIllHQayIiIiIZB0FsSIiIiKSdRTEioiIiEjWURArIiIiIllHQayIiIiIZB0FsSIiIiKSdRTEioiIiEjWURArIiIiIllHQayIiIiIZB0FsSIiIiKSdQq8boB4o6qmlspla9hY10j/4iIqyocybmSJ180SERERiYnnI7FmdoaZrTGz981sephzJpnZajNbZWYPpbuNuaaqppZrH19JbV0jDqita+Tax1dSVVPrddNEREREYuJpEGtm+cBdwJnAMOA8MxvW4ZwhwLXAaOfccOBnaW9ojqlctobGJl+7Y41NPiqXrfGoRSIiIiLx8Xok9jjgfefch8653cAC4JwO5/wIuMs5txXAObc5zW3MORvrGuM6LiKZb+nSpQwdOpTBgwczd+7ckOcsXLiQYcOGMXz4cM4///w0t1BEJLm8zoktAda3ebwBOL7DOUcAmNlyIB+Y7Zxb2vGNzGwKMAXgkEMOSUljc0X/4iJqQwSs/YuLPGiNiHSWz+dj6tSpPPPMM5SWljJq1CjGjh3LsGF7JrbWrl3LnDlzWL58OX369GHzZo0HiEh283okNhYFwBDgZOA84G4zK+54knNunnOuzDlX1q9fvzQ3MbtUlA+lqDC/3bGiwnwqyod61CIR6YzXXnuNwYMHM2jQILp168bkyZNZtGhRu3Puvvtupk6dSp8+fQA48MADvWiqiEjSeB3E1gID2jwuDRxrawOw2DnX5Jz7CHgPf1ArCRo3soQ540dQUlyEASXFRcwZP0LVCUSyVG1tLQMG7OlKS0tLqa1t35W+9957vPfee4wePZoTTjiBpUv3mtACYN68eZSVlVFWVsaWLVtS2m4Rkc7wOp3gdWCImQ3EH7xOBjomalXhH4G9z8z64k8v+DCtrcxB40aWKGgV6UKam5tZu3YtL774Ihs2bOBb3/oWK1eupLi4/cTWlClTmDJlCgBlZWVeNFVEJCaejsQ655qB+4A1QD2wyTm3ysxuMLOxgdNWA6eaWSP+/Nk/Oec+96bFIiKZp6SkhPXr9ywv2LBhAyUl7W9SS0tLGTt2LIWFhQwcOJAjjjiCtWvXprupIiJJkwklti4EjgR6AAeZ2TDn3Czn3OLAaTOA3zrnioBj8Y/WiohIwKhRo1i7di0fffQRu3fvZsGCBYwdO7bdOePGjePFF18E4LPPPuO9995j0KBBHrRWRCQ5vM6JjaXElgN6Bf7eG9iYxvaJiGS8goIC7rzzTsrLyznqqKOYNGkSw4cPZ9asWSxe7B8PKC8v54ADDmDYsGGccsopVFZWcsABB3jcchGRxJlzzruLm00EznDOXRJ4/APgeOfc5W3OORh4GuiDf7T2NOfcP0O8V2uJrWOPPfbY6urqNHwCEenKysrKyOW+Jtc/n4hkBjNrcM71iPd1Xo/ExuI84H7nXCkwBvijme3V7rYlttLeQhERERFJK6+D2FhKbF0MLARwzv0D6A70TUvrRERERCQjeR3EtpbYMrNu+BdtLe5wzjrg2wBmdhT+IFbFC0VERES6sEwosXU5sAx4B1gYosTW1cCPzOxNYD5wofMykVdEREREPOf1Zgc455YASzocm9Xm76uB0elul4iIiIhkLs+DWBEvVNXUUrlsDRvrGulfXERF+VDtYCYiIpJFFMRKl1NVU8u1j6+ksckHQG1dI9c+vhJAgayIiEiW8Hphl0jaVS5b0xrABjU2+ahctsajFomIiEi8FMRKl7OxrjGu4yIiIpJ5FMRKl9O/uCiu4yIiIpJ5FMRKl1NRPpSiwvx2x4oK86koH+pRi0RERCReWtglXU5w8ZaqE4iIiGQvBbHSJY0bWaKgVUREJIspnUBEREREso6CWBERERHJOgpiRURERCTrKIgVERERkayjIFZEREREso6CWBERERHJOgpiRURERCTrKIgVERERkayjzQ5EREQkaapqarUjoqSFglgRERFJiqqaWq59fCWNTT4AausaufbxlQAKZCXplE4gIiIiSVG5bE1rABvU2OSjctkaj1okuUxBrIiIiCTFxrrGuI6LdIaCWBEREUmK/sVFcR0X6QwFsSIiIpIUFeVDKSrMb3esqDCfivKhHrVIcpkWdomIiEhSBBdvqTqBpIOCWBEREUmacSNLFLRKWiidQERERESyjoJYEREREck6CmJFREREJOsoiBURERGRrKMgVkRERESyjoJYEREREck6CmJFREREJOsoiBURERGRrKMgVkRERESyjoJYEREREck6CmJFREREJOsUeN0AEREREcluVTW1VC5bw8a6RvoXF1FRPpRxI0tSek0FsSIiIiKSsKqaWq59fCWNTT4AausaufbxlQApDWSVTiAiIiIiCatctqY1gA1qbPJRuWxNSq+rIFZEREREEraxrjGu48miIFZEREREEta/uCiu48miIFZEREREElZRPpSiwvx2x4oK86koH5rS62phl4iIiIgkLLh4q8tVJzCzM4A7gHzg9865uWHOmwA8CoxyzlWnsYkiOc2LsigiIpJbxo0sSftvh6dBrJnlA3cB3wE2AK+b2WLn3OoO5/UErgReTX8rRXKXV2VRREREOsvrnNjjgPedcx8653YDC4BzQpz3a+AmYGc6GyeS67wqiyIiIulVVVPL6LnPM3D6k4ye+zxVNbVeN6nTvA5iS4D1bR5vCBxrZWbHAAOcc09GeiMzm2Jm1WZWvWXLluS3VCQHeVUWRURE0ic461Zb14hjz6xbtgeyXgexEZlZHnAbcHW0c51z85xzZc65sn79+qW+cSI5wKuyKCIi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/PSnP+W4447jvvvu4+KLL2blypWMHDmyQQSwEM+q8P/U79zt+dbtOzOsmb9Crw8DerRnbnVv3hlzLree1ZHfLFyva0wDoSA2ppJ/lHOrezeIABai32lNJGqmTZvGoEGDABg0aBBTp07dY50TTjiB448/HoDDDz+ctm3b8sEHH1Q0naWS3Gnrhhtu4KSTTmLhwoVMnDiRI444IuzklVTcOsmWO/8uxfZ1jWlY1JxAilLqqv84VZ+JRMH7779Pu3btADjssMN4//33s64/f/58tm3bxhe+8IW0yydMmMCECRMAIhfoLliwgJtvvplXX32VE088kRkzZnDOOedgZrnfHEOVbDtaCuXOv0uxfV1jGhYFsVKwcoxXG4dOayKV1rdvX/71r3/t8fqoUaN2e25mWQO69957jyuuuIJJkybRpEn6irghQ4YwZMgQAKqqqopIdenEodNWucSpk2y58+9SbF/XmIZFzQmkYOWololb9ZlIJbz88su8/vrre/z179+fQw89lPfeew/wgtS2bdum3cYnn3zCueeey6hRozjttNMqmfyC1dXVMXz4cDp16sTUqVO54447WLVqFd/97ncbRQAbN+XOv0uxfV1jGhblAlKwclTLxK36TCRs5513HpMmTaK6uppJkybRv3//PdbZtm0b559/PgMHDuTCCy8MIZX5qa+v59FHH+Wuu+5i48aNDBw4kJEjRza4Nq8NTbnz71JsP47XGI3Yk5k558JOQ8lVVVW52trasJPR4J0+Zlbaapn2LVswt7p3CCkSqayqqirCzms++ugjvv3tb7N27VqOPvponnvuOVq1akVtbS2PPvoojz/+OE8//TRXXnklXbp02fW+iRMn0r1796zbrvTxJTptDR8+nJUrV9K7d2/Gjh1Ljx49KpYGabyiGCymNtsDr+S4oYxIlGBmm51z++X9PgWxUqjG8uMSySQKQWw5VfL45s+fzy233MKrr75K586due+++/jGN77RYDttSbRE9XrWWAqLCg1i1SZWCtaQx6sVkcpYvXo1l156KV/60pdYsWIF48ePZ+nSpQ161AGJnqgOvaXRFLJTm1gpSpx6zopIdNTV1TF69GgeeughmjZtyh133MGwYcM44IADwk6aNEJRDRY1mkJ2KokVEZGK2bZt266ZtsaOHcull17Km2++yT333KMAVkIT1dnRNJpCdgpi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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "#!pip install matplotlib #again, if you installed Anaconda, you have this already.\n", "import matplotlib.pyplot as plt\n", "\n", "fig, ax=plt.subplots(figsize=(10,6))\n", "fig = sm.graphics.plot_partregress_grid(results, fig=fig)" ] }, { "cell_type": "markdown", "id": "f58ce303", "metadata": { "id": "f58ce303" }, "source": [ "### Extra 1: using scipy module, we can get the same beta!" ] }, { "cell_type": "code", "execution_count": 9, "id": "69ce9117", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "69ce9117", "outputId": "f92795cd-cf90-41d9-e6e9-881e0dcf186a" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "1.7553\n", "0.0319\n", "0.4\n", "0.0\n" ] } ], "source": [ "#!pip install scipy\n", "from scipy import stats\n", "\n", "beta,alpha,r_value,p_value,std_err = stats.linregress(data3['SPY'],data3[\"TSLA\"])\n", "\n", "print(beta.round(4))\n", "print(alpha.round(4))\n", "print(r_value.round(2))\n", "print(p_value.round(4))" ] }, { "cell_type": "markdown", "id": "b192016a", "metadata": { "id": "b192016a" }, "source": [ "### Extra 2: using a beta formula, we can get the same beta.\n", "\n", "#$$ \n", "\\beta_{tsla} = \\frac{\\sigma_{tsla,spy}}{\\sigma_{spy}^2}\n", "$$\n" ] }, { "cell_type": "code", "execution_count": 38, "id": "642827eb", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "642827eb", "outputId": "6a698632-0057-4813-9059-2ebaaa0babc0" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " TSLA SPY\n", "TSLA 0.376962 0.034166\n", "SPY 0.034166 0.019465\n", "\n", "\n", "1.7553\n" ] } ], "source": [ "# find covariance matrix\n", "cov = data3.cov() * 12\n", "print(cov)\n", "print('\\n') # to give a space \n", "print(round(cov.iloc[0,1]/cov.iloc[1,1], 4))" ] }, { "cell_type": "markdown", "id": "e3ff4c65", "metadata": { "id": "e3ff4c65" }, "source": [ "### Extra3: using linear algebra, we can get the same beta.\n", "Need to install numpy and import it. You probably have this alreay. So skip installation. Just import it. https://numpy.org/" ] }, { "cell_type": "code", "source": [ "# warnings are annoying, so I include below to supress them. You do not need to do this.\n", "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)" ], "metadata": { "id": "ApyNN1N27OM9" }, "id": "ApyNN1N27OM9", "execution_count": 32, "outputs": [] }, { "cell_type": "code", "execution_count": 34, "id": "c7903709", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "c7903709", "outputId": "1991f267-a746-4de1-b615-78ce415c2cd7" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "1.7553\n" ] } ], "source": [ "import numpy as np\n", "\n", "X = data3['SPY']\n", "y = data3['TSLA']\n", "X_ols = sm.add_constant(X) # add a constant vector \n", "#print(X_ols)\n", "\n", "# compute beta using matrix operation\n", "beta = np.linalg.inv(X_ols.T.dot(X_ols)).dot(X_ols.T.dot(y))\n", "print(round(beta[1], 4))" ] }, { "cell_type": "code", "source": [], "metadata": { "id": "joV__6ek6nwX" }, "id": "joV__6ek6nwX", "execution_count": null, "outputs": [] } ], "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.7" }, "colab": { "name": "First_Regression.ipynb", "provenance": [], "collapsed_sections": [], "include_colab_link": true } }, "nbformat": 4, "nbformat_minor": 5 }