{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "55723145",
   "metadata": {},
   "source": [
    "# Phatcharida Amornborirak phatcharida.amo@st.econ.tu.ac.th"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4e542201",
   "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": "code",
   "execution_count": 2,
   "id": "17898986",
   "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": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_available_datasets()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a406cba8",
   "metadata": {},
   "outputs": [],
   "source": [
    "start_date = dt.datetime(1926, 7, 1)\n",
    "end_date = dt.datetime(2022, 8, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a0c2ad77",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "F-F Research Data Factors\n",
      "-------------------------\n",
      "\n",
      "This file was created by CMPT_ME_BEME_RETS using the 202208 CRSP database. The 1-month TBill return is from Ibbotson and Associates, Inc. Copyright 2022 Kenneth R. French\n",
      "\n",
      "  0 : (1154 rows x 4 cols)\n",
      "  1 : Annual Factors: January-December (95 rows x 4 cols)\n"
     ]
    }
   ],
   "source": [
    "fama_factors = web.DataReader('F-F_Research_Data_Factors', 'famafrench', start = start_date, end = end_date)\n",
    "print(fama_factors['DESCR'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "a0d897e5",
   "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": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fama_factors_monthly = fama_factors[0]\n",
    "fama_factors_monthly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "42509ca0",
   "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": [
    "indus_port = web.DataReader('30_Industry_Portfolios', 'famafrench', start = start_date, end = end_date)\n",
    "print(indus_port['DESCR'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6b020957",
   "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": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "indus_port_monthly = indus_port[0]\n",
    "indus_port_monthly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "7ec33d2c",
   "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": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "name_indus = indus_port_monthly.columns\n",
    "name_indus"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "69b4aad3",
   "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": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.concat([fama_factors_monthly, indus_port_monthly], axis = 1, join = 'inner')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "db85e143",
   "metadata": {},
   "source": [
    "# Q.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "44d3ba1e",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>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": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta = pd.DataFrame(np.nan, index = name_indus, columns = ['BETAs'])\n",
    "beta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "2a58943f",
   "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": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import linear_model\n",
    "\n",
    "for i in range(len(name_indus)):\n",
    "    model = linear_model.LinearRegression()\n",
    "    model = model.fit(df[['Mkt-RF']], pd.DataFrame(df[name_indus[i]]-df['RF'])) \n",
    "    # y = Ri - rf\n",
    "    beta.iloc[i,:][0] = model.coef_\n",
    "    \n",
    "beta"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a2191d3",
   "metadata": {},
   "source": [
    "# Q.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "e0f1b613",
   "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>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": [
       "         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": [
    "Exp_return = pd.DataFrame(np.nan, index = name_indus, columns = ['Return'])\n",
    "\n",
    "for i in range(len(name_indus)):\n",
    "    Exp_return.iloc[i] = np.sum(df[name_indus[i]]-df['RF'])/df.shape[0]\n",
    "    \n",
    "Exp_return"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "377e0943",
   "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, Exp_return)\n",
    "plt.xlabel('Beta')\n",
    "plt.ylabel('Return')\n",
    "plt.title('Beta and Return')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ef6b0cc",
   "metadata": {},
   "source": [
    "The SML from the graph can't be observe as we can't see the trend line in here as all the result is scattered.\n",
    "The beta might have bias or errors in the data as it has omitted vairiable problem."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ce4a8f3",
   "metadata": {},
   "source": [
    "# Q.3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "57e1cccf",
   "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": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val = pd.DataFrame(data = np.nan, index = name_indus, columns = ['RMSE','MAE'])\n",
    "cross_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "2451015e",
   "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.642453</td>\n",
       "      <td>1.881125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>4.989364</td>\n",
       "      <td>3.360948</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>4.727653</td>\n",
       "      <td>3.513285</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>4.977611</td>\n",
       "      <td>3.598645</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>4.048454</td>\n",
       "      <td>2.940202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>3.291161</td>\n",
       "      <td>2.396703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>4.222359</td>\n",
       "      <td>3.003754</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>3.278073</td>\n",
       "      <td>2.430431</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>2.984509</td>\n",
       "      <td>2.190558</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>4.793870</td>\n",
       "      <td>3.386041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>2.900702</td>\n",
       "      <td>2.142154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>4.551444</td>\n",
       "      <td>3.315325</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>2.892213</td>\n",
       "      <td>2.179287</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>3.271249</td>\n",
       "      <td>2.525533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>4.699752</td>\n",
       "      <td>3.259967</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>4.272990</td>\n",
       "      <td>3.145406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>5.427878</td>\n",
       "      <td>4.110851</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>8.530871</td>\n",
       "      <td>5.837826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>4.269371</td>\n",
       "      <td>3.128392</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>3.642029</td>\n",
       "      <td>2.636504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>2.933160</td>\n",
       "      <td>2.208827</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>6.818082</td>\n",
       "      <td>3.794773</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>3.543563</td>\n",
       "      <td>2.546208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>2.938146</td>\n",
       "      <td>2.142701</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>3.616898</td>\n",
       "      <td>2.596783</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>4.341622</td>\n",
       "      <td>2.786228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>2.998471</td>\n",
       "      <td>2.252243</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>4.038313</td>\n",
       "      <td>3.003735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>2.720437</td>\n",
       "      <td>1.987869</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>3.691870</td>\n",
       "      <td>2.652401</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           RMSE       MAE\n",
       "Food   2.642453  1.881125\n",
       "Beer   4.989364  3.360948\n",
       "Smoke  4.727653  3.513285\n",
       "Games  4.977611  3.598645\n",
       "Books  4.048454  2.940202\n",
       "Hshld  3.291161  2.396703\n",
       "Clths  4.222359  3.003754\n",
       "Hlth   3.278073  2.430431\n",
       "Chems  2.984509  2.190558\n",
       "Txtls  4.793870  3.386041\n",
       "Cnstr  2.900702  2.142154\n",
       "Steel  4.551444  3.315325\n",
       "FabPr  2.892213  2.179287\n",
       "ElcEq  3.271249  2.525533\n",
       "Autos  4.699752  3.259967\n",
       "Carry  4.272990  3.145406\n",
       "Mines  5.427878  4.110851\n",
       "Coal   8.530871  5.837826\n",
       "Oil    4.269371  3.128392\n",
       "Util   3.642029  2.636504\n",
       "Telcm  2.933160  2.208827\n",
       "Servs  6.818082  3.794773\n",
       "BusEq  3.543563  2.546208\n",
       "Paper  2.938146  2.142701\n",
       "Trans  3.616898  2.596783\n",
       "Whlsl  4.341622  2.786228\n",
       "Rtail  2.998471  2.252243\n",
       "Meals  4.038313  3.003735\n",
       "Fin    2.720437  1.987869\n",
       "Other  3.691870  2.652401"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "kf = KFold(n_splits=10,shuffle=False)\n",
    "\n",
    "for i in range(len(name_indus)):\n",
    "    mae_err_test =0\n",
    "    rmse_err_test =0\n",
    "    re_mkt = df['Mkt-RF'].to_numpy()\n",
    "    y = (df[name_indus[i]]-df['RF']).to_numpy()\n",
    "    \n",
    "    for train,test in kf.split(re_mkt):\n",
    "        lr=linear_model.LinearRegression()\n",
    "        reg=lr.fit(re_mkt[train].reshape(-1, 1),y[train])\n",
    "        y_pred_test =reg.predict(re_mkt[test].reshape(-1, 1))\n",
    "        e_test = y[test]-y_pred_test\n",
    "        mae_err_test += np.mean(np.abs(e_test))    \n",
    "        rmse_err_test += np.sqrt(np.mean(e_test*e_test))\n",
    "                 \n",
    "    mae_test_10cv_model1 = mae_err_test/10    \n",
    "    rmse_test_10cv_model1 = rmse_err_test/10  \n",
    "    cross_val.iloc[i][0] = rmse_test_10cv_model1\n",
    "    cross_val.iloc[i][1] = mae_test_10cv_model1\n",
    "\n",
    "cross_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "1002493d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MAE (Model1:Linear): 4.0685\n",
      "RMSE (Model1:Linear): 2.8985\n"
     ]
    }
   ],
   "source": [
    "mean_rmse = np.mean(cross_val['RMSE'])\n",
    "mean_mae = np.mean(cross_val['MAE'])\n",
    "print(f'MAE (Model1:Linear): {mean_rmse:.4f}')\n",
    "print(f'RMSE (Model1:Linear): {mean_mae:.4f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc542504",
   "metadata": {},
   "source": [
    "# Q.4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "1c107306",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MKT</th>\n",
       "      <th>SMB</th>\n",
       "      <th>HML</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Food</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Beer</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Smoke</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Games</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Books</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hshld</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Clths</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hlth</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chems</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Txtls</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cnstr</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Steel</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FabPr</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ElcEq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Autos</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Carry</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mines</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Coal</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Oil</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Util</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Telcm</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Servs</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BusEq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paper</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Trans</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whlsl</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rtail</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meals</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fin</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       MKT  SMB  HML\n",
       "Food   NaN  NaN  NaN\n",
       "Beer   NaN  NaN  NaN\n",
       "Smoke  NaN  NaN  NaN\n",
       "Games  NaN  NaN  NaN\n",
       "Books  NaN  NaN  NaN\n",
       "Hshld  NaN  NaN  NaN\n",
       "Clths  NaN  NaN  NaN\n",
       "Hlth   NaN  NaN  NaN\n",
       "Chems  NaN  NaN  NaN\n",
       "Txtls  NaN  NaN  NaN\n",
       "Cnstr  NaN  NaN  NaN\n",
       "Steel  NaN  NaN  NaN\n",
       "FabPr  NaN  NaN  NaN\n",
       "ElcEq  NaN  NaN  NaN\n",
       "Autos  NaN  NaN  NaN\n",
       "Carry  NaN  NaN  NaN\n",
       "Mines  NaN  NaN  NaN\n",
       "Coal   NaN  NaN  NaN\n",
       "Oil    NaN  NaN  NaN\n",
       "Util   NaN  NaN  NaN\n",
       "Telcm  NaN  NaN  NaN\n",
       "Servs  NaN  NaN  NaN\n",
       "BusEq  NaN  NaN  NaN\n",
       "Paper  NaN  NaN  NaN\n",
       "Trans  NaN  NaN  NaN\n",
       "Whlsl  NaN  NaN  NaN\n",
       "Rtail  NaN  NaN  NaN\n",
       "Meals  NaN  NaN  NaN\n",
       "Fin    NaN  NaN  NaN\n",
       "Other  NaN  NaN  NaN"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta_fama = pd.DataFrame(data = np.nan, index = name_indus, columns = ['MKT', 'SMB', 'HML'])\n",
    "beta_fama"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "54de2d76",
   "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": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import linear_model\n",
    "\n",
    "for i in range(len(name_indus)):\n",
    "    model2 = linear_model.LinearRegression()\n",
    "    model2 = model.fit(df[['Mkt-RF','SMB','HML']], pd.DataFrame(df[name_indus[i]]-df['RF']))\n",
    "    # y = Ri - rf\n",
    "    beta_fama.iloc[i] = model.coef_\n",
    "    \n",
    "beta_fama"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cfac1cff",
   "metadata": {},
   "source": [
    "# Q.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "072e20bf",
   "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_fama['MKT'], Exp_return)\n",
    "plt.xlabel('Beta_fama_MKT')\n",
    "plt.ylabel('Return')\n",
    "plt.title('Beta_fama_MKT and Return')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "70496bff",
   "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_fama['SMB'], Exp_return)\n",
    "plt.xlabel('Beta_fama_SMB')\n",
    "plt.ylabel('Return')\n",
    "plt.title('Beta_fama_SMB and Return')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "f529c017",
   "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_fama['HML'], Exp_return)\n",
    "plt.xlabel('Beta_fama_HML')\n",
    "plt.ylabel('Return')\n",
    "plt.title('Beta_fama_HML and Return')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f4431a70",
   "metadata": {},
   "source": [
    "From the relationship between expected excess returns and various risk prices, all of the factors are positively related. \n",
    "Mkt, SMB, and HML didn't show the trend.\n",
    "Using three-factor Fama-French model is more suitable compared to Q1. The SML reveals to be more linear than Q1.\n",
    "We can conclude that adding SMB and HML into the model get teh better beta where in one-factor model or CAPM has the omitted varaibles which caused teh result to be bias."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2873d65d",
   "metadata": {},
   "source": [
    "# Q.6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "95a52869",
   "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": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val2 = pd.DataFrame(data = np.nan, index = name_indus, columns = ['RMSE','MAE'])\n",
    "cross_val2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "21b33818",
   "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": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "kf = KFold(n_splits=10,shuffle=False)\n",
    "\n",
    "for i in range(len(name_indus)):\n",
    "    mae_err_test = 0\n",
    "    rmse_err_test = 0\n",
    "    ff = df[['Mkt-RF', 'SMB', 'HML']].to_numpy()\n",
    "    y = (df[name_indus[i]]-df['RF']).to_numpy()\n",
    "    for train,test in kf.split(ff):\n",
    "        lr=linear_model.LinearRegression()\n",
    "        reg=lr.fit(ff[train],y[train])\n",
    "        y_pred_test =reg.predict(ff[test])\n",
    "        e_test = y[test]-y_pred_test\n",
    "        mae_err_test += np.mean(np.abs(e_test))    \n",
    "        rmse_err_test += np.sqrt(np.mean(e_test*e_test))\n",
    "                 \n",
    "    mae_test_10cv_model2 = mae_err_test/10    \n",
    "    rmse_test_10cv_model2 = rmse_err_test/10  \n",
    "    cross_val2.iloc[i][0] = rmse_test_10cv_model2\n",
    "    cross_val2.iloc[i][1] = mae_test_10cv_model2\n",
    "\n",
    "cross_val2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "3424d7cd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MAE (Model2:Linear): 3.8058\n",
      "RMSE (Model2:Linear): 2.8489\n"
     ]
    }
   ],
   "source": [
    "mean_rmse = np.mean(cross_val2['RMSE'])\n",
    "mean_mae = np.mean(cross_val2['MAE'])\n",
    "print(f'MAE (Model2:Linear): {mean_rmse:.4f}')\n",
    "print(f'RMSE (Model2:Linear): {mean_mae:.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6f3b5a07",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
