diff --git a/ffm_regression2.ipynb b/ffm_regression2.ipynb index a7f0c48..0528c9e 100644 --- a/ffm_regression2.ipynb +++ b/ffm_regression2.ipynb @@ -490,527 +490,108 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "# params" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "mkt_rf_mean = ffm_data['Mkt-RF'].mean()\n", + "smb_mean = ffm_data['SMB'].mean()\n", + "hml_mean = ffm_data['HML'].mean()\n", + "rf_mean = ffm_data['RF'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'DXC': const 0.044084\n", - " Mkt-RF 0.014316\n", - " SMB 0.000484\n", - " HML -0.010063\n", - " RF -0.502146\n", - " dtype: float64, 'BBY': const 0.011618\n", - " Mkt-RF 0.010785\n", - " SMB -0.002446\n", - " HML 0.004948\n", - " RF 0.014739\n", - " dtype: float64, 'AMG': const -0.009794\n", - " Mkt-RF 0.013841\n", - " SMB 0.001352\n", - " HML 0.003500\n", - " RF -0.158378\n", - " dtype: float64, 'CNP': const 0.009261\n", - " Mkt-RF 0.005086\n", - " SMB -0.003310\n", - " HML -0.000587\n", - " RF -0.059402\n", - " dtype: float64, 'WMT': const -0.006033\n", - " Mkt-RF 0.006974\n", - " SMB -0.008987\n", - " HML 0.000923\n", - " RF 0.100592\n", - " dtype: float64, 'MRK': const -0.001472\n", - " Mkt-RF 0.003872\n", - " SMB -0.001005\n", - " HML 0.000887\n", - " RF 0.113471\n", - " dtype: float64, 'NEM': const 0.017677\n", - " Mkt-RF -0.000929\n", - " SMB -0.001907\n", - " HML -0.000590\n", - " RF -0.027749\n", - " dtype: float64, 'VFC': const -0.013912\n", - " Mkt-RF 0.010702\n", - " SMB -0.003225\n", - " HML 0.002583\n", - " RF 0.174655\n", - " dtype: float64, 'MDT': const 0.001156\n", - " Mkt-RF 0.003145\n", - " SMB 0.000721\n", - " HML -0.005860\n", - " RF 0.047629\n", - " dtype: float64, 'HST': const -0.005229\n", - " Mkt-RF 0.008527\n", - " SMB 0.006431\n", - " HML 0.003758\n", - " RF 0.039878\n", - " dtype: float64, 'MTD': const 0.012977\n", - " Mkt-RF 0.009041\n", - " SMB 0.000086\n", - " HML -0.003380\n", - " RF -0.037960\n", - " dtype: float64, 'CCI': const 0.004798\n", - " Mkt-RF 0.003440\n", - " SMB -0.002062\n", - " HML -0.004418\n", - " RF 0.040924\n", - " dtype: float64, 'KMI': const -0.033143\n", - " Mkt-RF 0.007118\n", - " SMB 0.008747\n", - " HML 0.006294\n", - " RF 0.306089\n", - " dtype: float64, 'RMD': const 0.007331\n", - " Mkt-RF 0.002406\n", - " SMB 0.002888\n", - " HML -0.002947\n", - " RF 0.106028\n", - " dtype: float64, 'LUV': const 0.003377\n", - " Mkt-RF 0.012077\n", - " SMB 0.000186\n", - " HML 0.001531\n", - " RF -0.061939\n", - " dtype: float64, 'NWS': const -0.008709\n", - " Mkt-RF 0.008764\n", - " SMB -0.001475\n", - " HML 0.004151\n", - " RF 0.039667\n", - " dtype: float64, 'AMGN': const 0.003821\n", - " Mkt-RF 0.007101\n", - " SMB 0.000139\n", - " HML -0.001815\n", - " RF 0.015498\n", - " dtype: float64, 'APD': const -0.005260\n", - " Mkt-RF 0.005685\n", - " SMB 0.000153\n", - " HML 0.002601\n", - " RF 0.153363\n", - " dtype: float64, 'TGT': const -0.012855\n", - " Mkt-RF 0.006408\n", - " SMB -0.001338\n", - " HML 0.009985\n", - " RF 0.289292\n", - " dtype: float64, 'MYL': const -0.014301\n", - " Mkt-RF 0.015597\n", - " SMB -0.002209\n", - " HML 0.002731\n", - " RF -0.123981\n", - " dtype: float64, 'GPC': const -0.003881\n", - " Mkt-RF 0.006372\n", - " SMB 0.002369\n", - " HML 0.000531\n", - " RF 0.049280\n", - " dtype: float64, 'FCX': const -0.015272\n", - " Mkt-RF 0.018213\n", - " SMB 0.003133\n", - " HML 0.013370\n", - " RF 0.072168\n", - " dtype: float64, 'KO': const -0.002143\n", - " Mkt-RF 0.003848\n", - " SMB -0.007081\n", - " HML 0.002220\n", - " RF 0.073452\n", - " dtype: float64, 'DISCK': const -0.017725\n", - " Mkt-RF 0.011293\n", - " SMB -0.001894\n", - " HML 0.004250\n", - " RF 0.155065\n", - " dtype: float64, 'FISV': const 0.010432\n", - " Mkt-RF 0.005586\n", - " SMB 0.000074\n", - " HML -0.000966\n", - " RF 0.052237\n", - " dtype: float64, 'ACN': const 0.009604\n", - " Mkt-RF 0.009088\n", - " SMB -0.001079\n", - " HML -0.000184\n", - " RF 0.003215\n", - " dtype: float64, 'SRCL': const -0.033770\n", - " Mkt-RF 0.015727\n", - " SMB -0.005697\n", - " HML 0.001911\n", - " RF 0.139699\n", - " dtype: float64, 'IT': const 0.006223\n", - " Mkt-RF 0.009665\n", - " SMB 0.002824\n", - " HML 0.001279\n", - " RF -0.010834\n", - " dtype: float64, 'PHM': const -0.002060\n", - " Mkt-RF 0.005690\n", - " SMB 0.002974\n", - " HML 0.002909\n", - " RF 0.133151\n", - " dtype: float64, 'ALB': const 0.027065\n", - " Mkt-RF 0.009002\n", - " SMB -0.002134\n", - " HML -0.001432\n", - " RF -0.299701\n", - " dtype: float64, 'AAPL': const -0.000333\n", - " Mkt-RF 0.008603\n", - " SMB 0.001216\n", - " HML -0.000885\n", - " RF 0.136868\n", - " dtype: float64, 'EFX': const 0.003580\n", - " Mkt-RF 0.010206\n", - " SMB 0.000786\n", - " HML -0.005334\n", - " RF -0.034881\n", - " dtype: float64, 'FE': const -0.004718\n", - " Mkt-RF 0.003086\n", - " SMB -0.003257\n", - " HML 0.000904\n", - " RF 0.139241\n", - " dtype: float64, 'COST': const 0.000465\n", - " Mkt-RF 0.007507\n", - " SMB -0.005045\n", - " HML -0.000280\n", - " RF 0.087014\n", - " dtype: float64, 'GWW': const -0.004918\n", - " Mkt-RF 0.009975\n", - " SMB 0.002124\n", - " HML 0.003761\n", - " RF 0.103452\n", - " dtype: float64, 'M': const -0.015775\n", - " Mkt-RF 0.005761\n", - " SMB 0.003409\n", - " HML 0.004386\n", - " RF 0.013241\n", - " dtype: float64, 'CRM': const 0.008731\n", - " Mkt-RF 0.008360\n", - " SMB -0.003684\n", - " HML -0.005101\n", - " RF -0.018086\n", - " dtype: float64, 'LKQ': const 0.005529\n", - " Mkt-RF 0.012261\n", - " SMB 0.000052\n", - " HML 0.002170\n", - " RF -0.073565\n", - " dtype: float64, 'AON': const 0.002888\n", - " Mkt-RF 0.005162\n", - " SMB -0.000643\n", - " HML 0.001220\n", - " RF 0.086129\n", - " dtype: float64, 'PEP': const 0.000327\n", - " Mkt-RF 0.005117\n", - " SMB -0.004992\n", - " HML 0.000545\n", - " RF 0.043071\n", - " dtype: float64, 'RJF': const 0.011421\n", - " Mkt-RF 0.009882\n", - " SMB 0.005553\n", - " HML 0.005168\n", - " RF -0.066584\n", - " dtype: float64, 'ORCL': const -0.004054\n", - " Mkt-RF 0.007002\n", - " SMB -0.000324\n", - " HML 0.001136\n", - " RF 0.045454\n", - " dtype: float64, 'MHK': const 0.007895\n", - " Mkt-RF 0.008817\n", - " SMB 0.006108\n", - " HML -0.006432\n", - " RF -0.220811\n", - " dtype: float64, 'PPL': const 0.003537\n", - " Mkt-RF 0.004131\n", - " SMB -0.003598\n", - " HML -0.000120\n", - " RF -0.003918\n", - " dtype: float64, 'FMC': const 0.000849\n", - " Mkt-RF 0.009778\n", - " SMB 0.006444\n", - " HML 0.000721\n", - " RF 0.083718\n", - " dtype: float64, 'OKE': const 0.005267\n", - " Mkt-RF 0.011309\n", - " SMB 0.003897\n", - " HML 0.005191\n", - " RF 0.062432\n", - " dtype: float64, 'EQR': const -0.007276\n", - " Mkt-RF 0.004582\n", - " SMB -0.000270\n", - " HML -0.000572\n", - " RF 0.114435\n", - " dtype: float64, 'RCL': const 0.013228\n", - " Mkt-RF 0.008880\n", - " SMB 0.000107\n", - " HML -0.005161\n", - " RF -0.081836\n", - " dtype: float64, 'IRM': const -0.000457\n", - " Mkt-RF 0.006195\n", - " SMB 0.000574\n", - " HML -0.000780\n", - " RF 0.002119\n", - " dtype: float64, 'BA': const 0.014409\n", - " Mkt-RF 0.009130\n", - " SMB -0.004151\n", - " HML 0.001243\n", - " RF -0.046938\n", - " dtype: float64, 'ABC': const -0.006863\n", - " Mkt-RF 0.006851\n", - " SMB 0.000843\n", - " HML -0.000659\n", - " RF 0.018179\n", - " dtype: float64, 'GIS': const -0.004380\n", - " Mkt-RF 0.007246\n", - " SMB -0.002330\n", - " HML 0.001541\n", - " RF 0.030823\n", - " dtype: float64, 'SYF': const -0.006075\n", - " Mkt-RF 0.009812\n", - " SMB 0.005939\n", - " HML 0.004561\n", - " RF 0.076902\n", - " dtype: float64, 'BMY': const 0.003931\n", - " Mkt-RF 0.004988\n", - " SMB 0.001893\n", - " HML -0.001508\n", - " RF -0.027558\n", - " dtype: float64, 'ADBE': const 0.020920\n", - " Mkt-RF 0.007178\n", - " SMB 0.000325\n", - " HML -0.005442\n", - " RF -0.023942\n", - " dtype: float64, 'SNPS': const 0.006721\n", - " Mkt-RF 0.009365\n", - " SMB 0.000364\n", - " HML -0.000787\n", - " RF 0.067340\n", - " dtype: float64, 'BWA': const -0.015693\n", - " Mkt-RF 0.011669\n", - " SMB -0.001290\n", - " HML 0.002939\n", - " RF 0.054610\n", - " dtype: float64, 'MSI': const 0.007553\n", - " Mkt-RF 0.002965\n", - " SMB 0.003926\n", - " HML 0.002569\n", - " RF 0.113325\n", - " dtype: float64, 'COF': const -0.000024\n", - " Mkt-RF 0.009815\n", - " SMB 0.003055\n", - " HML 0.007030\n", - " RF 0.032849\n", - " dtype: float64, 'LYB': const 0.002946\n", - " Mkt-RF 0.010773\n", - " SMB 0.002719\n", - " HML 0.007748\n", - " RF -0.022470\n", - " dtype: float64, 'RTN': const 0.018067\n", - " Mkt-RF 0.006468\n", - " SMB 0.000070\n", - " HML -0.002591\n", - " RF -0.106432\n", - " dtype: float64, 'FFIV': const 0.005994\n", - " Mkt-RF 0.007165\n", - " SMB -0.002987\n", - " HML -0.000461\n", - " RF -0.096711\n", - " dtype: float64, 'HLT': const -0.001724\n", - " Mkt-RF 0.007105\n", - " SMB 0.000649\n", - " HML -0.000252\n", - " RF 0.105922\n", - " dtype: float64, 'CVS': const -0.013147\n", - " Mkt-RF 0.007440\n", - " SMB -0.004255\n", - " HML 0.000557\n", - " RF 0.053377\n", - " dtype: float64, 'NEE': const 0.009876\n", - " Mkt-RF 0.003036\n", - " SMB -0.004903\n", - " HML -0.002596\n", - " RF 0.049448\n", - " dtype: float64, 'KMX': const -0.011084\n", - " Mkt-RF 0.008134\n", - " SMB -0.000302\n", - " HML 0.004245\n", - " RF 0.148830\n", - " dtype: float64, 'INCY': const 0.009468\n", - " Mkt-RF 0.002898\n", - " SMB 0.012349\n", - " HML -0.007044\n", - " RF -0.078803\n", - " dtype: float64, 'MGM': const 0.009893\n", - " Mkt-RF 0.008628\n", - " SMB 0.000044\n", - " HML 0.001265\n", - " RF -0.066772\n", - " dtype: float64, 'AES': const -0.010604\n", - " Mkt-RF 0.007222\n", - " SMB 0.001840\n", - " HML -0.000140\n", - " RF 0.203544\n", - " dtype: float64, 'GM': const -0.001137\n", - " Mkt-RF 0.006673\n", - " SMB 0.005188\n", - " HML 0.003298\n", - " RF 0.038044\n", - " dtype: float64, 'FDX': const 0.003056\n", - " Mkt-RF 0.014099\n", - " SMB 0.000895\n", - " HML 0.001118\n", - " RF -0.161136\n", - " dtype: float64, 'ADP': const 0.002395\n", - " Mkt-RF 0.006953\n", - " SMB 0.001281\n", - " HML 0.000991\n", - " RF 0.076189\n", - " dtype: float64, 'HOLX': const 0.003988\n", - " Mkt-RF 0.005430\n", - " SMB 0.000490\n", - " HML 0.002203\n", - " RF 0.023386\n", - " dtype: float64, 'NRG': const -0.001880\n", - " Mkt-RF 0.008978\n", - " SMB 0.000116\n", - " HML -0.000759\n", - " RF 0.122943\n", - " dtype: float64, 'NBL': const -0.022186\n", - " Mkt-RF 0.013527\n", - " SMB 0.006224\n", - " HML 0.011241\n", - " RF 0.124195\n", - " dtype: float64, 'MSFT': const 0.016235\n", - " Mkt-RF 0.008616\n", - " SMB -0.006039\n", - " HML 0.002160\n", - " RF 0.024404\n", - " dtype: float64, 'COG': const -0.007068\n", - " Mkt-RF 0.005671\n", - " SMB 0.005546\n", - " HML -0.000012\n", - " RF -0.024511\n", - " dtype: float64, 'OXY': const 0.000668\n", - " Mkt-RF 0.006770\n", - " SMB 0.004906\n", - " HML 0.000280\n", - " RF -0.119982\n", - " dtype: float64, 'GOOGL': const 0.017001\n", - " Mkt-RF 0.008655\n", - " SMB -0.005652\n", - " HML -0.004354\n", - " RF -0.112348\n", - " dtype: float64, 'GS': const 0.002116\n", - " Mkt-RF 0.010287\n", - " SMB -0.000545\n", - " HML 0.009156\n", - " RF -0.011998\n", - " dtype: float64, 'HRB': const -0.001601\n", - " Mkt-RF -0.000933\n", - " SMB 0.001384\n", - " HML -0.005807\n", - " RF 0.002204\n", - " dtype: float64, 'AJG': const 0.005773\n", - " Mkt-RF 0.005152\n", - " SMB -0.001461\n", - " HML 0.001316\n", - " RF 0.063372\n", - " dtype: float64, 'CINF': const 0.008171\n", - " Mkt-RF 0.003433\n", - " SMB 0.000301\n", - " HML 0.002686\n", - " RF 0.064461\n", - " dtype: float64, 'TXN': const 0.009149\n", - " Mkt-RF 0.008972\n", - " SMB 0.000517\n", - " HML 0.001107\n", - " RF 0.015928\n", - " dtype: float64, 'ETN': const -0.003402\n", - " Mkt-RF 0.009925\n", - " SMB 0.003430\n", - " HML 0.002591\n", - " RF 0.069842\n", - " dtype: float64, 'EXPE': const 0.011834\n", - " Mkt-RF 0.004711\n", - " SMB -0.002406\n", - " HML -0.002284\n", - " RF -0.124708\n", - " dtype: float64, 'TMO': const 0.004416\n", - " Mkt-RF 0.008828\n", - " SMB -0.003270\n", - " HML -0.003582\n", - " RF 0.049478\n", - " dtype: float64, 'BSX': const 0.013161\n", - " Mkt-RF 0.003671\n", - " SMB 0.001519\n", - " HML -0.006823\n", - " RF 0.006537\n", - " dtype: float64, 'CTAS': const 0.011728\n", - " Mkt-RF 0.007174\n", - " SMB 0.003435\n", - " HML 0.000664\n", - " RF 0.067331\n", - " dtype: float64, 'WBA': const -0.000602\n", - " Mkt-RF 0.005257\n", - " SMB -0.004584\n", - " HML 0.001661\n", - " RF -0.066069\n", - " dtype: float64, 'UNH': const 0.019637\n", - " Mkt-RF 0.004734\n", - " SMB 0.002436\n", - " HML -0.001781\n", - " RF -0.053019\n", - " dtype: float64, 'HSY': const -0.003818\n", - " Mkt-RF 0.001979\n", - " SMB -0.008237\n", - " HML -0.001586\n", - " RF 0.118391\n", - " dtype: float64, 'FB': const 0.019028\n", - " Mkt-RF 0.007960\n", - " SMB 0.002441\n", - " HML -0.007226\n", - " RF -0.101468\n", - " dtype: float64, 'EIX': const 0.005195\n", - " Mkt-RF 0.000654\n", - " SMB -0.006341\n", - " HML 0.001514\n", - " RF 0.029171\n", - " dtype: float64, 'SBUX': const 0.002722\n", - " Mkt-RF 0.001933\n", - " SMB -0.001278\n", - " HML 0.001581\n", - " RF 0.115941\n", - " dtype: float64, 'MCO': const 0.003331\n", - " Mkt-RF 0.010403\n", - " SMB 0.001573\n", - " HML -0.002504\n", - " RF 0.069221\n", - " dtype: float64, 'HII': const 0.013531\n", - " Mkt-RF 0.008427\n", - " SMB -0.001972\n", - " HML 0.000003\n", - " RF -0.089757\n", - " dtype: float64, 'RL': const -0.014383\n", - " Mkt-RF 0.008577\n", - " SMB 0.006124\n", - " HML 0.004562\n", - " RF 0.143019\n", - " dtype: float64, 'LNT': const 0.006579\n", - " Mkt-RF 0.003369\n", - " SMB -0.003443\n", - " HML -0.000913\n", - " RF 0.032391\n", - " dtype: float64, 'AXP': const -0.004032\n", - " Mkt-RF 0.007708\n", - " SMB -0.001291\n", - " HML 0.004338\n", - " RF 0.101090\n", - " dtype: float64}" + "0.867758620689655" ] }, - "execution_count": 27, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "params" + "mkt_rf_mean" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.14310344827586208" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "smb_mean" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.2867241379310345" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hml_mean" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.08482758620689657" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rf_mean" + ] + }, + { + "cell_type": "code", + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1140,14 +721,65 @@ "[100 rows x 4 columns]" ] }, - "execution_count": 30, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ffm_constants = pd.DataFrame.from_dict(params, orient='index',\n", + " columns=['Mkt-RF','const', 'SMB', 'HML'])\n", + "ffm_constants" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "ffm_returns = ffm_constants['const'] + ffm_constants['Mkt-RF'] * mkt_rf_mean + ffm_constants['SMB'] * smb_mean + ffm_constants['HML'] * hml_mean + rf_mean" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ADBE 0.111459\n", + "MSFT 0.110854\n", + "CTAS 0.107810\n", + "BBY 0.105985\n", + "SNPS 0.105561\n", + "FISV 0.104805\n", + "UNH 0.104237\n", + "FB 0.103878\n", + "RMD 0.103672\n", + "AAPL 0.103650\n", + "MCO 0.103551\n", + "BSX 0.103468\n", + "BA 0.103416\n", + "MTD 0.103387\n", + "MSI 0.103268\n", + "OKE 0.103158\n", + "NEE 0.102978\n", + "ACN 0.102797\n", + "TXN 0.102722\n", + "TMO 0.102596\n", + "dtype: float64" + ] + }, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pd.DataFrame.from_dict(params, orient='index',\n", - " columns=['Mkt-RF','const', 'SMB', 'HML'])" + "ffm_returns.sort_values(ascending = False, inplace = True)\n", + "ffm_returns.head(20)" ] }, {