{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9140cf54",
   "metadata": {},
   "outputs": [],
   "source": [
    "import datetime\n",
    "import pandas as pd\n",
    "import time\n",
    "from scipy.stats import linregress"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6cb52f60",
   "metadata": {},
   "outputs": [],
   "source": [
    "names=pd.read_csv('names.csv').Symbol.to_list()\n",
    "names=[x+'.NS' for x in names]\n",
    "names.append('%5ENSEI')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "49a554ff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "51"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(names)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e8b24ddb",
   "metadata": {},
   "outputs": [],
   "source": [
    "#t2=int(time.mktime(datetime.date.today().timetuple())+19800)\n",
    "t2=int(time.mktime((datetime.date.today() - datetime.timedelta(1)).timetuple())+19800)\n",
    "t1=int(time.mktime((datetime.date.today() - datetime.timedelta(500)).timetuple())+19800)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "38e850fe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ADANIPORTS success\n",
      "ASIANPAINT success\n",
      "AXISBANK success\n",
      "BAJAJ-AUTO success\n",
      "BAJFINANCE success\n",
      "BAJAJFINSV success\n",
      "BPCL success\n",
      "BHARTIARTL success\n",
      "BRITANNIA success\n",
      "CIPLA success\n",
      "COALINDIA success\n",
      "DIVISLAB success\n",
      "DRREDDY success\n",
      "EICHERMOT success\n",
      "GRASIM success\n",
      "HCLTECH success\n",
      "HDFCBANK success\n",
      "HDFCLIFE success\n",
      "HEROMOTOCO success\n",
      "HINDALCO success\n",
      "HINDUNILVR success\n",
      "HDFC success\n",
      "ICICIBANK success\n",
      "ITC success\n",
      "IOC success\n",
      "INDUSINDBK success\n",
      "INFY success\n",
      "JSWSTEEL success\n",
      "KOTAKBANK success\n",
      "LT success\n",
      "M&M success\n",
      "MARUTI success\n",
      "NTPC success\n",
      "NESTLEIND success\n",
      "ONGC success\n",
      "POWERGRID success\n",
      "RELIANCE success\n",
      "SBILIFE success\n",
      "SHREECEM success\n",
      "SBIN success\n",
      "SUNPHARMA success\n",
      "TCS success\n",
      "TATACONSUM success\n",
      "TATAMOTORS success\n",
      "TATASTEEL success\n",
      "TECHM success\n",
      "TITAN success\n",
      "UPL success\n",
      "ULTRACEMCO success\n",
      "WIPRO success\n",
      "NIFTY success\n"
     ]
    }
   ],
   "source": [
    "df= pd.DataFrame()\n",
    "for name in names:\n",
    "    url='https://query1.finance.yahoo.com/v7/finance/download/' \\\n",
    "        +name+'?period1='+str(t1)+'&period2='+str(t2)+'&interval=1d&events=history&includeAdjustedClose=true'\n",
    "    try:\n",
    "        if name!= '%5ENSEI':\n",
    "            df[name[:-3]]=pd.read_csv(url)['Adj Close']\n",
    "            print(name[:-3]+' success')\n",
    "        else:\n",
    "            df['NIFTY']=pd.read_csv(url)['Adj Close']\n",
    "            print('NIFTY success')\n",
    "    except:\n",
    "        print(name[:-3]+' failed')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "9df48f11",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_return= df.div(df.shift())-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "7debe803",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_return.dropna(axis=0,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "8a233889",
   "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>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>...</th>\n",
       "      <th>329</th>\n",
       "      <th>330</th>\n",
       "      <th>331</th>\n",
       "      <th>332</th>\n",
       "      <th>333</th>\n",
       "      <th>334</th>\n",
       "      <th>335</th>\n",
       "      <th>336</th>\n",
       "      <th>337</th>\n",
       "      <th>338</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ADANIPORTS</th>\n",
       "      <td>-0.001212</td>\n",
       "      <td>-0.023190</td>\n",
       "      <td>-0.010628</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.013114</td>\n",
       "      <td>-0.032513</td>\n",
       "      <td>-0.004530</td>\n",
       "      <td>0.019522</td>\n",
       "      <td>-0.003887</td>\n",
       "      <td>0.009250</td>\n",
       "      <td>...</td>\n",
       "      <td>0.073350</td>\n",
       "      <td>0.052855</td>\n",
       "      <td>0.016210</td>\n",
       "      <td>-0.032575</td>\n",
       "      <td>-0.005324</td>\n",
       "      <td>0.003240</td>\n",
       "      <td>0.005687</td>\n",
       "      <td>-0.007330</td>\n",
       "      <td>-0.010267</td>\n",
       "      <td>-0.000853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BAJAJ-AUTO</th>\n",
       "      <td>-0.008218</td>\n",
       "      <td>-0.027728</td>\n",
       "      <td>-0.011106</td>\n",
       "      <td>-0.000271</td>\n",
       "      <td>-0.003394</td>\n",
       "      <td>-0.015869</td>\n",
       "      <td>-0.033841</td>\n",
       "      <td>0.007503</td>\n",
       "      <td>0.007150</td>\n",
       "      <td>-0.002895</td>\n",
       "      <td>...</td>\n",
       "      <td>0.027924</td>\n",
       "      <td>0.003732</td>\n",
       "      <td>0.009312</td>\n",
       "      <td>-0.005448</td>\n",
       "      <td>0.006740</td>\n",
       "      <td>-0.007275</td>\n",
       "      <td>-0.003027</td>\n",
       "      <td>-0.014055</td>\n",
       "      <td>0.002231</td>\n",
       "      <td>0.017103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BPCL</th>\n",
       "      <td>-0.007991</td>\n",
       "      <td>-0.015050</td>\n",
       "      <td>-0.017002</td>\n",
       "      <td>-0.017406</td>\n",
       "      <td>-0.010584</td>\n",
       "      <td>-0.039860</td>\n",
       "      <td>-0.032837</td>\n",
       "      <td>0.030678</td>\n",
       "      <td>-0.014824</td>\n",
       "      <td>-0.000717</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.009541</td>\n",
       "      <td>0.005716</td>\n",
       "      <td>-0.002947</td>\n",
       "      <td>-0.008551</td>\n",
       "      <td>-0.007453</td>\n",
       "      <td>0.008475</td>\n",
       "      <td>-0.006170</td>\n",
       "      <td>-0.001927</td>\n",
       "      <td>0.003968</td>\n",
       "      <td>-0.011429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BHARTIARTL</th>\n",
       "      <td>0.004048</td>\n",
       "      <td>-0.028776</td>\n",
       "      <td>0.010096</td>\n",
       "      <td>0.001308</td>\n",
       "      <td>-0.008023</td>\n",
       "      <td>-0.015330</td>\n",
       "      <td>-0.009838</td>\n",
       "      <td>0.004727</td>\n",
       "      <td>-0.007777</td>\n",
       "      <td>0.019642</td>\n",
       "      <td>...</td>\n",
       "      <td>0.019105</td>\n",
       "      <td>0.001578</td>\n",
       "      <td>-0.005930</td>\n",
       "      <td>-0.004381</td>\n",
       "      <td>-0.009924</td>\n",
       "      <td>0.012009</td>\n",
       "      <td>-0.007288</td>\n",
       "      <td>-0.011766</td>\n",
       "      <td>0.001333</td>\n",
       "      <td>-0.005707</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BRITANNIA</th>\n",
       "      <td>-0.007413</td>\n",
       "      <td>-0.007583</td>\n",
       "      <td>-0.000873</td>\n",
       "      <td>0.002571</td>\n",
       "      <td>-0.005031</td>\n",
       "      <td>-0.018456</td>\n",
       "      <td>-0.007104</td>\n",
       "      <td>0.026245</td>\n",
       "      <td>0.012077</td>\n",
       "      <td>0.020927</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.010647</td>\n",
       "      <td>0.008192</td>\n",
       "      <td>0.000562</td>\n",
       "      <td>0.002301</td>\n",
       "      <td>0.008144</td>\n",
       "      <td>-0.005164</td>\n",
       "      <td>-0.000763</td>\n",
       "      <td>-0.002754</td>\n",
       "      <td>-0.002051</td>\n",
       "      <td>-0.014755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CIPLA</th>\n",
       "      <td>-0.026257</td>\n",
       "      <td>-0.012851</td>\n",
       "      <td>-0.010113</td>\n",
       "      <td>-0.008455</td>\n",
       "      <td>-0.002369</td>\n",
       "      <td>-0.045347</td>\n",
       "      <td>-0.000373</td>\n",
       "      <td>0.058092</td>\n",
       "      <td>0.052551</td>\n",
       "      <td>-0.015749</td>\n",
       "      <td>...</td>\n",
       "      <td>0.010463</td>\n",
       "      <td>-0.000781</td>\n",
       "      <td>-0.004479</td>\n",
       "      <td>0.001988</td>\n",
       "      <td>-0.007152</td>\n",
       "      <td>0.006520</td>\n",
       "      <td>0.006217</td>\n",
       "      <td>0.017185</td>\n",
       "      <td>-0.007860</td>\n",
       "      <td>0.006379</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DIVISLAB</th>\n",
       "      <td>-0.007548</td>\n",
       "      <td>-0.004103</td>\n",
       "      <td>-0.013267</td>\n",
       "      <td>0.012335</td>\n",
       "      <td>0.006746</td>\n",
       "      <td>-0.023000</td>\n",
       "      <td>0.001092</td>\n",
       "      <td>0.035012</td>\n",
       "      <td>-0.003802</td>\n",
       "      <td>0.022508</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.024417</td>\n",
       "      <td>0.007576</td>\n",
       "      <td>0.014105</td>\n",
       "      <td>-0.014958</td>\n",
       "      <td>0.006095</td>\n",
       "      <td>-0.000376</td>\n",
       "      <td>0.015452</td>\n",
       "      <td>0.009677</td>\n",
       "      <td>0.011960</td>\n",
       "      <td>0.006227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DRREDDY</th>\n",
       "      <td>-0.006970</td>\n",
       "      <td>-0.024268</td>\n",
       "      <td>-0.028146</td>\n",
       "      <td>-0.003742</td>\n",
       "      <td>-0.002699</td>\n",
       "      <td>-0.045630</td>\n",
       "      <td>-0.007362</td>\n",
       "      <td>0.047547</td>\n",
       "      <td>0.041939</td>\n",
       "      <td>0.004131</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.000492</td>\n",
       "      <td>-0.000360</td>\n",
       "      <td>0.004989</td>\n",
       "      <td>-0.001695</td>\n",
       "      <td>-0.004095</td>\n",
       "      <td>0.005997</td>\n",
       "      <td>0.017884</td>\n",
       "      <td>0.005338</td>\n",
       "      <td>-0.001850</td>\n",
       "      <td>0.024977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EICHERMOT</th>\n",
       "      <td>-0.001407</td>\n",
       "      <td>-0.047680</td>\n",
       "      <td>-0.023267</td>\n",
       "      <td>-0.021409</td>\n",
       "      <td>-0.006035</td>\n",
       "      <td>-0.026449</td>\n",
       "      <td>0.024759</td>\n",
       "      <td>0.051433</td>\n",
       "      <td>-0.035456</td>\n",
       "      <td>0.030204</td>\n",
       "      <td>...</td>\n",
       "      <td>0.012641</td>\n",
       "      <td>-0.003361</td>\n",
       "      <td>0.007319</td>\n",
       "      <td>0.003826</td>\n",
       "      <td>-0.008008</td>\n",
       "      <td>0.005191</td>\n",
       "      <td>0.007222</td>\n",
       "      <td>-0.012899</td>\n",
       "      <td>-0.012550</td>\n",
       "      <td>0.001554</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GRASIM</th>\n",
       "      <td>-0.007726</td>\n",
       "      <td>-0.035139</td>\n",
       "      <td>-0.006208</td>\n",
       "      <td>-0.024431</td>\n",
       "      <td>0.014300</td>\n",
       "      <td>-0.035982</td>\n",
       "      <td>-0.027285</td>\n",
       "      <td>0.047273</td>\n",
       "      <td>-0.015070</td>\n",
       "      <td>-0.013343</td>\n",
       "      <td>...</td>\n",
       "      <td>0.015464</td>\n",
       "      <td>0.010738</td>\n",
       "      <td>-0.000234</td>\n",
       "      <td>0.001637</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>0.005304</td>\n",
       "      <td>0.009125</td>\n",
       "      <td>-0.011377</td>\n",
       "      <td>-0.003027</td>\n",
       "      <td>0.001034</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HCLTECH</th>\n",
       "      <td>0.003797</td>\n",
       "      <td>-0.021215</td>\n",
       "      <td>-0.021339</td>\n",
       "      <td>0.001974</td>\n",
       "      <td>-0.018077</td>\n",
       "      <td>-0.067533</td>\n",
       "      <td>0.028727</td>\n",
       "      <td>0.027924</td>\n",
       "      <td>-0.003451</td>\n",
       "      <td>0.023619</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.011304</td>\n",
       "      <td>0.006921</td>\n",
       "      <td>-0.001935</td>\n",
       "      <td>-0.007346</td>\n",
       "      <td>0.017268</td>\n",
       "      <td>0.006012</td>\n",
       "      <td>-0.010395</td>\n",
       "      <td>-0.001725</td>\n",
       "      <td>-0.000102</td>\n",
       "      <td>0.002034</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HDFCBANK</th>\n",
       "      <td>-0.008230</td>\n",
       "      <td>-0.005875</td>\n",
       "      <td>-0.007975</td>\n",
       "      <td>-0.000875</td>\n",
       "      <td>0.000167</td>\n",
       "      <td>-0.018175</td>\n",
       "      <td>0.001656</td>\n",
       "      <td>0.001865</td>\n",
       "      <td>-0.027881</td>\n",
       "      <td>0.002176</td>\n",
       "      <td>...</td>\n",
       "      <td>0.009345</td>\n",
       "      <td>0.006014</td>\n",
       "      <td>-0.003291</td>\n",
       "      <td>0.001146</td>\n",
       "      <td>0.013968</td>\n",
       "      <td>0.005876</td>\n",
       "      <td>-0.004455</td>\n",
       "      <td>0.000133</td>\n",
       "      <td>-0.002763</td>\n",
       "      <td>-0.007444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HDFCLIFE</th>\n",
       "      <td>-0.009670</td>\n",
       "      <td>-0.022145</td>\n",
       "      <td>0.015514</td>\n",
       "      <td>-0.021861</td>\n",
       "      <td>0.017323</td>\n",
       "      <td>-0.039880</td>\n",
       "      <td>0.019114</td>\n",
       "      <td>0.016231</td>\n",
       "      <td>0.009051</td>\n",
       "      <td>-0.006419</td>\n",
       "      <td>...</td>\n",
       "      <td>0.012709</td>\n",
       "      <td>0.013466</td>\n",
       "      <td>-0.002783</td>\n",
       "      <td>0.001395</td>\n",
       "      <td>0.002577</td>\n",
       "      <td>0.008824</td>\n",
       "      <td>-0.040981</td>\n",
       "      <td>-0.013933</td>\n",
       "      <td>0.002659</td>\n",
       "      <td>-0.000801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HEROMOTOCO</th>\n",
       "      <td>-0.005041</td>\n",
       "      <td>-0.025020</td>\n",
       "      <td>-0.000023</td>\n",
       "      <td>-0.019046</td>\n",
       "      <td>-0.015075</td>\n",
       "      <td>-0.027722</td>\n",
       "      <td>-0.037188</td>\n",
       "      <td>0.040193</td>\n",
       "      <td>-0.004137</td>\n",
       "      <td>0.008576</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.007807</td>\n",
       "      <td>0.001211</td>\n",
       "      <td>0.004214</td>\n",
       "      <td>0.007327</td>\n",
       "      <td>-0.007308</td>\n",
       "      <td>0.011094</td>\n",
       "      <td>0.001514</td>\n",
       "      <td>-0.005486</td>\n",
       "      <td>-0.008506</td>\n",
       "      <td>0.006856</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HINDALCO</th>\n",
       "      <td>0.009835</td>\n",
       "      <td>-0.057384</td>\n",
       "      <td>-0.025691</td>\n",
       "      <td>-0.026082</td>\n",
       "      <td>-0.009123</td>\n",
       "      <td>-0.073953</td>\n",
       "      <td>-0.039448</td>\n",
       "      <td>0.063773</td>\n",
       "      <td>0.008161</td>\n",
       "      <td>-0.031756</td>\n",
       "      <td>...</td>\n",
       "      <td>0.005687</td>\n",
       "      <td>-0.010098</td>\n",
       "      <td>-0.000136</td>\n",
       "      <td>0.001496</td>\n",
       "      <td>0.002581</td>\n",
       "      <td>0.018561</td>\n",
       "      <td>0.017026</td>\n",
       "      <td>-0.021057</td>\n",
       "      <td>-0.005878</td>\n",
       "      <td>0.019755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HINDUNILVR</th>\n",
       "      <td>-0.019152</td>\n",
       "      <td>-0.014723</td>\n",
       "      <td>0.008329</td>\n",
       "      <td>0.001164</td>\n",
       "      <td>0.008385</td>\n",
       "      <td>-0.035566</td>\n",
       "      <td>-0.007035</td>\n",
       "      <td>0.003334</td>\n",
       "      <td>0.004246</td>\n",
       "      <td>0.019372</td>\n",
       "      <td>...</td>\n",
       "      <td>0.026968</td>\n",
       "      <td>0.012667</td>\n",
       "      <td>-0.009585</td>\n",
       "      <td>-0.003915</td>\n",
       "      <td>0.003890</td>\n",
       "      <td>-0.016666</td>\n",
       "      <td>0.004717</td>\n",
       "      <td>0.013149</td>\n",
       "      <td>-0.008525</td>\n",
       "      <td>0.002711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ITC</th>\n",
       "      <td>0.003628</td>\n",
       "      <td>-0.021451</td>\n",
       "      <td>-0.005911</td>\n",
       "      <td>-0.015857</td>\n",
       "      <td>-0.005287</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.011389</td>\n",
       "      <td>-0.007424</td>\n",
       "      <td>-0.032757</td>\n",
       "      <td>0.002933</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.005349</td>\n",
       "      <td>-0.000489</td>\n",
       "      <td>0.003179</td>\n",
       "      <td>-0.005607</td>\n",
       "      <td>-0.003432</td>\n",
       "      <td>0.008856</td>\n",
       "      <td>-0.007071</td>\n",
       "      <td>-0.001473</td>\n",
       "      <td>-0.002951</td>\n",
       "      <td>0.001480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>INFY</th>\n",
       "      <td>-0.004310</td>\n",
       "      <td>-0.001443</td>\n",
       "      <td>0.003204</td>\n",
       "      <td>-0.019602</td>\n",
       "      <td>-0.006260</td>\n",
       "      <td>-0.059330</td>\n",
       "      <td>0.012778</td>\n",
       "      <td>0.008029</td>\n",
       "      <td>0.015730</td>\n",
       "      <td>-0.005470</td>\n",
       "      <td>...</td>\n",
       "      <td>0.005350</td>\n",
       "      <td>-0.001996</td>\n",
       "      <td>0.007698</td>\n",
       "      <td>-0.005755</td>\n",
       "      <td>0.037288</td>\n",
       "      <td>0.009620</td>\n",
       "      <td>-0.001525</td>\n",
       "      <td>-0.005567</td>\n",
       "      <td>0.011356</td>\n",
       "      <td>-0.012905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>M&amp;M</th>\n",
       "      <td>-0.002945</td>\n",
       "      <td>-0.022197</td>\n",
       "      <td>-0.008281</td>\n",
       "      <td>-0.011691</td>\n",
       "      <td>-0.018887</td>\n",
       "      <td>-0.073860</td>\n",
       "      <td>0.002735</td>\n",
       "      <td>0.017347</td>\n",
       "      <td>0.018016</td>\n",
       "      <td>0.009797</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.029974</td>\n",
       "      <td>-0.006014</td>\n",
       "      <td>-0.002124</td>\n",
       "      <td>0.008707</td>\n",
       "      <td>0.012597</td>\n",
       "      <td>0.003094</td>\n",
       "      <td>-0.000944</td>\n",
       "      <td>-0.014997</td>\n",
       "      <td>-0.004990</td>\n",
       "      <td>0.002250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MARUTI</th>\n",
       "      <td>0.000148</td>\n",
       "      <td>-0.042500</td>\n",
       "      <td>-0.008632</td>\n",
       "      <td>-0.028014</td>\n",
       "      <td>0.008813</td>\n",
       "      <td>-0.001065</td>\n",
       "      <td>0.000326</td>\n",
       "      <td>0.016054</td>\n",
       "      <td>-0.000266</td>\n",
       "      <td>-0.002882</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.001435</td>\n",
       "      <td>-0.008542</td>\n",
       "      <td>0.052972</td>\n",
       "      <td>0.023027</td>\n",
       "      <td>0.012748</td>\n",
       "      <td>0.016148</td>\n",
       "      <td>-0.006896</td>\n",
       "      <td>-0.014316</td>\n",
       "      <td>0.003793</td>\n",
       "      <td>0.009114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NESTLEIND</th>\n",
       "      <td>-0.014629</td>\n",
       "      <td>-0.012228</td>\n",
       "      <td>0.002647</td>\n",
       "      <td>-0.008568</td>\n",
       "      <td>0.001453</td>\n",
       "      <td>-0.029815</td>\n",
       "      <td>0.020984</td>\n",
       "      <td>0.015484</td>\n",
       "      <td>0.011131</td>\n",
       "      <td>0.002104</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.021507</td>\n",
       "      <td>-0.001217</td>\n",
       "      <td>-0.012046</td>\n",
       "      <td>-0.001247</td>\n",
       "      <td>0.011769</td>\n",
       "      <td>-0.006416</td>\n",
       "      <td>-0.000031</td>\n",
       "      <td>0.005318</td>\n",
       "      <td>0.001918</td>\n",
       "      <td>0.000749</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ONGC</th>\n",
       "      <td>0.010816</td>\n",
       "      <td>-0.046206</td>\n",
       "      <td>-0.005099</td>\n",
       "      <td>-0.017939</td>\n",
       "      <td>-0.025574</td>\n",
       "      <td>-0.014997</td>\n",
       "      <td>-0.030995</td>\n",
       "      <td>0.047699</td>\n",
       "      <td>-0.005892</td>\n",
       "      <td>-0.002155</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.038769</td>\n",
       "      <td>0.005821</td>\n",
       "      <td>0.009095</td>\n",
       "      <td>0.010651</td>\n",
       "      <td>-0.010944</td>\n",
       "      <td>-0.009016</td>\n",
       "      <td>0.011993</td>\n",
       "      <td>-0.024111</td>\n",
       "      <td>-0.014238</td>\n",
       "      <td>0.009771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>POWERGRID</th>\n",
       "      <td>0.009333</td>\n",
       "      <td>-0.016645</td>\n",
       "      <td>0.000269</td>\n",
       "      <td>-0.001612</td>\n",
       "      <td>0.003228</td>\n",
       "      <td>-0.026549</td>\n",
       "      <td>0.011019</td>\n",
       "      <td>0.044687</td>\n",
       "      <td>0.027908</td>\n",
       "      <td>-0.005582</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.028560</td>\n",
       "      <td>0.007940</td>\n",
       "      <td>-0.003406</td>\n",
       "      <td>-0.007691</td>\n",
       "      <td>-0.004736</td>\n",
       "      <td>-0.001298</td>\n",
       "      <td>0.004332</td>\n",
       "      <td>0.017899</td>\n",
       "      <td>-0.015254</td>\n",
       "      <td>-0.006885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RELIANCE</th>\n",
       "      <td>-0.011870</td>\n",
       "      <td>-0.027592</td>\n",
       "      <td>-0.019759</td>\n",
       "      <td>-0.017227</td>\n",
       "      <td>-0.004131</td>\n",
       "      <td>-0.041551</td>\n",
       "      <td>-0.009408</td>\n",
       "      <td>0.020286</td>\n",
       "      <td>-0.002346</td>\n",
       "      <td>-0.021311</td>\n",
       "      <td>...</td>\n",
       "      <td>0.004513</td>\n",
       "      <td>0.005212</td>\n",
       "      <td>-0.005140</td>\n",
       "      <td>-0.009165</td>\n",
       "      <td>-0.023511</td>\n",
       "      <td>-0.022777</td>\n",
       "      <td>-0.008767</td>\n",
       "      <td>0.000863</td>\n",
       "      <td>0.010944</td>\n",
       "      <td>-0.006017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SBILIFE</th>\n",
       "      <td>-0.010073</td>\n",
       "      <td>-0.013082</td>\n",
       "      <td>-0.016801</td>\n",
       "      <td>-0.010930</td>\n",
       "      <td>0.015707</td>\n",
       "      <td>-0.016513</td>\n",
       "      <td>0.004212</td>\n",
       "      <td>0.006375</td>\n",
       "      <td>-0.016392</td>\n",
       "      <td>-0.000734</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.000763</td>\n",
       "      <td>-0.001018</td>\n",
       "      <td>0.025928</td>\n",
       "      <td>-0.006405</td>\n",
       "      <td>0.001599</td>\n",
       "      <td>0.004989</td>\n",
       "      <td>-0.005014</td>\n",
       "      <td>-0.002694</td>\n",
       "      <td>0.008755</td>\n",
       "      <td>-0.001240</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHREECEM</th>\n",
       "      <td>-0.005130</td>\n",
       "      <td>-0.019171</td>\n",
       "      <td>-0.010891</td>\n",
       "      <td>-0.004535</td>\n",
       "      <td>0.014805</td>\n",
       "      <td>-0.047941</td>\n",
       "      <td>0.016367</td>\n",
       "      <td>0.023919</td>\n",
       "      <td>-0.014290</td>\n",
       "      <td>-0.008161</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.011361</td>\n",
       "      <td>0.006402</td>\n",
       "      <td>0.035915</td>\n",
       "      <td>-0.012718</td>\n",
       "      <td>-0.006752</td>\n",
       "      <td>0.001981</td>\n",
       "      <td>-0.011796</td>\n",
       "      <td>-0.009008</td>\n",
       "      <td>-0.022387</td>\n",
       "      <td>-0.016166</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SUNPHARMA</th>\n",
       "      <td>0.003469</td>\n",
       "      <td>-0.017533</td>\n",
       "      <td>-0.022496</td>\n",
       "      <td>-0.036513</td>\n",
       "      <td>0.036830</td>\n",
       "      <td>-0.040155</td>\n",
       "      <td>-0.009118</td>\n",
       "      <td>0.065088</td>\n",
       "      <td>0.030238</td>\n",
       "      <td>-0.001357</td>\n",
       "      <td>...</td>\n",
       "      <td>0.005188</td>\n",
       "      <td>0.004263</td>\n",
       "      <td>-0.006777</td>\n",
       "      <td>-0.002325</td>\n",
       "      <td>-0.000676</td>\n",
       "      <td>0.011206</td>\n",
       "      <td>0.006025</td>\n",
       "      <td>0.001922</td>\n",
       "      <td>-0.003173</td>\n",
       "      <td>0.012880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TCS</th>\n",
       "      <td>-0.018007</td>\n",
       "      <td>-0.019218</td>\n",
       "      <td>0.019287</td>\n",
       "      <td>-0.015096</td>\n",
       "      <td>-0.008523</td>\n",
       "      <td>-0.050036</td>\n",
       "      <td>0.000575</td>\n",
       "      <td>0.017439</td>\n",
       "      <td>0.023082</td>\n",
       "      <td>0.020089</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.006164</td>\n",
       "      <td>-0.007339</td>\n",
       "      <td>0.008585</td>\n",
       "      <td>-0.012056</td>\n",
       "      <td>0.034402</td>\n",
       "      <td>0.002134</td>\n",
       "      <td>-0.013029</td>\n",
       "      <td>0.001229</td>\n",
       "      <td>0.001467</td>\n",
       "      <td>-0.001270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TATACONSUM</th>\n",
       "      <td>-0.006916</td>\n",
       "      <td>-0.029961</td>\n",
       "      <td>-0.000271</td>\n",
       "      <td>-0.009079</td>\n",
       "      <td>-0.006427</td>\n",
       "      <td>-0.047206</td>\n",
       "      <td>-0.021234</td>\n",
       "      <td>0.048701</td>\n",
       "      <td>-0.017168</td>\n",
       "      <td>-0.002005</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.006980</td>\n",
       "      <td>0.003717</td>\n",
       "      <td>0.019056</td>\n",
       "      <td>0.001520</td>\n",
       "      <td>-0.000528</td>\n",
       "      <td>0.000198</td>\n",
       "      <td>0.010626</td>\n",
       "      <td>-0.009926</td>\n",
       "      <td>-0.004815</td>\n",
       "      <td>0.002187</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>29 rows × 334 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                 1         2         3         4         5         6    \\\n",
       "ADANIPORTS -0.001212 -0.023190 -0.010628  0.000000 -0.013114 -0.032513   \n",
       "BAJAJ-AUTO -0.008218 -0.027728 -0.011106 -0.000271 -0.003394 -0.015869   \n",
       "BPCL       -0.007991 -0.015050 -0.017002 -0.017406 -0.010584 -0.039860   \n",
       "BHARTIARTL  0.004048 -0.028776  0.010096  0.001308 -0.008023 -0.015330   \n",
       "BRITANNIA  -0.007413 -0.007583 -0.000873  0.002571 -0.005031 -0.018456   \n",
       "CIPLA      -0.026257 -0.012851 -0.010113 -0.008455 -0.002369 -0.045347   \n",
       "DIVISLAB   -0.007548 -0.004103 -0.013267  0.012335  0.006746 -0.023000   \n",
       "DRREDDY    -0.006970 -0.024268 -0.028146 -0.003742 -0.002699 -0.045630   \n",
       "EICHERMOT  -0.001407 -0.047680 -0.023267 -0.021409 -0.006035 -0.026449   \n",
       "GRASIM     -0.007726 -0.035139 -0.006208 -0.024431  0.014300 -0.035982   \n",
       "HCLTECH     0.003797 -0.021215 -0.021339  0.001974 -0.018077 -0.067533   \n",
       "HDFCBANK   -0.008230 -0.005875 -0.007975 -0.000875  0.000167 -0.018175   \n",
       "HDFCLIFE   -0.009670 -0.022145  0.015514 -0.021861  0.017323 -0.039880   \n",
       "HEROMOTOCO -0.005041 -0.025020 -0.000023 -0.019046 -0.015075 -0.027722   \n",
       "HINDALCO    0.009835 -0.057384 -0.025691 -0.026082 -0.009123 -0.073953   \n",
       "HINDUNILVR -0.019152 -0.014723  0.008329  0.001164  0.008385 -0.035566   \n",
       "ITC         0.003628 -0.021451 -0.005911 -0.015857 -0.005287  0.000000   \n",
       "INFY       -0.004310 -0.001443  0.003204 -0.019602 -0.006260 -0.059330   \n",
       "M&M        -0.002945 -0.022197 -0.008281 -0.011691 -0.018887 -0.073860   \n",
       "MARUTI      0.000148 -0.042500 -0.008632 -0.028014  0.008813 -0.001065   \n",
       "NESTLEIND  -0.014629 -0.012228  0.002647 -0.008568  0.001453 -0.029815   \n",
       "ONGC        0.010816 -0.046206 -0.005099 -0.017939 -0.025574 -0.014997   \n",
       "POWERGRID   0.009333 -0.016645  0.000269 -0.001612  0.003228 -0.026549   \n",
       "RELIANCE   -0.011870 -0.027592 -0.019759 -0.017227 -0.004131 -0.041551   \n",
       "SBILIFE    -0.010073 -0.013082 -0.016801 -0.010930  0.015707 -0.016513   \n",
       "SHREECEM   -0.005130 -0.019171 -0.010891 -0.004535  0.014805 -0.047941   \n",
       "SUNPHARMA   0.003469 -0.017533 -0.022496 -0.036513  0.036830 -0.040155   \n",
       "TCS        -0.018007 -0.019218  0.019287 -0.015096 -0.008523 -0.050036   \n",
       "TATACONSUM -0.006916 -0.029961 -0.000271 -0.009079 -0.006427 -0.047206   \n",
       "\n",
       "                 7         8         9         10   ...       329       330  \\\n",
       "ADANIPORTS -0.004530  0.019522 -0.003887  0.009250  ...  0.073350  0.052855   \n",
       "BAJAJ-AUTO -0.033841  0.007503  0.007150 -0.002895  ...  0.027924  0.003732   \n",
       "BPCL       -0.032837  0.030678 -0.014824 -0.000717  ... -0.009541  0.005716   \n",
       "BHARTIARTL -0.009838  0.004727 -0.007777  0.019642  ...  0.019105  0.001578   \n",
       "BRITANNIA  -0.007104  0.026245  0.012077  0.020927  ... -0.010647  0.008192   \n",
       "CIPLA      -0.000373  0.058092  0.052551 -0.015749  ...  0.010463 -0.000781   \n",
       "DIVISLAB    0.001092  0.035012 -0.003802  0.022508  ... -0.024417  0.007576   \n",
       "DRREDDY    -0.007362  0.047547  0.041939  0.004131  ... -0.000492 -0.000360   \n",
       "EICHERMOT   0.024759  0.051433 -0.035456  0.030204  ...  0.012641 -0.003361   \n",
       "GRASIM     -0.027285  0.047273 -0.015070 -0.013343  ...  0.015464  0.010738   \n",
       "HCLTECH     0.028727  0.027924 -0.003451  0.023619  ... -0.011304  0.006921   \n",
       "HDFCBANK    0.001656  0.001865 -0.027881  0.002176  ...  0.009345  0.006014   \n",
       "HDFCLIFE    0.019114  0.016231  0.009051 -0.006419  ...  0.012709  0.013466   \n",
       "HEROMOTOCO -0.037188  0.040193 -0.004137  0.008576  ... -0.007807  0.001211   \n",
       "HINDALCO   -0.039448  0.063773  0.008161 -0.031756  ...  0.005687 -0.010098   \n",
       "HINDUNILVR -0.007035  0.003334  0.004246  0.019372  ...  0.026968  0.012667   \n",
       "ITC        -0.011389 -0.007424 -0.032757  0.002933  ... -0.005349 -0.000489   \n",
       "INFY        0.012778  0.008029  0.015730 -0.005470  ...  0.005350 -0.001996   \n",
       "M&M         0.002735  0.017347  0.018016  0.009797  ... -0.029974 -0.006014   \n",
       "MARUTI      0.000326  0.016054 -0.000266 -0.002882  ... -0.001435 -0.008542   \n",
       "NESTLEIND   0.020984  0.015484  0.011131  0.002104  ... -0.021507 -0.001217   \n",
       "ONGC       -0.030995  0.047699 -0.005892 -0.002155  ... -0.038769  0.005821   \n",
       "POWERGRID   0.011019  0.044687  0.027908 -0.005582  ... -0.028560  0.007940   \n",
       "RELIANCE   -0.009408  0.020286 -0.002346 -0.021311  ...  0.004513  0.005212   \n",
       "SBILIFE     0.004212  0.006375 -0.016392 -0.000734  ... -0.000763 -0.001018   \n",
       "SHREECEM    0.016367  0.023919 -0.014290 -0.008161  ... -0.011361  0.006402   \n",
       "SUNPHARMA  -0.009118  0.065088  0.030238 -0.001357  ...  0.005188  0.004263   \n",
       "TCS         0.000575  0.017439  0.023082  0.020089  ... -0.006164 -0.007339   \n",
       "TATACONSUM -0.021234  0.048701 -0.017168 -0.002005  ... -0.006980  0.003717   \n",
       "\n",
       "                 331       332       333       334       335       336  \\\n",
       "ADANIPORTS  0.016210 -0.032575 -0.005324  0.003240  0.005687 -0.007330   \n",
       "BAJAJ-AUTO  0.009312 -0.005448  0.006740 -0.007275 -0.003027 -0.014055   \n",
       "BPCL       -0.002947 -0.008551 -0.007453  0.008475 -0.006170 -0.001927   \n",
       "BHARTIARTL -0.005930 -0.004381 -0.009924  0.012009 -0.007288 -0.011766   \n",
       "BRITANNIA   0.000562  0.002301  0.008144 -0.005164 -0.000763 -0.002754   \n",
       "CIPLA      -0.004479  0.001988 -0.007152  0.006520  0.006217  0.017185   \n",
       "DIVISLAB    0.014105 -0.014958  0.006095 -0.000376  0.015452  0.009677   \n",
       "DRREDDY     0.004989 -0.001695 -0.004095  0.005997  0.017884  0.005338   \n",
       "EICHERMOT   0.007319  0.003826 -0.008008  0.005191  0.007222 -0.012899   \n",
       "GRASIM     -0.000234  0.001637  0.000100  0.005304  0.009125 -0.011377   \n",
       "HCLTECH    -0.001935 -0.007346  0.017268  0.006012 -0.010395 -0.001725   \n",
       "HDFCBANK   -0.003291  0.001146  0.013968  0.005876 -0.004455  0.000133   \n",
       "HDFCLIFE   -0.002783  0.001395  0.002577  0.008824 -0.040981 -0.013933   \n",
       "HEROMOTOCO  0.004214  0.007327 -0.007308  0.011094  0.001514 -0.005486   \n",
       "HINDALCO   -0.000136  0.001496  0.002581  0.018561  0.017026 -0.021057   \n",
       "HINDUNILVR -0.009585 -0.003915  0.003890 -0.016666  0.004717  0.013149   \n",
       "ITC         0.003179 -0.005607 -0.003432  0.008856 -0.007071 -0.001473   \n",
       "INFY        0.007698 -0.005755  0.037288  0.009620 -0.001525 -0.005567   \n",
       "M&M        -0.002124  0.008707  0.012597  0.003094 -0.000944 -0.014997   \n",
       "MARUTI      0.052972  0.023027  0.012748  0.016148 -0.006896 -0.014316   \n",
       "NESTLEIND  -0.012046 -0.001247  0.011769 -0.006416 -0.000031  0.005318   \n",
       "ONGC        0.009095  0.010651 -0.010944 -0.009016  0.011993 -0.024111   \n",
       "POWERGRID  -0.003406 -0.007691 -0.004736 -0.001298  0.004332  0.017899   \n",
       "RELIANCE   -0.005140 -0.009165 -0.023511 -0.022777 -0.008767  0.000863   \n",
       "SBILIFE     0.025928 -0.006405  0.001599  0.004989 -0.005014 -0.002694   \n",
       "SHREECEM    0.035915 -0.012718 -0.006752  0.001981 -0.011796 -0.009008   \n",
       "SUNPHARMA  -0.006777 -0.002325 -0.000676  0.011206  0.006025  0.001922   \n",
       "TCS         0.008585 -0.012056  0.034402  0.002134 -0.013029  0.001229   \n",
       "TATACONSUM  0.019056  0.001520 -0.000528  0.000198  0.010626 -0.009926   \n",
       "\n",
       "                 337       338  \n",
       "ADANIPORTS -0.010267 -0.000853  \n",
       "BAJAJ-AUTO  0.002231  0.017103  \n",
       "BPCL        0.003968 -0.011429  \n",
       "BHARTIARTL  0.001333 -0.005707  \n",
       "BRITANNIA  -0.002051 -0.014755  \n",
       "CIPLA      -0.007860  0.006379  \n",
       "DIVISLAB    0.011960  0.006227  \n",
       "DRREDDY    -0.001850  0.024977  \n",
       "EICHERMOT  -0.012550  0.001554  \n",
       "GRASIM     -0.003027  0.001034  \n",
       "HCLTECH    -0.000102  0.002034  \n",
       "HDFCBANK   -0.002763 -0.007444  \n",
       "HDFCLIFE    0.002659 -0.000801  \n",
       "HEROMOTOCO -0.008506  0.006856  \n",
       "HINDALCO   -0.005878  0.019755  \n",
       "HINDUNILVR -0.008525  0.002711  \n",
       "ITC        -0.002951  0.001480  \n",
       "INFY        0.011356 -0.012905  \n",
       "M&M        -0.004990  0.002250  \n",
       "MARUTI      0.003793  0.009114  \n",
       "NESTLEIND   0.001918  0.000749  \n",
       "ONGC       -0.014238  0.009771  \n",
       "POWERGRID  -0.015254 -0.006885  \n",
       "RELIANCE    0.010944 -0.006017  \n",
       "SBILIFE     0.008755 -0.001240  \n",
       "SHREECEM   -0.022387 -0.016166  \n",
       "SUNPHARMA  -0.003173  0.012880  \n",
       "TCS         0.001467 -0.001270  \n",
       "TATACONSUM -0.004815  0.002187  \n",
       "\n",
       "[29 rows x 334 columns]"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_return"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "7658fc97",
   "metadata": {},
   "outputs": [],
   "source": [
    "#What Is Beta?\n",
    "#Beta is a measure of a stock's volatility in relation to the overall market. \n",
    "#By definition, the market, such as the S&P 500 Index, has a beta of 1.0\n",
    "\n",
    "\n",
    "#A stock that swings more than the market over time has a beta above 1.0. \n",
    "#If a stock moves less than the market, the stock's beta is less than 1.0. \n",
    "#High-beta stocks are supposed to be riskier but provide higher return potential; \n",
    "#low-beta stocks pose less risk but also lower returns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "3f20947f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Alpha refers to excess returns earned on an investment above the benchmark return.\n",
    "#Active portfolio managers seek to generate alpha in diversified portfolios, \n",
    "#with diversification intended to eliminate unsystematic risk."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "aec874dc",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats=pd.DataFrame()\n",
    "num_days=90\n",
    "for column in df_return.columns:\n",
    "    slope, intercept,rvalue,pvalue,stderr=linregress(df_return['NIFTY'][:num_days],df_return[column][:num_days])\n",
    "    stats[column]= pd.Series([slope, intercept,rvalue,pvalue,stderr])\n",
    "stats=stats.T.rename(columns={0:'Beta',1:'Alpha',2:'rvalue',3:'pvalue',4:'stderr'})\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "d44f6efd",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats=stats[(stats.Beta>0) &(stats.Alpha>0)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "8d1c14cb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "29"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(stats)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "ef140fe9",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['beta_weights']= stats.Beta.div(sum(stats.Beta))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "b47e6b88",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['alpha_weights']= stats.Alpha.div(sum(stats.Alpha))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2acd848a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "8dba0aec",
   "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>Beta</th>\n",
       "      <th>Alpha</th>\n",
       "      <th>rvalue</th>\n",
       "      <th>pvalue</th>\n",
       "      <th>stderr</th>\n",
       "      <th>beta_weights</th>\n",
       "      <th>alpha_weights</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ADANIPORTS</th>\n",
       "      <td>0.895755</td>\n",
       "      <td>0.001280</td>\n",
       "      <td>0.711127</td>\n",
       "      <td>4.049750e-15</td>\n",
       "      <td>0.094405</td>\n",
       "      <td>0.036081</td>\n",
       "      <td>0.027759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BAJAJ-AUTO</th>\n",
       "      <td>0.861023</td>\n",
       "      <td>0.001101</td>\n",
       "      <td>0.757273</td>\n",
       "      <td>5.804819e-18</td>\n",
       "      <td>0.079159</td>\n",
       "      <td>0.034682</td>\n",
       "      <td>0.023887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BPCL</th>\n",
       "      <td>0.995791</td>\n",
       "      <td>0.000141</td>\n",
       "      <td>0.713010</td>\n",
       "      <td>3.179843e-15</td>\n",
       "      <td>0.104387</td>\n",
       "      <td>0.040110</td>\n",
       "      <td>0.003052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BHARTIARTL</th>\n",
       "      <td>0.767870</td>\n",
       "      <td>0.001933</td>\n",
       "      <td>0.657993</td>\n",
       "      <td>1.833635e-12</td>\n",
       "      <td>0.093677</td>\n",
       "      <td>0.030929</td>\n",
       "      <td>0.041936</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BRITANNIA</th>\n",
       "      <td>0.794236</td>\n",
       "      <td>0.003160</td>\n",
       "      <td>0.721510</td>\n",
       "      <td>1.041164e-15</td>\n",
       "      <td>0.081250</td>\n",
       "      <td>0.031991</td>\n",
       "      <td>0.068548</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CIPLA</th>\n",
       "      <td>0.423074</td>\n",
       "      <td>0.004783</td>\n",
       "      <td>0.397378</td>\n",
       "      <td>1.052614e-04</td>\n",
       "      <td>0.104148</td>\n",
       "      <td>0.017041</td>\n",
       "      <td>0.103745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DIVISLAB</th>\n",
       "      <td>0.540678</td>\n",
       "      <td>0.000802</td>\n",
       "      <td>0.591730</td>\n",
       "      <td>8.160938e-10</td>\n",
       "      <td>0.078520</td>\n",
       "      <td>0.021778</td>\n",
       "      <td>0.017398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DRREDDY</th>\n",
       "      <td>0.511975</td>\n",
       "      <td>0.002733</td>\n",
       "      <td>0.547835</td>\n",
       "      <td>2.291640e-08</td>\n",
       "      <td>0.083343</td>\n",
       "      <td>0.020622</td>\n",
       "      <td>0.059274</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EICHERMOT</th>\n",
       "      <td>0.847342</td>\n",
       "      <td>0.001675</td>\n",
       "      <td>0.718170</td>\n",
       "      <td>1.622323e-15</td>\n",
       "      <td>0.087522</td>\n",
       "      <td>0.034130</td>\n",
       "      <td>0.036323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GRASIM</th>\n",
       "      <td>1.153968</td>\n",
       "      <td>0.000034</td>\n",
       "      <td>0.831132</td>\n",
       "      <td>3.787729e-24</td>\n",
       "      <td>0.082303</td>\n",
       "      <td>0.046481</td>\n",
       "      <td>0.000738</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HCLTECH</th>\n",
       "      <td>0.806342</td>\n",
       "      <td>0.000726</td>\n",
       "      <td>0.736878</td>\n",
       "      <td>1.241252e-16</td>\n",
       "      <td>0.078858</td>\n",
       "      <td>0.032479</td>\n",
       "      <td>0.015750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HDFCBANK</th>\n",
       "      <td>1.070626</td>\n",
       "      <td>0.000440</td>\n",
       "      <td>0.863902</td>\n",
       "      <td>6.003556e-28</td>\n",
       "      <td>0.066538</td>\n",
       "      <td>0.043124</td>\n",
       "      <td>0.009551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HDFCLIFE</th>\n",
       "      <td>1.129709</td>\n",
       "      <td>0.002056</td>\n",
       "      <td>0.774306</td>\n",
       "      <td>3.535886e-19</td>\n",
       "      <td>0.098421</td>\n",
       "      <td>0.045504</td>\n",
       "      <td>0.044600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HEROMOTOCO</th>\n",
       "      <td>0.881682</td>\n",
       "      <td>0.003828</td>\n",
       "      <td>0.681071</td>\n",
       "      <td>1.507190e-13</td>\n",
       "      <td>0.101046</td>\n",
       "      <td>0.035514</td>\n",
       "      <td>0.083026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HINDALCO</th>\n",
       "      <td>1.413791</td>\n",
       "      <td>0.000317</td>\n",
       "      <td>0.841126</td>\n",
       "      <td>3.247921e-25</td>\n",
       "      <td>0.096906</td>\n",
       "      <td>0.056947</td>\n",
       "      <td>0.006881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HINDUNILVR</th>\n",
       "      <td>0.674073</td>\n",
       "      <td>0.000493</td>\n",
       "      <td>0.640879</td>\n",
       "      <td>1.020894e-11</td>\n",
       "      <td>0.086069</td>\n",
       "      <td>0.027151</td>\n",
       "      <td>0.010704</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ITC</th>\n",
       "      <td>0.644056</td>\n",
       "      <td>0.001352</td>\n",
       "      <td>0.555297</td>\n",
       "      <td>1.344592e-08</td>\n",
       "      <td>0.102825</td>\n",
       "      <td>0.025942</td>\n",
       "      <td>0.029328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>INFY</th>\n",
       "      <td>0.900669</td>\n",
       "      <td>0.001006</td>\n",
       "      <td>0.783850</td>\n",
       "      <td>6.610627e-20</td>\n",
       "      <td>0.076058</td>\n",
       "      <td>0.036278</td>\n",
       "      <td>0.021818</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>M&amp;M</th>\n",
       "      <td>0.986166</td>\n",
       "      <td>0.002683</td>\n",
       "      <td>0.680960</td>\n",
       "      <td>1.526249e-13</td>\n",
       "      <td>0.113055</td>\n",
       "      <td>0.039722</td>\n",
       "      <td>0.058191</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MARUTI</th>\n",
       "      <td>1.159254</td>\n",
       "      <td>0.000890</td>\n",
       "      <td>0.790180</td>\n",
       "      <td>2.073142e-20</td>\n",
       "      <td>0.095848</td>\n",
       "      <td>0.046694</td>\n",
       "      <td>0.019313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NESTLEIND</th>\n",
       "      <td>0.609998</td>\n",
       "      <td>0.001078</td>\n",
       "      <td>0.630517</td>\n",
       "      <td>2.742949e-11</td>\n",
       "      <td>0.080048</td>\n",
       "      <td>0.024570</td>\n",
       "      <td>0.023391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ONGC</th>\n",
       "      <td>0.946766</td>\n",
       "      <td>0.000615</td>\n",
       "      <td>0.591265</td>\n",
       "      <td>8.476440e-10</td>\n",
       "      <td>0.137661</td>\n",
       "      <td>0.038135</td>\n",
       "      <td>0.013335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>POWERGRID</th>\n",
       "      <td>0.546962</td>\n",
       "      <td>0.000674</td>\n",
       "      <td>0.602836</td>\n",
       "      <td>3.235837e-10</td>\n",
       "      <td>0.077170</td>\n",
       "      <td>0.022031</td>\n",
       "      <td>0.014612</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RELIANCE</th>\n",
       "      <td>1.135087</td>\n",
       "      <td>0.004316</td>\n",
       "      <td>0.814925</td>\n",
       "      <td>1.472509e-22</td>\n",
       "      <td>0.086055</td>\n",
       "      <td>0.045721</td>\n",
       "      <td>0.093603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SBILIFE</th>\n",
       "      <td>0.937018</td>\n",
       "      <td>0.000577</td>\n",
       "      <td>0.767873</td>\n",
       "      <td>1.046227e-18</td>\n",
       "      <td>0.083331</td>\n",
       "      <td>0.037743</td>\n",
       "      <td>0.012512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SHREECEM</th>\n",
       "      <td>0.816441</td>\n",
       "      <td>0.000606</td>\n",
       "      <td>0.770082</td>\n",
       "      <td>7.238150e-19</td>\n",
       "      <td>0.072099</td>\n",
       "      <td>0.032886</td>\n",
       "      <td>0.013143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SUNPHARMA</th>\n",
       "      <td>0.610399</td>\n",
       "      <td>0.002969</td>\n",
       "      <td>0.574827</td>\n",
       "      <td>3.124497e-09</td>\n",
       "      <td>0.092626</td>\n",
       "      <td>0.024587</td>\n",
       "      <td>0.064388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TCS</th>\n",
       "      <td>0.790902</td>\n",
       "      <td>0.001600</td>\n",
       "      <td>0.776260</td>\n",
       "      <td>2.525346e-19</td>\n",
       "      <td>0.068470</td>\n",
       "      <td>0.031857</td>\n",
       "      <td>0.034696</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TATACONSUM</th>\n",
       "      <td>0.974910</td>\n",
       "      <td>0.002236</td>\n",
       "      <td>0.799473</td>\n",
       "      <td>3.507506e-21</td>\n",
       "      <td>0.078087</td>\n",
       "      <td>0.039269</td>\n",
       "      <td>0.048498</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                Beta     Alpha    rvalue        pvalue    stderr  \\\n",
       "ADANIPORTS  0.895755  0.001280  0.711127  4.049750e-15  0.094405   \n",
       "BAJAJ-AUTO  0.861023  0.001101  0.757273  5.804819e-18  0.079159   \n",
       "BPCL        0.995791  0.000141  0.713010  3.179843e-15  0.104387   \n",
       "BHARTIARTL  0.767870  0.001933  0.657993  1.833635e-12  0.093677   \n",
       "BRITANNIA   0.794236  0.003160  0.721510  1.041164e-15  0.081250   \n",
       "CIPLA       0.423074  0.004783  0.397378  1.052614e-04  0.104148   \n",
       "DIVISLAB    0.540678  0.000802  0.591730  8.160938e-10  0.078520   \n",
       "DRREDDY     0.511975  0.002733  0.547835  2.291640e-08  0.083343   \n",
       "EICHERMOT   0.847342  0.001675  0.718170  1.622323e-15  0.087522   \n",
       "GRASIM      1.153968  0.000034  0.831132  3.787729e-24  0.082303   \n",
       "HCLTECH     0.806342  0.000726  0.736878  1.241252e-16  0.078858   \n",
       "HDFCBANK    1.070626  0.000440  0.863902  6.003556e-28  0.066538   \n",
       "HDFCLIFE    1.129709  0.002056  0.774306  3.535886e-19  0.098421   \n",
       "HEROMOTOCO  0.881682  0.003828  0.681071  1.507190e-13  0.101046   \n",
       "HINDALCO    1.413791  0.000317  0.841126  3.247921e-25  0.096906   \n",
       "HINDUNILVR  0.674073  0.000493  0.640879  1.020894e-11  0.086069   \n",
       "ITC         0.644056  0.001352  0.555297  1.344592e-08  0.102825   \n",
       "INFY        0.900669  0.001006  0.783850  6.610627e-20  0.076058   \n",
       "M&M         0.986166  0.002683  0.680960  1.526249e-13  0.113055   \n",
       "MARUTI      1.159254  0.000890  0.790180  2.073142e-20  0.095848   \n",
       "NESTLEIND   0.609998  0.001078  0.630517  2.742949e-11  0.080048   \n",
       "ONGC        0.946766  0.000615  0.591265  8.476440e-10  0.137661   \n",
       "POWERGRID   0.546962  0.000674  0.602836  3.235837e-10  0.077170   \n",
       "RELIANCE    1.135087  0.004316  0.814925  1.472509e-22  0.086055   \n",
       "SBILIFE     0.937018  0.000577  0.767873  1.046227e-18  0.083331   \n",
       "SHREECEM    0.816441  0.000606  0.770082  7.238150e-19  0.072099   \n",
       "SUNPHARMA   0.610399  0.002969  0.574827  3.124497e-09  0.092626   \n",
       "TCS         0.790902  0.001600  0.776260  2.525346e-19  0.068470   \n",
       "TATACONSUM  0.974910  0.002236  0.799473  3.507506e-21  0.078087   \n",
       "\n",
       "            beta_weights  alpha_weights  \n",
       "ADANIPORTS      0.036081       0.027759  \n",
       "BAJAJ-AUTO      0.034682       0.023887  \n",
       "BPCL            0.040110       0.003052  \n",
       "BHARTIARTL      0.030929       0.041936  \n",
       "BRITANNIA       0.031991       0.068548  \n",
       "CIPLA           0.017041       0.103745  \n",
       "DIVISLAB        0.021778       0.017398  \n",
       "DRREDDY         0.020622       0.059274  \n",
       "EICHERMOT       0.034130       0.036323  \n",
       "GRASIM          0.046481       0.000738  \n",
       "HCLTECH         0.032479       0.015750  \n",
       "HDFCBANK        0.043124       0.009551  \n",
       "HDFCLIFE        0.045504       0.044600  \n",
       "HEROMOTOCO      0.035514       0.083026  \n",
       "HINDALCO        0.056947       0.006881  \n",
       "HINDUNILVR      0.027151       0.010704  \n",
       "ITC             0.025942       0.029328  \n",
       "INFY            0.036278       0.021818  \n",
       "M&M             0.039722       0.058191  \n",
       "MARUTI          0.046694       0.019313  \n",
       "NESTLEIND       0.024570       0.023391  \n",
       "ONGC            0.038135       0.013335  \n",
       "POWERGRID       0.022031       0.014612  \n",
       "RELIANCE        0.045721       0.093603  \n",
       "SBILIFE         0.037743       0.012512  \n",
       "SHREECEM        0.032886       0.013143  \n",
       "SUNPHARMA       0.024587       0.064388  \n",
       "TCS             0.031857       0.034696  \n",
       "TATACONSUM      0.039269       0.048498  "
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "53b7d9c3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "40c5dd85",
   "metadata": {},
   "outputs": [],
   "source": [
    "portfolio_return=pd.DataFrame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "960816d4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "26d99d1a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "c0e56db5",
   "metadata": {},
   "outputs": [],
   "source": [
    "nifty=df_return.pop('NIFTY')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "be67c4f2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "62df9fe8",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_return=df_return[stats.T.columns].T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a484276c",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "e7ea6f1a",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ADANIPORTS   -0.001212\n",
       "BAJAJ-AUTO   -0.008218\n",
       "BPCL         -0.007991\n",
       "BHARTIARTL    0.004048\n",
       "BRITANNIA    -0.007413\n",
       "Name: 1, dtype: float64"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_return[1].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "id": "bbe59fa1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ADANIPORTS    0.027759\n",
       "BAJAJ-AUTO    0.023887\n",
       "BPCL          0.003052\n",
       "BHARTIARTL    0.041936\n",
       "BRITANNIA     0.068548\n",
       "Name: alpha_weights, dtype: float64"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.alpha_weights.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "06584e4c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-3.3643908e-05"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "0.027759*-0.001212"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "11c894ac",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "be1d50a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.007182989036520953"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sum(df_return[1]*stats.alpha_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "id": "d005bb25",
   "metadata": {},
   "outputs": [],
   "source": [
    "portfolio_return=pd.DataFrame()\n",
    "portfolio_return['alpha_return']= df_return.apply(lambda x: sum(x*stats.alpha_weights))\n",
    "portfolio_return['beta_return']=df_return.apply(lambda x : sum(x*stats.beta_weights))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "id": "c2ed1649",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "alpha_return    0.001425\n",
       "beta_return     0.001311\n",
       "dtype: float64"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(portfolio_return)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "id": "a6e6edee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "alpha_return    0.015755\n",
       "beta_return     0.017037\n",
       "dtype: float64"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.std(portfolio_return)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "31c1f33a",
   "metadata": {},
   "outputs": [],
   "source": [
    "#sharpe ratio= return / std"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "id": "56f4cf3b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "alpha_return    0.090473\n",
       "beta_return     0.076961\n",
       "dtype: float64"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(portfolio_return)/ np.std(portfolio_return)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0355a09d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c3f375e6",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "7899a4d2",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "'slope'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m   3079\u001b[0m             \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3080\u001b[1;33m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   3081\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: 'slope'",
      "\nThe above exception was the direct cause of the following exception:\n",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-15-177aabdccf6a>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m         \u001b[0mscore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mr2_score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_return\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcolumn\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m   \u001b[0my_pre\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mscore\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mstats\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'r2_score'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mR2Score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m<ipython-input-15-177aabdccf6a>\u001b[0m in \u001b[0;36mR2Score\u001b[1;34m()\u001b[0m\n\u001b[0;32m      3\u001b[0m     \u001b[0mscore\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m     \u001b[1;32mfor\u001b[0m \u001b[0mcolumn\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m         \u001b[0my_pre\u001b[0m\u001b[1;33m=\u001b[0m \u001b[0mdf_return\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'NIFTY'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mstats\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'slope'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcolumn\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m+\u001b[0m \u001b[0mstats\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'intercept'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcolumn\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      6\u001b[0m         \u001b[0mscore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mr2_score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_return\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcolumn\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m   \u001b[0my_pre\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mscore\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   3022\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   3023\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3024\u001b[1;33m             \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   3025\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   3026\u001b[0m                 \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m   3080\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   3081\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3082\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   3083\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   3084\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mtolerance\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: 'slope'"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import r2_score\n",
    "def R2Score():\n",
    "    score=[]\n",
    "    for column in df.columns:\n",
    "        y_pre= df_return['NIFTY']*stats['slope'][column]+ stats['intercept'][column]\n",
    "        score.append(r2_score(df_return[column],   y_pre))\n",
    "    return score   \n",
    "stats['r2_score']=R2Score()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "adddebc9",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats.sort_values(by='r2_score', ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "58ae0f23",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9c9f04b5",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_relations():\n",
    "    import matplotlib.pyplot as plt\n",
    "    import matplotlib as mpl\n",
    "    mpl.rc('figure', max_open_warning = 0)\n",
    "    x=df_return['%5ENSEI']\n",
    "    for column in df_return.columns: #it will plot all 51 graphs \n",
    "        plt.figure()\n",
    "        plt.scatter(x, df_return[column])\n",
    "        plt.plot(x,stats['slope'][column]*x+stats['intercept'][column], color='r')\n",
    "        plt.xlabel('Nifty %Return')\n",
    "        plt.title(column[:-3])\n",
    "\n",
    "    \n",
    "#plot_relations()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "19728789",
   "metadata": {},
   "outputs": [],
   "source": [
    "#if graphs using too much ram use code below\n",
    "\n",
    "#plt.close('all')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "637a22c1",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "23cb67db",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['ratio']= stats.intercept/ stats.slope  #to minimize slope and maximize intercept, just maximize this ratio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "605fb050",
   "metadata": {},
   "outputs": [],
   "source": [
    "stats.sort_values(by='ratio', ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c1d0088a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ea647559",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bfb20700",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
