{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "daeed999",
   "metadata": {},
   "source": [
    "# EE522-Assignment05-6204640087\n",
    "\n",
    "Thanakrit Methasate 6204640087"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd8d935f",
   "metadata": {},
   "source": [
    "### Import necessary libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2ae40f39",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from pandas_datareader.famafrench import get_available_datasets\n",
    "import pandas_datareader.data as web\n",
    "import datetime as dt\n",
    "\n",
    "%matplotlib inline\n",
    "# activate plot theme\n",
    "import qeds\n",
    "\n",
    "qeds.themes.mpl_style();\n",
    "plotly_template = qeds.themes.plotly_template()\n",
    "colors = qeds.themes.COLOR_CYCLE\n",
    "\n",
    "# We will import all these here to ensure that they are loaded, but\n",
    "# will usually re-import close to where they are used to make clear\n",
    "# where the functions come from\n",
    "from sklearn import (linear_model, metrics, model_selection) ## For model evaluation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb350869",
   "metadata": {},
   "source": [
    "### Download the datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "31c0abb9",
   "metadata": {},
   "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": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#To see the availble dataset on Fama-French library\n",
    "get_available_datasets()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1c9761d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "start_date = dt.datetime(1926, 7, 1)\n",
    "end_date = dt.datetime(2022, 8, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "feddf287",
   "metadata": {
    "scrolled": true
   },
   "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": 6,
   "id": "c5e853dc",
   "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": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ff_factors_monthly = ff_factors[0]\n",
    "ff_factors_monthly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "64889b84",
   "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": [
    "ind_port = web.DataReader('30_Industry_Portfolios', 'famafrench', start = start_date, end = end_date)\n",
    "print(ind_port['DESCR'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "db5ddfda",
   "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": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ind_port_monthly = ind_port[0]\n",
    "ind_port_monthly"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "baf854b4",
   "metadata": {},
   "source": [
    "Create the object containing all of the industries' name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d5b5cc45",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Food ', 'Beer ', 'Smoke', 'Games', 'Books', 'Hshld', 'Clths', 'Hlth ',\n",
       "       'Chems', 'Txtls', 'Cnstr', 'Steel', 'FabPr', 'ElcEq', 'Autos', 'Carry',\n",
       "       'Mines', 'Coal ', 'Oil  ', 'Util ', 'Telcm', 'Servs', 'BusEq', 'Paper',\n",
       "       'Trans', 'Whlsl', 'Rtail', 'Meals', 'Fin  ', 'Other'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ind_name = ind_port_monthly.columns\n",
    "ind_name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ec515739",
   "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": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.concat([ff_factors_monthly, ind_port_monthly], axis = 1, join = 'inner')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "427dad34",
   "metadata": {},
   "source": [
    "### Q1.1) Run the regression"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "732bd1a8",
   "metadata": {},
   "source": [
    "Prepare the dataframe to keep the beta and the E[Ri-Rf] of each industry"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e3050a05",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "beta = pd.DataFrame(data = np.nan, index = ind_name, columns = ['BETAs'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "99f720b3",
   "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": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e35d8560",
   "metadata": {},
   "source": [
    "Estimate the CAPM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "07391a78",
   "metadata": {},
   "outputs": [],
   "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'])) # y = Ri - Rf, x = E(Rm)-Rf\n",
    "    #Save the beta\n",
    "    beta.iloc[i,:][0] = model.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c4f54692",
   "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": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3209feab",
   "metadata": {},
   "source": [
    "### Q1.2) Plot the beta against the excess return"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc177aa7",
   "metadata": {},
   "source": [
    "First, create the array of betas and the (average) excess return."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "2d9a337b",
   "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": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expected_ri = pd.DataFrame(data = np.nan, index = ind_name, columns = ['Average Excess Return'])\n",
    "for i in range(len(ind_name)):\n",
    "    expected_ri.iloc[i] = np.sum(df[ind_name[i]]-df['RF'])/df.shape[0]\n",
    "\n",
    "expected_ri"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa6e48b8",
   "metadata": {},
   "source": [
    "Plot the graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "4bae339d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(beta, expected_ri)\n",
    "plt.xlabel('Beta')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('Beta and Excess Return')\n",
    "plt.ylim(0.5,1)\n",
    "plt.xlim(0.5,1.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d23d9c6",
   "metadata": {},
   "source": [
    "We cannot observe the SML. This might be because of the omitted variable. There might exist some factors in the error term that can explain the variation in the industry's excess return. The beta factor might be biased."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9c74a128",
   "metadata": {},
   "source": [
    "### Q1.3) Cross Validation: CAPM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "a925c419",
   "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": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric = pd.DataFrame(data = np.nan, index = ind_name, columns = ['RMSE','MAE'])\n",
    "metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "46b99255",
   "metadata": {},
   "outputs": [],
   "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.iloc[i][0] = rmse_10cv_test\n",
    "    metric.iloc[i][1] = mae_10cv_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "915f481a",
   "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": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "e2620998",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 3.9007\n",
      "MAE: 2.9213\n"
     ]
    }
   ],
   "source": [
    "mean_rmse_capm = np.mean(metric['RMSE'])\n",
    "mean_mae_capm = np.mean(metric['MAE'])\n",
    "print(f\"RMSE: {mean_rmse_capm:.4f}\")\n",
    "print(f\"MAE: {mean_mae_capm:.4f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd061d5e",
   "metadata": {},
   "source": [
    "### Q1.4) Fama-French"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "bbb3efc2",
   "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>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": 19,
     "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": "markdown",
   "id": "2edd4cb8",
   "metadata": {},
   "source": [
    "Estimate Fama-French 3 factors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "753b163e",
   "metadata": {},
   "outputs": [],
   "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','SMB','HML']], pd.DataFrame(df[ind_name[i]]-df['RF'])) # y = Ri - Rf, x = E(Rm)-Rf\n",
    "    #Save the beta\n",
    "    beta_ff.iloc[i] = model.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "4e2a58c1",
   "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": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta_ff"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee7db2e7",
   "metadata": {},
   "source": [
    "### Q1.5) Plot graphs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "dbaf326e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(beta_ff['MKT'], expected_ri)\n",
    "plt.xlabel('MKT_FF')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('MKT_FF and Excess Return')\n",
    "plt.ylim(0.5,1)\n",
    "plt.xlim(0.5,1.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "e1191321",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(beta_ff['SMB'], expected_ri)\n",
    "plt.xlabel('SMB_FF')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('SMB_FF and Excess Return')\n",
    "plt.ylim(0.5,1)\n",
    "plt.xlim(-0.4,1.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "da3ae38e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAEuCAYAAADMeRbMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3m0lEQVR4nO3deVyU5fo/8M8wbMrugoghqais5W6muEAFfk3CSs0W10j9nr4qdlpMS82trJdLHcvjUrmEHStUCBEUpVBTkxMKykFRKxRZcgYGEBSZ+f3hb+Y4zjDMyDzzDMzn/Xr1xzzLzDV3j3Nx38/9XLektrZWBSIiIpHYiR0AERHZNiYiIiISFRMRERGJiomIiIhExURERESiYiIiIiJRMRERCWTGjBkYO3as2GEQWT17sQOg/1L/aCUnJzd6zIIFC5CXl4eVK1ciLCxMZzsAvP7664iKitJ7/r/+9S/s3LkTABAeHo633npLs+/QoUNYv349IiIiEB8f3+zvozZjxgyUlZU1uj8mJgZxcXEAgNzcXLz77rsG32/9+vXo3r272eKzFvf+P2zMvW1lyxISErBr1y6tbfb29mjXrh1CQkLw3HPPwd/fv1mfUVpaildffRWhoaFYtWpVs96LDGMiamWkUinS0tL0JiKVSoWDBw9CKpWioaHB4rHFxMTAxcVFZ3vv3r11tnl7eyMyMlLv+3h5eZk9NmsSERGBTp066d2nr61sWWhoqOYPsurqapw7dw5HjhzBsWPHsGLFCgQGBoocIRmDiaiVGThwIE6cOIErV66gW7duWvtycnJQWlqKIUOG4JdffrF4bDExMY3+wN7P29sbL774osARWacnnnhCq7dLjQsLC9O6TlQqFT777DMcPHgQ27dvx8qVK0WMjozFRNTKPPXUUzh58iTS0tIwa9YsrX1paWlwdHTEyJEjRUlEllRTU4MDBw4gOzsb165dg0KhQNu2bREYGIjnn38eQUFBOueMHTsW3t7e2LBhAxISEpCVlYWKigp07NgRTz75JJ5//nlIJBKtc1QqFVJSUrB//36UlJTAzc0Njz32GCZPniz4d1y1ahWOHz+OGTNmIDY2VmtfYmIivvrqKwwePBiLFi3SbL99+zZSUlKQlZWFq1evoqGhAe3bt0doaCief/55+Pr6ao5VKpU4ePAgMjIy8Mcff6C+vh6dO3fGyJEjERsbCwcHB63PzM3NxZ49e3DlyhVUVFTAxcUFHTt2RGhoKKZPn65pu5qaGiQlJeHo0aMoLy+HSqWCu7s7evTogbFjxzYrCUskEkRHR+PgwYO4ePGizn5jv5N6mBoA8vLytO71TZo0CS+++KJmGFn9+n7qodZ7h9rV50REROC5557Dzp07kZeXh6qqKqxfvx41NTWa/S+++CK2bduGnJwc1NXVoWvXrpg0aRIGDx78wO1jrZiIWhkfHx+EhYUhMzMT06ZNg5OTEwCgsrISJ0+exLBhw+Dm5iZylMIrKirCzp07ERISgoEDB8LV1RXl5eU4ceIETp8+jffeew8DBgzQOe/OnTt4//33IZfL0b9/f0ilUpw4cQLbt2/H7du38dJLL2kdv3nzZiQnJ8PLywtRUVGwt7fHyZMnceHCBdy5c0fQ7zhnzhxcunQJ27ZtQ1BQkGbYrqCgADt27IC3tzfmzZunOb66uhqLFi3CpUuX0LlzZ0RERMDZ2RklJSX45ZdfEBwcrElEDQ0NWLlyJU6dOoUuXbpg+PDhcHR0RF5eHrZv344zZ85g6dKlkEqlAIDTp0/jgw8+QNu2bTFo0CB06NAB1dXVKC4uRnJyMqZOnQqpVAqVSoXFixejoKAAvXr1wpNPPgkHBwfcuHED586dQ05Ojtl6g+rY1Ez5Tt27d0dMTAySkpJ0honNEd/169fx5ptvws/PDxEREaipqYGTkxNqamoAAOXl5XjjjTfg4+ODUaNGobq6GllZWVixYgWWLVuGRx99tNkxWBMmIiuUkJDQ6D5DN/3VoqKi8PHHH+PYsWOIiIgAAGRkZODOnTt46qmnzBanqZKSknTuETk4OGD8+PE6x5aVlelth969e6N///5Nfpafnx++/vpreHh46LzvG2+8gS1btuhNRDKZDD169MDy5cvh6OgI4O5fwLNmzUJSUhImTpwIe/u7/2zy8/ORnJwMb29vrFmzRvNZkydPxsKFCyGTyZqMU59Dhw4hNzdX777IyEjN8KaLiwveeustvP3221i9erXmL/jVq1dDpVLhzTffhKurq+bcjRs34tKlS4iIiMCcOXO0fqhv376N2tpazevvv/8ep06dwpgxYxAXF6c5VqlU4vPPP0daWhpSUlIQExMDAEhPT4dKpcKKFSvQo0cPrZgVCoXm/N9//x0FBQU6PTXgbu+yqqrqgdrsXmlpaQCAkJAQre2mfKfu3bvDxcVFk4jMPUycn5+P8ePH6/Sc1ddMbm4uXn75ZUycOFGzb8SIEVi8eDESExOZiEh4988GMtWQIUPg5uaG9PR0TSJKT09Hly5dEBYW1uiPnNCSkpJ0trm4uDSaiPS1Q0xMjFGJSN+kCODuvadhw4bhxx9/RFlZGby9vXWOee211zRJCAA8PT0xePBgHD58GNeuXdPMxjp06BAAYMKECVoJz8HBAZMnT8aCBQuajFOfw4cPN7ovLCxM6z5br169MGXKFGzduhWffvopVCoVysrKMG3aNK0b9RUVFcjKyoKHhwdmzpyp01twdHTUfGelUomkpCR4enpq/WADgJ2dHaZNm4b09HQcOXJEk4jUw27qHvi93N3dtc5v7DiJRKJ1rDFyc3M1f7DU1NTg/PnzKCwsRPv27TF9+nTNcQ/ynYTk6emJSZMmNbrf29sbzz//vNa2fv36wdvbW++QY0vHRGSFjJm+bYiDgwMiIiKwb98+XL16FXK5HNeuXcO0adPMHapJtmzZYvRkBXNMmT1//jySkpJQUFCAiooKnaEymUymk4hcXFzg4+Oj814dOnQAcHd4S+3SpUuaWO8XFBT0wLMT75+a35TY2Fjk5uZq7vv1798f48aN0zrm4sWLUCqVCA4ORtu2bQ2+n/qeWufOnfGvf/1L7zGOjo64du2a5vXIkSNx/Phx/P3vf8ewYcMQFhaGwMBAnf/fDz30EAICAvDzzz+jtLQUgwcPRnBwMHr27KmV/I2Vl5en8+/B29sbq1evRvv27Zv1nYTUrVs3nXts9+revbvOHwsA0L59exQUFAgZmiiYiFqpqKgo7Nu3D+np6ZDL5bC3t9f0jmzBL7/8gg8//BAODg7o27cvfHx84OTkBDs7O+Tm5iIvLw/19fU65zXWk7p3GEft5s2bAO7+davveDc3N1RUVDT/yxjh8ccfx6lTpwDc7TXeP6lCfe9BnVANUQ+PXb9+3eje+ZAhQ7B06VLs2bMHGRkZmuExf39/TJo0CUOHDgVwt12WLVuG3bt349ixY9i+fTuAuz2k8PBwTJ06VWc41RD1RAGVSgWZTIaUlBR89913WL58OT766CNNcnuQ7ySkph5BaOyPBalUqnUNthZMRK2Un58fgoODkZGRgbq6OgwePFjvD2ZrtXPnTtjb22Pt2rXw8/PT2vePf/yjyV6lMdQ/FuoZYvdqaGgwy/0OY5SUlGDz5s1wcXFBXV0dvvjiC6xfv17rx0wd340bN5p8P/WxgwYNwnvvvWd0HP369UO/fv1w69YtXLhwAdnZ2di/fz8++ugjrFixQtPLc3V1xfTp0zF9+nSUlJTg3LlzOHjwIA4dOoSysjKsWLHClK8P4O6wXvv27TF58mRUV1cjNTUVO3fu1AzPPeh3auozATTa61Unf2oaS/y0YlFRUVAoFLh9+3ajlRZaq+vXr8PPz08nCSmVSpw/f94sn6G+Ka8vqeXn51vkoeH6+nqsXr0aNTU1mDdvHl5++WWUlJTg008/1TquV69esLOzw/nz5zU9ucY89NBDcHFxwYULF/T2Gpvi5OSEsLAwTJ06FdOnT4dKpcLJkyf1Huvj44PIyEisWLECHTp0wNmzZ5v9Az558mS4uroiOTkZJSUlD/yd1PezGuuBqCeC/PXXXzr7ampqLDbM1xowEbViw4YNw7vvvouFCxeiT58+YodjUd7e3iguLtbqAahUKuzatQtFRUVm+Qz1lN7du3dDoVBottfX12uGnIT29ddf4+LFixg7diwee+wxPPfcc+jfvz+OHTuG1NRUzXEeHh4YPnw4KioqsHnzZp0kWV9fj8rKSgB3h39iYmJQUVGBjRs3oq6uTudzKysrcfnyZc1r9bMu95PL5QCgGSIrKSnBH3/8oXNcbW0tbt26BalUqvfeiClcXV3x7LPP4s6dO5qJDA/yndzc3CCRSFBeXq73c9TJ7cSJE5rvCdztIW3evBm3b99u1vewJRyaa8UcHR0xZMgQk8/Lz8/H2rVr9e576KGH9M5yszbPPPMMPv/8c8ybNw9DhgyBvb098vPz8eeff2LQoEGa+ynNERwcjKeffho//vgjXn/9dQwdOlTzHJGLiwvatWv3QFO4DU3ffuihhzB8+HAAwMmTJ5GUlIQePXpoJqJIJBLEx8djzpw52LJlCwIDAzUVNmbOnIk///wThw4dwrlz59C/f384OTmhvLwcv/32G6ZPn44nnngCADBx4kT8/vvvSE9Px+nTp/HII4+gQ4cOqKysRElJCc6fP48xY8Zoav59+eWXKC0tRVhYGLy9veHo6IgrV67gt99+g5ubm6ZHfuXKFaxcuRLdu3fHww8/jHbt2qG6uhq//vorqqqqEBsbC2dnZ5Pb7H5jx45FUlISfvrpJ03dOVO/k7OzM4KCgnD+/Hl88MEHCAgIgFQqRUhICEJDQ2Fvb49x48Zh586dmDt3rubfWm5uLlQqFbp164YrV640+7vYAiYi0nH9+nVcv35d777Q0NAWkYhGjx4NBwcHJCUl4fDhw3B0dERISAjmzp2L48ePmyURAXenenfp0gUpKSk4cOAA3N3dNZUV5syZ80DvaWj69uDBgzF8+HCUlZVh3bp1aNOmDd566y2tGVgeHh548803sXDhQnz00UdYu3Yt2rRpA1dXV6xevRrJycnIysrCwYMHAdydifX4448jODhY8x5SqRQLFizAzz//jEOHDiE7Oxu1tbVwc3PTTC2+d/LL+PHjceLECRQWFuLs2bOa942JicEzzzyDjh07AgB69uyJ8ePHIy8vD7/99huqqqrg7u6Ohx56CK+++iqGDRv2QG12P2dnZ4wfPx6bN2/Gjh07sGjRIpO/EwDMnz8fW7duRV5eHrKzs6FUKjFp0iTNTMkJEybAyckJqampSE9P11TWeOWVV1heyASS2tpaldhBEBGR7eI9IiIiEpWoQ3N5eXnYs2cPCgsLIZPJMHfuXM0YdWN+//13bNy4ERcvXoSrqyuio6Pxwgsv6Dw3QURELYOoiaiurg7+/v6IiIjAmjVrmjz+5s2beO+99xASEoI1a9bg6tWrWL9+PZydnXWeJCdhlJaWIiMjw6hj762LRkTUGFET0YABAzSFJ9etW9fk8ZmZmbh16xbi4+Ph5OQEf39/XL16FXv37kVsbCx7RRbQWA04fe6vi0ZEpE+LmjX3n//8ByEhIVoFE/v27YudO3eitLRUb42wpqirWesrfkm6wsLCDNbCIyIyVYtKRHK5XKdWlrpsTUVFhU4iOnDggKbmVWPUFZIbe2jNlqlUKvYyBcY2FhbbV1jqafnN1aISEQCTLqro6GhER0cbPEbdI7KFxeJMVVVVxXYRGNtYWGzflqFFTd/28vLSKqUBQFPd2JYKehIRtSYtKhEFBgbi3LlzWjWccnJy0K5dO94UJyJqoURNRLW1tbh8+TIuX74MpVKJ8vJyXL58WTNctm3bNixcuFBz/IgRI+Dk5IR169bhjz/+wPHjx/H9999zxhwRUQsmaomf3NxcvPvuuzrbIyIiEB8fj7Vr1yIvLw9bt27V7FM/0HrhwgW4urpi9OjRzXqgVZ30TF2i2BZwfF14bGNhsX2FZY4CtQBrzTERGcB/xMJjGwuL7SsscyWiFnWPiIiIWh8mIiIiEhUTERERiYqJiIiIRMVEREREomIiIiIiUTERERGRqJiIiIhIVExEREQkKiYiIiISFRMRERGJiomIiIhExURERESiYiIiIiJRMREREZGomIiIiEhUTERERCQqJiIiIhIVExEREYmKiYiIiERlL3YAZHuSTxVjTdIFXJfXobOXM+bH9MLYQb5ih0VEImEiIotKPlWMRQl5qKtXAgCK5XVYlJAHAExGRDaKQ3NkUWuSLmiSkFpdvRJrki6IFBERiY09IrKo6/I6o7dzCI/INrBHRBbV2cvZqO3qIbxieR1U+O8QXvKpYgtESUSWxEREFjU/phecHbQvO2cHO8yP6aW1jUN4RLaDQ3NkUeqhtaaG3EwZwiOilo2JiCxu7CDfJu/1dPZyRrGepNPY0B4RtVwcmiOrZOwQHhG1fOwRkVUydgiPiFo+JiKyWsYM4RFRy8ehOSIiEpXoPaKUlBQkJiZCLpeja9euiIuLQ0hISKPHZ2Vl4bvvvsO1a9fg4eGBp59+Gs8++6wFIyYiInMStUeUlZWFzZs3Y8KECVi/fj2CgoKwZMkSlJWV6T3+9OnT+OSTTxAVFYUNGzZg9uzZ2LdvH3788UcLR05EROYiaiLau3cvIiMjERUVBT8/P8ycORNeXl5ITU3Ve/yRI0cwaNAgjBkzBj4+Phg4cCCef/55/PDDD1CpVBaOnoiIzEG0RFRfX4/CwkL07dtXa3vfvn2Rn5/f6DmOjo5a2xwdHfHXX3812osi0yWfKsaoRZkoq7yFUYsyWVaHiAQl2j0ihUIBpVIJT09Pre2enp44c+aM3nP69euHzZs349///jf69OmD69evY+/evQAAuVyOTp06aR1/4MABpKWlGYxjwYIFAICqqqoH+yKtTN3tBoT4OmLLrFC0c3XAllmhkAAov1EBZ0ep2OG1OiqViteegNi+wnJ2Ns8D5qJPVpBIJEYfGxUVhZKSEqxYsQJ37txB27ZtERMTg4SEBNjZ6XbuoqOjER0dbfA91T0pNzc30wJvpWIWZWoqGuxfMAD/s+o0AMDXyxlHlo8UMbLWqaqqiteegNi+LYNoicjd3R12dnaQy+Va2ysqKnR6SWoSiQRTp07FK6+8goqKCri7u2t6T97e3kKHbBNY442ILE20e0QODg4ICAhATk6O1vacnBwEBQUZPFcqlaJ9+/ZwcHDAzz//jMDAwEaTF5nG2GUaiIjMRdRZc7GxscjIyEBaWhqKioqwadMmyGQyjB49GgCwbds2LFy4UHN8ZWUl9u/fj6KiIly+fBmbNm3CsWPHEBcXJ9ZXaHVY442ILE3Ue0Th4eFQKBTYvXs3ZDIZ/P39sXjxYs0wm0wmQ0lJidY5hw8fxldffQWVSoXAwECsXLkSvXrxR9Jc7q3xBty9N8Qab0QkJEltba1NP4Cjnqzg7u4uciTWhzd6hcc2FhbbV1jmmjXHWnNERCSqBxqaq6urQ1VVld5qBpy9RkREpjA6EdXX1+Pbb79Feno6FApFo8ft27fPLIEREZFtMDoR/fOf/8TBgwcxaNAghIaGwtXVVci4iIjIRhidiI4dO4bIyEjMmTNHyHiIiMjGGJ2IlEolp0mT0ZJPFXOZbyIyitGz5vr169doVWyieyWfKsaihDwUy+ugAlAsr8OihDxW8SYivYxORDNnzsSVK1fwzTff6NSHI7rXmqQLqKtXam2rq1dqHpIlIrqX0UNzM2bMgEqlwh9//IHdu3dDKpXqVM6WSCT4/vvvzR4ktSwsnEpEpjA6EQ0bNsykJRvIdnX2ctYsJXH/diKi+xmdiOLj44WMg1qR+TG9sCghT2t4joVTiagxRt0junXrFp555hns3r1b6HioFRg7yBfLXwyFr5czJLhbOHX5i6GcNUdEehnVI3JycoKHhwfatm0rdDzUSowd5Gv1iYdTzImsg9Gz5sLDw3H06FEolcqmDyaycpxiTmQ9jL5H9Nhjj+HMmTN4++23ERUVhU6dOsHJyUnnOD70Si2BoSnm7BURWZbRiejelVILCgp0ZtCpVCpIJBIWPaUWgVPMiayH0Ylo7ty5QsZBZFGcYk5kPYxORJGRkULGQWRRnGJOZD0eaGE8ouYSe8aa+rM4a45IfEYnovXr1zd5jEQi4TIR1CT1jDV1b0Q9Yw2AxZMREw+R+IxORGfPntXZplQqIZfLoVQq4eHhoXcWHdH9OGONiO5ldCLaunWr3u319fVITU3Fjz/+iGXLlpktMGq9OGONiO5l9AOtjXFwcEBMTAweeeQRbNq0yRwxUSvX2Mw0zlgTXvKpYoxalInAvx3AqEWZfICXrEKzE5FaQEAAcnNzzfV21IrNj+kFZwftS48z1oTHahJkrcyWiAoKCmBvz0l41DQWRRUHFywka2V05jh8+LDe7dXV1cjNzcXJkycxevRoswVGrRtnrFke782RtTI6Ea1bt67RfR4eHpgwYQImTpxojpiISACsJkHWyuhEtGXLFr3b3dzc0KZNG7MFRETCYDUJslYm3dQx9KzQrVu3UFlZCW9vb7MERkTmxWoSZK2MTkRxcXGIj4/HyJEj9e4/deoUPvnkE1bfJrJivDdH1sjoRKRSqQzub2hoaHYwJH4NNiIiSzNpaO7+NYjUampqkJ2dDU9PT3PEZLOspQYbEZElSWpraxvt6uzatQvffvut0W/29NNPIy4uziyBWUpZWRkAwN3dXeRIgFGLMvXOavL1csaR5SMtHk9VVRXc3Nws/rm2hG0sLLavsJydzTPj0mCPKCAgAFFRUVCpVEhLS8MjjzwCX1/dv8ydnZ3Rs2dPDB061OQAUlJSkJiYCLlcjq5duyIuLg4hISGNHv/vf/8bCQkJ+PPPP2Fvb4/g4GBMmzYNXbp0MfmzrU1rfc6Dw41EZIjBRDRw4EAMHDgQwN3ipqNHj0bv3r3N9uFZWVnYvHkzZs+ejeDgYOzfvx9LlizBhg0b9M6+KykpwfLlyzF27FjMnz8fdXV1+Oqrr7B06dJWUedOjOc8hE4SHG4koqYYXeJn3rx5Zk1CALB3715ERkYiKioKfn5+mDlzJry8vJCamqr3+EuXLqGhoQGTJ0+Gr68vunfvjvHjx+P69euorKw0a2xisHQNNkvUHmNZGSJqikm15srKyvDZZ58hLi4OEyZM0BQ5raysxOeff47CwkKj36u+vh6FhYXo27ev1va+ffsiPz9f7zkBAQGQSqVIT09HQ0MDbt68iYyMDPTs2RMeHh6mfBWrZOkabJZIEq11uJGIzMfoWXNFRUV4++23oVQq0bt3b5SVlUGpvPsj5uHhgYKCAty5c8foFVoVCgWUSqXOTDtPT0+cOXNG7zmdOnXCsmXL8OGHH2Ljxo1QqVTo3r07lixZovf4AwcOIC0tzWAcCxYsAHD3pqY1GBnkhpFB/bW2CRXbllmhje6rqqqCSqVq9mcfWDgADUrd7VI762lzMZmjjalxbF9hWWSywr2+/vprtGnTBp988gns7OzwyiuvaO0fMGAAjh07ZnIAjU0J10cul+PTTz9FREQEhg8fjtraWnzzzTf46KOPsGLFCtjZaXfwoqOjER0dbfA91bPmbHFmTcxH2QZn6ZljxlFmfpXesjJ3e3odmvXerQFndQmL7dsyGD00d+7cOYwZMwZeXl56k4e3tzdu3Lhh9Ae7u7vDzs4Ocrlca3tFRUWjzyOlpKTA2dkZ06ZNQ48ePRAaGoo33ngDeXl5jQ7nUeMscU+KSz4QUVOM7hHduXPHYDesqqoKUqnU6A92cHBAQEAAcnJyMGzYMM32nJwcPP7443rPuXXrlk6vR/26qcoPpMtStcdYVoaIDDE6ET388MM4e/Ys/ud//kdnn0qlwi+//IIePXqY9OGxsbFYs2YNevbsieDgYKSmpkImk2nWNdq2bRsuXLiAFStWALg7/Ldv3z7s2rULI0aMwM2bN7Fjxw506NABAQEBJn023cUkQURiMzoRxcTE4JNPPsG3336L8PBwAIBSqURRURESEhJQWFiI9957z6QPDw8Ph0KhwO7duyGTyeDv74/FixdrniGSyWQoKSnRHP/oo4/i73//O3744QckJibC0dERvXv3xtKlS81204yIiCzLYImf+33//ff45ptvoFQqoVKpNPeK7OzsMHXqVDzzzDOCBSoUayrxYwpLVCvgjV7hsY2FxfYVlrk6ACYlIgAoLy/H8ePHUVxcDJVKBR8fHwwdOhSdOnUyS0CW1hIT0f3VCoB7Z6KZLxnd+4+YZXqEwR9KYbF9hWXx6dtqHTt21NvzqaysxL59+zB58mSzBEaNM/QgqhDJoaWX6WESJbJuRk3fVqlUkMvlqK+v19lXXl6Of/7zn3j11Vfxww8/mD1A0mXpagUtuUyPJcoYEVHzGOwRqVQq7Ny5EykpKaitrQUADB48GHPnzoW9vT22b9+O1NRUNDQ0YODAgRg3bpxFgrZ1li6O2pLL9Fi690hEpjOYiJKTk/Hdd9+hY8eO6NOnD0pLS3HixAnY2dlBJpPh4sWLiIiIwLPPPtsqlmFoKebH9NJ7j0io4qhiVAU3l5acRIlshcFEdPDgQfTq1QurVq2Cg4MDAOCrr77Cnj170L59e6xbtw7+/v4WCZT+y1IPoqpZOvGZU0tOokS2wmAiKi4uxpQpUzRJCACeeuop7NmzBxMmTGASEpElH0S1dOIzp5acRIlshcFEVF9frzOtWT0VsnPnzsJFRVanpVZgaMlJlMhWNDl9u7Hq2PfXfCOyVi01iRLZCoMPtMbExKBdu3Zo27atZptSqURxcTE6duwIJycnnXM+//xzYSIVSEt8oNVS+DCg8NjGwmL7CssiD7SGhITo7RG1a9fOLB9ORERkMBGtWrXKUnEQEZGN4o0eIiISFRMRERGJiomIiIhEZXL1baKWjtW4iawLExHZlJa+pAVRa8ShObIpLXlJC6LWqlk9ovr6ehw/fhzV1dUYNGgQOnbsaK64iATBatxE1sfoRPTFF18gPz8fn376KQCgoaEBb731Fi5fvgyVSoVt27Zh9erVePjhh4WKlajZWI2byPoYPTR35swZDBgwQPM6KysLly5dwqxZs/Dxxx/Dw8MD3377rSBBEpnL/JhecHbQvuxZjZtIXEb3iGQyGXx8fDSvT548iW7dumH06NEAgNGjRyMpKcn8ERKZEatxE1kfoxORVCrFrVu3ANxdQvzs2bN48sknNftdXFxQVVVl/giJzIzVuImsi9FDc/7+/sjMzER1dTUOHTqE6upq9O/fX7O/rKyMFayJiMhkRveIJk2ahA8++AAvvfQSACAwMBBhYWGa/adPn0avXhxntwV8IJSIzMnoRPToo49i3bp1+O2339C2bVsMHz5cs6+qqgqhoaF47LHHBAmSrAcfCCUiczO4MJ4t4MJ4jdO3qNioRZl6pz/7ejnjyPKRFoqs9eDCbcJi+wrLIgvj3Usmk+Gvv/7SGn4rKirCvn37UF1djREjRmDIkCFmCYqsFx8IJSJzM3qywqZNm/Dll19qXisUCrzzzjvIyMjAb7/9hg8//BCnTp0SJEiyHo09+MkHQonoQRmdiAoKCtCvXz/N68zMTNTU1GDdunX45ptvEBQUhMTEREGCJOvBB0KJyNyMTkQKhQLt2rXTvP71118REhICf39/2NvbIzw8HH/++acgQZL1GDvIF8tfDIWvlzMkuHtvaPmLoZyoQEQPzOh7RK6urpDJZACAuro6nD9/HpMmTdLsl0gkqK+vN3+EZHX4QCgRmZPRiSgoKAj79++Hn58fsrOzcefOHQwePFiz/9q1a2jfvr3JAaSkpCAxMRFyuRxdu3ZFXFwcQkJC9B6bkJCAXbt26d23Y8cOeHp6mvz5REQkLqMT0ZQpU/D+++9j1apVAICYmBj4+fkBuFuJ+9ixY1pFUY2RlZWFzZs3Y/bs2QgODsb+/fuxZMkSbNiwAd7e3jrHjxs3TlPbTm316tWQSCRMQkRELZTRiahz587YuHEj/vzzT7Rt2xadOnXS7Lt16xZmzZqFbt26mfThe/fuRWRkJKKiogAAM2fORHZ2NlJTUzFlyhSd49u0aYM2bdpoXpeXl+P8+fOIj4836XPJPFhhgYjMwaSF8aRSqd5k07ZtW5OrKtTX16OwsBDjxo3T2t63b1/k5+cb9R4HDx6Ei4sLhg4datJnU/OxwgIRmYtJiejmzZtITk7G2bNnUVlZif/7v/9D7969oVAocPDgQQwZMgS+vsb9CCkUCiiVSp0hNU9PT5w5c6bJ85VKJQ4ePIhRo0bBwcFB7zEHDhxAWlqawfdZsGABALByuB4qlarRdgl7yBGJf++ns11qp92WdbcbUHPrDhqUd/e5ONnD2VEqWMwtjaE2puZj+wrL4pUVbty4gXfeeQd//fUXOnfujGvXrqGu7u7T9O7u7khPT8eNGzfw2muvmRSARCIxLeL/7/Tp0/jrr7/w1FNPNXpMdHQ0oqOjDb6PusQPy4DoMlQeZeA7x6CvNpQEwH823G3z+3tNwN1njjjd+79YgkZYbN+WwejniL7++mvNA6yrVq2CSqX9M/TYY48hJyfH6A92d3eHnZ0d5HK51vaKigqjJh6kp6cjKCgI/v7+Rn8mmY8xFRbWJF3QSkIAUFevxJqkC4LGRkQti9GJKDs7G2PHjoW/v7/eXoyPjw9u3Lhh9Ac7ODggICBAJ3nl5OQgKCjI4Lk3btzAr7/+arA3RMIypsIC69IRkTGMTkS3bt2Cl5eXwf3395KaEhsbi4yMDKSlpaGoqAibNm2CTCbTTNHetm0bFi5cqHPeoUOH4OzsjGHDhpn0eWQ+xlRYYF06IjKG0feIfH19ceHChUbvuWRnZ5s8TBYeHg6FQoHdu3dDJpPB398fixcv1jxDJJPJUFJSonWOSqVCeno6RowYYbYbZfRgmqqwMD+ml957RKxLR0T3MjoRRUVFYevWrQgNDdUsES6RSFBXV4eEhAScPXsW8+bNMzmAMWPGYMyYMXr36Xs+SCKRYOvWrSZ/DlmeOknxWSMiMsSkhfE2bNiAtLQ0tGnTBrW1tXB3d0d1dTWUSiXGjh2LuLg4IWMVBBfGaxxnHAn/0C7bWFhsX2GZa1TK5BVa8/PzcfToURQXF0OpVKJz584IDw9vtD6ctWMiapyt/yNe8u05fJtVpDVN3dzTz229jYXG9hWWxZ8jUgsKCmpyVhtRS5d8qhi7sop0tqunn3N4kch8jJ41V1RUhCNHjjS6PzMzE0VFuv9wiVoiQ886cfo5kXkZnYi2bduGn3/+udH9P//8M3bs2GGWoIjEZijZcPo5kXmZtFR4WFhYo/sfeeQRFBQUmCUoIrE1lmwkAKefE5mZ0YmopqYGTk5Oje53cHBgcUErl3yqGKMWZSLwbwcwalEmkk8Vix2S1dJXOQIAXgj34/0hIjMzOhF16tQJeXl5je7Py8tDx44dzRIUmZ+6AGmxvA4q/HfZBiYj/fRVjvhkyiNY8kLLnB1KZM2MnjU3cuRIJCQk4LvvvsO4ceNgb3/31IaGBuzduxfHjx/HxIkTBQuUmsdQAVL+ha9fU5UjiMg8jE5Ezz33HM6fP48dO3Zgz5498PX1hUQiwbVr11BdXY1HH30U48ePFzJWagYWICUia2XSA60qlQoZGRk4fvw4SkpKoFKp0LlzZwwdOhSjRo2CnZ3RI31Ww1YeaB21KBPFepKO1A5QKqG3agAfBnxwxlZkYBsLi+0rLNEqK7Q2tpKI9C1Sd7/7qwbwH/GDMWVBQLaxsNi+wjJXIjK6C3P48GGD++vr6/HVV181OyASxv0336V6/s9z0Trz4IKARKYxOhGtW7cOK1euRGVlpc6+wsJCxMfHY9++fWYNjsxr7CBfHFk+Ev/ZEA1lIx0j3jNqPt6PIzKN0Ylo9uzZyMnJweuvv44TJ04AuDtjbteuXXjzzTdx+/ZtrFixQrBAyby4aJ1w2LZEpjF61tzo0aPRt29frF27FqtWrcLw4cNx9epVXLp0CdHR0Zg+fToXqmtBuGidcNi2RKYxebJCQ0MD3n77bVy4cAESiQTTpk1DbGysQOEJz1YmK+jT1MwuoW/0Cr3Wj5g4a846sH2FJcqsudLSUqxduxb5+fkYMmQICgoKoFAo8NJLL2HcuHGQSCRmCcqSbDkRNUXIf8SmzCxrzfhDKSy2r7Asvh5RWloavvzySzg4OOCdd97BkCFDUFNTg40bN+Lrr7/GyZMnER8fDx8fH7MERq0bKz0QkZrRkxU2bNiAsLAw/OMf/8CQIUMAAC4uLnjjjTewYMECFBcXY86cOYIFSq0LZ5YRkZrRPaI5c+bgiSee0LtvyJAhCA4OxhdffGG2wKh16+zlrLfSg3pmWWu+f0RE2lhZgfeIGiXWPSIANnP/iPcwhMX2FZZFKiucPn0aMplMa1tdXR1UKt3cVVRUhL1795olKGr99C2zoE40rExAZFsMJqJly5bh7NmzmtcKhQITJ07U2qZ26dIllvghk9xb6eHI8pGa3g7vHxHZFoOJSF/PR982InNiZQIi29Ly1m2gVk/fMt2sTEDUehk9a47IUtRDdKbOmuNMO6KWiYmIrJKpy3TfPwuvWF6HRQl5mvciIuvVZCIqLS3FhQt3ZyvV1NQAAK5evYo2bdpoHXf9+nUBwiMyDis1ELVcTSaihIQEJCQkaG3btGmTznEqlapF1pqj1oEz7YhaLoOJaO7cuZaKg6hZmqrUQETWy2AiioyMtFQcRM3CNYCIWi5OVqBW4UFn2hGR+ERPRCkpKUhMTIRcLkfXrl0RFxeHkJCQRo9XqVRISkpCamoqSktL4ebmhoiICEydOtVyQZNVMnWmHRFZB1ETUVZWFjZv3ozZs2cjODgY+/fvx5IlS7BhwwZ4e3vrPWfr1q349ddfMW3aNDz88MOoqamBXC63cORERGQuoiaivXv3IjIyElFRUQCAmTNnIjs7G6mpqZgyZYrO8VevXsWPP/6Izz77DH5+fpYOl4iIBCBaIqqvr0dhYSHGjRuntb1v377Iz8/Xe87Jkyfh4+OD7OxsLF26FCqVCqGhoZg2bRo8PT0tEDUREZmbaIlIoVBAqVTqJBBPT0+cOXNG7zklJSUoKytDVlYW5s2bB4lEgi+//BLLli3Dxx9/DDs77fpkBw4cQFpamsE4FixYAODuuiWkTaVSsV0ExjYWFttXWOZaj0j0yQqmPASrUqlQX1+P+fPno0uXLgCA+fPnY9asWbh48SJ69+6tdXx0dDSio6MNvqd6YTwunqWLi4oJj20sLLZvyyBa9W13d3fY2dnpTDSoqKhodJjNy8sLUqlUk4QAwNfXF1KpFOXl5UKGS0REAhEtETk4OCAgIAA5OTla23NychAUFKT3nKCgIDQ0NGjVtSspKUFDQ0Ojs+yIiMi6iboeUWxsLDIyMpCWloaioiJs2rQJMpkMo0ePBgBs27YNCxcu1Bzfp08f9OjRA+vXr8elS5dw6dIlrF+/Hr1790ZAQIBYX4OIiJpB1HtE4eHhUCgU2L17N2QyGfz9/bF48WJN70Ymk6GkpERzvJ2dHd5//31s2rQJCxYsgKOjI/r06YMZM2boTFQgIqKWQVJbW2vTa3+rJyu4u7uLHIn14Y1e4bGNhcX2FZa5Zs2xG0FERKISffo2tXxcopuImoOJiJqFS3QTUXNxaI6axdAS3URExmCPyIaZY0iNS3QTUXOxR2Sj1ENqxfI6qPDfIbXkU8UmvU9jS3FziW4iMhYTkY0y15Da/JhecHbQvoy4RDcRmYJDczbKXENqXKKbiJqLichGdfZyRrGepPMgQ2pcopuImoNDczaKQ2pEZC3YI7JRHFIjImvBRGTDOKRGRNaAQ3NERCQqJiIiIhIVExEREYmKiYiIiETFRERERKJiIiIiIlExERERkaiYiIiISFRMREREJComIiIiEhUTERERiYqJiIiIRMWip9Sk5FPFrNJNRIJhIiKDkk8VY1FCnmZZ8WJ5HRYl5AEAkxERmQWH5sigNUkXNElIra5eiTVJF0SKiIhaGyYiMui6nuXEDW0nIjIVExEZ1NnL2aTtRESmYiIig+bH9IKzg/Zl4uxgh/kxvUSKiIhaG05WIIPUExI4a46IhMJERE0aO8iXiYeIBCN6IkpJSUFiYiLkcjm6du2KuLg4hISE6D22tLQUr776qs72JUuWoH///kKHSkREAhA1EWVlZWHz5s2YPXs2goODsX//fixZsgQbNmyAt7d3o+ctXboU3bp107x2dXW1RLhERCQAUScr7N27F5GRkYiKioKfnx9mzpwJLy8vpKamGjzPzc0NXl5emv8cHBwsFDEREZmbaD2i+vp6FBYWYty4cVrb+/bti/z8fIPnrly5EvX19fD19cUzzzyDoUOHNjsehULR7PdojdguwmMbC4vtKxyFQmFw9MpYoiUihUIBpVIJT09Pre2enp44c+aM3nOcnZ0xffp0BAUFQSqV4uTJk1i9ejXmzZuHUaNG6Rx/4MABpKWlGYxjwYIFD/wdiIio+USfrCCRSIw+1sPDQ6sH1bNnTygUCiQmJupNRNHR0YiOjjZLnLYoPj4ea9euFTuMVo1tLCy2r7DM1b6i3SNyd3eHnZ0d5HK51vaKigqdXpIhvXv3RnFxsZmjIyIiSxEtETk4OCAgIAA5OTla23NychAUFGT0+1y+fBleXl5mjo6IiCxF1KG52NhYrFmzBj179kRwcDBSU1Mhk8kwevRoAMC2bdtw4cIFrFixAgCQkZEBqVSKHj16QCKR4NSpU9i/fz+mTJki5tcgIqJmEDURhYeHQ6FQYPfu3ZDJZPD398fixYs1szBkMhlKSkq0ztm9ezfKyspgZ2eHLl26YM6cOXrvDxERUcsg+mSFMWPGYMyYMXr3xcfHa72OjIxEZGSkJcIiIiILYfVtIiISFRMRERGJiomIiIhExUREjYqKihI7hFaPbSwstq+wzNW+ktraWpVZ3omIiOgBsEdERESiYiIiIiJRMREREZGoRH+glcRjyjLtAPD7779j48aNuHjxIlxdXREdHY0XXnjBpArqtsSU9i0tLcWrr76qs33JkiXo37+/0KG2OHl5edizZw8KCwshk8kwd+5cPPHEEwbP4fVrPFPbt7nXLxORjTJ1mfabN2/ivffeQ0hICNasWYOrV69i/fr1cHZ21lnckExvX7WlS5eiW7dumteurq6WCLfFqaurg7+/PyIiIrBmzZomj+f1axpT21ftQa9fDs3ZKFOXac/MzMStW7cQHx8Pf39/DB06FM899xz27t0LlYoTL+9navuqubm5wcvLS/Ofg4ODhSJuWQYMGIDJkydj6NChsLNr+meM169pTG1ftQe9fpmIbJB6mfa+fftqbTe0TPt//vMfhISEwMnJSet4mUyG0tJSQeNtaR6kfdVWrlyJl19+GW+99RaOHTsmZJg2hdevZTzo9cuhORv0IMu0y+VydOjQQed44O5ihj4+PkKE2iI9SPs6Oztj+vTpCAoKglQqxcmTJ7F69WrMmzeP1eXNgNevsJp7/TIR2TBTb9Lypq5pTGkvDw8PrXsVPXv2hEKhQGJiIhORmfD6FU5zr18OzdmgB1mm3cvLS+/xAExa2t0WPEj76tO7d28UFxebOTrbxOvX8ky5fpmIbNCDLNMeGBiIc+fO4fbt21rHt2vXDp06dRIy3BbnQdpXn8uXL8PLy8vM0dkmXr+WZ8r1y0Rko2JjY5GRkYG0tDQUFRVh06ZNOsu0L1y4UHP8iBEj4OTkhHXr1uGPP/7A8ePH8f333yM2NpZDHnqY2r4ZGRnIzMxEUVERrl69isTEROzfvx9PP/20WF/BqtXW1uLy5cu4fPkylEolysvLcfnyZZSVlQHg9dtcprZvc69f3iOyUaYu0+7i4oJly5Zh48aNiI+Ph6urK8aNG4fY2FiRvoF1M7V9AWD37t0oKyuDnZ0dunTpgjlz5vD+UCMKCwvx7rvval4nJCQgISEBERERiI+P5/XbTKa2L9C865fVt4mISFQcmiMiIlExERERkaiYiIiISFRMREREJComIiIiEhUTERERiYqJiIiIRMUHWomMcOjQIaxfvx4ff/wxAgMDdfZv2LABBw4cQHJyMgBgwYIFyMvLg7e3N7Zs2aLz9H5RURH+93//FwAwefJkjB8/HgCQm5uLd999F2+++SaGDx/+wPEmJCRg165devfd+3kzZszQPC1/v+3bt7PEEFkEExGRQBwdHVFWVobz58/rLBF+5MgRODo6atU+E8KsWbPQtm1brW3du3fXev3www/j2Wef1TnXxcVF0NiI1JiIiATSsWNHSKVSZGZmaiUilUqFn376CQMHDhR88bvHH3+8yV5Nu3btWEqIRMV7REQCGjlyJI4dO4Y7d+5otp0/fx5lZWUYMWKEiJERWQ/2iIhMcPPmTVRWVupsb2yIbcSIEdixYweys7MxePBgAMBPP/0EPz8/nSEyIVRVVcHO7r9/b0okEri7u2sdc+fOHZ3v5OTkBGdnZ8HjIwKYiIhMsnjxYpOO9/b2RlBQEI4cOYLBgwfjzp07OHr0qMWqPv/tb3/Teu3s7IzvvvtOa9vZs2fx8ssva20bM2YMZs2aJXh8RAATEZFJXnvtNfj5+elsT0pKwq+//qr3nJEjR2LLli24efMmcnNzUV1dbbFhubfffhuurq6a11KpVOeYgIAATJkyRWtbhw4dBI+NSI2JiMgEPXv21Dt929Ckg6FDh2LTpk04fvw4srOzERgYiE6dOqG0tFTIUAEAISEhTU5WcHd3R58+fQSPhagxnKxAJDB3d3f069cPBw4cwKlTpzBy5EixQyKyKkxERBYwcuRIFBQUQKlUYujQoWKHQ2RVODRHZAGDBg3Ciy++iHbt2sHDw0PscIisChMRkQU4OTlh0qRJRh//yy+/4Pr16zrbhw0bhi5dupgzNCLRMRERWaGjR4/i6NGjOtu7du3KREStjqS2tlYldhBERGS7OFmBiIhExaE5ohakqqpKq26dPly6gVoaJiKiFmTlypXIy8szeIx6TSSiloL3iIhakMLCQlRXVxs8hlUSqKVhIiIiIlFxsgIREYmKiYiIiETFRERERKJiIiIiIlExERERkaj+H7+3FfXFXgzJAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(beta_ff['HML'], expected_ri)\n",
    "plt.xlabel('HML_FF')\n",
    "plt.ylabel('Excess Return')\n",
    "plt.title('HML_FF and Excess Return')\n",
    "plt.ylim(0.5,1)\n",
    "plt.xlim(-0.4,1.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "671a4917",
   "metadata": {},
   "source": [
    "- According to my result, the market risk factor is positively related to the expected excess return; while, the SMB and HML do not reveal the linear relationship with the expected excess return.\n",
    "- Three-factor model is more suitable compared to CAPM. From the market factor, we can see that when we control the SMB and HML factors (FF), the SML reveals more linear relationship with the expected excess return compared to the one-factor model (CAPM). Thus, the variation of the expected excess return can be captured by SMB and HML factors which mean CAPM has the omitted variables problem which resulting in the biasness of the beta."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "277f5f9d",
   "metadata": {},
   "source": [
    "### Q1.6) Cross Validation: Fama-French"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "85b71c26",
   "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": 97,
     "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": 100,
   "id": "b172b488",
   "metadata": {},
   "outputs": [],
   "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",
    "    factors = 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(factors):\n",
    "        lr=linear_model.LinearRegression()\n",
    "        reg=lr.fit(factors[train],ri_rf[train])\n",
    "        ri_rf_pred_test =reg.predict(factors[test])\n",
    "        e_test = ri_rf[test]-ri_rf_pred_test\n",
    "        err_rmse_test += np.sqrt(np.mean(e_test*e_test))\n",
    "        err_mae_test += np.mean(np.abs(e_test))\n",
    "    rmse_10cv_test = err_rmse_test/10\n",
    "    mae_10cv_test = err_mae_test/10\n",
    "    metric_ff.iloc[i][0] = rmse_10cv_test\n",
    "    metric_ff.iloc[i][1] = mae_10cv_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "c2eca464",
   "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": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metric_ff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "f49a314f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 3.8058\n",
      "MAE: 2.8489\n"
     ]
    }
   ],
   "source": [
    "mean_rmse_ff = np.mean(metric_ff['RMSE'])\n",
    "mean_mae_ff = np.mean(metric_ff['MAE'])\n",
    "print(f\"RMSE: {mean_rmse_ff:.4f}\")\n",
    "print(f\"MAE: {mean_mae_ff:.4f}\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
