{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f26860fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "%matplotlib inline\n",
    "# activate plot theme\n",
    "import qeds\n",
    "\n",
    "qeds.themes.mpl_style();\n",
    "plotly_template = qeds.themes.plotly_template()\n",
    "colors = qeds.themes.COLOR_CYCLE\n",
    "\n",
    "from sklearn import (linear_model, metrics, model_selection)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "a8e9182f",
   "metadata": {},
   "outputs": [],
   "source": [
    "df1= pd.read_csv('F-F_Research_Data_Factors.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "3eeb36b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "df1.rename(columns={'Unnamed: 0':\"Date\"}, inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "55e753fd",
   "metadata": {},
   "outputs": [],
   "source": [
    "df1.set_index('Date',inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e9947dbe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Mkt-RF</th>\n",
       "      <th>SMB</th>\n",
       "      <th>HML</th>\n",
       "      <th>RF</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>192607</th>\n",
       "      <td>2.96</td>\n",
       "      <td>-2.56</td>\n",
       "      <td>-2.43</td>\n",
       "      <td>0.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192608</th>\n",
       "      <td>2.64</td>\n",
       "      <td>-1.17</td>\n",
       "      <td>3.82</td>\n",
       "      <td>0.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192609</th>\n",
       "      <td>0.36</td>\n",
       "      <td>-1.40</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192610</th>\n",
       "      <td>-3.24</td>\n",
       "      <td>-0.09</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192611</th>\n",
       "      <td>2.53</td>\n",
       "      <td>-0.10</td>\n",
       "      <td>-0.51</td>\n",
       "      <td>0.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202204</th>\n",
       "      <td>-9.46</td>\n",
       "      <td>-1.41</td>\n",
       "      <td>6.19</td>\n",
       "      <td>0.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202205</th>\n",
       "      <td>-0.34</td>\n",
       "      <td>-1.85</td>\n",
       "      <td>8.41</td>\n",
       "      <td>0.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202206</th>\n",
       "      <td>-8.43</td>\n",
       "      <td>2.09</td>\n",
       "      <td>-5.97</td>\n",
       "      <td>0.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202207</th>\n",
       "      <td>9.57</td>\n",
       "      <td>2.81</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>0.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202208</th>\n",
       "      <td>-3.78</td>\n",
       "      <td>1.39</td>\n",
       "      <td>0.31</td>\n",
       "      <td>0.19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1154 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        Mkt-RF   SMB   HML    RF\n",
       "Date                            \n",
       "192607    2.96 -2.56 -2.43  0.22\n",
       "192608    2.64 -1.17  3.82  0.25\n",
       "192609    0.36 -1.40  0.13  0.23\n",
       "192610   -3.24 -0.09  0.70  0.32\n",
       "192611    2.53 -0.10 -0.51  0.31\n",
       "...        ...   ...   ...   ...\n",
       "202204   -9.46 -1.41  6.19  0.01\n",
       "202205   -0.34 -1.85  8.41  0.03\n",
       "202206   -8.43  2.09 -5.97  0.06\n",
       "202207    9.57  2.81 -4.10  0.08\n",
       "202208   -3.78  1.39  0.31  0.19\n",
       "\n",
       "[1154 rows x 4 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b9a2a8f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "df2= pd.read_csv('30_Industry_Portfolios.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "50e5da90",
   "metadata": {},
   "outputs": [],
   "source": [
    "df2.rename(columns={'Unnamed: 0':\"Date\"}, inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "0f1095b8",
   "metadata": {},
   "outputs": [],
   "source": [
    "df2.set_index('Date',inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "3ad7e0f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Food</th>\n",
       "      <th>Beer</th>\n",
       "      <th>Smoke</th>\n",
       "      <th>Games</th>\n",
       "      <th>Books</th>\n",
       "      <th>Hshld</th>\n",
       "      <th>Clths</th>\n",
       "      <th>Hlth</th>\n",
       "      <th>Chems</th>\n",
       "      <th>Txtls</th>\n",
       "      <th>...</th>\n",
       "      <th>Telcm</th>\n",
       "      <th>Servs</th>\n",
       "      <th>BusEq</th>\n",
       "      <th>Paper</th>\n",
       "      <th>Trans</th>\n",
       "      <th>Whlsl</th>\n",
       "      <th>Rtail</th>\n",
       "      <th>Meals</th>\n",
       "      <th>Fin</th>\n",
       "      <th>Other</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>192607</th>\n",
       "      <td>0.56</td>\n",
       "      <td>-5.19</td>\n",
       "      <td>1.29</td>\n",
       "      <td>2.93</td>\n",
       "      <td>10.97</td>\n",
       "      <td>-0.48</td>\n",
       "      <td>8.08</td>\n",
       "      <td>1.77</td>\n",
       "      <td>8.14</td>\n",
       "      <td>0.39</td>\n",
       "      <td>...</td>\n",
       "      <td>0.83</td>\n",
       "      <td>9.22</td>\n",
       "      <td>2.06</td>\n",
       "      <td>7.70</td>\n",
       "      <td>1.91</td>\n",
       "      <td>-23.79</td>\n",
       "      <td>0.07</td>\n",
       "      <td>1.87</td>\n",
       "      <td>-0.02</td>\n",
       "      <td>5.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192608</th>\n",
       "      <td>2.59</td>\n",
       "      <td>27.03</td>\n",
       "      <td>6.50</td>\n",
       "      <td>0.55</td>\n",
       "      <td>10.01</td>\n",
       "      <td>-3.58</td>\n",
       "      <td>-2.51</td>\n",
       "      <td>4.25</td>\n",
       "      <td>5.50</td>\n",
       "      <td>7.97</td>\n",
       "      <td>...</td>\n",
       "      <td>2.17</td>\n",
       "      <td>2.02</td>\n",
       "      <td>4.39</td>\n",
       "      <td>-2.38</td>\n",
       "      <td>4.85</td>\n",
       "      <td>5.39</td>\n",
       "      <td>-0.75</td>\n",
       "      <td>-0.13</td>\n",
       "      <td>4.47</td>\n",
       "      <td>6.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192609</th>\n",
       "      <td>1.16</td>\n",
       "      <td>4.02</td>\n",
       "      <td>1.26</td>\n",
       "      <td>6.58</td>\n",
       "      <td>-0.99</td>\n",
       "      <td>0.73</td>\n",
       "      <td>-0.51</td>\n",
       "      <td>0.69</td>\n",
       "      <td>5.33</td>\n",
       "      <td>2.30</td>\n",
       "      <td>...</td>\n",
       "      <td>2.41</td>\n",
       "      <td>2.25</td>\n",
       "      <td>0.19</td>\n",
       "      <td>-5.54</td>\n",
       "      <td>0.07</td>\n",
       "      <td>-7.87</td>\n",
       "      <td>0.25</td>\n",
       "      <td>-0.56</td>\n",
       "      <td>-1.61</td>\n",
       "      <td>-3.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192610</th>\n",
       "      <td>-3.06</td>\n",
       "      <td>-3.31</td>\n",
       "      <td>1.06</td>\n",
       "      <td>-4.76</td>\n",
       "      <td>9.47</td>\n",
       "      <td>-4.68</td>\n",
       "      <td>0.12</td>\n",
       "      <td>-0.57</td>\n",
       "      <td>-4.76</td>\n",
       "      <td>1.00</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.11</td>\n",
       "      <td>-2.00</td>\n",
       "      <td>-1.09</td>\n",
       "      <td>-5.08</td>\n",
       "      <td>-2.61</td>\n",
       "      <td>-15.38</td>\n",
       "      <td>-2.20</td>\n",
       "      <td>-4.11</td>\n",
       "      <td>-5.51</td>\n",
       "      <td>-8.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>192611</th>\n",
       "      <td>6.35</td>\n",
       "      <td>7.29</td>\n",
       "      <td>4.55</td>\n",
       "      <td>1.66</td>\n",
       "      <td>-5.80</td>\n",
       "      <td>-0.54</td>\n",
       "      <td>1.87</td>\n",
       "      <td>5.42</td>\n",
       "      <td>5.20</td>\n",
       "      <td>3.10</td>\n",
       "      <td>...</td>\n",
       "      <td>1.63</td>\n",
       "      <td>3.77</td>\n",
       "      <td>3.64</td>\n",
       "      <td>3.84</td>\n",
       "      <td>1.61</td>\n",
       "      <td>4.67</td>\n",
       "      <td>6.52</td>\n",
       "      <td>4.33</td>\n",
       "      <td>2.34</td>\n",
       "      <td>4.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202204</th>\n",
       "      <td>3.01</td>\n",
       "      <td>3.03</td>\n",
       "      <td>6.37</td>\n",
       "      <td>-25.22</td>\n",
       "      <td>-10.76</td>\n",
       "      <td>2.04</td>\n",
       "      <td>-7.00</td>\n",
       "      <td>-6.80</td>\n",
       "      <td>-2.28</td>\n",
       "      <td>6.63</td>\n",
       "      <td>...</td>\n",
       "      <td>-10.70</td>\n",
       "      <td>-12.59</td>\n",
       "      <td>-12.26</td>\n",
       "      <td>-0.74</td>\n",
       "      <td>-10.93</td>\n",
       "      <td>-2.14</td>\n",
       "      <td>-11.41</td>\n",
       "      <td>-5.47</td>\n",
       "      <td>-7.99</td>\n",
       "      <td>-7.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202205</th>\n",
       "      <td>-1.68</td>\n",
       "      <td>-1.60</td>\n",
       "      <td>2.67</td>\n",
       "      <td>-2.93</td>\n",
       "      <td>-7.40</td>\n",
       "      <td>-5.12</td>\n",
       "      <td>-6.45</td>\n",
       "      <td>0.99</td>\n",
       "      <td>4.52</td>\n",
       "      <td>2.38</td>\n",
       "      <td>...</td>\n",
       "      <td>8.54</td>\n",
       "      <td>-3.35</td>\n",
       "      <td>-0.75</td>\n",
       "      <td>-0.66</td>\n",
       "      <td>-4.59</td>\n",
       "      <td>1.03</td>\n",
       "      <td>-5.64</td>\n",
       "      <td>-3.29</td>\n",
       "      <td>2.80</td>\n",
       "      <td>-1.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202206</th>\n",
       "      <td>-1.64</td>\n",
       "      <td>-0.02</td>\n",
       "      <td>-11.63</td>\n",
       "      <td>-11.33</td>\n",
       "      <td>-12.53</td>\n",
       "      <td>-2.56</td>\n",
       "      <td>-12.00</td>\n",
       "      <td>-2.05</td>\n",
       "      <td>-15.65</td>\n",
       "      <td>-11.17</td>\n",
       "      <td>...</td>\n",
       "      <td>-6.72</td>\n",
       "      <td>-6.79</td>\n",
       "      <td>-10.19</td>\n",
       "      <td>-8.51</td>\n",
       "      <td>-7.14</td>\n",
       "      <td>-6.43</td>\n",
       "      <td>-8.50</td>\n",
       "      <td>-9.02</td>\n",
       "      <td>-9.05</td>\n",
       "      <td>-11.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202207</th>\n",
       "      <td>3.67</td>\n",
       "      <td>5.49</td>\n",
       "      <td>0.56</td>\n",
       "      <td>14.62</td>\n",
       "      <td>12.10</td>\n",
       "      <td>0.76</td>\n",
       "      <td>11.86</td>\n",
       "      <td>2.75</td>\n",
       "      <td>7.66</td>\n",
       "      <td>6.86</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.40</td>\n",
       "      <td>8.60</td>\n",
       "      <td>15.68</td>\n",
       "      <td>7.22</td>\n",
       "      <td>9.33</td>\n",
       "      <td>9.08</td>\n",
       "      <td>16.33</td>\n",
       "      <td>11.89</td>\n",
       "      <td>7.38</td>\n",
       "      <td>9.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>202208</th>\n",
       "      <td>-1.61</td>\n",
       "      <td>-1.87</td>\n",
       "      <td>-0.12</td>\n",
       "      <td>-2.95</td>\n",
       "      <td>-4.97</td>\n",
       "      <td>-2.16</td>\n",
       "      <td>-6.01</td>\n",
       "      <td>-5.07</td>\n",
       "      <td>-1.39</td>\n",
       "      <td>-12.20</td>\n",
       "      <td>...</td>\n",
       "      <td>-3.00</td>\n",
       "      <td>-4.72</td>\n",
       "      <td>-5.89</td>\n",
       "      <td>-7.66</td>\n",
       "      <td>-1.46</td>\n",
       "      <td>-1.60</td>\n",
       "      <td>-3.46</td>\n",
       "      <td>-1.47</td>\n",
       "      <td>-2.24</td>\n",
       "      <td>-3.65</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1154 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        Food   Beer   Smoke  Games  Books  Hshld  Clths  Hlth   Chems  Txtls  \\\n",
       "Date                                                                           \n",
       "192607   0.56  -5.19   1.29   2.93  10.97  -0.48   8.08   1.77   8.14   0.39   \n",
       "192608   2.59  27.03   6.50   0.55  10.01  -3.58  -2.51   4.25   5.50   7.97   \n",
       "192609   1.16   4.02   1.26   6.58  -0.99   0.73  -0.51   0.69   5.33   2.30   \n",
       "192610  -3.06  -3.31   1.06  -4.76   9.47  -4.68   0.12  -0.57  -4.76   1.00   \n",
       "192611   6.35   7.29   4.55   1.66  -5.80  -0.54   1.87   5.42   5.20   3.10   \n",
       "...       ...    ...    ...    ...    ...    ...    ...    ...    ...    ...   \n",
       "202204   3.01   3.03   6.37 -25.22 -10.76   2.04  -7.00  -6.80  -2.28   6.63   \n",
       "202205  -1.68  -1.60   2.67  -2.93  -7.40  -5.12  -6.45   0.99   4.52   2.38   \n",
       "202206  -1.64  -0.02 -11.63 -11.33 -12.53  -2.56 -12.00  -2.05 -15.65 -11.17   \n",
       "202207   3.67   5.49   0.56  14.62  12.10   0.76  11.86   2.75   7.66   6.86   \n",
       "202208  -1.61  -1.87  -0.12  -2.95  -4.97  -2.16  -6.01  -5.07  -1.39 -12.20   \n",
       "\n",
       "        ...  Telcm  Servs  BusEq  Paper  Trans  Whlsl  Rtail  Meals  Fin    \\\n",
       "Date    ...                                                                  \n",
       "192607  ...   0.83   9.22   2.06   7.70   1.91 -23.79   0.07   1.87  -0.02   \n",
       "192608  ...   2.17   2.02   4.39  -2.38   4.85   5.39  -0.75  -0.13   4.47   \n",
       "192609  ...   2.41   2.25   0.19  -5.54   0.07  -7.87   0.25  -0.56  -1.61   \n",
       "192610  ...  -0.11  -2.00  -1.09  -5.08  -2.61 -15.38  -2.20  -4.11  -5.51   \n",
       "192611  ...   1.63   3.77   3.64   3.84   1.61   4.67   6.52   4.33   2.34   \n",
       "...     ...    ...    ...    ...    ...    ...    ...    ...    ...    ...   \n",
       "202204  ... -10.70 -12.59 -12.26  -0.74 -10.93  -2.14 -11.41  -5.47  -7.99   \n",
       "202205  ...   8.54  -3.35  -0.75  -0.66  -4.59   1.03  -5.64  -3.29   2.80   \n",
       "202206  ...  -6.72  -6.79 -10.19  -8.51  -7.14  -6.43  -8.50  -9.02  -9.05   \n",
       "202207  ...  -0.40   8.60  15.68   7.22   9.33   9.08  16.33  11.89   7.38   \n",
       "202208  ...  -3.00  -4.72  -5.89  -7.66  -1.46  -1.60  -3.46  -1.47  -2.24   \n",
       "\n",
       "        Other  \n",
       "Date           \n",
       "192607   5.20  \n",
       "192608   6.76  \n",
       "192609  -3.86  \n",
       "192610  -8.49  \n",
       "192611   4.00  \n",
       "...       ...  \n",
       "202204  -7.65  \n",
       "202205  -1.19  \n",
       "202206 -11.78  \n",
       "202207   9.19  \n",
       "202208  -3.65  \n",
       "\n",
       "[1154 rows x 30 columns]"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "63b94053",
   "metadata": {},
   "source": [
    "# 1.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "45683d85",
   "metadata": {},
   "outputs": [],
   "source": [
    "name = df2.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "a54448a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "beta = pd.DataFrame(np.nan, index = name, columns=['BETAs'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "68ee7ac9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BETAs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       BETAs\n",
       "Food     NaN\n",
       "Beer     NaN\n",
       "Smoke    NaN\n",
       "Games    NaN\n",
       "Books    NaN\n",
       "Hshld    NaN\n",
       "Clths    NaN\n",
       "Hlth     NaN\n",
       "Chems    NaN\n",
       "Txtls    NaN\n",
       "Cnstr    NaN\n",
       "Steel    NaN\n",
       "FabPr    NaN\n",
       "ElcEq    NaN\n",
       "Autos    NaN\n",
       "Carry    NaN\n",
       "Mines    NaN\n",
       "Coal     NaN\n",
       "Oil      NaN\n",
       "Util     NaN\n",
       "Telcm    NaN\n",
       "Servs    NaN\n",
       "BusEq    NaN\n",
       "Paper    NaN\n",
       "Trans    NaN\n",
       "Whlsl    NaN\n",
       "Rtail    NaN\n",
       "Meals    NaN\n",
       "Fin      NaN\n",
       "Other    NaN"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "f864dabb",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(len(name)):\n",
    "    model = linear_model.LinearRegression()\n",
    "    model = model.fit(df1[['Mkt-RF']],pd.DataFrame(df2[name[i]]-df1['RF']))\n",
    "    beta.iloc[i] =model.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "357d7d6e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BETAs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>0.729095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>0.924026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>0.623424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>1.385464</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>1.110920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>0.884306</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>0.831563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>0.833813</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>1.043679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>1.145560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>1.181354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>1.361442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>1.239619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>1.288733</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>1.286918</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>1.188716</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>0.913507</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>1.278337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>0.889536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>0.763865</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>0.664651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>0.823919</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>1.080205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>0.948937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>1.138238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>1.086695</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>0.967677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>0.946614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>1.158976</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>1.055502</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          BETAs\n",
       "Food   0.729095\n",
       "Beer   0.924026\n",
       "Smoke  0.623424\n",
       "Games  1.385464\n",
       "Books  1.110920\n",
       "Hshld  0.884306\n",
       "Clths  0.831563\n",
       "Hlth   0.833813\n",
       "Chems  1.043679\n",
       "Txtls  1.145560\n",
       "Cnstr  1.181354\n",
       "Steel  1.361442\n",
       "FabPr  1.239619\n",
       "ElcEq  1.288733\n",
       "Autos  1.286918\n",
       "Carry  1.188716\n",
       "Mines  0.913507\n",
       "Coal   1.278337\n",
       "Oil    0.889536\n",
       "Util   0.763865\n",
       "Telcm  0.664651\n",
       "Servs  0.823919\n",
       "BusEq  1.080205\n",
       "Paper  0.948937\n",
       "Trans  1.138238\n",
       "Whlsl  1.086695\n",
       "Rtail  0.967677\n",
       "Meals  0.946614\n",
       "Fin    1.158976\n",
       "Other  1.055502"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "099e41a4",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array(beta['BETAs'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "51732be1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.72909516, 0.92402644, 0.62342366, 1.38546406, 1.11091958,\n",
       "       0.88430638, 0.83156332, 0.83381347, 1.04367919, 1.14556008,\n",
       "       1.18135443, 1.3614416 , 1.23961889, 1.28873301, 1.28691839,\n",
       "       1.18871559, 0.91350737, 1.27833736, 0.88953553, 0.76386475,\n",
       "       0.66465124, 0.82391905, 1.08020466, 0.94893658, 1.13823798,\n",
       "       1.08669506, 0.96767737, 0.94661418, 1.15897584, 1.055502  ])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff056b9c",
   "metadata": {},
   "source": [
    "# 1.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "f282b430",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Excess Return</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Excess Return\n",
       "Food             NaN\n",
       "Beer             NaN\n",
       "Smoke            NaN\n",
       "Games            NaN\n",
       "Books            NaN\n",
       "Hshld            NaN\n",
       "Clths            NaN\n",
       "Hlth             NaN\n",
       "Chems            NaN\n",
       "Txtls            NaN\n",
       "Cnstr            NaN\n",
       "Steel            NaN\n",
       "FabPr            NaN\n",
       "ElcEq            NaN\n",
       "Autos            NaN\n",
       "Carry            NaN\n",
       "Mines            NaN\n",
       "Coal             NaN\n",
       "Oil              NaN\n",
       "Util             NaN\n",
       "Telcm            NaN\n",
       "Servs            NaN\n",
       "BusEq            NaN\n",
       "Paper            NaN\n",
       "Trans            NaN\n",
       "Whlsl            NaN\n",
       "Rtail            NaN\n",
       "Meals            NaN\n",
       "Fin              NaN\n",
       "Other            NaN"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = pd.DataFrame(data = np.nan, index = name, columns = ['Excess Return'])\n",
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "c09887c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(len(name)):\n",
    "    y.iloc[i] = np.sum(df2[name[i]]-df1['RF'])/len(df2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "b378c773",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Excess Return</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>0.699220</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>0.929593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>0.866482</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>0.835659</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>0.631750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>0.655269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>0.664896</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>0.807920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>0.777340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>0.675537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>0.694168</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>0.677374</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>0.800849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>0.896854</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>0.923614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>0.850295</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>0.640659</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>0.828094</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>0.773960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>0.618354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>0.566352</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>0.953033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>0.903787</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>0.721256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>0.655191</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>0.575069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>0.777964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>0.800208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>0.742305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>0.522088</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Excess Return\n",
       "Food        0.699220\n",
       "Beer        0.929593\n",
       "Smoke       0.866482\n",
       "Games       0.835659\n",
       "Books       0.631750\n",
       "Hshld       0.655269\n",
       "Clths       0.664896\n",
       "Hlth        0.807920\n",
       "Chems       0.777340\n",
       "Txtls       0.675537\n",
       "Cnstr       0.694168\n",
       "Steel       0.677374\n",
       "FabPr       0.800849\n",
       "ElcEq       0.896854\n",
       "Autos       0.923614\n",
       "Carry       0.850295\n",
       "Mines       0.640659\n",
       "Coal        0.828094\n",
       "Oil         0.773960\n",
       "Util        0.618354\n",
       "Telcm       0.566352\n",
       "Servs       0.953033\n",
       "BusEq       0.903787\n",
       "Paper       0.721256\n",
       "Trans       0.655191\n",
       "Whlsl       0.575069\n",
       "Rtail       0.777964\n",
       "Meals       0.800208\n",
       "Fin         0.742305\n",
       "Other       0.522088"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "ba8cf080",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Beta and Excess Return')"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.xlabel('Beta')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('Beta and Excess Return')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ee0f48a",
   "metadata": {},
   "source": [
    "Ans: From the graph, we cannot observe SML from the graph, this implies that there are other factors that affect the movement of excess return."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef061ab3",
   "metadata": {},
   "source": [
    "# 1.3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "id": "9a17b888",
   "metadata": {},
   "outputs": [],
   "source": [
    "metric = pd.DataFrame(np.nan, index = name, columns=['RMSE','MAE'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "136a890c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>RMSE</th>\n",
       "      <th>MAE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       RMSE  MAE\n",
       "Food    NaN  NaN\n",
       "Beer    NaN  NaN\n",
       "Smoke   NaN  NaN\n",
       "Games   NaN  NaN\n",
       "Books   NaN  NaN\n",
       "Hshld   NaN  NaN\n",
       "Clths   NaN  NaN\n",
       "Hlth    NaN  NaN\n",
       "Chems   NaN  NaN\n",
       "Txtls   NaN  NaN\n",
       "Cnstr   NaN  NaN\n",
       "Steel   NaN  NaN\n",
       "FabPr   NaN  NaN\n",
       "ElcEq   NaN  NaN\n",
       "Autos   NaN  NaN\n",
       "Carry   NaN  NaN\n",
       "Mines   NaN  NaN\n",
       "Coal    NaN  NaN\n",
       "Oil     NaN  NaN\n",
       "Util    NaN  NaN\n",
       "Telcm   NaN  NaN\n",
       "Servs   NaN  NaN\n",
       "BusEq   NaN  NaN\n",
       "Paper   NaN  NaN\n",
       "Trans   NaN  NaN\n",
       "Whlsl   NaN  NaN\n",
       "Rtail   NaN  NaN\n",
       "Meals   NaN  NaN\n",
       "Fin     NaN  NaN\n",
       "Other   NaN  NaN"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "3254cfc6",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "kf = KFold(n_splits=10, shuffle = False)\n",
    "\n",
    "for i in range(len(name)):\n",
    "    err_rmse_test = 0\n",
    "    err_mae_test = 0\n",
    "    mkt = df1['Mkt-RF'].to_numpy()\n",
    "    ri_rf = (df2[name[i]]-df1['RF']).to_numpy()\n",
    "    for train,test in kf.split(mkt):\n",
    "        lr = linear_model.LinearRegression()\n",
    "        reg= lr.fit(mkt[train].reshape(-1,1),ri_rf[train])\n",
    "        ri_rf_pred_test = reg.predict(mkt[test].reshape(-1,1))\n",
    "        e_test = ri_rf[test]-ri_rf_pred_test\n",
    "        err_rmse_test += np.sqrt(np.mean(e_test*e_test))\n",
    "        err_mae_test += np.mean(np.abs(e_test))\n",
    "    rmse_10cv_test = err_rmse_test/10\n",
    "    mae_10cv_test = err_mae_test/10\n",
    "    metric.iloc[i][0] = rmse_10cv_test\n",
    "    metric.iloc[i][1] = mae_10cv_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "f1d3eded",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>RMSE</th>\n",
       "      <th>MAE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>2.538109</td>\n",
       "      <td>1.898086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>4.636514</td>\n",
       "      <td>3.384528</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>4.526541</td>\n",
       "      <td>3.521301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>4.874197</td>\n",
       "      <td>3.623334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>3.861875</td>\n",
       "      <td>2.956903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>3.213406</td>\n",
       "      <td>2.409892</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>4.235036</td>\n",
       "      <td>3.093844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>3.229728</td>\n",
       "      <td>2.437323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>2.905301</td>\n",
       "      <td>2.200431</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>4.653665</td>\n",
       "      <td>3.403551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>2.829698</td>\n",
       "      <td>2.153414</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>4.417177</td>\n",
       "      <td>3.314934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>2.817130</td>\n",
       "      <td>2.186627</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>3.274492</td>\n",
       "      <td>2.547459</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>4.572182</td>\n",
       "      <td>3.280924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>4.224256</td>\n",
       "      <td>3.154163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>5.255009</td>\n",
       "      <td>4.125605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>8.114324</td>\n",
       "      <td>5.838560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>4.139266</td>\n",
       "      <td>3.138144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>3.519019</td>\n",
       "      <td>2.705937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>2.901631</td>\n",
       "      <td>2.226987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>5.632045</td>\n",
       "      <td>3.950464</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>3.421839</td>\n",
       "      <td>2.596730</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>2.839679</td>\n",
       "      <td>2.148962</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>3.515633</td>\n",
       "      <td>2.602099</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>3.747144</td>\n",
       "      <td>2.795816</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>2.954227</td>\n",
       "      <td>2.257817</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>3.997552</td>\n",
       "      <td>3.018501</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>2.691408</td>\n",
       "      <td>2.016012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>3.483393</td>\n",
       "      <td>2.651443</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           RMSE       MAE\n",
       "Food   2.538109  1.898086\n",
       "Beer   4.636514  3.384528\n",
       "Smoke  4.526541  3.521301\n",
       "Games  4.874197  3.623334\n",
       "Books  3.861875  2.956903\n",
       "Hshld  3.213406  2.409892\n",
       "Clths  4.235036  3.093844\n",
       "Hlth   3.229728  2.437323\n",
       "Chems  2.905301  2.200431\n",
       "Txtls  4.653665  3.403551\n",
       "Cnstr  2.829698  2.153414\n",
       "Steel  4.417177  3.314934\n",
       "FabPr  2.817130  2.186627\n",
       "ElcEq  3.274492  2.547459\n",
       "Autos  4.572182  3.280924\n",
       "Carry  4.224256  3.154163\n",
       "Mines  5.255009  4.125605\n",
       "Coal   8.114324  5.838560\n",
       "Oil    4.139266  3.138144\n",
       "Util   3.519019  2.705937\n",
       "Telcm  2.901631  2.226987\n",
       "Servs  5.632045  3.950464\n",
       "BusEq  3.421839  2.596730\n",
       "Paper  2.839679  2.148962\n",
       "Trans  3.515633  2.602099\n",
       "Whlsl  3.747144  2.795816\n",
       "Rtail  2.954227  2.257817\n",
       "Meals  3.997552  3.018501\n",
       "Fin    2.691408  2.016012\n",
       "Other  3.483393  2.651443"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "db938a5c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE for CAPM is 3.900715824121209\n",
      "MAE for CAPM is 2.9213263884838936\n"
     ]
    }
   ],
   "source": [
    "print(\"RMSE for CAPM is\",np.mean(metric[\"RMSE\"]))\n",
    "print(\"MAE for CAPM is\",np.mean(metric[\"MAE\"]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a93a0f34",
   "metadata": {},
   "source": [
    "# 1.4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "961e76f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BETAs</th>\n",
       "      <th>SMB</th>\n",
       "      <th>HML</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       BETAs  SMB  HML\n",
       "Food     NaN  NaN  NaN\n",
       "Beer     NaN  NaN  NaN\n",
       "Smoke    NaN  NaN  NaN\n",
       "Games    NaN  NaN  NaN\n",
       "Books    NaN  NaN  NaN\n",
       "Hshld    NaN  NaN  NaN\n",
       "Clths    NaN  NaN  NaN\n",
       "Hlth     NaN  NaN  NaN\n",
       "Chems    NaN  NaN  NaN\n",
       "Txtls    NaN  NaN  NaN\n",
       "Cnstr    NaN  NaN  NaN\n",
       "Steel    NaN  NaN  NaN\n",
       "FabPr    NaN  NaN  NaN\n",
       "ElcEq    NaN  NaN  NaN\n",
       "Autos    NaN  NaN  NaN\n",
       "Carry    NaN  NaN  NaN\n",
       "Mines    NaN  NaN  NaN\n",
       "Coal     NaN  NaN  NaN\n",
       "Oil      NaN  NaN  NaN\n",
       "Util     NaN  NaN  NaN\n",
       "Telcm    NaN  NaN  NaN\n",
       "Servs    NaN  NaN  NaN\n",
       "BusEq    NaN  NaN  NaN\n",
       "Paper    NaN  NaN  NaN\n",
       "Trans    NaN  NaN  NaN\n",
       "Whlsl    NaN  NaN  NaN\n",
       "Rtail    NaN  NaN  NaN\n",
       "Meals    NaN  NaN  NaN\n",
       "Fin      NaN  NaN  NaN\n",
       "Other    NaN  NaN  NaN"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta2 = pd.DataFrame(np.nan, index = name, columns=['BETAs','SMB','HML'])\n",
    "beta2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "0fb51257",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(len(name)):\n",
    "    model = linear_model.LinearRegression()\n",
    "    model = model.fit(df1.iloc[:,0:3],pd.DataFrame(df2[name[i]]-df1['RF']))\n",
    "    beta2.iloc[i] =model.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "ed2ed89c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BETAs</th>\n",
       "      <th>SMB</th>\n",
       "      <th>HML</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>0.747453</td>\n",
       "      <td>-0.140384</td>\n",
       "      <td>0.052259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>0.866732</td>\n",
       "      <td>0.196442</td>\n",
       "      <td>0.133388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>0.649355</td>\n",
       "      <td>-0.216873</td>\n",
       "      <td>0.096605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>1.287535</td>\n",
       "      <td>0.408923</td>\n",
       "      <td>0.138250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>1.012498</td>\n",
       "      <td>0.372491</td>\n",
       "      <td>0.186158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>0.906274</td>\n",
       "      <td>-0.088170</td>\n",
       "      <td>-0.035378</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>0.761506</td>\n",
       "      <td>0.422109</td>\n",
       "      <td>-0.060045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>0.878894</td>\n",
       "      <td>-0.085659</td>\n",
       "      <td>-0.189481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>1.068119</td>\n",
       "      <td>-0.151514</td>\n",
       "      <td>0.026175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>0.982731</td>\n",
       "      <td>0.563268</td>\n",
       "      <td>0.372973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>1.118341</td>\n",
       "      <td>0.247742</td>\n",
       "      <td>0.107824</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>1.259659</td>\n",
       "      <td>0.232049</td>\n",
       "      <td>0.380399</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>1.173377</td>\n",
       "      <td>0.261550</td>\n",
       "      <td>0.111985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>1.295485</td>\n",
       "      <td>-0.035460</td>\n",
       "      <td>-0.000616</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>1.247708</td>\n",
       "      <td>0.055086</td>\n",
       "      <td>0.188627</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>1.097555</td>\n",
       "      <td>0.218124</td>\n",
       "      <td>0.328079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>0.842647</td>\n",
       "      <td>0.258731</td>\n",
       "      <td>0.145621</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>1.084163</td>\n",
       "      <td>0.485378</td>\n",
       "      <td>0.673339</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>0.878785</td>\n",
       "      <td>-0.179207</td>\n",
       "      <td>0.290080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>0.755451</td>\n",
       "      <td>-0.166903</td>\n",
       "      <td>0.259715</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>0.694991</td>\n",
       "      <td>-0.131654</td>\n",
       "      <td>-0.036739</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>0.832129</td>\n",
       "      <td>0.368626</td>\n",
       "      <td>-0.505840</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>1.121167</td>\n",
       "      <td>0.153322</td>\n",
       "      <td>-0.455735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>0.952825</td>\n",
       "      <td>-0.057684</td>\n",
       "      <td>0.045355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>1.038001</td>\n",
       "      <td>0.163473</td>\n",
       "      <td>0.454423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>0.972969</td>\n",
       "      <td>0.550152</td>\n",
       "      <td>0.068217</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>0.979982</td>\n",
       "      <td>0.041639</td>\n",
       "      <td>-0.131479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>0.896939</td>\n",
       "      <td>0.289515</td>\n",
       "      <td>-0.030568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>1.121536</td>\n",
       "      <td>-0.057539</td>\n",
       "      <td>0.315218</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>0.999547</td>\n",
       "      <td>0.283097</td>\n",
       "      <td>0.018335</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          BETAs       SMB       HML\n",
       "Food   0.747453 -0.140384  0.052259\n",
       "Beer   0.866732  0.196442  0.133388\n",
       "Smoke  0.649355 -0.216873  0.096605\n",
       "Games  1.287535  0.408923  0.138250\n",
       "Books  1.012498  0.372491  0.186158\n",
       "Hshld  0.906274 -0.088170 -0.035378\n",
       "Clths  0.761506  0.422109 -0.060045\n",
       "Hlth   0.878894 -0.085659 -0.189481\n",
       "Chems  1.068119 -0.151514  0.026175\n",
       "Txtls  0.982731  0.563268  0.372973\n",
       "Cnstr  1.118341  0.247742  0.107824\n",
       "Steel  1.259659  0.232049  0.380399\n",
       "FabPr  1.173377  0.261550  0.111985\n",
       "ElcEq  1.295485 -0.035460 -0.000616\n",
       "Autos  1.247708  0.055086  0.188627\n",
       "Carry  1.097555  0.218124  0.328079\n",
       "Mines  0.842647  0.258731  0.145621\n",
       "Coal   1.084163  0.485378  0.673339\n",
       "Oil    0.878785 -0.179207  0.290080\n",
       "Util   0.755451 -0.166903  0.259715\n",
       "Telcm  0.694991 -0.131654 -0.036739\n",
       "Servs  0.832129  0.368626 -0.505840\n",
       "BusEq  1.121167  0.153322 -0.455735\n",
       "Paper  0.952825 -0.057684  0.045355\n",
       "Trans  1.038001  0.163473  0.454423\n",
       "Whlsl  0.972969  0.550152  0.068217\n",
       "Rtail  0.979982  0.041639 -0.131479\n",
       "Meals  0.896939  0.289515 -0.030568\n",
       "Fin    1.121536 -0.057539  0.315218\n",
       "Other  0.999547  0.283097  0.018335"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92a25ba5",
   "metadata": {},
   "source": [
    "# 1.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "8b8e68c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.74745286, 0.86673224, 0.64935473, 1.28753455, 1.01249781,\n",
       "       0.90627379, 0.76150613, 0.87889395, 1.06811857, 0.98273104,\n",
       "       1.11834149, 1.25965912, 1.17337692, 1.29548462, 1.24770833,\n",
       "       1.09755471, 0.84264691, 1.08416252, 0.87878512, 0.75545143,\n",
       "       0.69499063, 0.83212867, 1.12116703, 0.95282478, 1.03800125,\n",
       "       0.97296925, 0.979982  , 0.89693882, 1.1215362 , 0.99954727])"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x1 = np.array(beta2['BETAs'])\n",
    "x1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "ad3c6a94",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '3 Factors Betas and Excess Return')"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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hwAAnp6eGD9+PHr37t3geK2treHt7Y0FCxZgypQpiIuLk42zKS0thUQiQUlJSZ1X21IVFRUqJZ3S0lLMnTsX+fn58Pb2xoABA9C8eXOYm5ujrKwMcXFxcu+NjY0NvvvuO2zbtg1nzpxBWloagNqqpcGDB2PChAkqjb9YtWoVkpOT4erqip49e8LR0VF25f/sMZ9WV329ubm5XNKSfvEdHByUbl/Xck1wdXVFhw4dkJ6ejlatWilUWwF/x6vKZ76kpAQAkJSUhKSkpDq3e7qqc/78+di9ezcSExPx+++/A6hN1t27d8fbb78tu2Dq2LEjVq1ahe3btyM5ORmJiYkAapPtG2+8gSFDhqh20v+ftBG/qqoKN2/exIYNG3Do0CG4ublh9OjRL3ROmvS8ru/KPofSi66amprnvr7JJx0pZ2dneHh4yHqYNdaYgz179qCkpETpIK7//e9/ClVz0ivTuq521SGtEhCJRErXS5crqzqorwda165d0bVrV1RWViIrKwupqak4cOAAVq5cqVAn3RDNmjWDu7s7cnJykJOTA2dnZ1mMbdu2xb///e8Xen2pw4cPIz8/H+PHj1eoyrx69arSK1UnJye8//77mDVrFu7evYuMjAwkJCRgz549KCsrw4cffljvMa9fv47k5GR06dIFS5YsgYXF319BsViMXbt2vfB5SX8UCgsLla6va7km7NmzB+np6bCzs8ODBw8QHR0tu3uVksb76NEjpXdzT5N+DhYsWCDX66w+VlZWGDduHMaNG4dHjx7hypUrSExMRHJyMm7fvo1169bJ3gdvb28sXLgQVVVVuHHjBi5cuID9+/fjhx9+QJMmTersbVofS0tLdOzYEUuWLMF7772H6OhoBAUFyTqdNOScnkdalagsCTzvbuRFe58+D6fBeYr0h15Z3W9D3b9/HwCUfpiUzWbQqVMnALWNdapcNUhjffpKV0r6BVbWyQGobRgHlN8uq6JJkybo3LkzJk+ejKlTp0IikcgaSl/U09VFANC0aVN4enri7t27dXalVsbMzExp2QD1vzd1lZmUQCCAh4cHhgwZghUrVsDS0hLJycnPjUd6zB49esglHADIyspSqHptiJdeeglNmjTBzZs3FcoRUP6504SsrCxER0fD2dkZ69atQ/v27bF3716cPXtWbjtpm9m5c+ee+5rSbS9fvtygmJycnNCn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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x1, y)\n",
    "plt.xlabel('Beta')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('3 Factors Betas and Excess Return')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "92d61f26",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'SMB and Excess Return')"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(beta2[\"SMB\"], y)\n",
    "plt.xlabel('SMB')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('SMB and Excess Return')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "13ba14cb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'HML and Excess Return')"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(beta2[\"HML\"], y)\n",
    "plt.xlabel('HML')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('HML and Excess Return')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f990c6f3",
   "metadata": {},
   "source": [
    "# 1.6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "bea133f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "metric1 = pd.DataFrame(np.nan, index = name, columns=['RMSE','MAE'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "e81b7ee0",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "kf = KFold(n_splits=10, shuffle = False)\n",
    "\n",
    "for i in range(len(name)):\n",
    "    err_rmse_test = 0\n",
    "    err_mae_test = 0\n",
    "    factors = df1.iloc[:,0:3].to_numpy()\n",
    "    ri_rf = (df2[name[i]]-df1['RF']).to_numpy()\n",
    "    for train,test in kf.split(mkt):\n",
    "        lr = linear_model.LinearRegression()\n",
    "        reg= lr.fit(factors[train],ri_rf[train])\n",
    "        ri_rf_pred_test = reg.predict(factors[test])\n",
    "        e_test = ri_rf[test]-ri_rf_pred_test\n",
    "        err_rmse_test += np.sqrt(np.mean(e_test*e_test))\n",
    "        err_mae_test += np.mean(np.abs(e_test))\n",
    "    rmse_10cv_test = err_rmse_test/10\n",
    "    mae_10cv_test = err_mae_test/10\n",
    "    metric1.iloc[i][0] = rmse_10cv_test\n",
    "    metric1.iloc[i][1] = mae_10cv_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "33c26c37",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>RMSE</th>\n",
       "      <th>MAE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>2.583992</td>\n",
       "      <td>1.950460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>4.727382</td>\n",
       "      <td>3.441337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>4.534637</td>\n",
       "      <td>3.511960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>4.822235</td>\n",
       "      <td>3.520520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>3.725951</td>\n",
       "      <td>2.855786</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>3.235331</td>\n",
       "      <td>2.434792</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>4.197140</td>\n",
       "      <td>2.975686</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>3.197743</td>\n",
       "      <td>2.386017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>2.943988</td>\n",
       "      <td>2.243567</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>4.255104</td>\n",
       "      <td>3.106636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>2.807713</td>\n",
       "      <td>2.112981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>4.192168</td>\n",
       "      <td>3.179183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>2.690331</td>\n",
       "      <td>2.090893</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>3.334103</td>\n",
       "      <td>2.592332</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>4.564839</td>\n",
       "      <td>3.317047</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>4.102379</td>\n",
       "      <td>3.079451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>5.209853</td>\n",
       "      <td>4.070646</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>7.683888</td>\n",
       "      <td>5.632237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>4.087016</td>\n",
       "      <td>3.117979</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>3.389365</td>\n",
       "      <td>2.590805</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>2.908926</td>\n",
       "      <td>2.232419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>5.143993</td>\n",
       "      <td>3.536210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>3.147124</td>\n",
       "      <td>2.411187</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>2.924536</td>\n",
       "      <td>2.204255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>3.201444</td>\n",
       "      <td>2.472775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>3.581311</td>\n",
       "      <td>2.605731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>2.952258</td>\n",
       "      <td>2.250535</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>4.032527</td>\n",
       "      <td>3.011346</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>2.514929</td>\n",
       "      <td>1.901121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>3.480490</td>\n",
       "      <td>2.631941</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           RMSE       MAE\n",
       "Food   2.583992  1.950460\n",
       "Beer   4.727382  3.441337\n",
       "Smoke  4.534637  3.511960\n",
       "Games  4.822235  3.520520\n",
       "Books  3.725951  2.855786\n",
       "Hshld  3.235331  2.434792\n",
       "Clths  4.197140  2.975686\n",
       "Hlth   3.197743  2.386017\n",
       "Chems  2.943988  2.243567\n",
       "Txtls  4.255104  3.106636\n",
       "Cnstr  2.807713  2.112981\n",
       "Steel  4.192168  3.179183\n",
       "FabPr  2.690331  2.090893\n",
       "ElcEq  3.334103  2.592332\n",
       "Autos  4.564839  3.317047\n",
       "Carry  4.102379  3.079451\n",
       "Mines  5.209853  4.070646\n",
       "Coal   7.683888  5.632237\n",
       "Oil    4.087016  3.117979\n",
       "Util   3.389365  2.590805\n",
       "Telcm  2.908926  2.232419\n",
       "Servs  5.143993  3.536210\n",
       "BusEq  3.147124  2.411187\n",
       "Paper  2.924536  2.204255\n",
       "Trans  3.201444  2.472775\n",
       "Whlsl  3.581311  2.605731\n",
       "Rtail  2.952258  2.250535\n",
       "Meals  4.032527  3.011346\n",
       "Fin    2.514929  1.901121\n",
       "Other  3.480490  2.631941"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "367d2ccf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE for 3 factors model is 3.805756559722306\n",
      "MAE for 3 factors model is 2.9213263884838936\n"
     ]
    }
   ],
   "source": [
    "print(\"RMSE for 3 factors model is\", np.mean(metric1[\"RMSE\"]))\n",
    "print(\"MAE for 3 factors model is\",np.mean(metric[\"MAE\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "17ab6979",
   "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
}
