{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9347383c",
   "metadata": {},
   "source": [
    "# CAPM \n",
    "### 6304640094\n",
    "### Aus Atsavakovith"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c7b4ca1f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import urllib.request\n",
    "import zipfile\n",
    "\n",
    "from pandas_datareader.famafrench import get_available_datasets\n",
    "import pandas_datareader.data as web\n",
    "import datetime as dt\n",
    "\n",
    "\n",
    "%matplotlib inline\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": "markdown",
   "id": "7e075e74",
   "metadata": {},
   "source": [
    "Fama-French Factors (monthly)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e27c5255",
   "metadata": {},
   "outputs": [],
   "source": [
    "import urllib.request\n",
    "import zipfile\n",
    "ff_url = \"https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_CSV.zip\"\n",
    "\n",
    "urllib.request.urlretrieve(ff_url,'fama_french.zip')\n",
    "zip_file = zipfile.ZipFile('fama_french.zip', 'r')\n",
    "\n",
    "zip_file.extractall()\n",
    "zip_file.close()\n",
    "\n",
    "ff_factors = pd.read_csv('F-F_Research_Data_Factors.csv', skiprows = 3, nrows = 1114, index_col = 0)\n",
    "ff_factors.index = pd.to_datetime(ff_factors.index, format= '%Y%m')\n",
    "ff_factors.index = ff_factors.index + pd.offsets.MonthEnd()\n",
    "ff_factors = ff_factors.apply(lambda x: x/ 100)\n",
    "ff_factors.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9f6f15b",
   "metadata": {},
   "source": [
    "***CONCAT DATA***"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "96ce7da1",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['F-F_Research_Data_Factors',\n",
       " 'F-F_Research_Data_Factors_weekly',\n",
       " 'F-F_Research_Data_Factors_daily',\n",
       " 'F-F_Research_Data_5_Factors_2x3',\n",
       " 'F-F_Research_Data_5_Factors_2x3_daily',\n",
       " 'Portfolios_Formed_on_ME',\n",
       " 'Portfolios_Formed_on_ME_Wout_Div',\n",
       " 'Portfolios_Formed_on_ME_Daily',\n",
       " 'Portfolios_Formed_on_BE-ME',\n",
       " 'Portfolios_Formed_on_BE-ME_Wout_Div',\n",
       " 'Portfolios_Formed_on_BE-ME_Daily',\n",
       " 'Portfolios_Formed_on_OP',\n",
       " 'Portfolios_Formed_on_OP_Wout_Div',\n",
       " 'Portfolios_Formed_on_OP_Daily',\n",
       " 'Portfolios_Formed_on_INV',\n",
       " 'Portfolios_Formed_on_INV_Wout_Div',\n",
       " 'Portfolios_Formed_on_INV_Daily',\n",
       " '6_Portfolios_2x3',\n",
       " '6_Portfolios_2x3_Wout_Div',\n",
       " '6_Portfolios_2x3_weekly',\n",
       " '6_Portfolios_2x3_daily',\n",
       " '25_Portfolios_5x5',\n",
       " '25_Portfolios_5x5_Wout_Div',\n",
       " '25_Portfolios_5x5_Daily',\n",
       " '100_Portfolios_10x10',\n",
       " '100_Portfolios_10x10_Wout_Div',\n",
       " '100_Portfolios_10x10_Daily',\n",
       " '6_Portfolios_ME_OP_2x3',\n",
       " '6_Portfolios_ME_OP_2x3_Wout_Div',\n",
       " '6_Portfolios_ME_OP_2x3_daily',\n",
       " '25_Portfolios_ME_OP_5x5',\n",
       " '25_Portfolios_ME_OP_5x5_Wout_Div',\n",
       " '25_Portfolios_ME_OP_5x5_daily',\n",
       " '100_Portfolios_ME_OP_10x10',\n",
       " '100_Portfolios_10x10_ME_OP_Wout_Div',\n",
       " '100_Portfolios_ME_OP_10x10_daily',\n",
       " '6_Portfolios_ME_INV_2x3',\n",
       " '6_Portfolios_ME_INV_2x3_Wout_Div',\n",
       " '6_Portfolios_ME_INV_2x3_daily',\n",
       " '25_Portfolios_ME_INV_5x5',\n",
       " '25_Portfolios_ME_INV_5x5_Wout_Div',\n",
       " '25_Portfolios_ME_INV_5x5_daily',\n",
       " '100_Portfolios_ME_INV_10x10',\n",
       " '100_Portfolios_10x10_ME_INV_Wout_Div',\n",
       " '100_Portfolios_ME_INV_10x10_daily',\n",
       " '25_Portfolios_BEME_OP_5x5',\n",
       " '25_Portfolios_BEME_OP_5x5_Wout_Div',\n",
       " '25_Portfolios_BEME_OP_5x5_daily',\n",
       " '25_Portfolios_BEME_INV_5x5',\n",
       " '25_Portfolios_BEME_INV_5x5_Wout_Div',\n",
       " '25_Portfolios_BEME_INV_5x5_daily',\n",
       " '25_Portfolios_OP_INV_5x5',\n",
       " '25_Portfolios_OP_INV_5x5_Wout_Div',\n",
       " '25_Portfolios_OP_INV_5x5_daily',\n",
       " '32_Portfolios_ME_BEME_OP_2x4x4',\n",
       " '32_Portfolios_ME_BEME_OP_2x4x4_Wout_Div',\n",
       " '32_Portfolios_ME_BEME_INV_2x4x4',\n",
       " '32_Portfolios_ME_BEME_INV_2x4x4_Wout_Div',\n",
       " '32_Portfolios_ME_OP_INV_2x4x4',\n",
       " '32_Portfolios_ME_OP_INV_2x4x4_Wout_Div',\n",
       " 'Portfolios_Formed_on_E-P',\n",
       " 'Portfolios_Formed_on_E-P_Wout_Div',\n",
       " 'Portfolios_Formed_on_CF-P',\n",
       " 'Portfolios_Formed_on_CF-P_Wout_Div',\n",
       " 'Portfolios_Formed_on_D-P',\n",
       " 'Portfolios_Formed_on_D-P_Wout_Div',\n",
       " '6_Portfolios_ME_EP_2x3',\n",
       " '6_Portfolios_ME_EP_2x3_Wout_Div',\n",
       " '6_Portfolios_ME_CFP_2x3',\n",
       " '6_Portfolios_ME_CFP_2x3_Wout_Div',\n",
       " '6_Portfolios_ME_DP_2x3',\n",
       " '6_Portfolios_ME_DP_2x3_Wout_Div',\n",
       " 'F-F_Momentum_Factor',\n",
       " 'F-F_Momentum_Factor_daily',\n",
       " '6_Portfolios_ME_Prior_12_2',\n",
       " '6_Portfolios_ME_Prior_12_2_Daily',\n",
       " '25_Portfolios_ME_Prior_12_2',\n",
       " '25_Portfolios_ME_Prior_12_2_Daily',\n",
       " '10_Portfolios_Prior_12_2',\n",
       " '10_Portfolios_Prior_12_2_Daily',\n",
       " 'F-F_ST_Reversal_Factor',\n",
       " 'F-F_ST_Reversal_Factor_daily',\n",
       " '6_Portfolios_ME_Prior_1_0',\n",
       " '6_Portfolios_ME_Prior_1_0_Daily',\n",
       " '25_Portfolios_ME_Prior_1_0',\n",
       " '25_Portfolios_ME_Prior_1_0_Daily',\n",
       " '10_Portfolios_Prior_1_0',\n",
       " '10_Portfolios_Prior_1_0_Daily',\n",
       " 'F-F_LT_Reversal_Factor',\n",
       " 'F-F_LT_Reversal_Factor_daily',\n",
       " '6_Portfolios_ME_Prior_60_13',\n",
       " '6_Portfolios_ME_Prior_60_13_Daily',\n",
       " '25_Portfolios_ME_Prior_60_13',\n",
       " '25_Portfolios_ME_Prior_60_13_Daily',\n",
       " '10_Portfolios_Prior_60_13',\n",
       " '10_Portfolios_Prior_60_13_Daily',\n",
       " 'Portfolios_Formed_on_AC',\n",
       " '25_Portfolios_ME_AC_5x5',\n",
       " 'Portfolios_Formed_on_BETA',\n",
       " '25_Portfolios_ME_BETA_5x5',\n",
       " 'Portfolios_Formed_on_NI',\n",
       " '25_Portfolios_ME_NI_5x5',\n",
       " 'Portfolios_Formed_on_VAR',\n",
       " '25_Portfolios_ME_VAR_5x5',\n",
       " 'Portfolios_Formed_on_RESVAR',\n",
       " '25_Portfolios_ME_RESVAR_5x5',\n",
       " '5_Industry_Portfolios',\n",
       " '5_Industry_Portfolios_Wout_Div',\n",
       " '5_Industry_Portfolios_daily',\n",
       " '10_Industry_Portfolios',\n",
       " '10_Industry_Portfolios_Wout_Div',\n",
       " '10_Industry_Portfolios_daily',\n",
       " '12_Industry_Portfolios',\n",
       " '12_Industry_Portfolios_Wout_Div',\n",
       " '12_Industry_Portfolios_daily',\n",
       " '17_Industry_Portfolios',\n",
       " '17_Industry_Portfolios_Wout_Div',\n",
       " '17_Industry_Portfolios_daily',\n",
       " '30_Industry_Portfolios',\n",
       " '30_Industry_Portfolios_Wout_Div',\n",
       " '30_Industry_Portfolios_daily',\n",
       " '38_Industry_Portfolios',\n",
       " '38_Industry_Portfolios_Wout_Div',\n",
       " '38_Industry_Portfolios_daily',\n",
       " '48_Industry_Portfolios',\n",
       " '48_Industry_Portfolios_Wout_Div',\n",
       " '48_Industry_Portfolios_daily',\n",
       " '49_Industry_Portfolios',\n",
       " '49_Industry_Portfolios_Wout_Div',\n",
       " '49_Industry_Portfolios_daily',\n",
       " 'ME_Breakpoints',\n",
       " 'BE-ME_Breakpoints',\n",
       " 'OP_Breakpoints',\n",
       " 'INV_Breakpoints',\n",
       " 'E-P_Breakpoints',\n",
       " 'CF-P_Breakpoints',\n",
       " 'D-P_Breakpoints',\n",
       " 'Prior_2-12_Breakpoints',\n",
       " 'Developed_3_Factors',\n",
       " 'Developed_3_Factors_Daily',\n",
       " 'Developed_ex_US_3_Factors',\n",
       " 'Developed_ex_US_3_Factors_Daily',\n",
       " 'Europe_3_Factors',\n",
       " 'Europe_3_Factors_Daily',\n",
       " 'Japan_3_Factors',\n",
       " 'Japan_3_Factors_Daily',\n",
       " 'Asia_Pacific_ex_Japan_3_Factors',\n",
       " 'Asia_Pacific_ex_Japan_3_Factors_Daily',\n",
       " 'North_America_3_Factors',\n",
       " 'North_America_3_Factors_Daily',\n",
       " 'Developed_5_Factors',\n",
       " 'Developed_5_Factors_Daily',\n",
       " 'Developed_ex_US_5_Factors',\n",
       " 'Developed_ex_US_5_Factors_Daily',\n",
       " 'Europe_5_Factors',\n",
       " 'Europe_5_Factors_Daily',\n",
       " 'Japan_5_Factors',\n",
       " 'Japan_5_Factors_Daily',\n",
       " 'Asia_Pacific_ex_Japan_5_Factors',\n",
       " 'Asia_Pacific_ex_Japan_5_Factors_Daily',\n",
       " 'North_America_5_Factors',\n",
       " 'North_America_5_Factors_Daily',\n",
       " 'Developed_Mom_Factor',\n",
       " 'Developed_Mom_Factor_Daily',\n",
       " 'Developed_ex_US_Mom_Factor',\n",
       " 'Developed_ex_US_Mom_Factor_Daily',\n",
       " 'Europe_Mom_Factor',\n",
       " 'Europe_Mom_Factor_Daily',\n",
       " 'Japan_Mom_Factor',\n",
       " 'Japan_Mom_Factor_Daily',\n",
       " 'Asia_Pacific_ex_Japan_MOM_Factor',\n",
       " 'Asia_Pacific_ex_Japan_MOM_Factor_Daily',\n",
       " 'North_America_Mom_Factor',\n",
       " 'North_America_Mom_Factor_Daily',\n",
       " 'Developed_6_Portfolios_ME_BE-ME',\n",
       " 'Developed_6_Portfolios_ME_BE-ME_daily',\n",
       " 'Developed_ex_US_6_Portfolios_ME_BE-ME',\n",
       " 'Developed_ex_US_6_Portfolios_ME_BE-ME_daily',\n",
       " 'Europe_6_Portfolios_ME_BE-ME',\n",
       " 'Europe_6_Portfolios_ME_BE-ME_daily',\n",
       " 'Japan_6_Portfolios_ME_BE-ME',\n",
       " 'Japan_6_Portfolios_ME_BE-ME_daily',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_BE-ME',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_BE-ME_daily',\n",
       " 'North_America_6_Portfolios_ME_BE-ME',\n",
       " 'North_America_6_Portfolios_ME_BE-ME_daily',\n",
       " 'Developed_25_Portfolios_ME_BE-ME',\n",
       " 'Developed_25_Portfolios_ME_BE-ME_daily',\n",
       " 'Developed_ex_US_25_Portfolios_ME_BE-ME',\n",
       " 'Developed_ex_US_25_Portfolios_ME_BE-ME_daily',\n",
       " 'Europe_25_Portfolios_ME_BE-ME',\n",
       " 'Europe_25_Portfolios_ME_BE-ME_daily',\n",
       " 'Japan_25_Portfolios_ME_BE-ME',\n",
       " 'Japan_25_Portfolios_ME_BE-ME_daily',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_BE-ME',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_BE-ME_daily',\n",
       " 'North_America_25_Portfolios_ME_BE-ME',\n",
       " 'North_America_25_Portfolios_ME_BE-ME_daily',\n",
       " 'Developed_6_Portfolios_ME_OP',\n",
       " 'Developed_6_Portfolios_ME_OP_Daily',\n",
       " 'Developed_ex_US_6_Portfolios_ME_OP',\n",
       " 'Developed_ex_US_6_Portfolios_ME_OP_Daily',\n",
       " 'Europe_6_Portfolios_ME_OP',\n",
       " 'Europe_6_Portfolios_ME_OP_Daily',\n",
       " 'Japan_6_Portfolios_ME_OP',\n",
       " 'Japan_6_Portfolios_ME_OP_Daily',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_OP',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_OP_Daily',\n",
       " 'North_America_6_Portfolios_ME_OP',\n",
       " 'North_America_6_Portfolios_ME_OP_Daily',\n",
       " 'Developed_25_Portfolios_ME_OP',\n",
       " 'Developed_25_Portfolios_ME_OP_Daily',\n",
       " 'Developed_ex_US_25_Portfolios_ME_OP',\n",
       " 'Developed_ex_US_25_Portfolios_ME_OP_Daily',\n",
       " 'Europe_25_Portfolios_ME_OP',\n",
       " 'Europe_25_Portfolios_ME_OP_Daily',\n",
       " 'Japan_25_Portfolios_ME_OP',\n",
       " 'Japan_25_Portfolios_ME_OP_Daily',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_OP',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_OP_Daily',\n",
       " 'North_America_25_Portfolios_ME_OP',\n",
       " 'North_America_25_Portfolios_ME_OP_Daily',\n",
       " 'Developed_6_Portfolios_ME_INV',\n",
       " 'Developed_6_Portfolios_ME_INV_Daily',\n",
       " 'Developed_ex_US_6_Portfolios_ME_INV',\n",
       " 'Developed_ex_US_6_Portfolios_ME_INV_Daily',\n",
       " 'Europe_6_Portfolios_ME_INV',\n",
       " 'Europe_6_Portfolios_ME_INV_Daily',\n",
       " 'Japan_6_Portfolios_ME_INV',\n",
       " 'Japan_6_Portfolios_ME_INV_Daily',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_INV',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_INV_Daily',\n",
       " 'North_America_6_Portfolios_ME_INV',\n",
       " 'North_America_6_Portfolios_ME_INV_Daily',\n",
       " 'Developed_25_Portfolios_ME_INV',\n",
       " 'Developed_25_Portfolios_ME_INV_Daily',\n",
       " 'Developed_ex_US_25_Portfolios_ME_INV',\n",
       " 'Developed_ex_US_25_Portfolios_ME_INV_Daily',\n",
       " 'Europe_25_Portfolios_ME_INV',\n",
       " 'Europe_25_Portfolios_ME_INV_Daily',\n",
       " 'Japan_25_Portfolios_ME_INV',\n",
       " 'Japan_25_Portfolios_ME_INV_Daily',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_INV',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_INV_Daily',\n",
       " 'North_America_25_Portfolios_ME_INV',\n",
       " 'North_America_25_Portfolios_ME_INV_Daily',\n",
       " 'Developed_6_Portfolios_ME_Prior_12_2',\n",
       " 'Developed_6_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Developed_ex_US_6_Portfolios_ME_Prior_12_2',\n",
       " 'Developed_ex_US_6_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Europe_6_Portfolios_ME_Prior_12_2',\n",
       " 'Europe_6_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Japan_6_Portfolios_ME_Prior_12_2',\n",
       " 'Japan_6_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_Prior_12_2',\n",
       " 'Asia_Pacific_ex_Japan_6_Portfolios_ME_Prior_250_20_daily',\n",
       " 'North_America_6_Portfolios_ME_Prior_12_2',\n",
       " 'North_America_6_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Developed_25_Portfolios_ME_Prior_12_2',\n",
       " 'Developed_25_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Developed_ex_US_25_Portfolios_ME_Prior_12_2',\n",
       " 'Developed_ex_US_25_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Europe_25_Portfolios_ME_Prior_12_2',\n",
       " 'Europe_25_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Japan_25_Portfolios_ME_Prior_12_2',\n",
       " 'Japan_25_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_Prior_12_2',\n",
       " 'Asia_Pacific_ex_Japan_25_Portfolios_ME_Prior_250_20_daily',\n",
       " 'North_America_25_Portfolios_ME_Prior_12_2',\n",
       " 'North_America_25_Portfolios_ME_Prior_250_20_daily',\n",
       " 'Developed_32_Portfolios_ME_BE-ME_OP_2x4x4',\n",
       " 'Developed_ex_US_32_Portfolios_ME_BE-ME_OP_2x4x4',\n",
       " 'Europe_32_Portfolios_ME_BE-ME_OP_2x4x4',\n",
       " 'Japan_32_Portfolios_ME_BE-ME_OP_2x4x4',\n",
       " 'Asia_Pacific_ex_Japan_32_Portfolios_ME_BE-ME_OP_2x4x4',\n",
       " 'North_America_32_Portfolios_ME_BE-ME_OP_2x4x4',\n",
       " 'Developed_32_Portfolios_ME_BE-ME_INV(TA)_2x4x4',\n",
       " 'Developed_ex_US_32_Portfolios_ME_BE-ME_INV(TA)_2x4x4',\n",
       " 'Europe_32_Portfolios_ME_BE-ME_INV(TA)_2x4x4',\n",
       " 'Japan_32_Portfolios_ME_BE-ME_INV(TA)_2x4x4',\n",
       " 'Asia_Pacific_ex_Japan_32_Portfolios_ME_BE-ME_INV(TA)_2x4x4',\n",
       " 'North_America_32_Portfolios_ME_BE-ME_INV(TA)_2x4x4',\n",
       " 'Developed_32_Portfolios_ME_INV(TA)_OP_2x4x4',\n",
       " 'Developed_ex_US_32_Portfolios_ME_INV(TA)_OP_2x4x4',\n",
       " 'Europe_32_Portfolios_ME_INV(TA)_OP_2x4x4',\n",
       " 'Japan_32_Portfolios_ME_INV(TA)_OP_2x4x4',\n",
       " 'Asia_Pacific_ex_Japan_32_Portfolios_ME_INV(TA)_OP_2x4x4',\n",
       " 'North_America_32_Portfolios_ME_INV(TA)_OP_2x4x4',\n",
       " 'Emerging_5_Factors',\n",
       " 'Emerging_MOM_Factor',\n",
       " 'Emerging_Markets_6_Portfolios_ME_BE-ME',\n",
       " 'Emerging_Markets_6_Portfolios_ME_OP',\n",
       " 'Emerging_Markets_6_Portfolios_ME_INV',\n",
       " 'Emerging_Markets_6_Portfolios_ME_Prior_12_2',\n",
       " 'Emerging_Markets_4_Portfolios_BE-ME_OP',\n",
       " 'Emerging_Markets_4_Portfolios_OP_INV',\n",
       " 'Emerging_Markets_4_Portfolios_BE-ME_INV']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_available_datasets()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "adbc8b68",
   "metadata": {},
   "source": [
    "***SELECT***\n",
    "\n",
    "F-F_Research_Data_Factors\n",
    "\n",
    "30_Industry_Portfolios"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "17150716",
   "metadata": {},
   "outputs": [],
   "source": [
    "start_date = dt.datetime(1926, 7, 1)\n",
    "end_date = dt.datetime(2022, 8, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3c754c53",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "F-F Research Data Factors\n",
      "-------------------------\n",
      "\n",
      "This file was created by CMPT_ME_BEME_RETS using the 202208 CRSP database. The 1-month TBill return is from Ibbotson and Associates, Inc. Copyright 2022 Kenneth R. French\n",
      "\n",
      "  0 : (1154 rows x 4 cols)\n",
      "  1 : Annual Factors: January-December (95 rows x 4 cols)\n"
     ]
    }
   ],
   "source": [
    "ff_factors = web.DataReader('F-F_Research_Data_Factors', 'famafrench', start = start_date, end = end_date)\n",
    "print(ff_factors['DESCR'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c386852c",
   "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>1926-07</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>1926-08</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>1926-09</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>1926-10</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>1926-11</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>2022-04</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>2022-05</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>2022-06</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>2022-07</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>2022-08</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",
       "1926-07    2.96 -2.56 -2.43  0.22\n",
       "1926-08    2.64 -1.17  3.82  0.25\n",
       "1926-09    0.36 -1.40  0.13  0.23\n",
       "1926-10   -3.24 -0.09  0.70  0.32\n",
       "1926-11    2.53 -0.10 -0.51  0.31\n",
       "...         ...   ...   ...   ...\n",
       "2022-04   -9.46 -1.41  6.19  0.01\n",
       "2022-05   -0.34 -1.85  8.41  0.03\n",
       "2022-06   -8.43  2.09 -5.97  0.06\n",
       "2022-07    9.57  2.81 -4.10  0.08\n",
       "2022-08   -3.78  1.39  0.31  0.19\n",
       "\n",
       "[1154 rows x 4 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ff_monthly = ff_factors[0]\n",
    "ff_monthly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6a560de5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "30 Industry Portfolios\n",
      "----------------------\n",
      "\n",
      "This file was created by CMPT_IND_RETS using the 202208 CRSP database. It contains value- and equal-weighted returns for 30 industry portfolios. The portfolios are constructed at the end of June. The annual returns are from January to December. Missing data are indicated by -99.99 or -999. Copyright 2022 Kenneth R. French\n",
      "\n",
      "  0 : Average Value Weighted Returns -- Monthly (1154 rows x 30 cols)\n",
      "  1 : Average Equal Weighted Returns -- Monthly (1154 rows x 30 cols)\n",
      "  2 : Average Value Weighted Returns -- Annual (95 rows x 30 cols)\n",
      "  3 : Average Equal Weighted Returns -- Annual (95 rows x 30 cols)\n",
      "  4 : Number of Firms in Portfolios (1154 rows x 30 cols)\n",
      "  5 : Average Firm Size (1154 rows x 30 cols)\n",
      "  6 : Sum of BE / Sum of ME (97 rows x 30 cols)\n",
      "  7 : Value-Weighted Average of BE/ME (97 rows x 30 cols)\n"
     ]
    }
   ],
   "source": [
    "industry_port = web.DataReader('30_Industry_Portfolios', 'famafrench', start = start_date, end = end_date)\n",
    "print(industry_port['DESCR'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6d3ae19b",
   "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>1926-07</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>1926-08</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>1926-09</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>1926-10</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>1926-11</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>2022-04</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>2022-05</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>2022-06</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>2022-07</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>2022-08</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",
       "1926-07   0.56  -5.19   1.29   2.93  10.97  -0.48   8.08   1.77   8.14   0.39   \n",
       "1926-08   2.59  27.03   6.50   0.55  10.01  -3.58  -2.51   4.25   5.50   7.97   \n",
       "1926-09   1.16   4.02   1.26   6.58  -0.99   0.73  -0.51   0.69   5.33   2.30   \n",
       "1926-10  -3.06  -3.31   1.06  -4.76   9.47  -4.68   0.12  -0.57  -4.76   1.00   \n",
       "1926-11   6.35   7.29   4.55   1.66  -5.80  -0.54   1.87   5.42   5.20   3.10   \n",
       "...        ...    ...    ...    ...    ...    ...    ...    ...    ...    ...   \n",
       "2022-04   3.01   3.03   6.37 -25.22 -10.76   2.04  -7.00  -6.80  -2.28   6.63   \n",
       "2022-05  -1.68  -1.60   2.67  -2.93  -7.40  -5.12  -6.45   0.99   4.52   2.38   \n",
       "2022-06  -1.64  -0.02 -11.63 -11.33 -12.53  -2.56 -12.00  -2.05 -15.65 -11.17   \n",
       "2022-07   3.67   5.49   0.56  14.62  12.10   0.76  11.86   2.75   7.66   6.86   \n",
       "2022-08  -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",
       "1926-07  ...   0.83   9.22   2.06   7.70   1.91 -23.79   0.07   1.87  -0.02   \n",
       "1926-08  ...   2.17   2.02   4.39  -2.38   4.85   5.39  -0.75  -0.13   4.47   \n",
       "1926-09  ...   2.41   2.25   0.19  -5.54   0.07  -7.87   0.25  -0.56  -1.61   \n",
       "1926-10  ...  -0.11  -2.00  -1.09  -5.08  -2.61 -15.38  -2.20  -4.11  -5.51   \n",
       "1926-11  ...   1.63   3.77   3.64   3.84   1.61   4.67   6.52   4.33   2.34   \n",
       "...      ...    ...    ...    ...    ...    ...    ...    ...    ...    ...   \n",
       "2022-04  ... -10.70 -12.59 -12.26  -0.74 -10.93  -2.14 -11.41  -5.47  -7.99   \n",
       "2022-05  ...   8.54  -3.35  -0.75  -0.66  -4.59   1.03  -5.64  -3.29   2.80   \n",
       "2022-06  ...  -6.72  -6.79 -10.19  -8.51  -7.14  -6.43  -8.50  -9.02  -9.05   \n",
       "2022-07  ...  -0.40   8.60  15.68   7.22   9.33   9.08  16.33  11.89   7.38   \n",
       "2022-08  ...  -3.00  -4.72  -5.89  -7.66  -1.46  -1.60  -3.46  -1.47  -2.24   \n",
       "\n",
       "         Other  \n",
       "Date            \n",
       "1926-07   5.20  \n",
       "1926-08   6.76  \n",
       "1926-09  -3.86  \n",
       "1926-10  -8.49  \n",
       "1926-11   4.00  \n",
       "...        ...  \n",
       "2022-04  -7.65  \n",
       "2022-05  -1.19  \n",
       "2022-06 -11.78  \n",
       "2022-07   9.19  \n",
       "2022-08  -3.65  \n",
       "\n",
       "[1154 rows x 30 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ind_monthly = industry_port[0]\n",
    "ind_monthly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "643658ac",
   "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",
       "      <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>...</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>1926-07</th>\n",
       "      <td>2.96</td>\n",
       "      <td>-2.56</td>\n",
       "      <td>-2.43</td>\n",
       "      <td>0.22</td>\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>...</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>1926-08</th>\n",
       "      <td>2.64</td>\n",
       "      <td>-1.17</td>\n",
       "      <td>3.82</td>\n",
       "      <td>0.25</td>\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>...</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>1926-09</th>\n",
       "      <td>0.36</td>\n",
       "      <td>-1.40</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.23</td>\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>...</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>1926-10</th>\n",
       "      <td>-3.24</td>\n",
       "      <td>-0.09</td>\n",
       "      <td>0.70</td>\n",
       "      <td>0.32</td>\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>...</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>1926-11</th>\n",
       "      <td>2.53</td>\n",
       "      <td>-0.10</td>\n",
       "      <td>-0.51</td>\n",
       "      <td>0.31</td>\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>...</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>2022-04</th>\n",
       "      <td>-9.46</td>\n",
       "      <td>-1.41</td>\n",
       "      <td>6.19</td>\n",
       "      <td>0.01</td>\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>...</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>2022-05</th>\n",
       "      <td>-0.34</td>\n",
       "      <td>-1.85</td>\n",
       "      <td>8.41</td>\n",
       "      <td>0.03</td>\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>...</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>2022-06</th>\n",
       "      <td>-8.43</td>\n",
       "      <td>2.09</td>\n",
       "      <td>-5.97</td>\n",
       "      <td>0.06</td>\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>...</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>2022-07</th>\n",
       "      <td>9.57</td>\n",
       "      <td>2.81</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>0.08</td>\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>...</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>2022-08</th>\n",
       "      <td>-3.78</td>\n",
       "      <td>1.39</td>\n",
       "      <td>0.31</td>\n",
       "      <td>0.19</td>\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>...</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 × 34 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         Mkt-RF   SMB   HML    RF  Food   Beer   Smoke  Games  Books  Hshld  \\\n",
       "Date                                                                          \n",
       "1926-07    2.96 -2.56 -2.43  0.22   0.56  -5.19   1.29   2.93  10.97  -0.48   \n",
       "1926-08    2.64 -1.17  3.82  0.25   2.59  27.03   6.50   0.55  10.01  -3.58   \n",
       "1926-09    0.36 -1.40  0.13  0.23   1.16   4.02   1.26   6.58  -0.99   0.73   \n",
       "1926-10   -3.24 -0.09  0.70  0.32  -3.06  -3.31   1.06  -4.76   9.47  -4.68   \n",
       "1926-11    2.53 -0.10 -0.51  0.31   6.35   7.29   4.55   1.66  -5.80  -0.54   \n",
       "...         ...   ...   ...   ...    ...    ...    ...    ...    ...    ...   \n",
       "2022-04   -9.46 -1.41  6.19  0.01   3.01   3.03   6.37 -25.22 -10.76   2.04   \n",
       "2022-05   -0.34 -1.85  8.41  0.03  -1.68  -1.60   2.67  -2.93  -7.40  -5.12   \n",
       "2022-06   -8.43  2.09 -5.97  0.06  -1.64  -0.02 -11.63 -11.33 -12.53  -2.56   \n",
       "2022-07    9.57  2.81 -4.10  0.08   3.67   5.49   0.56  14.62  12.10   0.76   \n",
       "2022-08   -3.78  1.39  0.31  0.19  -1.61  -1.87  -0.12  -2.95  -4.97  -2.16   \n",
       "\n",
       "         ...  Telcm  Servs  BusEq  Paper  Trans  Whlsl  Rtail  Meals  Fin    \\\n",
       "Date     ...                                                                  \n",
       "1926-07  ...   0.83   9.22   2.06   7.70   1.91 -23.79   0.07   1.87  -0.02   \n",
       "1926-08  ...   2.17   2.02   4.39  -2.38   4.85   5.39  -0.75  -0.13   4.47   \n",
       "1926-09  ...   2.41   2.25   0.19  -5.54   0.07  -7.87   0.25  -0.56  -1.61   \n",
       "1926-10  ...  -0.11  -2.00  -1.09  -5.08  -2.61 -15.38  -2.20  -4.11  -5.51   \n",
       "1926-11  ...   1.63   3.77   3.64   3.84   1.61   4.67   6.52   4.33   2.34   \n",
       "...      ...    ...    ...    ...    ...    ...    ...    ...    ...    ...   \n",
       "2022-04  ... -10.70 -12.59 -12.26  -0.74 -10.93  -2.14 -11.41  -5.47  -7.99   \n",
       "2022-05  ...   8.54  -3.35  -0.75  -0.66  -4.59   1.03  -5.64  -3.29   2.80   \n",
       "2022-06  ...  -6.72  -6.79 -10.19  -8.51  -7.14  -6.43  -8.50  -9.02  -9.05   \n",
       "2022-07  ...  -0.40   8.60  15.68   7.22   9.33   9.08  16.33  11.89   7.38   \n",
       "2022-08  ...  -3.00  -4.72  -5.89  -7.66  -1.46  -1.60  -3.46  -1.47  -2.24   \n",
       "\n",
       "         Other  \n",
       "Date            \n",
       "1926-07   5.20  \n",
       "1926-08   6.76  \n",
       "1926-09  -3.86  \n",
       "1926-10  -8.49  \n",
       "1926-11   4.00  \n",
       "...        ...  \n",
       "2022-04  -7.65  \n",
       "2022-05  -1.19  \n",
       "2022-06 -11.78  \n",
       "2022-07   9.19  \n",
       "2022-08  -3.65  \n",
       "\n",
       "[1154 rows x 34 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.concat([ff_monthly, ind_monthly], axis = 1, join = 'inner')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5937a36b",
   "metadata": {},
   "source": [
    "### 1.1)  Run the following Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b2c1075",
   "metadata": {},
   "source": [
    "Create blank dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "91104148",
   "metadata": {},
   "outputs": [],
   "source": [
    "ind_name = ind_monthly.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "1d66e9cd",
   "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": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta = pd.DataFrame(data = np.nan, index = ind_name, columns = ['BETAs'])\n",
    "beta"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e196776c",
   "metadata": {},
   "source": [
    "y = Ri - Rf\n",
    "\n",
    "x = E(Rm) - Rf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "aaf8a6ce",
   "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": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import linear_model\n",
    "\n",
    "for i in range(len(ind_name)):\n",
    "    model = linear_model.LinearRegression()\n",
    "    model = model.fit(df[['Mkt-RF']], pd.DataFrame(df[ind_name[i]]-df['RF'])) \n",
    "    beta.iloc[i,:][0] = model.coef_\n",
    "beta"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fffa59ba",
   "metadata": {},
   "source": [
    "### 1.2) Plot 30 beta's against premium"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "7eaffe52",
   "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>Average 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": [
       "       Average 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": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exp_ri = pd.DataFrame(data = np.nan, index = ind_name, columns = ['Average Excess Return'])\n",
    "for i in range(len(ind_name)):\n",
    "    exp_ri.iloc[i] = np.sum(df[ind_name[i]]-df['RF'])/df.shape[0]\n",
    "\n",
    "exp_ri"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "44259c2e",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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3kH04MED2NnZaV1fWVkJa2troxSKiIgsh95B9NhjjyEjI0PjOoVCgbNnz6J3795GKxgREVkGvYMoMjISqamp2L17NyorKwEAcrkc+fn5WLNmDXJycjB16lSTFZSIiDomq9raWt2zmTaxb98+7Ny5E3K5HAqFQtlXJBKJMGPGDEyZMsVkBTWVkpISAICzs7PAJTE/lZWVcHJyEroYHRqPsWnx+JqWru4aQxh0P6Jnn30WY8aMQWpqKgoLC6FQKNC9e3eMGjUKnp6eRikQERFZFoOCCAC6deumseZTXl6O7777Di+//LJRCkZERJZBryBSKBQoKyuDo6MjxGKxyrq7d+8iISEBx48fx/379xlERERkEJ1BpFAo8PXXX+P7779HbW0tAGD48OGYN28ebGxs8N///heHDx+GTCbDsGHDOFiBiIgMpjOIDh48iL1796Jbt254/PHHUVxcjHPnzkEkEkEikeDmzZsICwvDM888A29v77YqMxERdSA6g+iHH36Av78/Vq9erWyS++qrr5CYmAh3d3fExsbCx8enTQpKREQdk87riAoLC/Hkk0+q9Av9+c9/BgA8//zzDCEiImo1nUEklUrVrq9pHJPfo0cP05WKiIgsRrMzK2ia4BRouIiViIiotXTOrBAZGQk3NzfY29srl8nlchQWFqJbt26wtbVV22fDhg2mKamJcGYF7XhVuunxGJsWj69ptcnMCoGBgRprRG5ubkZ5cSIiIp1BtHr16rYqBxERWSh29BARkaAYREREJCgGERERCYpBREREgjL4NhDGlJmZicTEROTk5EAikWDevHkYN26czn1u3bqFTZs24ebNm3B0dER4eDimTZum9XonIiIyb4LWiOrq6uDj44NZs2ahU6dOzW5fU1OD5cuXo0uXLoiJicGsWbOQmJiI/fv3m76wRERkEq2qEUmlUqSmpqKqqgrBwcHo1q2bQfsPHToUQ4cOBQDExsY2u31ycjLq6+sRHR0NW1tb+Pj4oKCgAPv370dUVBRrRURE7ZDeNaKNGzdi7ty5yscymQwLFixATEwMvvjiC8yZMwe3bt0yRRmVrl+/jsDAQJUZHYKCgiCRSFBcXGzS1yYiItPQu0b0yy+/YOTIkcrHZ86cQW5uLt544w306tULn376KXbv3o1FixaZpKAAUFpaiq5du6os69KlCwCgrKwM3bt3V1l3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95TXEEkkEhQVFanss2fPHpSUlEAkEsHb2xtz587V2D9ERETtA28VzluFa8X2ddPjMTYtHl/TMtZgBc6+TUREgmIQERGRoBhEREQkKAYREREJikFERESCYhAREZGgGERERCQoBhEREQmKQURERIJiEBERkaAYREREJCgGERERCYpBREREgmIQERGRoBhEREQkKAYREREJikFERESCYhAREZGgGERERCQoBhEREQmKQURERIJiEBERkaAYREREJCgGERERCYpBREREgmIQERGRoBhEREQkKAYREREJikFERESCYhAREZGgGERERCQoBhEREQmKQURERIJiEBERkaAYREREJCgGERERCYpBREREgmIQERGRoKxqa2sVQhdCSCUlJUIXgYio3fLw8Gj1c7BGREREgrL4GhFpFx0djbVr1wpdjA6Nx9i0eHxNy1jHlzUiIiISFIOIiIgExSAiIiJBMYiIiEhQDCIiIhIUg4iIiATFICIiIkExiIiISFAMItJq/PjxQhehw+MxNi0eX9My1vHlzApERCQo1oiIiEhQDCIiIhIUg4iIiARlI3QBSDjff/89EhISUFpaikcffRQzZ85EYGCgxm2Li4vx+uuvqy1fsWIFhgwZYuqitjuZmZlITExETk4OJBIJ5s2bh3Hjxunc59atW9i0aRNu3rwJR0dHhIeHY9q0abCysmqjUrcfhh5fnr+G2bt3L1JTU3Hnzh2IxWL07dsX06dPh4+Pj879WnoOM4gs1JkzZ7Blyxa88cYb6N+/P5KSkrBixQqsX79e542u3n//ffj6+iofOzo6tkVx2526ujr4+PggLCwMMTExzW5fU1OD5cuXIzAwEDExMSgoKMC6detgZ2eHqVOntkGJ2xdDj28jnr/6uXLlCiZOnAg/Pz8oFArs3LkTy5Ytw4YNG+Dk5KRxn9acwwwiC7V//3489dRTyuGXs2fPxsWLF3H48GFMnz5d635OTk5wdXVtq2K2W0OHDsXQoUMBALGxsc1un5ycjPr6ekRHR8PW1hY+Pj4oKCjA/v37ERUVxVrRQww9vo14/urngw8+UHk8f/58TJs2DVlZWQgODta4T2vOYfYRWSCpVIqcnBwEBQWpLA8KCkJWVpbOfVetWoW//e1vWLBgAVJSUkxZTIty/fp1BAYGwtbWVrksKCgIEokExcXFApasY+H52zK1tbWQ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(beta, exp_ri)\n",
    "plt.xlabel('Beta')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('Beta and Excess Return')\n",
    "plt.ylim(0.1,2)\n",
    "plt.xlim(0.1,2)\n",
    "plt.show()\n",
    "\n",
    "plt.savefig('Beta and Excess Return.jpg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "b4a0be8c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.regplot(x = beta, y = exp_ri) \n",
    "ax.set_title(\"Beta and Excess Return\", fontsize=10)\n",
    "ax.set_xlabel(\"Beta\", fontsize = 10)\n",
    "ax.set_ylabel(\"Excess Return\", fontsize = 10)\n",
    "\n",
    "plt.savefig(\"REG - Beta and Excess Return.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57802529",
   "metadata": {},
   "source": [
    "***CONCLUSION***\n",
    "\n",
    "we cannot observe SML right away because they are lots of error terms from the linear line."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0d1f646",
   "metadata": {},
   "source": [
    "### 1.3) Cross-validation for CAPM ( 10-fold, RMSE, MAE )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f48a3b31",
   "metadata": {},
   "source": [
    "create blank dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "e65584b5",
   "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": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric_CAPM = pd.DataFrame(data = np.nan, index = ind_name, columns = ['RMSE','MAE'])\n",
    "metric_CAPM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "8d97f0cf",
   "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": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "kf = KFold(n_splits=10,shuffle=False)\n",
    "\n",
    "for i in range(len(ind_name)):\n",
    "    err_rmse_test = 0\n",
    "    err_mae_test = 0\n",
    "    mkt = df['Mkt-RF'].to_numpy()\n",
    "    ri_rf = (df[ind_name[i]]-df['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_CAPM.iloc[i][0] = rmse_10cv_test\n",
    "    metric_CAPM.iloc[i][1] = mae_10cv_test\n",
    "metric_CAPM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "b13278e3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 3.900715824121209\n",
      "MAE: 2.9213263884838936\n"
     ]
    }
   ],
   "source": [
    "mean_rmse_CAPM = np.mean(metric['RMSE'])\n",
    "mean_mae_CAPM = np.mean(metric['MAE'])\n",
    "print(f\"RMSE: {mean_rmse_CAPM}\")\n",
    "print(f\"MAE: {mean_mae_CAPM}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b8498e6",
   "metadata": {},
   "source": [
    "### 1.4) Fama-Factors"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2a3bd73",
   "metadata": {},
   "source": [
    "Blank dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "bc364c99",
   "metadata": {
    "scrolled": true
   },
   "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</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": [
       "       MKT  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": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta_ff = pd.DataFrame(data = np.nan, index = ind_name, columns = ['MKT', 'SMB', 'HML'])\n",
    "beta_ff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "046d860d",
   "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</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": [
       "            MKT       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": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#the same as industry but 3 columns\n",
    "from sklearn import linear_model\n",
    "\n",
    "for i in range(len(ind_name)):\n",
    "    model = linear_model.LinearRegression()\n",
    "    model = model.fit(df[['Mkt-RF','SMB','HML']], pd.DataFrame(df[ind_name[i]]-df['RF']))\n",
    "   \n",
    "    beta_ff.iloc[i] = model.coef_\n",
    "beta_ff"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ba1120d",
   "metadata": {},
   "source": [
    "### 1.5) Plot of those 3 betas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "5f03a9b4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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EK1rztTUFH379kV8fLzC8vj4ePTv31/r50lPT4eNjY2eqyMioqYiatdcQEAA1q1bBycnJwwYMAAnTpxAUVER/Pz8AAChoaG4efMmgoODAQBRUVEwMTFBnz59YGRkhIsXL+L48eOYPn26mG+DiIgaQdQgGjFiBEpLS7F//34UFRXBwcEBS5culV9DVFRUhNzcXIV99u/fj/z8fBgbG6N79+6YM2eOyvNDRETUPPBW4ZziRy32rwuPx1hYPL7C0tdgBc6+TUREomIQERGRqBhEREQkKgYRERGJikFERESiYhAREZGoGERERCQqBhEREYmKQURERKJiEBERkagYREREJCoGERERiYpBREREomIQERGRqBhEREQkKgYRERGJikFERESiYhAREZGoGERERCQqBhEREYmKQURERKJiEBERkagYREREJCoGERERiYpBREREomIQERGRqBhEREQkKgYRERGJikFERESiYhAREZGoGERERCQqBhEREYmKQURERKJiEBERkagYREREJCoGERERiYpBREREomIQERGRqIwqKytlYhchpvz8fLFLICJqtmxtbRv9HGwRERGRqFp9i4jUCwwMxPr168Uuo0XjMRYWj6+w9HV82SIiIiJRMYiIiEhUDCIiIhIVg4iIiETFICIiIlExiIiISFQMIiIiEhWDiIiIRMUgIrXGjRsndgktHo+xsHh8haWv48uZFYiISFRsERERkagYREREJCoGERERiaqN2AWQeI4dO4awsDAUFxfjmWeewcyZM+Hq6qpy27y8PHzwwQdKy5ctW4YhQ4YIXWqzk5SUhPDwcKSlpaGoqAhz586Fj4+Pxn0yMjKwdetWpKamQiKRwNfXF1OmTIGRkVETVd186Hp8+fnVzYEDBxATE4Ps7GyYmpqiX79+mD59OhwcHDTu19DPMIOolTp37hy2b9+OWbNmYcCAATh+/DiWLVuGTZs2abzR1fLly+Ho6Ch/LJFImqLcZqeqqgoODg4YM2YM1q1bV+/2Dx48wJIlS+Dq6op169YhKysLGzZsgLm5OSZNmtQEFTcvuh7fOvz8aicxMREvv/wynJycIJPJsHv3bgQFBWHz5s2wsrJSuU9jPsMMolbq0KFDGDt2rHz45UcffYQrV67gxIkTmD59utr9rKysYGNj01RlNlseHh7w8PAAAISEhNS7fXR0NKqrqxEY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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(beta_ff['MKT'], exp_ri)\n",
    "plt.xlabel('MKT_FF')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('MKT_FF and Excess Return')\n",
    "plt.ylim(0.1,2)\n",
    "plt.xlim(0.1,2)\n",
    "plt.show()\n",
    "\n",
    "plt.savefig('MKT_FF and Excess Return.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "dffed3bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEgCAYAAACjEpTiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA5oklEQVR4nO3deXxU9bk/8M85s092siEEAhiEJFRFgatYcAMBWxBsQf15i1JBBK9QQWsRK4viLgoVsSB4aa94GyrggoiCS1B7VUAoAooJBBIh62Qjs885vz8mM2RIJpNJMvvn/XrxCjmcM/OdQzLPfJfn+Qomk0kGERFRB4mhbgAREUUWBg4iIvILAwcREfmFgYOIiPzCwEFERH5h4CAiIr8wcBARkV+UoW4Axa6JEyfiuuuuw8KFCwEADocD06dPxyWXXIIlS5Zg9+7dKCoqwn333QdJkrBq1SoIgoDi4mI4HA5UVFSgd+/eAIDbbrsN11xzTavneOmll/D9998jLi4OADBmzBhMmjQJ99xzD3Q6HUTR+dlpzpw5yM3N7dbXN3XqVGzZsqXV8VtuuQXZ2dnu70eNGoWpU6d263P7a9GiRaitrYVKpYJSqcQDDzyAAQMGeD3/xIkTMBgMGDZsWBBbSeGCgYNCRqvV4vTp07BYLNBoNPjuu++Qmpra6jxZlvHqq6/Cbrdj4cKFEEURFRUVWL58OVavXu3zeX7/+9+3GVRWrFiBpKSkbnkt/lCr1R1qd7AtXLgQAwcOxO7du/HGG2/giSee8HruiRMnUFRU5FfgkGUZsiy7gzVFLgYOCqkrr7wS+/btwzXXXIPCwkKMHj0aR44c8Thn3bp1aGhowCOPPBLUN50nn3wS1dXVsFqtmDRpEsaPHw/A2ZOYOHEivv32W2g0GixevBgpKSkoLy/HCy+8AIfDgSuvvNKv52pqasLChQvx2GOPISsrC88//zwuvfRSjBs3Dp988gm2bdsGAOjXrx8WLlyI+vp6rFmzBlVVVQCAWbNmIS8vD4cPH8b69esBAIIg4Omnn4bZbMZzzz0Ho9EIh8OBuXPnIj8/32tbBg0ahK1btwIAzGYz/vrXv6KkpASSJOGOO+7AlVdeiTfffBNWqxVHjx7F1KlTUVpaCq1Wi1tvvRUAcP/99+Pxxx8HACxduhS/+MUv8OOPP2LmzJl49dVXkZeXh2PHjiE1NRWPPfYYNBqNX/eLQouBg0Jq1KhR+N///V8MHz4cJSUlGDt2rEfg+Pzzz9GnTx889dRTUCgUnXqOjRs34h//+AcAYMGCBejXrx8AYPHixRBFESqVCi+++GKr6+bPn4+EhARYLBYsWLAAI0eORGJiIsxmMwYPHozp06fjjTfewEcffYTbbrsN69evx80334wbbrgBO3bs8Noeq9WKefPmub+fOnUqRo0ahdmzZ+Pll1/GpEmTcO7cOYwbNw6nTp1CQUEBnn32WSQlJaGxsRGAM5jecsstyM/PR2VlJZYsWYK1a9di27ZtuO+++5CXlweTyQS1Wo1du3Zh6NChuO222+BwOGCxWNq9XwcOHMBVV10FACgoKMCll16K+fPn49y5c1i4cCEuv/xy3Hnnne5hRADYvHmz18f7+eefMX/+fMydOxcVFRU4c+YMHn74YTzwwAN45pln8NVXX+H6669vt00UXhg4KKT69++PyspKFBYWtjnscfHFF6OsrAzHjx9HXl5ep56js0NV7733Hv71r38BAKqrq3HmzBkkJiZCqVRi+PDhAICcnBx89913AIBjx45h0aJFAIDrr78e//3f/93m43obqho6dCi+/PJLvPbaa+5///e//42RI0e625mQkAAAOHToEEpLS93XGo1GGI1G5ObmYsOGDbj22msxcuRI6HQ6DBw4EKtXr4bD4cBVV13lde7ixRdfhNlshiRJePnllwEA3333Hb7++mt3j8dqtbp7OR2Vnp6OwYMHu7/PzMx0tyEnJweVlZV+PR6FHgMHhdyIESOwceNGPPXUU+5P1C5ZWVm488478eyzz2LZsmUek8qBdPjwYRw8eBDPP/88tFotFi1aBJvNBgBQKpUQBAEAIIoiHA6H+zrX8c6QJAmlpaVQq9VobGxEWloaZFlu8zElScLzzz/faohn6tSpGD58OPbt24eHHnoITzzxBIYMGYKnn34a+/btw8qVK3HrrbfihhtuaPWYCxcuRP/+/bFp0ya89tprePTRRyHLMhYtWoSsrCyPc3/88UeP7xUKBWT5fL1U170CnHNZLalUKvffRVGE1WrtwN2hcMJZKgq5sWPH4vbbb3cPIV0oNzcXc+fOxfLly4P26bSpqQnx8fHQarUoLS1t9UbZltzcXBQWFgIAPvvsM7+f85133kGfPn3w8MMPY/Xq1bDb7bjsssvw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xo0bhz59+mD27NlISUnBzp072zy/uLgYDocD06dPR69evTBgwABMnToVZ8+eRX19fZBbH7mGDRuG6dOn45prroEo+v71/Oyzz2CxWPDggw8iOzsb11xzDX7zm99g+/btkGUumOwof+/7tGnT8Lvf/Q55eXno2bMnbr75Zlx99dX46quvgtDa0GPgoFZsNhuKioowdOhQj+NDhw7FsWPH2rwmJycHCoUCH330ERwOB4xGI/bs2YOBAwciKSkpGM2OST/88APy8/Oh0Wjcx4YOHQqDwYCKiooQtiz2mEwmxMfHh7oZQcHAQa00NDRAkiQkJyd7HE9OTkZdXV2b12RmZuKJJ57A5s2bceutt+L222/HqVOn8Pjjjwe+wTGstra2zf8nAF7/r6j7ffPNNzh06BDGjx8f6qYEBQMHeeXP5GptbS1Wr16NG264AStXrsRTTz0FnU6HZ599FpIkBbCVxEnw0Dp69CheeOEF3HvvvbjkkktC3ZygYOCgVhITEyGKImpraz2O19XVtfp067Jjxw5otVrMmDEDF198MYYMGYKFCxfi+++/9zq8RV2XkpLS5v8TAK//V9R9jhw5gqVLl+LOO+/EzTffHOrmBA0DB7WiUqmQk5ODgwcPehw/ePAgcnNz27zGYrG0mlR0fc9J2sAZPHgwjhw5AqvV6j528OBB9OjRA5mZmSFsWfT7/vvvsWzZMtxxxx245ZZbQt2coGLgoDZNnjwZe/bswa5du1BaWop169bBYDBgwoQJAIBNmzZh8eLF7vOHDRuG4uJivPXWWzhz5gyKioqwatUqpKWlIScnJ1QvI+KYTCacOHECJ06cgCRJqKqqwokTJ9zLoC+879deey00Gg1efvllnDp1Cl999RX++c9/YvLkyRzC8oO/9/3w4cNYunQpxo8fj+uuuw61tbWora2NmRWELHJIXrkSAA0GA7KzszFz5kwMGTIEAPDSSy/h+++/x4YNG9znFxYW4u2338aZM2egVqsxaNAg3H333ejbt2+oXkLEOXz4MB599NFWx2+44QY8+OCDbd53VwLg8ePHER8fjwkTJjAB0E/+3veXXnoJn3zySavzMzIyPP5vohUDBxER+YVDVURE5BcGDiIi8gsDBxER+YWBg4iI/MLAQUREfmHgICIivzBwEBGRX7gDIFEnTZw4Eddddx0WLlwIAO79SC655BIsWbIEu3fvRlFREe677z5IkoRVq1ZBEAT33iUVFRXu3RFvu+02XHPNNa2ew5V4FhcXBwAYM2YMJk2ahHvuuQc6nc5d1mXOnDley8EQdTcGDqJO0mq1OH36NCwWCzQaDb777jukpqa2Ok+WZbz66quw2+1YuHAhRFFERUUFli9fjtWrV/t8nt///vdtBpUVK1ZwrxMKCQ5VEXXBlVdeiX379gFwllwZPXp0q3PWrVuHhoYGLFiwoEO7yxGFO/4UE3XBqFGjUFhYCKvVipKSEgwaNMjj3z///HMUFxfjj3/8IxQKRaeeY+PGjZg3bx7mzZuHkpIS9/HFixdj3rx57qEyomDhUBVRF/Tv3x+VlZUoLCzEsGHDWv37xRdfjLKyMhw/fhx5eXmdeg4OVVG4YY+DqItGjBiBjRs3tjlMlZWVhUceeQTPPfccTp06FYLWEXU/Bg6iLho7dixuv/129OvXr81/z83Nxdy5c7F8+XL3/g5EkYyBg6iL0tLSMGnSpHbPGTFiBO644w4sXboUDQ0NQWoZUWBwPw4iIvILexxEROQXrqoiCgNr167FsWPHPI5NmjQJY8aMCVGLiLzjUBUREfmFQ1VEROQXBg4iIvILAwcREfmFgYOIiPzCwEFERH75/3uzjG1N1HA7AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.regplot(x = beta_ff[['MKT']], y = exp_ri) \n",
    "ax.set_title(\"MKT_FF and Excess Return\", fontsize=10)\n",
    "ax.set_xlabel(\"MKT_FF\", fontsize = 10)\n",
    "ax.set_ylabel(\"Excess Return\", fontsize = 10)\n",
    "\n",
    "plt.savefig(\"REG - MKT_FF and Excess Return.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "2d9a4e71",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(beta_ff['SMB'], exp_ri)\n",
    "plt.xlabel('SMB_FF')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('SMB_FF and Excess Return')\n",
    "plt.ylim(0.1,2)\n",
    "plt.xlim(0.1,2)\n",
    "plt.show()\n",
    "\n",
    "plt.savefig('SMB_FF and Excess Return.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "bff1ec7d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.regplot(x = beta_ff[['SMB']], y = exp_ri) \n",
    "ax.set_title(\"SMB_FF and Excess Return\", fontsize=10)\n",
    "ax.set_xlabel(\"SMB_FF\", fontsize = 10)\n",
    "ax.set_ylabel(\"Excess Return\", fontsize = 10)\n",
    "\n",
    "plt.savefig(\"REG - SMB_FF and Excess Return.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "9a79cbc4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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iIjaMd4qnLcKFxzH4YXDthQW21NYQk1W4OrbREQkKgYRERGJikFERESiYhAREZGoGERERCQqBhEREYmKQURERKJiEBERkagYREREJCoGERERiYpBREREomIQERGRqBhEREQkKgYRERGJikFERESiYhAREZGoGERERCQqBhEREYmKQURERKJiEBERkagYREREJCoGERERiYpBREREomIQERGRqBhEREQkKgYRERGJikFERESiYhAREZGoGERERCQqBhEREYmKQURERKJiEBERkagYREREJCoGERERiYpBREREomIQERGRqBhEREQkKgYRERGJSlJZWSkXuwgxFRQUiF0CEVG75ejo2OLXYI+IiIhE1el7RAAQHByMLVu2iF1Gh8H2FA7bUlhsT2EJ1Z7sERERkagYREREJCoGERERiYpBREREomIQERGRqBhEREQkKgYRERGJikFERESiYhAB8PX1FbuEDoXtKRy2pbDYnsISqj25sgIREYmKPSIiIhIVg4iIiETFICIiIlEZi11Aazt9+jR++uknZGVloaKiArt27UKPHj2afN6lS5fw3Xff4f79++jVqxf+9re/YezYsa1QcdtWW1uLb775Bj/++CNqamowbNgwvP322+jevXujzzl37hy2bt2qtv0///kPTE1NDVlum3PixAkcOXIERUVFeOqpp7BkyRJ4eHg0evydO3ewY8cO3Lp1C5aWlvDz88Mrr7wCiUTSilW3Xfq0Z35+PhYvXqy2ff369Rg5cqShS23TUlNTcfToUWRmZqKwsBDLli3DtGnTtD6nJd/NThdE1dXVGD58OLy8vLBr1y6dnnPjxg2EhoZiwYIFGDduHOLj4/Hpp58iNDQUgwcPNnDFbVtERAQSEhKwYsUKWFlZ4euvv8bHH3+MLVu2QCqVNvo8MzMzREREqGzrbCF08eJFRERE4O2334a7uztOnjyJ9evXY9u2bRpvNvbo0SN89NFH8PDwQFhYGHJycrB161aYm5tj9uzZInyCtkXf9lTYsGED+vbtq3xsaWnZGuW2aVVVVXBxcYGPjw/CwsKaPL6l381ONzQ3a9YszJ07F+7u7jo/5/jx4xg6dCjmzZsHZ2dnzJs3D56enoiKijJgpW1fRUUFzp49i0WLFmH48OEYMGAA3nvvPdy5cwe//fab1udKJBLY2dmp/NfZHDt2DFOnToWv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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(beta_ff['HML'], exp_ri)\n",
    "plt.xlabel('HML_FF')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('HML_FF and Excess Return')\n",
    "plt.ylim(0.1,2)\n",
    "plt.xlim(-1,1)\n",
    "plt.show()\n",
    "\n",
    "plt.savefig('HML_FF and Excess Return.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "2a1ea034",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.regplot(x = beta_ff[['HML']], y = exp_ri) \n",
    "ax.set_title(\"HML_FF and Excess Return\", fontsize=10)\n",
    "ax.set_xlabel(\"HML_FF\", fontsize = 10)\n",
    "ax.set_ylabel(\"Excess Return\", fontsize = 10)\n",
    "\n",
    "plt.savefig(\"REG - HML_FF and Excess Return.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d88711c2",
   "metadata": {},
   "source": [
    "***CONCLUSION***\n",
    "\n",
    "Since I plot a regplot that obviously show the linear line, but as can be seen, only MKT_FF show the positive relationship with the excess return while another 2 roughly show the negative relationship but there are many outliers.\n",
    "\n",
    "Easily compared, when we use the CAPM to analyze the relationship, SML reveals that the linear is more obvious rather than CAPM. Therefore the Three factors model is more suitable than CAPM."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "44f407fe",
   "metadata": {},
   "source": [
    "### 1.6) Cross-validation for Three factors model ( 10-fold, RMSE, MAE )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "c1c495b1",
   "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": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric_ff = pd.DataFrame(data = np.nan, index = ind_name, columns = ['RMSE','MAE'])\n",
    "metric_ff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "b108c338",
   "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": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "kf = KFold(n_splits=10,shuffle=False)\n",
    "\n",
    "for i in range(len(ind_name)):\n",
    "    err_rmse_test = 0\n",
    "    err_mae_test = 0\n",
    "    FFs = df[['Mkt-RF','SMB','HML']].to_numpy()\n",
    "    ri_rf = (df[ind_name[i]]-df['RF']).to_numpy()\n",
    "    for train,test in kf.split(mkt):\n",
    "        lr=linear_model.LinearRegression()\n",
    "        reg=lr.fit(FFs[train],ri_rf[train])\n",
    "        ri_rf_pred_test =reg.predict(FFs[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",
    "    metric_ff.iloc[i][0] = rmse_10cv_test\n",
    "    metric_ff.iloc[i][1] = mae_10cv_test\n",
    "metric_ff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "b59db985",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 3.900715824121209\n",
      "MAE: 2.9213263884838936\n"
     ]
    }
   ],
   "source": [
    "mean_rmse_ff = np.mean(metric['RMSE'])\n",
    "mean_mae_ff = np.mean(metric['MAE'])\n",
    "print(f\"RMSE: {mean_rmse_ff}\")\n",
    "print(f\"MAE: {mean_mae_ff}\")"
   ]
  }
 ],
 "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
}
