diff --git a/.ipynb_checkpoints/ffmreturns-checkpoint b/.ipynb_checkpoints/ffmreturns-checkpoint
new file mode 100644
index 0000000..5bced18
--- /dev/null
+++ b/.ipynb_checkpoints/ffmreturns-checkpoint
@@ -0,0 +1,100 @@
+ADBE,0.3297610282865694
+MSFT,0.3225006496044267
+CTAS,0.2859733002204454
+BBY,0.2640730920141721
+SNPS,0.25897876742285353
+FISV,0.24990297848444798
+UNH,0.24309382373184238
+FB,0.23878909384322328
+RMD,0.23631678016476249
+AAPL,0.23604932199955078
+MCO,0.23485811677381752
+BSX,0.23386062128084006
+BA,0.23323612695525472
+MTD,0.2328952696179387
+MSI,0.23146830458678086
+OKE,0.23014778207879386
+NEE,0.22798619050096225
+ACN,0.225818128420618
+TXN,0.22491230637789683
+TMO,0.22339609173340735
+GOOGL,0.21463984288683724
+DXC,0.21090615329816487
+NRG,0.20866969560486595
+CRM,0.20747020399236582
+CINF,0.19983786702761977
+RCL,0.19565944392066684
+AJG,0.19558301781587423
+RTN,0.19479613991497
+FMC,0.19386685693474592
+COST,0.1921299735178258
+NEM,0.18968579649834488
+TGT,0.1850698189348571
+ADP,0.18326947581738273
+AON,0.18316741852219454
+SBUX,0.17774496669754897
+HII,0.1723097618928521
+HLT,0.17104685108303183
+LNT,0.16624432746404136
+IT,0.16521374355769894
+PHM,0.16513204010023563
+CCI,0.16397523743042758
+AES,0.16265380753609693
+RJF,0.1550462998103735
+APD,0.15316088144652082
+AMGN,0.15174865810801244
+MRK,0.1470158610669735
+MGM,0.14633287861111777
+GWW,0.14375378284097465
+EFX,0.14091486053075086
+AXP,0.1322522270329868
+ALB,0.13220722861896406
+HOLX,0.12996771202046364
+FE,0.1299095587244921
+VFC,0.12911080366775834
+ETN,0.12899826119201457
+HSY,0.12508534205222416
+WMT,0.12505470711955646
+MDT,0.12421349008442331
+LKQ,0.12177166088583005
+CNP,0.12150168720845926
+PEP,0.11793526453693497
+COF,0.11610429860555255
+EIX,0.11470824011644254
+LUV,0.10783286161659233
+KO,0.10382014867597877
+LYB,0.1035124663018064
+GS,0.09991453877165773
+KMX,0.09928523351871378
+PPL,0.09823927431199717
+SYF,0.09183609795442904
+EQR,0.08949458007993966
+EXPE,0.0862855530385388
+GM,0.08449462028501559
+BMY,0.08317680705161642
+ORCL,0.0773501478844939
+INCY,0.07679309483980977
+GPC,0.07422802537055226
+IRM,0.07306073071186923
+FFIV,0.0649893956263632
+GIS,0.06314688753298886
+DISCK,0.06155249624087282
+HST,0.052833241856252385
+RL,0.0462670767467909
+FCX,0.03864626404421445
+NWS,0.025555928100843527
+FDX,0.024253909510178945
+ABC,0.018486985894230375
+HRB,0.0011037382541728281
+WBA,-0.00740543302934619
+BWA,-0.008936780754010469
+CVS,-0.010387316592991813
+MHK,-0.01639706077444565
+NBL,-0.0381337135963052
+KMI,-0.0385112142823507
+OXY,-0.042821393899740684
+COG,-0.050016632355008334
+SRCL,-0.08588067563687068
+M,-0.12659804983237255
+MYL,-0.13082884844793088
+AMG,-0.13879823286529672
diff --git a/.ipynb_checkpoints/selection_criteria-checkpoint.ipynb b/.ipynb_checkpoints/selection_criteria-checkpoint.ipynb
index 3f8e59f..2b53187 100644
--- a/.ipynb_checkpoints/selection_criteria-checkpoint.ipynb
+++ b/.ipynb_checkpoints/selection_criteria-checkpoint.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 72,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -15,7 +15,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 7,
"metadata": {},
"outputs": [
{
@@ -127,7 +127,7 @@
"[505 rows x 2 columns]"
]
},
- "execution_count": 5,
+ "execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
@@ -141,7 +141,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {},
"outputs": [
{
@@ -240,7 +240,7 @@
"[100 rows x 1 columns]"
]
},
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
@@ -254,7 +254,120 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " FFM Returns \n",
+ " \n",
+ " \n",
+ " Stock \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " ADBE \n",
+ " 0.329761 \n",
+ " \n",
+ " \n",
+ " MSFT \n",
+ " 0.322501 \n",
+ " \n",
+ " \n",
+ " CTAS \n",
+ " 0.285973 \n",
+ " \n",
+ " \n",
+ " BBY \n",
+ " 0.264073 \n",
+ " \n",
+ " \n",
+ " SNPS \n",
+ " 0.258979 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " COG \n",
+ " -0.050017 \n",
+ " \n",
+ " \n",
+ " SRCL \n",
+ " -0.085881 \n",
+ " \n",
+ " \n",
+ " M \n",
+ " -0.126598 \n",
+ " \n",
+ " \n",
+ " MYL \n",
+ " -0.130829 \n",
+ " \n",
+ " \n",
+ " AMG \n",
+ " -0.138798 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
100 rows × 1 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " FFM Returns\n",
+ "Stock \n",
+ "ADBE 0.329761\n",
+ "MSFT 0.322501\n",
+ "CTAS 0.285973\n",
+ "BBY 0.264073\n",
+ "SNPS 0.258979\n",
+ "... ...\n",
+ "COG -0.050017\n",
+ "SRCL -0.085881\n",
+ "M -0.126598\n",
+ "MYL -0.130829\n",
+ "AMG -0.138798\n",
+ "\n",
+ "[100 rows x 1 columns]"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# importing sharpe ratio data\n",
+ "ffm_path = Path('ffmreturns.csv')\n",
+ "ffm_df = pd.read_csv(ffm_path, index_col = 'Stock')\n",
+ "ffm_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
"metadata": {},
"outputs": [
{
@@ -405,7 +518,7 @@
"[100 rows x 5 columns]"
]
},
- "execution_count": 7,
+ "execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
@@ -419,7 +532,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 13,
"metadata": {},
"outputs": [
{
@@ -447,6 +560,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -461,6 +575,7 @@
" Accenture plc \n",
" Information Technology \n",
" 1.113858 \n",
+ " 0.225818 \n",
" 28.34 \n",
" 7.49 \n",
" 1.03 \n",
@@ -473,6 +588,7 @@
" Adobe Systems Inc \n",
" Information Technology \n",
" 0.616060 \n",
+ " 0.329761 \n",
" 63.17 \n",
" 6.01 \n",
" 1.09 \n",
@@ -485,6 +601,7 @@
" AES Corp \n",
" Utilities \n",
" 1.182641 \n",
+ " 0.162654 \n",
" 27.44 \n",
" 0.76 \n",
" 1.05 \n",
@@ -497,6 +614,7 @@
" Affiliated Managers Group Inc \n",
" Financials \n",
" 1.097986 \n",
+ " -0.138798 \n",
" 267.18 \n",
" 0.31 \n",
" 1.69 \n",
@@ -509,6 +627,7 @@
" Air Products & Chemicals Inc \n",
" Materials \n",
" 1.224824 \n",
+ " 0.153161 \n",
" 30.09 \n",
" 8.51 \n",
" 0.86 \n",
@@ -526,6 +645,7 @@
" ... \n",
" ... \n",
" ... \n",
+ " ... \n",
" \n",
" \n",
" 87 \n",
@@ -533,6 +653,7 @@
" Thermo Fisher Scientific \n",
" Health Care \n",
" 0.957237 \n",
+ " 0.223396 \n",
" 36.98 \n",
" 9.17 \n",
" 1.14 \n",
@@ -545,6 +666,7 @@
" United Health Group Inc. \n",
" Health Care \n",
" 0.892893 \n",
+ " 0.243094 \n",
" 20.86 \n",
" 14.33 \n",
" 0.69 \n",
@@ -557,6 +679,7 @@
" V.F. Corp. \n",
" Consumer Discretionary \n",
" 1.323241 \n",
+ " 0.129111 \n",
" 25.99 \n",
" 3.22 \n",
" 1.20 \n",
@@ -569,6 +692,7 @@
" Wal-Mart Stores \n",
" Consumer Staples \n",
" 1.271096 \n",
+ " 0.125055 \n",
" 23.55 \n",
" 5.00 \n",
" 0.36 \n",
@@ -581,6 +705,7 @@
" Walgreens Boots Alliance \n",
" Consumer Staples \n",
" 2.224201 \n",
+ " -0.007405 \n",
" 13.00 \n",
" 4.07 \n",
" 0.92 \n",
@@ -589,7 +714,7 @@
" \n",
" \n",
"\n",
- "92 rows × 9 columns
\n",
+ "92 rows × 10 columns
\n",
""
],
"text/plain": [
@@ -606,33 +731,46 @@
"90 WMT Wal-Mart Stores Consumer Staples \n",
"91 WBA Walgreens Boots Alliance Consumer Staples \n",
"\n",
- " sharpe ratio P/E ratio EPS beta mkt cap shares \n",
- "0 1.113858 28.34 7.49 1.03 139515576338 656946000 \n",
- "1 0.616060 63.17 6.01 1.09 185174936969 487726000 \n",
- "2 1.182641 27.44 0.76 1.05 13895280692 663893000 \n",
- "3 1.097986 267.18 0.31 1.69 4084648875 49272000 \n",
- "4 1.224824 30.09 8.51 0.86 56495776935 220678000 \n",
- ".. ... ... ... ... ... ... \n",
- "87 0.957237 36.98 9.17 1.14 136012138268 400991000 \n",
- "88 0.892893 20.86 14.33 0.69 283068652543 947415000 \n",
- "89 1.323241 25.99 3.22 1.20 33022293377 394720000 \n",
- "90 1.271096 23.55 5.00 0.36 334474559018 2837175000 \n",
- "91 2.224201 13.00 4.07 0.92 46817805348 885862000 \n",
+ " sharpe ratio FFM returns P/E ratio EPS beta mkt cap \\\n",
+ "0 1.113858 0.225818 28.34 7.49 1.03 139515576338 \n",
+ "1 0.616060 0.329761 63.17 6.01 1.09 185174936969 \n",
+ "2 1.182641 0.162654 27.44 0.76 1.05 13895280692 \n",
+ "3 1.097986 -0.138798 267.18 0.31 1.69 4084648875 \n",
+ "4 1.224824 0.153161 30.09 8.51 0.86 56495776935 \n",
+ ".. ... ... ... ... ... ... \n",
+ "87 0.957237 0.223396 36.98 9.17 1.14 136012138268 \n",
+ "88 0.892893 0.243094 20.86 14.33 0.69 283068652543 \n",
+ "89 1.323241 0.129111 25.99 3.22 1.20 33022293377 \n",
+ "90 1.271096 0.125055 23.55 5.00 0.36 334474559018 \n",
+ "91 2.224201 -0.007405 13.00 4.07 0.92 46817805348 \n",
+ "\n",
+ " shares \n",
+ "0 656946000 \n",
+ "1 487726000 \n",
+ "2 663893000 \n",
+ "3 49272000 \n",
+ "4 220678000 \n",
+ ".. ... \n",
+ "87 400991000 \n",
+ "88 947415000 \n",
+ "89 394720000 \n",
+ "90 2837175000 \n",
+ "91 885862000 \n",
"\n",
- "[92 rows x 9 columns]"
+ "[92 rows x 10 columns]"
]
},
- "execution_count": 16,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# concatenating the datasets and dropping nulls\n",
- "merged_df = pd.concat([sp500_df,sharpe_df,stock_data_df], axis='columns', join='inner')\n",
+ "merged_df = pd.concat([sp500_df,sharpe_df,ffm_df,stock_data_df], axis='columns', join='inner')\n",
"merged_df.dropna(inplace=True)\n",
"merged_df.reset_index(inplace=True)\n",
- "merged_df.columns = ['ticker','name','sector','sharpe ratio','P/E ratio','EPS','beta','mkt cap','shares']\n",
+ "merged_df.columns = ['ticker','name','sector','sharpe ratio','FFM returns','P/E ratio','EPS','beta','mkt cap','shares']\n",
"merged_df"
]
},
@@ -719,7 +857,43 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0, 0.5, 'FFM Returns')"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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gx/8YL7//e/nkEMOyb3vfe8ceOCBOf/883PmmWfmlFNOyQte8ILsu++++f73v5+DDjrohpngF198cSYmJpIkJ5xwQo466qgcdthhefjDH57TTz89Bx10UI488sjc7W53yxOf+MS01pIk69aty1577ZV99tknz3/+8xf8vM3cBgAAAABYQX71q19l3333TZLsvvvuOemkk5IkX/jCF25YftRRR+VFL3pRkmSHHXbI7W9/+3zrW9/Khz/84TzucY/L29/+9mm3v2bNmnzxi19Mkjz0oQ/NG9/4xuyxxx75yle+kmc/+9n5zGc+k8MPPzyHHnpojjzyyFnr/dKXvpRvfvOb2WmnnXL66afn61//es4999zc9ra3zQMe8ICcccYZ2WuvvXLSSSfl/PPPT1Xl0ksvXdBrlAi3AQAAAABWlFFtSZJM25YkSY4++uiceOKJ+cQnPpHTTjttxnD7cY97XJLkyiuvzJlnnpmjjjrqhnVXX331vOt92MMelp122umG2wcccEB23XXXJLmhZ/h973vfrFmzJs94xjOydu3aHHroofN+nKm0JQEAAAAA6LnDDjss73rXu7Lbbrtlhx12mHHszW52syTJ9ddfn1vc4hY555xzbricd955I++zevXqXH/99UmSq666auT2Jt3kJje54fqqVatu6MX91a9+NUcccUROPvnkHHLIIfN+jlMJtwEAAAAAem777bfPy1/+8htalczFDjvskN133z0f/OAHkySttXzjG99Iktz85jfPFVdcccPYiYmJnH322Um6E1bO15VXXpnLLrssv/M7v5PXvva1I2emz5dwGwAAAABgC3D00Udnv/32m9d93vOe9+Stb31r7nnPe+bud7/7DSemPProo/PKV74y97rXvfL9738/z3/+8/Mv//Ivuf/975+LL7543rVdccUVOfTQQ7PPPvvkQQ96UF7zmtfMextT1eSZKrcm+++/f5s8sycAAAAAwKTzzjsve+6553KXsVUa9dpX1dmttf1HjTdzGwAAAACA3hFuAwAAAADQO8JtAAAAAAB6R7gNAAAAADBkazxP4XLbnNdcuA0AAAAAMLBmzZpccsklAu4l1FrLJZdckjVr1szrfqsXqR4AAAAAgN7Zdddds2HDhlx00UXLXcpWZc2aNdl1113ndR/h9gJNrDt1xvXrj1+7RJUAAAAAAAu17bbb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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plotting returns\n",
+ "merged_df.plot(x='ticker',y='FFM returns', kind='bar', figsize=(25,10))\n",
+ "plt.suptitle('FFM Returns in Investment Universe', fontsize=30)\n",
+ "plt.xlabel('Company Ticker',fontsize=20)\n",
+ "plt.ylabel('FFM Returns',fontsize=20)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -732,9 +906,60 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 16,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:4: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " after removing the cwd from sys.path.\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:8: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:12: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " if sys.path[0] == '':\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:16: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " app.launch_new_instance()\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:20: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:28: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:32: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:36: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:40: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
+ ]
+ }
+ ],
"source": [
"# creating datasets for each sector\n",
"cd_mask = merged_df['sector'] == 'Consumer Discretionary'\n",
@@ -780,7 +1005,7 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -808,6 +1033,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -822,6 +1048,7 @@
" Genuine Parts \n",
" Consumer Discretionary \n",
" 2.924464 \n",
+ " 0.074228 \n",
" 17.71 \n",
" 5.45 \n",
" 0.89 \n",
@@ -834,6 +1061,7 @@
" Expedia Inc. \n",
" Consumer Discretionary \n",
" 2.407311 \n",
+ " 0.086286 \n",
" 32.58 \n",
" 3.77 \n",
" 1.01 \n",
@@ -846,6 +1074,7 @@
" Discovery Communications-C \n",
" Consumer Discretionary \n",
" 2.309659 \n",
+ " 0.061552 \n",
" 11.10 \n",
" 2.59 \n",
" 1.45 \n",
@@ -858,6 +1087,7 @@
" LKQ Corporation \n",
" Consumer Discretionary \n",
" 2.216066 \n",
+ " 0.121772 \n",
" 23.73 \n",
" 1.40 \n",
" 1.30 \n",
@@ -870,6 +1100,7 @@
" General Motors \n",
" Consumer Discretionary \n",
" 1.903721 \n",
+ " 0.084495 \n",
" 7.60 \n",
" 4.57 \n",
" 1.38 \n",
@@ -882,6 +1113,7 @@
" Carmax Inc \n",
" Consumer Discretionary \n",
" 1.703158 \n",
+ " 0.099285 \n",
" 19.16 \n",
" 5.16 \n",
" 1.10 \n",
@@ -894,6 +1126,7 @@
" Polo Ralph Lauren Corp. \n",
" Consumer Discretionary \n",
" 1.685028 \n",
+ " 0.046267 \n",
" 14.16 \n",
" 8.61 \n",
" 0.90 \n",
@@ -906,6 +1139,7 @@
" BorgWarner \n",
" Consumer Discretionary \n",
" 1.682271 \n",
+ " -0.008937 \n",
" 9.20 \n",
" 3.71 \n",
" 1.91 \n",
@@ -918,6 +1152,7 @@
" Starbucks Corp. \n",
" Consumer Discretionary \n",
" 1.388488 \n",
+ " 0.177745 \n",
" 29.15 \n",
" 3.06 \n",
" 0.56 \n",
@@ -930,6 +1165,7 @@
" Royal Caribbean Cruises Ltd \n",
" Consumer Discretionary \n",
" 1.347063 \n",
+ " 0.195659 \n",
" 12.55 \n",
" 9.02 \n",
" 1.44 \n",
@@ -942,6 +1178,7 @@
" Target Corp. \n",
" Consumer Discretionary \n",
" 1.340882 \n",
+ " 0.185070 \n",
" 18.64 \n",
" 6.26 \n",
" 0.56 \n",
@@ -954,6 +1191,7 @@
" V.F. Corp. \n",
" Consumer Discretionary \n",
" 1.323241 \n",
+ " 0.129111 \n",
" 25.99 \n",
" 3.22 \n",
" 1.20 \n",
@@ -966,6 +1204,7 @@
" Mohawk Industries \n",
" Consumer Discretionary \n",
" 1.255168 \n",
+ " -0.016397 \n",
" 13.40 \n",
" 10.30 \n",
" 1.36 \n",
@@ -978,6 +1217,7 @@
" Pulte Homes Inc. \n",
" Consumer Discretionary \n",
" 1.125225 \n",
+ " 0.165132 \n",
" 12.77 \n",
" 3.66 \n",
" 0.56 \n",
@@ -990,6 +1230,7 @@
" Hilton Worldwide Holdings Inc \n",
" Consumer Discretionary \n",
" 1.059899 \n",
+ " 0.171047 \n",
" 37.27 \n",
" 3.04 \n",
" 1.14 \n",
@@ -1002,6 +1243,7 @@
" Macy's Inc. \n",
" Consumer Discretionary \n",
" 0.826483 \n",
+ " -0.126598 \n",
" 5.39 \n",
" 3.09 \n",
" 0.66 \n",
@@ -1014,6 +1256,7 @@
" Best Buy Co. Inc. \n",
" Consumer Discretionary \n",
" 0.823915 \n",
+ " 0.264073 \n",
" 15.98 \n",
" 5.64 \n",
" 1.12 \n",
@@ -1044,27 +1287,46 @@
"56 M Macy's Inc. Consumer Discretionary \n",
"15 BBY Best Buy Co. Inc. Consumer Discretionary \n",
"\n",
- " sharpe ratio P/E ratio EPS beta mkt cap shares \n",
- "44 2.924464 17.71 5.45 0.89 14016415887 145293000 \n",
- "33 2.407311 32.58 3.77 1.01 17792025802 139363000 \n",
- "30 2.309659 11.10 2.59 1.45 15392873644 360664000 \n",
- "54 2.216066 23.73 1.40 1.30 10174538633 306462000 \n",
- "43 1.903721 7.60 4.57 1.38 49672072361 1429002000 \n",
- "22 1.703158 19.16 5.16 1.10 16144071451 163385000 \n",
- "72 1.685028 14.16 8.61 0.90 8984857815 48862000 \n",
- "17 1.682271 9.20 3.71 1.91 7048901814 206410000 \n",
- "81 1.388488 29.15 3.06 0.56 104787934567 1173700000 \n",
- "78 1.347063 12.55 9.02 1.44 23627921924 208801000 \n",
- "84 1.340882 18.64 6.26 0.56 59100734918 506737000 \n",
- "89 1.323241 25.99 3.22 1.20 33022293377 394720000 \n",
- "61 1.255168 13.40 10.30 1.36 9882403253 71622000 \n",
- "74 1.125225 12.77 3.66 0.56 12605132379 269975000 \n",
- "47 1.059899 37.27 3.04 1.14 31415437971 277448000 \n",
- "56 0.826483 5.39 3.09 0.66 5150446573 308965000 \n",
- "15 0.823915 15.98 5.64 1.12 23344272933 258777000 "
+ " sharpe ratio FFM returns P/E ratio EPS beta mkt cap \\\n",
+ "44 2.924464 0.074228 17.71 5.45 0.89 14016415887 \n",
+ "33 2.407311 0.086286 32.58 3.77 1.01 17792025802 \n",
+ "30 2.309659 0.061552 11.10 2.59 1.45 15392873644 \n",
+ "54 2.216066 0.121772 23.73 1.40 1.30 10174538633 \n",
+ "43 1.903721 0.084495 7.60 4.57 1.38 49672072361 \n",
+ "22 1.703158 0.099285 19.16 5.16 1.10 16144071451 \n",
+ "72 1.685028 0.046267 14.16 8.61 0.90 8984857815 \n",
+ "17 1.682271 -0.008937 9.20 3.71 1.91 7048901814 \n",
+ "81 1.388488 0.177745 29.15 3.06 0.56 104787934567 \n",
+ "78 1.347063 0.195659 12.55 9.02 1.44 23627921924 \n",
+ "84 1.340882 0.185070 18.64 6.26 0.56 59100734918 \n",
+ "89 1.323241 0.129111 25.99 3.22 1.20 33022293377 \n",
+ "61 1.255168 -0.016397 13.40 10.30 1.36 9882403253 \n",
+ "74 1.125225 0.165132 12.77 3.66 0.56 12605132379 \n",
+ "47 1.059899 0.171047 37.27 3.04 1.14 31415437971 \n",
+ "56 0.826483 -0.126598 5.39 3.09 0.66 5150446573 \n",
+ "15 0.823915 0.264073 15.98 5.64 1.12 23344272933 \n",
+ "\n",
+ " shares \n",
+ "44 145293000 \n",
+ "33 139363000 \n",
+ "30 360664000 \n",
+ "54 306462000 \n",
+ "43 1429002000 \n",
+ "22 163385000 \n",
+ "72 48862000 \n",
+ "17 206410000 \n",
+ "81 1173700000 \n",
+ "78 208801000 \n",
+ "84 506737000 \n",
+ "89 394720000 \n",
+ "61 71622000 \n",
+ "74 269975000 \n",
+ "47 277448000 \n",
+ "56 308965000 \n",
+ "15 258777000 "
]
},
- "execution_count": 49,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
@@ -1077,7 +1339,7 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
@@ -1105,6 +1367,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1119,6 +1382,7 @@
" General Mills \n",
" Consumer Staples \n",
" 2.641281 \n",
+ " 0.063147 \n",
" 15.34 \n",
" 3.48 \n",
" 0.73 \n",
@@ -1131,6 +1395,7 @@
" Walgreens Boots Alliance \n",
" Consumer Staples \n",
" 2.224201 \n",
+ " -0.007405 \n",
" 13.00 \n",
" 4.07 \n",
" 0.92 \n",
@@ -1143,6 +1408,7 @@
" Coca-Cola Company (The) \n",
" Consumer Staples \n",
" 2.197158 \n",
+ " 0.103820 \n",
" 28.99 \n",
" 2.07 \n",
" 0.41 \n",
@@ -1155,6 +1421,7 @@
" PepsiCo Inc. \n",
" Consumer Staples \n",
" 1.951250 \n",
+ " 0.117935 \n",
" 28.31 \n",
" 5.19 \n",
" 0.53 \n",
@@ -1167,6 +1434,7 @@
" CVS Health \n",
" Consumer Staples \n",
" 1.707963 \n",
+ " -0.010387 \n",
" 14.05 \n",
" 5.08 \n",
" 0.93 \n",
@@ -1179,6 +1447,7 @@
" The Hershey Company \n",
" Consumer Staples \n",
" 1.469682 \n",
+ " 0.125085 \n",
" 29.33 \n",
" 5.47 \n",
" 0.02 \n",
@@ -1191,6 +1460,7 @@
" Wal-Mart Stores \n",
" Consumer Staples \n",
" 1.271096 \n",
+ " 0.125055 \n",
" 23.55 \n",
" 5.00 \n",
" 0.36 \n",
@@ -1203,6 +1473,7 @@
" Costco Wholesale Corp. \n",
" Consumer Staples \n",
" 1.060644 \n",
+ " 0.192130 \n",
" 37.75 \n",
" 8.43 \n",
" 0.90 \n",
@@ -1224,18 +1495,18 @@
"90 WMT Wal-Mart Stores Consumer Staples 1.271096 \n",
"27 COST Costco Wholesale Corp. Consumer Staples 1.060644 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "42 15.34 3.48 0.73 32242795100 604817000 \n",
- "91 13.00 4.07 0.92 46817805348 885862000 \n",
- "26 28.99 2.07 0.41 256586003265 4280000000 \n",
- "71 28.31 5.19 0.53 204968008309 1389545000 \n",
- "29 14.05 5.08 0.93 92849804253 1300964000 \n",
- "86 29.33 5.47 0.02 23779704176 148308000 \n",
- "90 23.55 5.00 0.36 334474559018 2837175000 \n",
- "27 37.75 8.43 0.90 140615987901 441758000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "42 0.063147 15.34 3.48 0.73 32242795100 604817000 \n",
+ "91 -0.007405 13.00 4.07 0.92 46817805348 885862000 \n",
+ "26 0.103820 28.99 2.07 0.41 256586003265 4280000000 \n",
+ "71 0.117935 28.31 5.19 0.53 204968008309 1389545000 \n",
+ "29 -0.010387 14.05 5.08 0.93 92849804253 1300964000 \n",
+ "86 0.125085 29.33 5.47 0.02 23779704176 148308000 \n",
+ "90 0.125055 23.55 5.00 0.36 334474559018 2837175000 \n",
+ "27 0.192130 37.75 8.43 0.90 140615987901 441758000 "
]
},
- "execution_count": 40,
+ "execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
@@ -1248,7 +1519,7 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": 19,
"metadata": {},
"outputs": [
{
@@ -1276,6 +1547,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1290,6 +1562,7 @@
" Occidental Petroleum \n",
" Energy \n",
" 2.054771 \n",
+ " -0.042821 \n",
" 29.53 \n",
" 1.41 \n",
" 0.90 \n",
@@ -1302,6 +1575,7 @@
" Cabot Oil & Gas \n",
" Energy \n",
" 1.952983 \n",
+ " -0.050017 \n",
" 7.80 \n",
" 1.90 \n",
" 0.47 \n",
@@ -1314,6 +1588,7 @@
" Kinder Morgan \n",
" Energy \n",
" 1.038470 \n",
+ " -0.038511 \n",
" 22.87 \n",
" 0.96 \n",
" 0.81 \n",
@@ -1326,6 +1601,7 @@
" ONEOK \n",
" Energy \n",
" 0.917326 \n",
+ " 0.230148 \n",
" 25.56 \n",
" 3.01 \n",
" 1.11 \n",
@@ -1337,20 +1613,20 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio EPS beta \\\n",
- "68 OXY Occidental Petroleum Energy 2.054771 29.53 1.41 0.90 \n",
- "20 COG Cabot Oil & Gas Energy 1.952983 7.80 1.90 0.47 \n",
- "53 KMI Kinder Morgan Energy 1.038470 22.87 0.96 0.81 \n",
- "69 OKE ONEOK Energy 0.917326 25.56 3.01 1.11 \n",
+ " ticker name sector sharpe ratio FFM returns P/E ratio \\\n",
+ "68 OXY Occidental Petroleum Energy 2.054771 -0.042821 29.53 \n",
+ "20 COG Cabot Oil & Gas Energy 1.952983 -0.050017 7.80 \n",
+ "53 KMI Kinder Morgan Energy 1.038470 -0.038511 22.87 \n",
+ "69 OKE ONEOK Energy 0.917326 0.230148 25.56 \n",
"\n",
- " mkt cap shares \n",
- "68 37161985836 893317000 \n",
- "20 6037284157 407925000 \n",
- "53 49831386000 2265063000 \n",
- "69 31799253894 413085000 "
+ " EPS beta mkt cap shares \n",
+ "68 1.41 0.90 37161985836 893317000 \n",
+ "20 1.90 0.47 6037284157 407925000 \n",
+ "53 0.96 0.81 49831386000 2265063000 \n",
+ "69 3.01 1.11 31799253894 413085000 "
]
},
- "execution_count": 41,
+ "execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
@@ -1363,7 +1639,7 @@
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
@@ -1391,6 +1667,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1405,6 +1682,7 @@
" Synchrony Financial \n",
" Financials \n",
" 2.493336 \n",
+ " 0.091836 \n",
" 6.07 \n",
" 5.56 \n",
" 1.21 \n",
@@ -1417,6 +1695,7 @@
" Block H&R \n",
" Financials \n",
" 2.210675 \n",
+ " 0.001104 \n",
" 11.75 \n",
" 1.90 \n",
" 0.23 \n",
@@ -1429,6 +1708,7 @@
" Capital One Financial \n",
" Financials \n",
" 2.034764 \n",
+ " 0.116104 \n",
" 9.31 \n",
" 11.02 \n",
" 1.25 \n",
@@ -1441,6 +1721,7 @@
" Goldman Sachs Group \n",
" Financials \n",
" 1.828821 \n",
+ " 0.099915 \n",
" 11.27 \n",
" 21.03 \n",
" 1.32 \n",
@@ -1453,6 +1734,7 @@
" Raymond James Financial Inc. \n",
" Financials \n",
" 1.281138 \n",
+ " 0.155046 \n",
" 13.44 \n",
" 7.36 \n",
" 1.50 \n",
@@ -1465,6 +1747,7 @@
" American Express Co \n",
" Financials \n",
" 1.214408 \n",
+ " 0.132252 \n",
" 17.01 \n",
" 7.99 \n",
" 0.99 \n",
@@ -1477,6 +1760,7 @@
" Cincinnati Financial \n",
" Financials \n",
" 1.121374 \n",
+ " 0.199838 \n",
" 9.52 \n",
" 12.10 \n",
" 0.57 \n",
@@ -1489,6 +1773,7 @@
" Aon plc \n",
" Financials \n",
" 1.104319 \n",
+ " 0.183167 \n",
" 37.00 \n",
" 6.37 \n",
" 0.83 \n",
@@ -1501,6 +1786,7 @@
" Affiliated Managers Group Inc \n",
" Financials \n",
" 1.097986 \n",
+ " -0.138798 \n",
" 267.18 \n",
" 0.31 \n",
" 1.69 \n",
@@ -1513,6 +1799,7 @@
" Arthur J. Gallagher & Co. \n",
" Financials \n",
" 0.967112 \n",
+ " 0.195583 \n",
" 31.03 \n",
" 3.52 \n",
" 0.76 \n",
@@ -1525,6 +1812,7 @@
" Moody's Corp \n",
" Financials \n",
" 0.927984 \n",
+ " 0.234858 \n",
" 37.43 \n",
" 7.42 \n",
" 1.21 \n",
@@ -1536,34 +1824,34 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio \\\n",
- "82 SYF Synchrony Financial Financials 2.493336 6.07 \n",
- "16 HRB Block H&R Financials 2.210675 11.75 \n",
- "21 COF Capital One Financial Financials 2.034764 9.31 \n",
- "45 GS Goldman Sachs Group Financials 1.828821 11.27 \n",
- "75 RJF Raymond James Financial Inc. Financials 1.281138 13.44 \n",
- "8 AXP American Express Co Financials 1.214408 17.01 \n",
- "24 CINF Cincinnati Financial Financials 1.121374 9.52 \n",
- "11 AON Aon plc Financials 1.104319 37.00 \n",
- "3 AMG Affiliated Managers Group Inc Financials 1.097986 267.18 \n",
- "13 AJG Arthur J. Gallagher & Co. Financials 0.967112 31.03 \n",
- "62 MCO Moody's Corp Financials 0.927984 37.43 \n",
+ " ticker name sector sharpe ratio \\\n",
+ "82 SYF Synchrony Financial Financials 2.493336 \n",
+ "16 HRB Block H&R Financials 2.210675 \n",
+ "21 COF Capital One Financial Financials 2.034764 \n",
+ "45 GS Goldman Sachs Group Financials 1.828821 \n",
+ "75 RJF Raymond James Financial Inc. Financials 1.281138 \n",
+ "8 AXP American Express Co Financials 1.214408 \n",
+ "24 CINF Cincinnati Financial Financials 1.121374 \n",
+ "11 AON Aon plc Financials 1.104319 \n",
+ "3 AMG Affiliated Managers Group Inc Financials 1.097986 \n",
+ "13 AJG Arthur J. Gallagher & Co. Financials 0.967112 \n",
+ "62 MCO Moody's Corp Financials 0.927984 \n",
"\n",
- " EPS beta mkt cap shares \n",
- "82 5.56 1.21 20704848750 613477000 \n",
- "16 1.90 0.23 4369605316 195246000 \n",
- "21 11.02 1.25 46865423721 456600000 \n",
- "45 21.03 1.32 83946946608 354087000 \n",
- "75 7.36 1.50 13782151374 139284000 \n",
- "8 7.99 0.99 111178449600 808041000 \n",
- "24 12.10 0.57 18822318390 163374000 \n",
- "11 6.37 0.83 54701475530 234137000 \n",
- "3 0.31 1.69 4084648875 49272000 \n",
- "13 3.52 0.76 20549043209 188247000 \n",
- "62 7.42 1.21 52148688479 187700000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "82 0.091836 6.07 5.56 1.21 20704848750 613477000 \n",
+ "16 0.001104 11.75 1.90 0.23 4369605316 195246000 \n",
+ "21 0.116104 9.31 11.02 1.25 46865423721 456600000 \n",
+ "45 0.099915 11.27 21.03 1.32 83946946608 354087000 \n",
+ "75 0.155046 13.44 7.36 1.50 13782151374 139284000 \n",
+ "8 0.132252 17.01 7.99 0.99 111178449600 808041000 \n",
+ "24 0.199838 9.52 12.10 0.57 18822318390 163374000 \n",
+ "11 0.183167 37.00 6.37 0.83 54701475530 234137000 \n",
+ "3 -0.138798 267.18 0.31 1.69 4084648875 49272000 \n",
+ "13 0.195583 31.03 3.52 0.76 20549043209 188247000 \n",
+ "62 0.234858 37.43 7.42 1.21 52148688479 187700000 "
]
},
- "execution_count": 42,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
@@ -1576,7 +1864,7 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
@@ -1604,6 +1892,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1618,6 +1907,7 @@
" AmerisourceBergen Corp \n",
" Health Care \n",
" 2.824204 \n",
+ " 0.018487 \n",
" 30.62 \n",
" 3.08 \n",
" 1.01 \n",
@@ -1630,6 +1920,7 @@
" Bristol-Myers Squibb \n",
" Health Care \n",
" 2.688515 \n",
+ " 0.083177 \n",
" 33.05 \n",
" 2.01 \n",
" 0.76 \n",
@@ -1642,6 +1933,7 @@
" Hologic \n",
" Health Care \n",
" 2.425412 \n",
+ " 0.129968 \n",
" 173.01 \n",
" 0.31 \n",
" 0.85 \n",
@@ -1654,6 +1946,7 @@
" Medtronic plc \n",
" Health Care \n",
" 1.917921 \n",
+ " 0.124213 \n",
" 33.97 \n",
" 3.45 \n",
" 0.60 \n",
@@ -1666,6 +1959,7 @@
" Amgen Inc \n",
" Health Care \n",
" 1.861649 \n",
+ " 0.151749 \n",
" 17.36 \n",
" 12.88 \n",
" 1.12 \n",
@@ -1678,6 +1972,7 @@
" Merck & Co. \n",
" Health Care \n",
" 1.368058 \n",
+ " 0.147016 \n",
" 21.52 \n",
" 3.84 \n",
" 0.57 \n",
@@ -1690,6 +1985,7 @@
" Incyte \n",
" Health Care \n",
" 1.268258 \n",
+ " 0.076793 \n",
" 38.21 \n",
" 2.05 \n",
" 1.06 \n",
@@ -1702,6 +1998,7 @@
" Mettler Toledo \n",
" Health Care \n",
" 0.969242 \n",
+ " 0.232895 \n",
" 33.97 \n",
" 22.47 \n",
" 1.39 \n",
@@ -1714,6 +2011,7 @@
" Thermo Fisher Scientific \n",
" Health Care \n",
" 0.957237 \n",
+ " 0.223396 \n",
" 36.98 \n",
" 9.17 \n",
" 1.14 \n",
@@ -1726,6 +2024,7 @@
" Boston Scientific \n",
" Health Care \n",
" 0.933787 \n",
+ " 0.233861 \n",
" 12.70 \n",
" 3.33 \n",
" 0.87 \n",
@@ -1738,6 +2037,7 @@
" Mylan N.V. \n",
" Health Care \n",
" 0.893280 \n",
+ " -0.130829 \n",
" 239.58 \n",
" 0.09 \n",
" 1.72 \n",
@@ -1750,6 +2050,7 @@
" United Health Group Inc. \n",
" Health Care \n",
" 0.892893 \n",
+ " 0.243094 \n",
" 20.86 \n",
" 14.33 \n",
" 0.69 \n",
@@ -1762,6 +2063,7 @@
" ResMed \n",
" Health Care \n",
" 0.834963 \n",
+ " 0.236317 \n",
" 56.31 \n",
" 3.14 \n",
" 0.48 \n",
@@ -1773,38 +2075,38 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio \\\n",
- "9 ABC AmerisourceBergen Corp Health Care 2.824204 30.62 \n",
- "19 BMY Bristol-Myers Squibb Health Care 2.688515 33.05 \n",
- "48 HOLX Hologic Health Care 2.425412 173.01 \n",
- "57 MDT Medtronic plc Health Care 1.917921 33.97 \n",
- "10 AMGN Amgen Inc Health Care 1.861649 17.36 \n",
- "58 MRK Merck & Co. Health Care 1.368058 21.52 \n",
- "51 INCY Incyte Health Care 1.268258 38.21 \n",
- "59 MTD Mettler Toledo Health Care 0.969242 33.97 \n",
- "87 TMO Thermo Fisher Scientific Health Care 0.957237 36.98 \n",
- "18 BSX Boston Scientific Health Care 0.933787 12.70 \n",
- "64 MYL Mylan N.V. Health Care 0.893280 239.58 \n",
- "88 UNH United Health Group Inc. Health Care 0.892893 20.86 \n",
- "77 RMD ResMed Health Care 0.834963 56.31 \n",
+ " ticker name sector sharpe ratio FFM returns \\\n",
+ "9 ABC AmerisourceBergen Corp Health Care 2.824204 0.018487 \n",
+ "19 BMY Bristol-Myers Squibb Health Care 2.688515 0.083177 \n",
+ "48 HOLX Hologic Health Care 2.425412 0.129968 \n",
+ "57 MDT Medtronic plc Health Care 1.917921 0.124213 \n",
+ "10 AMGN Amgen Inc Health Care 1.861649 0.151749 \n",
+ "58 MRK Merck & Co. Health Care 1.368058 0.147016 \n",
+ "51 INCY Incyte Health Care 1.268258 0.076793 \n",
+ "59 MTD Mettler Toledo Health Care 0.969242 0.232895 \n",
+ "87 TMO Thermo Fisher Scientific Health Care 0.957237 0.223396 \n",
+ "18 BSX Boston Scientific Health Care 0.933787 0.233861 \n",
+ "64 MYL Mylan N.V. Health Care 0.893280 -0.130829 \n",
+ "88 UNH United Health Group Inc. Health Care 0.892893 0.243094 \n",
+ "77 RMD ResMed Health Care 0.834963 0.236317 \n",
"\n",
- " EPS beta mkt cap shares \n",
- "9 3.08 1.01 19427969245 205892000 \n",
- "19 2.01 0.76 155607591281 2344185000 \n",
- "48 0.31 0.85 13960272160 263302000 \n",
- "57 3.45 0.60 157266553194 1340378000 \n",
- "10 12.88 1.12 131810065840 589807000 \n",
- "58 3.84 0.57 210425581484 2545984000 \n",
- "51 2.05 1.06 17006076538 216776000 \n",
- "59 22.47 1.39 18357249893 24053000 \n",
- "87 9.17 1.14 136012138268 400991000 \n",
- "18 3.33 0.87 58972695354 1393824000 \n",
- "64 0.09 1.72 11303303743 516177000 \n",
- "88 14.33 0.69 283068652543 947415000 \n",
- "77 3.14 0.48 25539363082 144617000 "
+ " P/E ratio EPS beta mkt cap shares \n",
+ "9 30.62 3.08 1.01 19427969245 205892000 \n",
+ "19 33.05 2.01 0.76 155607591281 2344185000 \n",
+ "48 173.01 0.31 0.85 13960272160 263302000 \n",
+ "57 33.97 3.45 0.60 157266553194 1340378000 \n",
+ "10 17.36 12.88 1.12 131810065840 589807000 \n",
+ "58 21.52 3.84 0.57 210425581484 2545984000 \n",
+ "51 38.21 2.05 1.06 17006076538 216776000 \n",
+ "59 33.97 22.47 1.39 18357249893 24053000 \n",
+ "87 36.98 9.17 1.14 136012138268 400991000 \n",
+ "18 12.70 3.33 0.87 58972695354 1393824000 \n",
+ "64 239.58 0.09 1.72 11303303743 516177000 \n",
+ "88 20.86 14.33 0.69 283068652543 947415000 \n",
+ "77 56.31 3.14 0.48 25539363082 144617000 "
]
},
- "execution_count": 43,
+ "execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
@@ -1817,7 +2119,7 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
@@ -1845,6 +2147,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1859,6 +2162,7 @@
" Southwest Airlines \n",
" Industrials \n",
" 1.726576 \n",
+ " 0.107833 \n",
" 13.77 \n",
" 4.21 \n",
" 1.47 \n",
@@ -1871,6 +2175,7 @@
" Eaton Corporation \n",
" Industrials \n",
" 1.604766 \n",
+ " 0.128998 \n",
" 19.71 \n",
" 5.25 \n",
" 1.42 \n",
@@ -1883,6 +2188,7 @@
" FedEx Corporation \n",
" Industrials \n",
" 1.509820 \n",
+ " 0.024254 \n",
" 583.74 \n",
" 0.27 \n",
" 1.71 \n",
@@ -1895,6 +2201,7 @@
" Grainger (W.W.) Inc. \n",
" Industrials \n",
" 1.358110 \n",
+ " 0.143754 \n",
" 17.94 \n",
" 17.15 \n",
" 0.97 \n",
@@ -1907,6 +2214,7 @@
" Raytheon Co. \n",
" Industrials \n",
" 1.158338 \n",
+ " 0.194796 \n",
" 19.05 \n",
" 11.93 \n",
" 0.85 \n",
@@ -1919,6 +2227,7 @@
" Huntington Ingalls Industries \n",
" Industrials \n",
" 1.154338 \n",
+ " 0.172310 \n",
" 18.57 \n",
" 13.26 \n",
" 1.24 \n",
@@ -1931,6 +2240,7 @@
" Cintas Corporation \n",
" Industrials \n",
" 0.703186 \n",
+ " 0.285973 \n",
" 35.38 \n",
" 8.51 \n",
" 0.99 \n",
@@ -1951,17 +2261,17 @@
"50 HII Huntington Ingalls Industries Industrials 1.154338 \n",
"25 CTAS Cintas Corporation Industrials 0.703186 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "80 13.77 4.21 1.47 29987649751 517296000 \n",
- "31 19.71 5.25 1.42 42807571261 413400000 \n",
- "36 583.74 0.27 1.71 41418694505 261119000 \n",
- "46 17.94 17.15 0.97 16517112872 53688000 \n",
- "76 19.05 11.93 0.85 63256224340 278441000 \n",
- "50 18.57 13.26 1.24 10035519873 40760000 \n",
- "25 35.38 8.51 0.99 31216601386 103751000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "80 0.107833 13.77 4.21 1.47 29987649751 517296000 \n",
+ "31 0.128998 19.71 5.25 1.42 42807571261 413400000 \n",
+ "36 0.024254 583.74 0.27 1.71 41418694505 261119000 \n",
+ "46 0.143754 17.94 17.15 0.97 16517112872 53688000 \n",
+ "76 0.194796 19.05 11.93 0.85 63256224340 278441000 \n",
+ "50 0.172310 18.57 13.26 1.24 10035519873 40760000 \n",
+ "25 0.285973 35.38 8.51 0.99 31216601386 103751000 "
]
},
- "execution_count": 44,
+ "execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@@ -1974,7 +2284,7 @@
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": 23,
"metadata": {},
"outputs": [
{
@@ -2002,6 +2312,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2016,6 +2327,7 @@
" Oracle Corp. \n",
" Information Technology \n",
" 1.949619 \n",
+ " 0.077350 \n",
" 17.61 \n",
" 3.15 \n",
" 1.11 \n",
@@ -2028,6 +2340,7 @@
" F5 Networks \n",
" Information Technology \n",
" 1.701382 \n",
+ " 0.064989 \n",
" 19.49 \n",
" 6.54 \n",
" 0.98 \n",
@@ -2040,6 +2353,7 @@
" Gartner Inc \n",
" Information Technology \n",
" 1.337328 \n",
+ " 0.165214 \n",
" 59.34 \n",
" 2.57 \n",
" 1.21 \n",
@@ -2052,6 +2366,7 @@
" Alphabet Inc Class A \n",
" Information Technology \n",
" 1.198026 \n",
+ " 0.214640 \n",
" 30.89 \n",
" 49.16 \n",
" 1.02 \n",
@@ -2064,6 +2379,7 @@
" Accenture plc \n",
" Information Technology \n",
" 1.113858 \n",
+ " 0.225818 \n",
" 28.34 \n",
" 7.49 \n",
" 1.03 \n",
@@ -2076,6 +2392,7 @@
" Facebook, Inc. \n",
" Information Technology \n",
" 1.105767 \n",
+ " 0.238789 \n",
" 33.32 \n",
" 6.43 \n",
" 1.05 \n",
@@ -2088,6 +2405,7 @@
" Automatic Data Processing \n",
" Information Technology \n",
" 1.004579 \n",
+ " 0.183269 \n",
" 32.04 \n",
" 5.66 \n",
" 0.87 \n",
@@ -2100,6 +2418,7 @@
" Fiserv Inc \n",
" Information Technology \n",
" 0.948895 \n",
+ " 0.249903 \n",
" 71.58 \n",
" 1.71 \n",
" 0.80 \n",
@@ -2112,6 +2431,7 @@
" Apple Inc. \n",
" Information Technology \n",
" 0.919063 \n",
+ " 0.236049 \n",
" 25.66 \n",
" 12.66 \n",
" 1.29 \n",
@@ -2124,6 +2444,7 @@
" Texas Instruments \n",
" Information Technology \n",
" 0.886247 \n",
+ " 0.224912 \n",
" 25.24 \n",
" 5.24 \n",
" 1.24 \n",
@@ -2136,6 +2457,7 @@
" Salesforce.com \n",
" Information Technology \n",
" 0.885841 \n",
+ " 0.207470 \n",
" 200.68 \n",
" 0.95 \n",
" 1.19 \n",
@@ -2148,6 +2470,7 @@
" Synopsys Inc. \n",
" Information Technology \n",
" 0.801366 \n",
+ " 0.258979 \n",
" 47.31 \n",
" 3.45 \n",
" 1.18 \n",
@@ -2160,6 +2483,7 @@
" Motorola Solutions Inc. \n",
" Information Technology \n",
" 0.785703 \n",
+ " 0.231468 \n",
" 37.31 \n",
" 4.94 \n",
" 0.50 \n",
@@ -2172,6 +2496,7 @@
" Microsoft Corp. \n",
" Information Technology \n",
" 0.688151 \n",
+ " 0.322501 \n",
" 32.28 \n",
" 5.74 \n",
" 1.15 \n",
@@ -2184,6 +2509,7 @@
" Adobe Systems Inc \n",
" Information Technology \n",
" 0.616060 \n",
+ " 0.329761 \n",
" 63.17 \n",
" 6.01 \n",
" 1.09 \n",
@@ -2212,25 +2538,25 @@
"60 MSFT Microsoft Corp. Information Technology 0.688151 \n",
"1 ADBE Adobe Systems Inc Information Technology 0.616060 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "70 17.61 3.15 1.11 177928293945 3207649000 \n",
- "34 19.49 6.54 0.98 7753118169 60804000 \n",
- "41 59.34 2.57 1.21 13633532057 89453000 \n",
- "7 30.89 49.16 1.02 1044236513876 299895000 \n",
- "0 28.34 7.49 1.03 139515576338 656946000 \n",
- "35 33.32 6.43 1.05 610509360122 2405746000 \n",
- "14 32.04 5.66 0.87 78255412500 431754000 \n",
- "38 71.58 1.71 0.80 83164756192 679895000 \n",
- "12 25.66 12.66 1.29 1421812279411 4375480000 \n",
- "85 25.24 5.24 1.24 123223956977 932032000 \n",
- "79 200.68 0.95 1.19 168485647293 887000000 \n",
- "83 47.31 3.45 1.18 24589893168 150535000 \n",
- "63 37.31 4.94 0.50 31596072387 171336000 \n",
- "60 32.28 5.74 1.15 1409780857873 7606047000 \n",
- "1 63.17 6.01 1.09 185174936969 487726000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "70 0.077350 17.61 3.15 1.11 177928293945 3207649000 \n",
+ "34 0.064989 19.49 6.54 0.98 7753118169 60804000 \n",
+ "41 0.165214 59.34 2.57 1.21 13633532057 89453000 \n",
+ "7 0.214640 30.89 49.16 1.02 1044236513876 299895000 \n",
+ "0 0.225818 28.34 7.49 1.03 139515576338 656946000 \n",
+ "35 0.238789 33.32 6.43 1.05 610509360122 2405746000 \n",
+ "14 0.183269 32.04 5.66 0.87 78255412500 431754000 \n",
+ "38 0.249903 71.58 1.71 0.80 83164756192 679895000 \n",
+ "12 0.236049 25.66 12.66 1.29 1421812279411 4375480000 \n",
+ "85 0.224912 25.24 5.24 1.24 123223956977 932032000 \n",
+ "79 0.207470 200.68 0.95 1.19 168485647293 887000000 \n",
+ "83 0.258979 47.31 3.45 1.18 24589893168 150535000 \n",
+ "63 0.231468 37.31 4.94 0.50 31596072387 171336000 \n",
+ "60 0.322501 32.28 5.74 1.15 1409780857873 7606047000 \n",
+ "1 0.329761 63.17 6.01 1.09 185174936969 487726000 "
]
},
- "execution_count": 45,
+ "execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
@@ -2243,7 +2569,7 @@
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": 24,
"metadata": {},
"outputs": [
{
@@ -2271,6 +2597,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2285,6 +2612,7 @@
" LyondellBasell \n",
" Materials \n",
" 2.072393 \n",
+ " 0.103512 \n",
" 8.65 \n",
" 9.55 \n",
" 1.45 \n",
@@ -2297,6 +2625,7 @@
" Newmont Mining Corporation \n",
" Materials \n",
" 1.248661 \n",
+ " 0.189686 \n",
" 15.83 \n",
" 2.78 \n",
" 0.16 \n",
@@ -2309,6 +2638,7 @@
" Air Products & Chemicals Inc \n",
" Materials \n",
" 1.224824 \n",
+ " 0.153161 \n",
" 30.09 \n",
" 8.51 \n",
" 0.86 \n",
@@ -2321,6 +2651,7 @@
" Freeport-McMoRan Inc. \n",
" Materials \n",
" 1.031316 \n",
+ " 0.038646 \n",
" 78.35 \n",
" 0.16 \n",
" 2.42 \n",
@@ -2333,6 +2664,7 @@
" Albemarle Corp \n",
" Materials \n",
" 0.990292 \n",
+ " 0.132207 \n",
" 16.67 \n",
" 5.38 \n",
" 1.57 \n",
@@ -2345,6 +2677,7 @@
" FMC Corporation \n",
" Materials \n",
" 0.889526 \n",
+ " 0.193867 \n",
" 27.41 \n",
" 3.85 \n",
" 1.54 \n",
@@ -2356,24 +2689,24 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio \\\n",
- "55 LYB LyondellBasell Materials 2.072393 8.65 \n",
- "65 NEM Newmont Mining Corporation Materials 1.248661 15.83 \n",
- "4 APD Air Products & Chemicals Inc Materials 1.224824 30.09 \n",
- "40 FCX Freeport-McMoRan Inc. Materials 1.031316 78.35 \n",
- "5 ALB Albemarle Corp Materials 0.990292 16.67 \n",
- "39 FMC FMC Corporation Materials 0.889526 27.41 \n",
+ " ticker name sector sharpe ratio FFM returns \\\n",
+ "55 LYB LyondellBasell Materials 2.072393 0.103512 \n",
+ "65 NEM Newmont Mining Corporation Materials 1.248661 0.189686 \n",
+ "4 APD Air Products & Chemicals Inc Materials 1.224824 0.153161 \n",
+ "40 FCX Freeport-McMoRan Inc. Materials 1.031316 0.038646 \n",
+ "5 ALB Albemarle Corp Materials 0.990292 0.132207 \n",
+ "39 FMC FMC Corporation Materials 0.889526 0.193867 \n",
"\n",
- " EPS beta mkt cap shares \n",
- "55 9.55 1.45 27505799491 333000000 \n",
- "65 2.78 0.16 36130286851 819839000 \n",
- "4 8.51 0.86 56495776935 220678000 \n",
- "40 0.16 2.42 17759187027 1450914000 \n",
- "5 5.38 1.57 9504798055 106033000 \n",
- "39 3.85 1.54 13670494208 129615000 "
+ " P/E ratio EPS beta mkt cap shares \n",
+ "55 8.65 9.55 1.45 27505799491 333000000 \n",
+ "65 15.83 2.78 0.16 36130286851 819839000 \n",
+ "4 30.09 8.51 0.86 56495776935 220678000 \n",
+ "40 78.35 0.16 2.42 17759187027 1450914000 \n",
+ "5 16.67 5.38 1.57 9504798055 106033000 \n",
+ "39 27.41 3.85 1.54 13670494208 129615000 "
]
},
- "execution_count": 46,
+ "execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
@@ -2386,7 +2719,7 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": 25,
"metadata": {},
"outputs": [
{
@@ -2414,6 +2747,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2428,6 +2762,7 @@
" Host Hotels & Resorts \n",
" Real Estate \n",
" 2.308137 \n",
+ " 0.052833 \n",
" 10.89 \n",
" 1.55 \n",
" 1.17 \n",
@@ -2440,6 +2775,7 @@
" Iron Mountain Incorporated \n",
" Real Estate \n",
" 2.233518 \n",
+ " 0.073061 \n",
" 35.67 \n",
" 0.93 \n",
" 0.53 \n",
@@ -2452,6 +2788,7 @@
" Equity Residential \n",
" Real Estate \n",
" 2.158996 \n",
+ " 0.089495 \n",
" 34.53 \n",
" 2.50 \n",
" 0.45 \n",
@@ -2464,6 +2801,7 @@
" Crown Castle International Corp. \n",
" Real Estate \n",
" 1.281977 \n",
+ " 0.163975 \n",
" 83.64 \n",
" 1.98 \n",
" 0.30 \n",
@@ -2481,14 +2819,14 @@
"32 EQR Equity Residential Real Estate 2.158996 \n",
"28 CCI Crown Castle International Corp. Real Estate 1.281977 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "49 10.89 1.55 1.17 12127479870 717178000 \n",
- "52 35.67 0.93 0.53 9521121824 287300000 \n",
- "32 34.53 2.50 0.45 32134657027 371671000 \n",
- "28 83.64 1.98 0.30 69005081855 415768000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "49 0.052833 10.89 1.55 1.17 12127479870 717178000 \n",
+ "52 0.073061 35.67 0.93 0.53 9521121824 287300000 \n",
+ "32 0.089495 34.53 2.50 0.45 32134657027 371671000 \n",
+ "28 0.163975 83.64 1.98 0.30 69005081855 415768000 "
]
},
- "execution_count": 51,
+ "execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
@@ -2501,7 +2839,7 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": 26,
"metadata": {},
"outputs": [
{
@@ -2529,6 +2867,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2543,6 +2882,7 @@
" PPL Corp. \n",
" Utilities \n",
" 2.755488 \n",
+ " 0.098239 \n",
" 14.38 \n",
" 2.46 \n",
" 0.51 \n",
@@ -2555,6 +2895,7 @@
" FirstEnergy Corp \n",
" Utilities \n",
" 1.510567 \n",
+ " 0.129910 \n",
" 31.45 \n",
" 1.66 \n",
" 0.20 \n",
@@ -2567,6 +2908,7 @@
" Alliant Energy Corp \n",
" Utilities \n",
" 1.366718 \n",
+ " 0.166244 \n",
" 26.79 \n",
" 2.23 \n",
" 0.23 \n",
@@ -2579,6 +2921,7 @@
" CenterPoint Energy \n",
" Utilities \n",
" 1.361230 \n",
+ " 0.121502 \n",
" 21.58 \n",
" 1.26 \n",
" 0.44 \n",
@@ -2591,6 +2934,7 @@
" AES Corp \n",
" Utilities \n",
" 1.182641 \n",
+ " 0.162654 \n",
" 27.44 \n",
" 0.76 \n",
" 1.05 \n",
@@ -2603,6 +2947,7 @@
" NextEra Energy \n",
" Utilities \n",
" 0.928683 \n",
+ " 0.227986 \n",
" 34.73 \n",
" 8.02 \n",
" 0.15 \n",
@@ -2615,6 +2960,7 @@
" NRG Energy \n",
" Utilities \n",
" 0.692217 \n",
+ " 0.208670 \n",
" 10.31 \n",
" 3.89 \n",
" 0.71 \n",
@@ -2626,26 +2972,26 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio EPS \\\n",
- "73 PPL PPL Corp. Utilities 2.755488 14.38 2.46 \n",
- "37 FE FirstEnergy Corp Utilities 1.510567 31.45 1.66 \n",
- "6 LNT Alliant Energy Corp Utilities 1.366718 26.79 2.23 \n",
- "23 CNP CenterPoint Energy Utilities 1.361230 21.58 1.26 \n",
- "2 AES AES Corp Utilities 1.182641 27.44 0.76 \n",
- "66 NEE NextEra Energy Utilities 0.928683 34.73 8.02 \n",
- "67 NRG NRG Energy Utilities 0.692217 10.31 3.89 \n",
+ " ticker name sector sharpe ratio FFM returns \\\n",
+ "73 PPL PPL Corp. Utilities 2.755488 0.098239 \n",
+ "37 FE FirstEnergy Corp Utilities 1.510567 0.129910 \n",
+ "6 LNT Alliant Energy Corp Utilities 1.366718 0.166244 \n",
+ "23 CNP CenterPoint Energy Utilities 1.361230 0.121502 \n",
+ "2 AES AES Corp Utilities 1.182641 0.162654 \n",
+ "66 NEE NextEra Energy Utilities 0.928683 0.227986 \n",
+ "67 NRG NRG Energy Utilities 0.692217 0.208670 \n",
"\n",
- " beta mkt cap shares \n",
- "73 0.51 25573676437 723033000 \n",
- "37 0.20 28241486749 540714000 \n",
- "6 0.23 14358652779 244628000 \n",
- "23 0.44 13650929559 502242000 \n",
- "2 1.05 13895280692 663893000 \n",
- "66 0.15 136133886150 488776000 \n",
- "67 0.71 10078855985 251594000 "
+ " P/E ratio EPS beta mkt cap shares \n",
+ "73 14.38 2.46 0.51 25573676437 723033000 \n",
+ "37 31.45 1.66 0.20 28241486749 540714000 \n",
+ "6 26.79 2.23 0.23 14358652779 244628000 \n",
+ "23 21.58 1.26 0.44 13650929559 502242000 \n",
+ "2 27.44 0.76 1.05 13895280692 663893000 \n",
+ "66 34.73 8.02 0.15 136133886150 488776000 \n",
+ "67 10.31 3.89 0.71 10078855985 251594000 "
]
},
- "execution_count": 52,
+ "execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
@@ -2658,7 +3004,7 @@
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": 27,
"metadata": {},
"outputs": [
{
@@ -2686,6 +3032,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2700,6 +3047,7 @@
" Genuine Parts \n",
" Consumer Discretionary \n",
" 2.924464 \n",
+ " 0.074228 \n",
" 17.71 \n",
" 5.45 \n",
" 0.89 \n",
@@ -2712,6 +3060,7 @@
" General Mills \n",
" Consumer Staples \n",
" 2.641281 \n",
+ " 0.063147 \n",
" 15.34 \n",
" 3.48 \n",
" 0.73 \n",
@@ -2724,6 +3073,7 @@
" Cabot Oil & Gas \n",
" Energy \n",
" 1.952983 \n",
+ " -0.050017 \n",
" 7.80 \n",
" 1.90 \n",
" 0.47 \n",
@@ -2736,6 +3086,7 @@
" Synchrony Financial \n",
" Financials \n",
" 2.493336 \n",
+ " 0.091836 \n",
" 6.07 \n",
" 5.56 \n",
" 1.21 \n",
@@ -2748,6 +3099,7 @@
" Amgen Inc \n",
" Health Care \n",
" 1.861649 \n",
+ " 0.151749 \n",
" 17.36 \n",
" 12.88 \n",
" 1.12 \n",
@@ -2760,6 +3112,7 @@
" Southwest Airlines \n",
" Industrials \n",
" 1.726576 \n",
+ " 0.107833 \n",
" 13.77 \n",
" 4.21 \n",
" 1.47 \n",
@@ -2772,6 +3125,7 @@
" Alphabet Inc Class A \n",
" Information Technology \n",
" 1.198026 \n",
+ " 0.214640 \n",
" 30.89 \n",
" 49.16 \n",
" 1.02 \n",
@@ -2784,6 +3138,7 @@
" LyondellBasell \n",
" Materials \n",
" 2.072393 \n",
+ " 0.103512 \n",
" 8.65 \n",
" 9.55 \n",
" 1.45 \n",
@@ -2796,6 +3151,7 @@
" Host Hotels & Resorts \n",
" Real Estate \n",
" 2.308137 \n",
+ " 0.052833 \n",
" 10.89 \n",
" 1.55 \n",
" 1.17 \n",
@@ -2808,6 +3164,7 @@
" PPL Corp. \n",
" Utilities \n",
" 2.755488 \n",
+ " 0.098239 \n",
" 14.38 \n",
" 2.46 \n",
" 0.51 \n",
@@ -2831,20 +3188,20 @@
"8 HST Host Hotels & Resorts Real Estate 2.308137 \n",
"9 PPL PPL Corp. Utilities 2.755488 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "0 17.71 5.45 0.89 14016415887 145293000 \n",
- "1 15.34 3.48 0.73 32242795100 604817000 \n",
- "2 7.80 1.90 0.47 6037284157 407925000 \n",
- "3 6.07 5.56 1.21 20704848750 613477000 \n",
- "4 17.36 12.88 1.12 131810065840 589807000 \n",
- "5 13.77 4.21 1.47 29987649751 517296000 \n",
- "6 30.89 49.16 1.02 1044236513876 299895000 \n",
- "7 8.65 9.55 1.45 27505799491 333000000 \n",
- "8 10.89 1.55 1.17 12127479870 717178000 \n",
- "9 14.38 2.46 0.51 25573676437 723033000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "0 0.074228 17.71 5.45 0.89 14016415887 145293000 \n",
+ "1 0.063147 15.34 3.48 0.73 32242795100 604817000 \n",
+ "2 -0.050017 7.80 1.90 0.47 6037284157 407925000 \n",
+ "3 0.091836 6.07 5.56 1.21 20704848750 613477000 \n",
+ "4 0.151749 17.36 12.88 1.12 131810065840 589807000 \n",
+ "5 0.107833 13.77 4.21 1.47 29987649751 517296000 \n",
+ "6 0.214640 30.89 49.16 1.02 1044236513876 299895000 \n",
+ "7 0.103512 8.65 9.55 1.45 27505799491 333000000 \n",
+ "8 0.052833 10.89 1.55 1.17 12127479870 717178000 \n",
+ "9 0.098239 14.38 2.46 0.51 25573676437 723033000 "
]
},
- "execution_count": 66,
+ "execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
diff --git a/.ipynb_checkpoints/selection_data-checkpoint.csv b/.ipynb_checkpoints/selection_data-checkpoint.csv
deleted file mode 100644
index 1ca7832..0000000
--- a/.ipynb_checkpoints/selection_data-checkpoint.csv
+++ /dev/null
@@ -1,93 +0,0 @@
-ticker,name,sector,sharpe ratio,P/E ratio,EPS,beta,mkt cap,shares
-ACN,Accenture plc,Information Technology,1.113857669340631,28.34,7.49,1.03,139515576338,656946000
-ADBE,Adobe Systems Inc,Information Technology,0.6160597494509739,63.17,6.01,1.09,185174936969,487726000
-AES,AES Corp,Utilities,1.1826406099615412,27.44,0.76,1.05,13895280692,663893000
-AMG,Affiliated Managers Group Inc,Financials,1.0979859640832188,267.18,0.31,1.69,4084648875,49272000
-APD,Air Products & Chemicals Inc,Materials,1.2248244816385878,30.09,8.51,0.86,56495776935,220678000
-ALB,Albemarle Corp,Materials,0.9902917360691272,16.67,5.38,1.57,9504798055,106033000
-LNT,Alliant Energy Corp,Utilities,1.366717870072912,26.79,2.23,0.23,14358652779,244628000
-GOOGL,Alphabet Inc Class A,Information Technology,1.1980263475215909,30.89,49.16,1.02,1044236513876,299895000
-AXP,American Express Co,Financials,1.2144084830799449,17.01,7.99,0.99,111178449600,808041000
-ABC,AmerisourceBergen Corp,Health Care,2.824204459596733,30.62,3.08,1.01,19427969245,205892000
-AMGN,Amgen Inc,Health Care,1.8616491950461436,17.36,12.88,1.12,131810065840,589807000
-AON,Aon plc,Financials,1.1043185924986845,37.0,6.37,0.83,54701475530,234137000
-AAPL,Apple Inc.,Information Technology,0.9190627984536254,25.66,12.66,1.29,1421812279411,4375480000
-AJG,Arthur J. Gallagher & Co.,Financials,0.9671115946025484,31.03,3.52,0.76,20549043209,188247000
-ADP,Automatic Data Processing,Information Technology,1.0045789926171458,32.04,5.66,0.87,78255412500,431754000
-BBY,Best Buy Co. Inc.,Consumer Discretionary,0.8239151677600225,15.98,5.64,1.12,23344272933,258777000
-HRB,Block H&R,Financials,2.2106749521427664,11.75,1.9,0.23,4369605316,195246000
-BWA,BorgWarner,Consumer Discretionary,1.6822710938226986,9.2,3.71,1.91,7048901814,206410000
-BSX,Boston Scientific,Health Care,0.933786790381214,12.7,3.33,0.87,58972695354,1393824000
-BMY,Bristol-Myers Squibb,Health Care,2.6885152748619983,33.05,2.01,0.76,155607591281,2344185000
-COG,Cabot Oil & Gas,Energy,1.9529827367707384,7.8,1.9,0.47,6037284157,407925000
-COF,Capital One Financial,Financials,2.0347637955056546,9.31,11.02,1.25,46865423721,456600000
-KMX,Carmax Inc,Consumer Discretionary,1.703158159266752,19.16,5.16,1.1,16144071451,163385000
-CNP,CenterPoint Energy,Utilities,1.3612303069648497,21.58,1.26,0.44,13650929559,502242000
-CINF,Cincinnati Financial,Financials,1.121373755776759,9.52,12.1,0.57,18822318390,163374000
-CTAS,Cintas Corporation,Industrials,0.7031855337517299,35.38,8.51,0.99,31216601386,103751000
-KO,Coca-Cola Company (The),Consumer Staples,2.1971578395739524,28.99,2.07,0.41,256586003265,4280000000
-COST,Costco Wholesale Corp.,Consumer Staples,1.0606439166888946,37.75,8.43,0.9,140615987901,441758000
-CCI,Crown Castle International Corp.,Real Estate,1.28197687434905,83.64,1.98,0.3,69005081855,415768000
-CVS,CVS Health,Consumer Staples,1.7079627340498365,14.05,5.08,0.93,92849804253,1300964000
-DISCK,Discovery Communications-C,Consumer Discretionary,2.3096592718590108,11.1,2.59,1.45,15392873644,360664000
-ETN,Eaton Corporation,Industrials,1.6047656571399305,19.71,5.25,1.42,42807571261,413400000
-EQR,Equity Residential,Real Estate,2.1589960066234664,34.53,2.5,0.45,32134657027,371671000
-EXPE,Expedia Inc.,Consumer Discretionary,2.407311381193101,32.58,3.77,1.01,17792025802,139363000
-FFIV,F5 Networks,Information Technology,1.7013819459588144,19.49,6.54,0.98,7753118169,60804000
-FB,"Facebook, Inc.",Information Technology,1.1057666021536463,33.32,6.43,1.05,610509360122,2405746000
-FDX,FedEx Corporation,Industrials,1.5098202059987225,583.74,0.27,1.71,41418694505,261119000
-FE,FirstEnergy Corp,Utilities,1.510567029063732,31.45,1.66,0.2,28241486749,540714000
-FISV,Fiserv Inc,Information Technology,0.9488954080578804,71.58,1.71,0.8,83164756192,679895000
-FMC,FMC Corporation,Materials,0.8895256452785432,27.41,3.85,1.54,13670494208,129615000
-FCX,Freeport-McMoRan Inc.,Materials,1.0313162803944909,78.35,0.16,2.42,17759187027,1450914000
-IT,Gartner Inc,Information Technology,1.3373284476702674,59.34,2.57,1.21,13633532057,89453000
-GIS,General Mills,Consumer Staples,2.6412807761987938,15.34,3.48,0.73,32242795100,604817000
-GM,General Motors,Consumer Discretionary,1.9037211165069965,7.6,4.57,1.38,49672072361,1429002000
-GPC,Genuine Parts,Consumer Discretionary,2.9244641954801547,17.71,5.45,0.89,14016415887,145293000
-GS,Goldman Sachs Group,Financials,1.8288212830340496,11.27,21.03,1.32,83946946608,354087000
-GWW,Grainger (W.W.) Inc.,Industrials,1.3581101466189422,17.94,17.15,0.97,16517112872,53688000
-HLT,Hilton Worldwide Holdings Inc,Consumer Discretionary,1.0598993481607704,37.27,3.04,1.14,31415437971,277448000
-HOLX,Hologic,Health Care,2.425411589403344,173.01,0.31,0.85,13960272160,263302000
-HST,Host Hotels & Resorts,Real Estate,2.308137021714921,10.89,1.55,1.17,12127479870,717178000
-HII,Huntington Ingalls Industries,Industrials,1.1543380976790991,18.57,13.26,1.24,10035519873,40760000
-INCY,Incyte,Health Care,1.2682583277151145,38.21,2.05,1.06,17006076538,216776000
-IRM,Iron Mountain Incorporated,Real Estate,2.2335183274879347,35.67,0.93,0.53,9521121824,287300000
-KMI,Kinder Morgan,Energy,1.0384695673083184,22.87,0.96,0.81,49831386000,2265063000
-LKQ,LKQ Corporation,Consumer Discretionary,2.216065603315,23.73,1.4,1.3,10174538633,306462000
-LYB,LyondellBasell,Materials,2.072392824468477,8.65,9.55,1.45,27505799491,333000000
-M,Macy's Inc.,Consumer Discretionary,0.8264829931760201,5.39,3.09,0.66,5150446573,308965000
-MDT,Medtronic plc,Health Care,1.9179209088058464,33.97,3.45,0.6,157266553194,1340378000
-MRK,Merck & Co.,Health Care,1.3680581566358117,21.52,3.84,0.57,210425581484,2545984000
-MTD,Mettler Toledo,Health Care,0.9692418639176908,33.97,22.47,1.39,18357249893,24053000
-MSFT,Microsoft Corp.,Information Technology,0.6881506526553905,32.28,5.74,1.15,1409780857873,7606047000
-MHK,Mohawk Industries,Consumer Discretionary,1.2551682079723412,13.4,10.3,1.36,9882403253,71622000
-MCO,Moody's Corp,Financials,0.927983578033472,37.43,7.42,1.21,52148688479,187700000
-MSI,Motorola Solutions Inc.,Information Technology,0.7857028051967873,37.31,4.94,0.5,31596072387,171336000
-MYL,Mylan N.V.,Health Care,0.8932799452587622,239.58,0.09,1.72,11303303743,516177000
-NEM,Newmont Mining Corporation,Materials,1.2486611843780435,15.83,2.78,0.16,36130286851,819839000
-NEE,NextEra Energy,Utilities,0.9286832114176752,34.73,8.02,0.15,136133886150,488776000
-NRG,NRG Energy,Utilities,0.6922170062921974,10.31,3.89,0.71,10078855985,251594000
-OXY,Occidental Petroleum,Energy,2.054770999686784,29.53,1.41,0.9,37161985836,893317000
-OKE,ONEOK,Energy,0.9173258155980414,25.56,3.01,1.11,31799253894,413085000
-ORCL,Oracle Corp.,Information Technology,1.9496194449404018,17.61,3.15,1.11,177928293945,3207649000
-PEP,PepsiCo Inc.,Consumer Staples,1.9512497779197016,28.31,5.19,0.53,204968008309,1389545000
-RL,Polo Ralph Lauren Corp.,Consumer Discretionary,1.6850277667707554,14.16,8.61,0.9,8984857815,48862000
-PPL,PPL Corp.,Utilities,2.7554877393877537,14.38,2.46,0.51,25573676437,723033000
-PHM,Pulte Homes Inc.,Consumer Discretionary,1.1252252514376082,12.77,3.66,0.56,12605132379,269975000
-RJF,Raymond James Financial Inc.,Financials,1.2811378025870532,13.44,7.36,1.5,13782151374,139284000
-RTN,Raytheon Co.,Industrials,1.158337993905323,19.05,11.93,0.85,63256224340,278441000
-RMD,ResMed,Health Care,0.834963320137938,56.31,3.14,0.48,25539363082,144617000
-RCL,Royal Caribbean Cruises Ltd,Consumer Discretionary,1.3470625587214564,12.55,9.02,1.44,23627921924,208801000
-CRM,Salesforce.com,Information Technology,0.8858414532311987,200.68,0.95,1.19,168485647293,887000000
-LUV,Southwest Airlines,Industrials,1.7265757683369565,13.77,4.21,1.47,29987649751,517296000
-SBUX,Starbucks Corp.,Consumer Discretionary,1.3884881607519866,29.15,3.06,0.56,104787934567,1173700000
-SYF,Synchrony Financial,Financials,2.4933359586834767,6.07,5.56,1.21,20704848750,613477000
-SNPS,Synopsys Inc.,Information Technology,0.8013663430252196,47.31,3.45,1.18,24589893168,150535000
-TGT,Target Corp.,Consumer Discretionary,1.340881991913131,18.64,6.26,0.56,59100734918,506737000
-TXN,Texas Instruments,Information Technology,0.8862468117623082,25.24,5.24,1.24,123223956977,932032000
-HSY,The Hershey Company,Consumer Staples,1.4696819942330823,29.33,5.47,0.02,23779704176,148308000
-TMO,Thermo Fisher Scientific,Health Care,0.9572371356767688,36.98,9.17,1.14,136012138268,400991000
-UNH,United Health Group Inc.,Health Care,0.8928925321222835,20.86,14.33,0.69,283068652543,947415000
-VFC,V.F. Corp.,Consumer Discretionary,1.3232414086548459,25.99,3.22,1.2,33022293377,394720000
-WMT,Wal-Mart Stores,Consumer Staples,1.2710964130621618,23.55,5.0,0.36,334474559018,2837175000
-WBA,Walgreens Boots Alliance,Consumer Staples,2.224201311650672,13.0,4.07,0.92,46817805348,885862000
diff --git a/ffmreturns.csv b/ffmreturns.csv
new file mode 100644
index 0000000..1bf6314
--- /dev/null
+++ b/ffmreturns.csv
@@ -0,0 +1,101 @@
+Stock,FFM Returns
+ADBE,0.329761028
+MSFT,0.32250065
+CTAS,0.2859733
+BBY,0.264073092
+SNPS,0.258978767
+FISV,0.249902978
+UNH,0.243093824
+FB,0.238789094
+RMD,0.23631678
+AAPL,0.236049322
+MCO,0.234858117
+BSX,0.233860621
+BA,0.233236127
+MTD,0.23289527
+MSI,0.231468305
+OKE,0.230147782
+NEE,0.227986191
+ACN,0.225818128
+TXN,0.224912306
+TMO,0.223396092
+GOOGL,0.214639843
+DXC,0.210906153
+NRG,0.208669696
+CRM,0.207470204
+CINF,0.199837867
+RCL,0.195659444
+AJG,0.195583018
+RTN,0.19479614
+FMC,0.193866857
+COST,0.192129974
+NEM,0.189685796
+TGT,0.185069819
+ADP,0.183269476
+AON,0.183167419
+SBUX,0.177744967
+HII,0.172309762
+HLT,0.171046851
+LNT,0.166244327
+IT,0.165213744
+PHM,0.16513204
+CCI,0.163975237
+AES,0.162653808
+RJF,0.1550463
+APD,0.153160881
+AMGN,0.151748658
+MRK,0.147015861
+MGM,0.146332879
+GWW,0.143753783
+EFX,0.140914861
+AXP,0.132252227
+ALB,0.132207229
+HOLX,0.129967712
+FE,0.129909559
+VFC,0.129110804
+ETN,0.128998261
+HSY,0.125085342
+WMT,0.125054707
+MDT,0.12421349
+LKQ,0.121771661
+CNP,0.121501687
+PEP,0.117935265
+COF,0.116104299
+EIX,0.11470824
+LUV,0.107832862
+KO,0.103820149
+LYB,0.103512466
+GS,0.099914539
+KMX,0.099285234
+PPL,0.098239274
+SYF,0.091836098
+EQR,0.08949458
+EXPE,0.086285553
+GM,0.08449462
+BMY,0.083176807
+ORCL,0.077350148
+INCY,0.076793095
+GPC,0.074228025
+IRM,0.073060731
+FFIV,0.064989396
+GIS,0.063146888
+DISCK,0.061552496
+HST,0.052833242
+RL,0.046267077
+FCX,0.038646264
+NWS,0.025555928
+FDX,0.02425391
+ABC,0.018486986
+HRB,0.001103738
+WBA,-0.007405433
+BWA,-0.008936781
+CVS,-0.010387317
+MHK,-0.016397061
+NBL,-0.038133714
+KMI,-0.038511214
+OXY,-0.042821394
+COG,-0.050016632
+SRCL,-0.085880676
+M,-0.12659805
+MYL,-0.130828848
+AMG,-0.138798233
\ No newline at end of file
diff --git a/selection_criteria.ipynb b/selection_criteria.ipynb
index 3f8e59f..2b53187 100644
--- a/selection_criteria.ipynb
+++ b/selection_criteria.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 72,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -15,7 +15,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 7,
"metadata": {},
"outputs": [
{
@@ -127,7 +127,7 @@
"[505 rows x 2 columns]"
]
},
- "execution_count": 5,
+ "execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
@@ -141,7 +141,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {},
"outputs": [
{
@@ -240,7 +240,7 @@
"[100 rows x 1 columns]"
]
},
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
@@ -254,7 +254,120 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " FFM Returns \n",
+ " \n",
+ " \n",
+ " Stock \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " ADBE \n",
+ " 0.329761 \n",
+ " \n",
+ " \n",
+ " MSFT \n",
+ " 0.322501 \n",
+ " \n",
+ " \n",
+ " CTAS \n",
+ " 0.285973 \n",
+ " \n",
+ " \n",
+ " BBY \n",
+ " 0.264073 \n",
+ " \n",
+ " \n",
+ " SNPS \n",
+ " 0.258979 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " COG \n",
+ " -0.050017 \n",
+ " \n",
+ " \n",
+ " SRCL \n",
+ " -0.085881 \n",
+ " \n",
+ " \n",
+ " M \n",
+ " -0.126598 \n",
+ " \n",
+ " \n",
+ " MYL \n",
+ " -0.130829 \n",
+ " \n",
+ " \n",
+ " AMG \n",
+ " -0.138798 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
100 rows × 1 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " FFM Returns\n",
+ "Stock \n",
+ "ADBE 0.329761\n",
+ "MSFT 0.322501\n",
+ "CTAS 0.285973\n",
+ "BBY 0.264073\n",
+ "SNPS 0.258979\n",
+ "... ...\n",
+ "COG -0.050017\n",
+ "SRCL -0.085881\n",
+ "M -0.126598\n",
+ "MYL -0.130829\n",
+ "AMG -0.138798\n",
+ "\n",
+ "[100 rows x 1 columns]"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# importing sharpe ratio data\n",
+ "ffm_path = Path('ffmreturns.csv')\n",
+ "ffm_df = pd.read_csv(ffm_path, index_col = 'Stock')\n",
+ "ffm_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
"metadata": {},
"outputs": [
{
@@ -405,7 +518,7 @@
"[100 rows x 5 columns]"
]
},
- "execution_count": 7,
+ "execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
@@ -419,7 +532,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 13,
"metadata": {},
"outputs": [
{
@@ -447,6 +560,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -461,6 +575,7 @@
" Accenture plc \n",
" Information Technology \n",
" 1.113858 \n",
+ " 0.225818 \n",
" 28.34 \n",
" 7.49 \n",
" 1.03 \n",
@@ -473,6 +588,7 @@
" Adobe Systems Inc \n",
" Information Technology \n",
" 0.616060 \n",
+ " 0.329761 \n",
" 63.17 \n",
" 6.01 \n",
" 1.09 \n",
@@ -485,6 +601,7 @@
" AES Corp \n",
" Utilities \n",
" 1.182641 \n",
+ " 0.162654 \n",
" 27.44 \n",
" 0.76 \n",
" 1.05 \n",
@@ -497,6 +614,7 @@
" Affiliated Managers Group Inc \n",
" Financials \n",
" 1.097986 \n",
+ " -0.138798 \n",
" 267.18 \n",
" 0.31 \n",
" 1.69 \n",
@@ -509,6 +627,7 @@
" Air Products & Chemicals Inc \n",
" Materials \n",
" 1.224824 \n",
+ " 0.153161 \n",
" 30.09 \n",
" 8.51 \n",
" 0.86 \n",
@@ -526,6 +645,7 @@
" ... \n",
" ... \n",
" ... \n",
+ " ... \n",
" \n",
" \n",
" 87 \n",
@@ -533,6 +653,7 @@
" Thermo Fisher Scientific \n",
" Health Care \n",
" 0.957237 \n",
+ " 0.223396 \n",
" 36.98 \n",
" 9.17 \n",
" 1.14 \n",
@@ -545,6 +666,7 @@
" United Health Group Inc. \n",
" Health Care \n",
" 0.892893 \n",
+ " 0.243094 \n",
" 20.86 \n",
" 14.33 \n",
" 0.69 \n",
@@ -557,6 +679,7 @@
" V.F. Corp. \n",
" Consumer Discretionary \n",
" 1.323241 \n",
+ " 0.129111 \n",
" 25.99 \n",
" 3.22 \n",
" 1.20 \n",
@@ -569,6 +692,7 @@
" Wal-Mart Stores \n",
" Consumer Staples \n",
" 1.271096 \n",
+ " 0.125055 \n",
" 23.55 \n",
" 5.00 \n",
" 0.36 \n",
@@ -581,6 +705,7 @@
" Walgreens Boots Alliance \n",
" Consumer Staples \n",
" 2.224201 \n",
+ " -0.007405 \n",
" 13.00 \n",
" 4.07 \n",
" 0.92 \n",
@@ -589,7 +714,7 @@
" \n",
" \n",
"\n",
- "92 rows × 9 columns
\n",
+ "92 rows × 10 columns
\n",
""
],
"text/plain": [
@@ -606,33 +731,46 @@
"90 WMT Wal-Mart Stores Consumer Staples \n",
"91 WBA Walgreens Boots Alliance Consumer Staples \n",
"\n",
- " sharpe ratio P/E ratio EPS beta mkt cap shares \n",
- "0 1.113858 28.34 7.49 1.03 139515576338 656946000 \n",
- "1 0.616060 63.17 6.01 1.09 185174936969 487726000 \n",
- "2 1.182641 27.44 0.76 1.05 13895280692 663893000 \n",
- "3 1.097986 267.18 0.31 1.69 4084648875 49272000 \n",
- "4 1.224824 30.09 8.51 0.86 56495776935 220678000 \n",
- ".. ... ... ... ... ... ... \n",
- "87 0.957237 36.98 9.17 1.14 136012138268 400991000 \n",
- "88 0.892893 20.86 14.33 0.69 283068652543 947415000 \n",
- "89 1.323241 25.99 3.22 1.20 33022293377 394720000 \n",
- "90 1.271096 23.55 5.00 0.36 334474559018 2837175000 \n",
- "91 2.224201 13.00 4.07 0.92 46817805348 885862000 \n",
+ " sharpe ratio FFM returns P/E ratio EPS beta mkt cap \\\n",
+ "0 1.113858 0.225818 28.34 7.49 1.03 139515576338 \n",
+ "1 0.616060 0.329761 63.17 6.01 1.09 185174936969 \n",
+ "2 1.182641 0.162654 27.44 0.76 1.05 13895280692 \n",
+ "3 1.097986 -0.138798 267.18 0.31 1.69 4084648875 \n",
+ "4 1.224824 0.153161 30.09 8.51 0.86 56495776935 \n",
+ ".. ... ... ... ... ... ... \n",
+ "87 0.957237 0.223396 36.98 9.17 1.14 136012138268 \n",
+ "88 0.892893 0.243094 20.86 14.33 0.69 283068652543 \n",
+ "89 1.323241 0.129111 25.99 3.22 1.20 33022293377 \n",
+ "90 1.271096 0.125055 23.55 5.00 0.36 334474559018 \n",
+ "91 2.224201 -0.007405 13.00 4.07 0.92 46817805348 \n",
+ "\n",
+ " shares \n",
+ "0 656946000 \n",
+ "1 487726000 \n",
+ "2 663893000 \n",
+ "3 49272000 \n",
+ "4 220678000 \n",
+ ".. ... \n",
+ "87 400991000 \n",
+ "88 947415000 \n",
+ "89 394720000 \n",
+ "90 2837175000 \n",
+ "91 885862000 \n",
"\n",
- "[92 rows x 9 columns]"
+ "[92 rows x 10 columns]"
]
},
- "execution_count": 16,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# concatenating the datasets and dropping nulls\n",
- "merged_df = pd.concat([sp500_df,sharpe_df,stock_data_df], axis='columns', join='inner')\n",
+ "merged_df = pd.concat([sp500_df,sharpe_df,ffm_df,stock_data_df], axis='columns', join='inner')\n",
"merged_df.dropna(inplace=True)\n",
"merged_df.reset_index(inplace=True)\n",
- "merged_df.columns = ['ticker','name','sector','sharpe ratio','P/E ratio','EPS','beta','mkt cap','shares']\n",
+ "merged_df.columns = ['ticker','name','sector','sharpe ratio','FFM returns','P/E ratio','EPS','beta','mkt cap','shares']\n",
"merged_df"
]
},
@@ -719,7 +857,43 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0, 0.5, 'FFM Returns')"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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gx/8YL7//e/nkEMOyb3vfe8ceOCBOf/883PmmWfmlFNOyQte8ILsu++++f73v5+DDjrohpngF198cSYmJpIkJ5xwQo466qgcdthhefjDH57TTz89Bx10UI488sjc7W53yxOf+MS01pIk69aty1577ZV99tknz3/+8xf8vM3cBgAAAABYQX71q19l3333TZLsvvvuOemkk5IkX/jCF25YftRRR+VFL3pRkmSHHXbI7W9/+3zrW9/Khz/84TzucY/L29/+9mm3v2bNmnzxi19Mkjz0oQ/NG9/4xuyxxx75yle+kmc/+9n5zGc+k8MPPzyHHnpojjzyyFnr/dKXvpRvfvOb2WmnnXL66afn61//es4999zc9ra3zQMe8ICcccYZ2WuvvXLSSSfl/PPPT1Xl0ksvXdBrlAi3AQAAAABWlFFtSZJM25YkSY4++uiceOKJ+cQnPpHTTjttxnD7cY97XJLkyiuvzJlnnpmjjjrqhnVXX331vOt92MMelp122umG2wcccEB23XXXJLmhZ/h973vfrFmzJs94xjOydu3aHHroofN+nKm0JQEAAAAA6LnDDjss73rXu7Lbbrtlhx12mHHszW52syTJ9ddfn1vc4hY555xzbricd955I++zevXqXH/99UmSq666auT2Jt3kJje54fqqVatu6MX91a9+NUcccUROPvnkHHLIIfN+jlMJtwEAAAAAem777bfPy1/+8htalczFDjvskN133z0f/OAHkySttXzjG99Iktz85jfPFVdcccPYiYmJnH322Um6E1bO15VXXpnLLrssv/M7v5PXvva1I2emz5dwGwAAAABgC3D00Udnv/32m9d93vOe9+Stb31r7nnPe+bud7/7DSemPProo/PKV74y97rXvfL9738/z3/+8/Mv//Ivuf/975+LL7543rVdccUVOfTQQ7PPPvvkQQ96UF7zmtfMextT1eSZKrcm+++/f5s8sycAAAAAwKTzzjsve+6553KXsVUa9dpX1dmttf1HjTdzGwAAAACA3hFuAwAAAADQO8JtAAAAAAB6R7gNAAAAADBkazxP4XLbnNdcuA0AAAAAMLBmzZpccsklAu4l1FrLJZdckjVr1szrfqsXqR4AAAAAgN7Zdddds2HDhlx00UXLXcpWZc2aNdl1113ndR/h9gJNrDt1xvXrj1+7RJUAAAAAAAu17bbb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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plotting returns\n",
+ "merged_df.plot(x='ticker',y='FFM returns', kind='bar', figsize=(25,10))\n",
+ "plt.suptitle('FFM Returns in Investment Universe', fontsize=30)\n",
+ "plt.xlabel('Company Ticker',fontsize=20)\n",
+ "plt.ylabel('FFM Returns',fontsize=20)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -732,9 +906,60 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 16,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:4: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " after removing the cwd from sys.path.\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:8: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:12: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " if sys.path[0] == '':\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:16: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " app.launch_new_instance()\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:20: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:28: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:32: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:36: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:40: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"
+ ]
+ }
+ ],
"source": [
"# creating datasets for each sector\n",
"cd_mask = merged_df['sector'] == 'Consumer Discretionary'\n",
@@ -780,7 +1005,7 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -808,6 +1033,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -822,6 +1048,7 @@
" Genuine Parts \n",
" Consumer Discretionary \n",
" 2.924464 \n",
+ " 0.074228 \n",
" 17.71 \n",
" 5.45 \n",
" 0.89 \n",
@@ -834,6 +1061,7 @@
" Expedia Inc. \n",
" Consumer Discretionary \n",
" 2.407311 \n",
+ " 0.086286 \n",
" 32.58 \n",
" 3.77 \n",
" 1.01 \n",
@@ -846,6 +1074,7 @@
" Discovery Communications-C \n",
" Consumer Discretionary \n",
" 2.309659 \n",
+ " 0.061552 \n",
" 11.10 \n",
" 2.59 \n",
" 1.45 \n",
@@ -858,6 +1087,7 @@
" LKQ Corporation \n",
" Consumer Discretionary \n",
" 2.216066 \n",
+ " 0.121772 \n",
" 23.73 \n",
" 1.40 \n",
" 1.30 \n",
@@ -870,6 +1100,7 @@
" General Motors \n",
" Consumer Discretionary \n",
" 1.903721 \n",
+ " 0.084495 \n",
" 7.60 \n",
" 4.57 \n",
" 1.38 \n",
@@ -882,6 +1113,7 @@
" Carmax Inc \n",
" Consumer Discretionary \n",
" 1.703158 \n",
+ " 0.099285 \n",
" 19.16 \n",
" 5.16 \n",
" 1.10 \n",
@@ -894,6 +1126,7 @@
" Polo Ralph Lauren Corp. \n",
" Consumer Discretionary \n",
" 1.685028 \n",
+ " 0.046267 \n",
" 14.16 \n",
" 8.61 \n",
" 0.90 \n",
@@ -906,6 +1139,7 @@
" BorgWarner \n",
" Consumer Discretionary \n",
" 1.682271 \n",
+ " -0.008937 \n",
" 9.20 \n",
" 3.71 \n",
" 1.91 \n",
@@ -918,6 +1152,7 @@
" Starbucks Corp. \n",
" Consumer Discretionary \n",
" 1.388488 \n",
+ " 0.177745 \n",
" 29.15 \n",
" 3.06 \n",
" 0.56 \n",
@@ -930,6 +1165,7 @@
" Royal Caribbean Cruises Ltd \n",
" Consumer Discretionary \n",
" 1.347063 \n",
+ " 0.195659 \n",
" 12.55 \n",
" 9.02 \n",
" 1.44 \n",
@@ -942,6 +1178,7 @@
" Target Corp. \n",
" Consumer Discretionary \n",
" 1.340882 \n",
+ " 0.185070 \n",
" 18.64 \n",
" 6.26 \n",
" 0.56 \n",
@@ -954,6 +1191,7 @@
" V.F. Corp. \n",
" Consumer Discretionary \n",
" 1.323241 \n",
+ " 0.129111 \n",
" 25.99 \n",
" 3.22 \n",
" 1.20 \n",
@@ -966,6 +1204,7 @@
" Mohawk Industries \n",
" Consumer Discretionary \n",
" 1.255168 \n",
+ " -0.016397 \n",
" 13.40 \n",
" 10.30 \n",
" 1.36 \n",
@@ -978,6 +1217,7 @@
" Pulte Homes Inc. \n",
" Consumer Discretionary \n",
" 1.125225 \n",
+ " 0.165132 \n",
" 12.77 \n",
" 3.66 \n",
" 0.56 \n",
@@ -990,6 +1230,7 @@
" Hilton Worldwide Holdings Inc \n",
" Consumer Discretionary \n",
" 1.059899 \n",
+ " 0.171047 \n",
" 37.27 \n",
" 3.04 \n",
" 1.14 \n",
@@ -1002,6 +1243,7 @@
" Macy's Inc. \n",
" Consumer Discretionary \n",
" 0.826483 \n",
+ " -0.126598 \n",
" 5.39 \n",
" 3.09 \n",
" 0.66 \n",
@@ -1014,6 +1256,7 @@
" Best Buy Co. Inc. \n",
" Consumer Discretionary \n",
" 0.823915 \n",
+ " 0.264073 \n",
" 15.98 \n",
" 5.64 \n",
" 1.12 \n",
@@ -1044,27 +1287,46 @@
"56 M Macy's Inc. Consumer Discretionary \n",
"15 BBY Best Buy Co. Inc. Consumer Discretionary \n",
"\n",
- " sharpe ratio P/E ratio EPS beta mkt cap shares \n",
- "44 2.924464 17.71 5.45 0.89 14016415887 145293000 \n",
- "33 2.407311 32.58 3.77 1.01 17792025802 139363000 \n",
- "30 2.309659 11.10 2.59 1.45 15392873644 360664000 \n",
- "54 2.216066 23.73 1.40 1.30 10174538633 306462000 \n",
- "43 1.903721 7.60 4.57 1.38 49672072361 1429002000 \n",
- "22 1.703158 19.16 5.16 1.10 16144071451 163385000 \n",
- "72 1.685028 14.16 8.61 0.90 8984857815 48862000 \n",
- "17 1.682271 9.20 3.71 1.91 7048901814 206410000 \n",
- "81 1.388488 29.15 3.06 0.56 104787934567 1173700000 \n",
- "78 1.347063 12.55 9.02 1.44 23627921924 208801000 \n",
- "84 1.340882 18.64 6.26 0.56 59100734918 506737000 \n",
- "89 1.323241 25.99 3.22 1.20 33022293377 394720000 \n",
- "61 1.255168 13.40 10.30 1.36 9882403253 71622000 \n",
- "74 1.125225 12.77 3.66 0.56 12605132379 269975000 \n",
- "47 1.059899 37.27 3.04 1.14 31415437971 277448000 \n",
- "56 0.826483 5.39 3.09 0.66 5150446573 308965000 \n",
- "15 0.823915 15.98 5.64 1.12 23344272933 258777000 "
+ " sharpe ratio FFM returns P/E ratio EPS beta mkt cap \\\n",
+ "44 2.924464 0.074228 17.71 5.45 0.89 14016415887 \n",
+ "33 2.407311 0.086286 32.58 3.77 1.01 17792025802 \n",
+ "30 2.309659 0.061552 11.10 2.59 1.45 15392873644 \n",
+ "54 2.216066 0.121772 23.73 1.40 1.30 10174538633 \n",
+ "43 1.903721 0.084495 7.60 4.57 1.38 49672072361 \n",
+ "22 1.703158 0.099285 19.16 5.16 1.10 16144071451 \n",
+ "72 1.685028 0.046267 14.16 8.61 0.90 8984857815 \n",
+ "17 1.682271 -0.008937 9.20 3.71 1.91 7048901814 \n",
+ "81 1.388488 0.177745 29.15 3.06 0.56 104787934567 \n",
+ "78 1.347063 0.195659 12.55 9.02 1.44 23627921924 \n",
+ "84 1.340882 0.185070 18.64 6.26 0.56 59100734918 \n",
+ "89 1.323241 0.129111 25.99 3.22 1.20 33022293377 \n",
+ "61 1.255168 -0.016397 13.40 10.30 1.36 9882403253 \n",
+ "74 1.125225 0.165132 12.77 3.66 0.56 12605132379 \n",
+ "47 1.059899 0.171047 37.27 3.04 1.14 31415437971 \n",
+ "56 0.826483 -0.126598 5.39 3.09 0.66 5150446573 \n",
+ "15 0.823915 0.264073 15.98 5.64 1.12 23344272933 \n",
+ "\n",
+ " shares \n",
+ "44 145293000 \n",
+ "33 139363000 \n",
+ "30 360664000 \n",
+ "54 306462000 \n",
+ "43 1429002000 \n",
+ "22 163385000 \n",
+ "72 48862000 \n",
+ "17 206410000 \n",
+ "81 1173700000 \n",
+ "78 208801000 \n",
+ "84 506737000 \n",
+ "89 394720000 \n",
+ "61 71622000 \n",
+ "74 269975000 \n",
+ "47 277448000 \n",
+ "56 308965000 \n",
+ "15 258777000 "
]
},
- "execution_count": 49,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
@@ -1077,7 +1339,7 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
@@ -1105,6 +1367,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1119,6 +1382,7 @@
" General Mills \n",
" Consumer Staples \n",
" 2.641281 \n",
+ " 0.063147 \n",
" 15.34 \n",
" 3.48 \n",
" 0.73 \n",
@@ -1131,6 +1395,7 @@
" Walgreens Boots Alliance \n",
" Consumer Staples \n",
" 2.224201 \n",
+ " -0.007405 \n",
" 13.00 \n",
" 4.07 \n",
" 0.92 \n",
@@ -1143,6 +1408,7 @@
" Coca-Cola Company (The) \n",
" Consumer Staples \n",
" 2.197158 \n",
+ " 0.103820 \n",
" 28.99 \n",
" 2.07 \n",
" 0.41 \n",
@@ -1155,6 +1421,7 @@
" PepsiCo Inc. \n",
" Consumer Staples \n",
" 1.951250 \n",
+ " 0.117935 \n",
" 28.31 \n",
" 5.19 \n",
" 0.53 \n",
@@ -1167,6 +1434,7 @@
" CVS Health \n",
" Consumer Staples \n",
" 1.707963 \n",
+ " -0.010387 \n",
" 14.05 \n",
" 5.08 \n",
" 0.93 \n",
@@ -1179,6 +1447,7 @@
" The Hershey Company \n",
" Consumer Staples \n",
" 1.469682 \n",
+ " 0.125085 \n",
" 29.33 \n",
" 5.47 \n",
" 0.02 \n",
@@ -1191,6 +1460,7 @@
" Wal-Mart Stores \n",
" Consumer Staples \n",
" 1.271096 \n",
+ " 0.125055 \n",
" 23.55 \n",
" 5.00 \n",
" 0.36 \n",
@@ -1203,6 +1473,7 @@
" Costco Wholesale Corp. \n",
" Consumer Staples \n",
" 1.060644 \n",
+ " 0.192130 \n",
" 37.75 \n",
" 8.43 \n",
" 0.90 \n",
@@ -1224,18 +1495,18 @@
"90 WMT Wal-Mart Stores Consumer Staples 1.271096 \n",
"27 COST Costco Wholesale Corp. Consumer Staples 1.060644 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "42 15.34 3.48 0.73 32242795100 604817000 \n",
- "91 13.00 4.07 0.92 46817805348 885862000 \n",
- "26 28.99 2.07 0.41 256586003265 4280000000 \n",
- "71 28.31 5.19 0.53 204968008309 1389545000 \n",
- "29 14.05 5.08 0.93 92849804253 1300964000 \n",
- "86 29.33 5.47 0.02 23779704176 148308000 \n",
- "90 23.55 5.00 0.36 334474559018 2837175000 \n",
- "27 37.75 8.43 0.90 140615987901 441758000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "42 0.063147 15.34 3.48 0.73 32242795100 604817000 \n",
+ "91 -0.007405 13.00 4.07 0.92 46817805348 885862000 \n",
+ "26 0.103820 28.99 2.07 0.41 256586003265 4280000000 \n",
+ "71 0.117935 28.31 5.19 0.53 204968008309 1389545000 \n",
+ "29 -0.010387 14.05 5.08 0.93 92849804253 1300964000 \n",
+ "86 0.125085 29.33 5.47 0.02 23779704176 148308000 \n",
+ "90 0.125055 23.55 5.00 0.36 334474559018 2837175000 \n",
+ "27 0.192130 37.75 8.43 0.90 140615987901 441758000 "
]
},
- "execution_count": 40,
+ "execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
@@ -1248,7 +1519,7 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": 19,
"metadata": {},
"outputs": [
{
@@ -1276,6 +1547,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1290,6 +1562,7 @@
" Occidental Petroleum \n",
" Energy \n",
" 2.054771 \n",
+ " -0.042821 \n",
" 29.53 \n",
" 1.41 \n",
" 0.90 \n",
@@ -1302,6 +1575,7 @@
" Cabot Oil & Gas \n",
" Energy \n",
" 1.952983 \n",
+ " -0.050017 \n",
" 7.80 \n",
" 1.90 \n",
" 0.47 \n",
@@ -1314,6 +1588,7 @@
" Kinder Morgan \n",
" Energy \n",
" 1.038470 \n",
+ " -0.038511 \n",
" 22.87 \n",
" 0.96 \n",
" 0.81 \n",
@@ -1326,6 +1601,7 @@
" ONEOK \n",
" Energy \n",
" 0.917326 \n",
+ " 0.230148 \n",
" 25.56 \n",
" 3.01 \n",
" 1.11 \n",
@@ -1337,20 +1613,20 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio EPS beta \\\n",
- "68 OXY Occidental Petroleum Energy 2.054771 29.53 1.41 0.90 \n",
- "20 COG Cabot Oil & Gas Energy 1.952983 7.80 1.90 0.47 \n",
- "53 KMI Kinder Morgan Energy 1.038470 22.87 0.96 0.81 \n",
- "69 OKE ONEOK Energy 0.917326 25.56 3.01 1.11 \n",
+ " ticker name sector sharpe ratio FFM returns P/E ratio \\\n",
+ "68 OXY Occidental Petroleum Energy 2.054771 -0.042821 29.53 \n",
+ "20 COG Cabot Oil & Gas Energy 1.952983 -0.050017 7.80 \n",
+ "53 KMI Kinder Morgan Energy 1.038470 -0.038511 22.87 \n",
+ "69 OKE ONEOK Energy 0.917326 0.230148 25.56 \n",
"\n",
- " mkt cap shares \n",
- "68 37161985836 893317000 \n",
- "20 6037284157 407925000 \n",
- "53 49831386000 2265063000 \n",
- "69 31799253894 413085000 "
+ " EPS beta mkt cap shares \n",
+ "68 1.41 0.90 37161985836 893317000 \n",
+ "20 1.90 0.47 6037284157 407925000 \n",
+ "53 0.96 0.81 49831386000 2265063000 \n",
+ "69 3.01 1.11 31799253894 413085000 "
]
},
- "execution_count": 41,
+ "execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
@@ -1363,7 +1639,7 @@
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
@@ -1391,6 +1667,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1405,6 +1682,7 @@
" Synchrony Financial \n",
" Financials \n",
" 2.493336 \n",
+ " 0.091836 \n",
" 6.07 \n",
" 5.56 \n",
" 1.21 \n",
@@ -1417,6 +1695,7 @@
" Block H&R \n",
" Financials \n",
" 2.210675 \n",
+ " 0.001104 \n",
" 11.75 \n",
" 1.90 \n",
" 0.23 \n",
@@ -1429,6 +1708,7 @@
" Capital One Financial \n",
" Financials \n",
" 2.034764 \n",
+ " 0.116104 \n",
" 9.31 \n",
" 11.02 \n",
" 1.25 \n",
@@ -1441,6 +1721,7 @@
" Goldman Sachs Group \n",
" Financials \n",
" 1.828821 \n",
+ " 0.099915 \n",
" 11.27 \n",
" 21.03 \n",
" 1.32 \n",
@@ -1453,6 +1734,7 @@
" Raymond James Financial Inc. \n",
" Financials \n",
" 1.281138 \n",
+ " 0.155046 \n",
" 13.44 \n",
" 7.36 \n",
" 1.50 \n",
@@ -1465,6 +1747,7 @@
" American Express Co \n",
" Financials \n",
" 1.214408 \n",
+ " 0.132252 \n",
" 17.01 \n",
" 7.99 \n",
" 0.99 \n",
@@ -1477,6 +1760,7 @@
" Cincinnati Financial \n",
" Financials \n",
" 1.121374 \n",
+ " 0.199838 \n",
" 9.52 \n",
" 12.10 \n",
" 0.57 \n",
@@ -1489,6 +1773,7 @@
" Aon plc \n",
" Financials \n",
" 1.104319 \n",
+ " 0.183167 \n",
" 37.00 \n",
" 6.37 \n",
" 0.83 \n",
@@ -1501,6 +1786,7 @@
" Affiliated Managers Group Inc \n",
" Financials \n",
" 1.097986 \n",
+ " -0.138798 \n",
" 267.18 \n",
" 0.31 \n",
" 1.69 \n",
@@ -1513,6 +1799,7 @@
" Arthur J. Gallagher & Co. \n",
" Financials \n",
" 0.967112 \n",
+ " 0.195583 \n",
" 31.03 \n",
" 3.52 \n",
" 0.76 \n",
@@ -1525,6 +1812,7 @@
" Moody's Corp \n",
" Financials \n",
" 0.927984 \n",
+ " 0.234858 \n",
" 37.43 \n",
" 7.42 \n",
" 1.21 \n",
@@ -1536,34 +1824,34 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio \\\n",
- "82 SYF Synchrony Financial Financials 2.493336 6.07 \n",
- "16 HRB Block H&R Financials 2.210675 11.75 \n",
- "21 COF Capital One Financial Financials 2.034764 9.31 \n",
- "45 GS Goldman Sachs Group Financials 1.828821 11.27 \n",
- "75 RJF Raymond James Financial Inc. Financials 1.281138 13.44 \n",
- "8 AXP American Express Co Financials 1.214408 17.01 \n",
- "24 CINF Cincinnati Financial Financials 1.121374 9.52 \n",
- "11 AON Aon plc Financials 1.104319 37.00 \n",
- "3 AMG Affiliated Managers Group Inc Financials 1.097986 267.18 \n",
- "13 AJG Arthur J. Gallagher & Co. Financials 0.967112 31.03 \n",
- "62 MCO Moody's Corp Financials 0.927984 37.43 \n",
+ " ticker name sector sharpe ratio \\\n",
+ "82 SYF Synchrony Financial Financials 2.493336 \n",
+ "16 HRB Block H&R Financials 2.210675 \n",
+ "21 COF Capital One Financial Financials 2.034764 \n",
+ "45 GS Goldman Sachs Group Financials 1.828821 \n",
+ "75 RJF Raymond James Financial Inc. Financials 1.281138 \n",
+ "8 AXP American Express Co Financials 1.214408 \n",
+ "24 CINF Cincinnati Financial Financials 1.121374 \n",
+ "11 AON Aon plc Financials 1.104319 \n",
+ "3 AMG Affiliated Managers Group Inc Financials 1.097986 \n",
+ "13 AJG Arthur J. Gallagher & Co. Financials 0.967112 \n",
+ "62 MCO Moody's Corp Financials 0.927984 \n",
"\n",
- " EPS beta mkt cap shares \n",
- "82 5.56 1.21 20704848750 613477000 \n",
- "16 1.90 0.23 4369605316 195246000 \n",
- "21 11.02 1.25 46865423721 456600000 \n",
- "45 21.03 1.32 83946946608 354087000 \n",
- "75 7.36 1.50 13782151374 139284000 \n",
- "8 7.99 0.99 111178449600 808041000 \n",
- "24 12.10 0.57 18822318390 163374000 \n",
- "11 6.37 0.83 54701475530 234137000 \n",
- "3 0.31 1.69 4084648875 49272000 \n",
- "13 3.52 0.76 20549043209 188247000 \n",
- "62 7.42 1.21 52148688479 187700000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "82 0.091836 6.07 5.56 1.21 20704848750 613477000 \n",
+ "16 0.001104 11.75 1.90 0.23 4369605316 195246000 \n",
+ "21 0.116104 9.31 11.02 1.25 46865423721 456600000 \n",
+ "45 0.099915 11.27 21.03 1.32 83946946608 354087000 \n",
+ "75 0.155046 13.44 7.36 1.50 13782151374 139284000 \n",
+ "8 0.132252 17.01 7.99 0.99 111178449600 808041000 \n",
+ "24 0.199838 9.52 12.10 0.57 18822318390 163374000 \n",
+ "11 0.183167 37.00 6.37 0.83 54701475530 234137000 \n",
+ "3 -0.138798 267.18 0.31 1.69 4084648875 49272000 \n",
+ "13 0.195583 31.03 3.52 0.76 20549043209 188247000 \n",
+ "62 0.234858 37.43 7.42 1.21 52148688479 187700000 "
]
},
- "execution_count": 42,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
@@ -1576,7 +1864,7 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
@@ -1604,6 +1892,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1618,6 +1907,7 @@
" AmerisourceBergen Corp \n",
" Health Care \n",
" 2.824204 \n",
+ " 0.018487 \n",
" 30.62 \n",
" 3.08 \n",
" 1.01 \n",
@@ -1630,6 +1920,7 @@
" Bristol-Myers Squibb \n",
" Health Care \n",
" 2.688515 \n",
+ " 0.083177 \n",
" 33.05 \n",
" 2.01 \n",
" 0.76 \n",
@@ -1642,6 +1933,7 @@
" Hologic \n",
" Health Care \n",
" 2.425412 \n",
+ " 0.129968 \n",
" 173.01 \n",
" 0.31 \n",
" 0.85 \n",
@@ -1654,6 +1946,7 @@
" Medtronic plc \n",
" Health Care \n",
" 1.917921 \n",
+ " 0.124213 \n",
" 33.97 \n",
" 3.45 \n",
" 0.60 \n",
@@ -1666,6 +1959,7 @@
" Amgen Inc \n",
" Health Care \n",
" 1.861649 \n",
+ " 0.151749 \n",
" 17.36 \n",
" 12.88 \n",
" 1.12 \n",
@@ -1678,6 +1972,7 @@
" Merck & Co. \n",
" Health Care \n",
" 1.368058 \n",
+ " 0.147016 \n",
" 21.52 \n",
" 3.84 \n",
" 0.57 \n",
@@ -1690,6 +1985,7 @@
" Incyte \n",
" Health Care \n",
" 1.268258 \n",
+ " 0.076793 \n",
" 38.21 \n",
" 2.05 \n",
" 1.06 \n",
@@ -1702,6 +1998,7 @@
" Mettler Toledo \n",
" Health Care \n",
" 0.969242 \n",
+ " 0.232895 \n",
" 33.97 \n",
" 22.47 \n",
" 1.39 \n",
@@ -1714,6 +2011,7 @@
" Thermo Fisher Scientific \n",
" Health Care \n",
" 0.957237 \n",
+ " 0.223396 \n",
" 36.98 \n",
" 9.17 \n",
" 1.14 \n",
@@ -1726,6 +2024,7 @@
" Boston Scientific \n",
" Health Care \n",
" 0.933787 \n",
+ " 0.233861 \n",
" 12.70 \n",
" 3.33 \n",
" 0.87 \n",
@@ -1738,6 +2037,7 @@
" Mylan N.V. \n",
" Health Care \n",
" 0.893280 \n",
+ " -0.130829 \n",
" 239.58 \n",
" 0.09 \n",
" 1.72 \n",
@@ -1750,6 +2050,7 @@
" United Health Group Inc. \n",
" Health Care \n",
" 0.892893 \n",
+ " 0.243094 \n",
" 20.86 \n",
" 14.33 \n",
" 0.69 \n",
@@ -1762,6 +2063,7 @@
" ResMed \n",
" Health Care \n",
" 0.834963 \n",
+ " 0.236317 \n",
" 56.31 \n",
" 3.14 \n",
" 0.48 \n",
@@ -1773,38 +2075,38 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio \\\n",
- "9 ABC AmerisourceBergen Corp Health Care 2.824204 30.62 \n",
- "19 BMY Bristol-Myers Squibb Health Care 2.688515 33.05 \n",
- "48 HOLX Hologic Health Care 2.425412 173.01 \n",
- "57 MDT Medtronic plc Health Care 1.917921 33.97 \n",
- "10 AMGN Amgen Inc Health Care 1.861649 17.36 \n",
- "58 MRK Merck & Co. Health Care 1.368058 21.52 \n",
- "51 INCY Incyte Health Care 1.268258 38.21 \n",
- "59 MTD Mettler Toledo Health Care 0.969242 33.97 \n",
- "87 TMO Thermo Fisher Scientific Health Care 0.957237 36.98 \n",
- "18 BSX Boston Scientific Health Care 0.933787 12.70 \n",
- "64 MYL Mylan N.V. Health Care 0.893280 239.58 \n",
- "88 UNH United Health Group Inc. Health Care 0.892893 20.86 \n",
- "77 RMD ResMed Health Care 0.834963 56.31 \n",
+ " ticker name sector sharpe ratio FFM returns \\\n",
+ "9 ABC AmerisourceBergen Corp Health Care 2.824204 0.018487 \n",
+ "19 BMY Bristol-Myers Squibb Health Care 2.688515 0.083177 \n",
+ "48 HOLX Hologic Health Care 2.425412 0.129968 \n",
+ "57 MDT Medtronic plc Health Care 1.917921 0.124213 \n",
+ "10 AMGN Amgen Inc Health Care 1.861649 0.151749 \n",
+ "58 MRK Merck & Co. Health Care 1.368058 0.147016 \n",
+ "51 INCY Incyte Health Care 1.268258 0.076793 \n",
+ "59 MTD Mettler Toledo Health Care 0.969242 0.232895 \n",
+ "87 TMO Thermo Fisher Scientific Health Care 0.957237 0.223396 \n",
+ "18 BSX Boston Scientific Health Care 0.933787 0.233861 \n",
+ "64 MYL Mylan N.V. Health Care 0.893280 -0.130829 \n",
+ "88 UNH United Health Group Inc. Health Care 0.892893 0.243094 \n",
+ "77 RMD ResMed Health Care 0.834963 0.236317 \n",
"\n",
- " EPS beta mkt cap shares \n",
- "9 3.08 1.01 19427969245 205892000 \n",
- "19 2.01 0.76 155607591281 2344185000 \n",
- "48 0.31 0.85 13960272160 263302000 \n",
- "57 3.45 0.60 157266553194 1340378000 \n",
- "10 12.88 1.12 131810065840 589807000 \n",
- "58 3.84 0.57 210425581484 2545984000 \n",
- "51 2.05 1.06 17006076538 216776000 \n",
- "59 22.47 1.39 18357249893 24053000 \n",
- "87 9.17 1.14 136012138268 400991000 \n",
- "18 3.33 0.87 58972695354 1393824000 \n",
- "64 0.09 1.72 11303303743 516177000 \n",
- "88 14.33 0.69 283068652543 947415000 \n",
- "77 3.14 0.48 25539363082 144617000 "
+ " P/E ratio EPS beta mkt cap shares \n",
+ "9 30.62 3.08 1.01 19427969245 205892000 \n",
+ "19 33.05 2.01 0.76 155607591281 2344185000 \n",
+ "48 173.01 0.31 0.85 13960272160 263302000 \n",
+ "57 33.97 3.45 0.60 157266553194 1340378000 \n",
+ "10 17.36 12.88 1.12 131810065840 589807000 \n",
+ "58 21.52 3.84 0.57 210425581484 2545984000 \n",
+ "51 38.21 2.05 1.06 17006076538 216776000 \n",
+ "59 33.97 22.47 1.39 18357249893 24053000 \n",
+ "87 36.98 9.17 1.14 136012138268 400991000 \n",
+ "18 12.70 3.33 0.87 58972695354 1393824000 \n",
+ "64 239.58 0.09 1.72 11303303743 516177000 \n",
+ "88 20.86 14.33 0.69 283068652543 947415000 \n",
+ "77 56.31 3.14 0.48 25539363082 144617000 "
]
},
- "execution_count": 43,
+ "execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
@@ -1817,7 +2119,7 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
@@ -1845,6 +2147,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -1859,6 +2162,7 @@
" Southwest Airlines \n",
" Industrials \n",
" 1.726576 \n",
+ " 0.107833 \n",
" 13.77 \n",
" 4.21 \n",
" 1.47 \n",
@@ -1871,6 +2175,7 @@
" Eaton Corporation \n",
" Industrials \n",
" 1.604766 \n",
+ " 0.128998 \n",
" 19.71 \n",
" 5.25 \n",
" 1.42 \n",
@@ -1883,6 +2188,7 @@
" FedEx Corporation \n",
" Industrials \n",
" 1.509820 \n",
+ " 0.024254 \n",
" 583.74 \n",
" 0.27 \n",
" 1.71 \n",
@@ -1895,6 +2201,7 @@
" Grainger (W.W.) Inc. \n",
" Industrials \n",
" 1.358110 \n",
+ " 0.143754 \n",
" 17.94 \n",
" 17.15 \n",
" 0.97 \n",
@@ -1907,6 +2214,7 @@
" Raytheon Co. \n",
" Industrials \n",
" 1.158338 \n",
+ " 0.194796 \n",
" 19.05 \n",
" 11.93 \n",
" 0.85 \n",
@@ -1919,6 +2227,7 @@
" Huntington Ingalls Industries \n",
" Industrials \n",
" 1.154338 \n",
+ " 0.172310 \n",
" 18.57 \n",
" 13.26 \n",
" 1.24 \n",
@@ -1931,6 +2240,7 @@
" Cintas Corporation \n",
" Industrials \n",
" 0.703186 \n",
+ " 0.285973 \n",
" 35.38 \n",
" 8.51 \n",
" 0.99 \n",
@@ -1951,17 +2261,17 @@
"50 HII Huntington Ingalls Industries Industrials 1.154338 \n",
"25 CTAS Cintas Corporation Industrials 0.703186 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "80 13.77 4.21 1.47 29987649751 517296000 \n",
- "31 19.71 5.25 1.42 42807571261 413400000 \n",
- "36 583.74 0.27 1.71 41418694505 261119000 \n",
- "46 17.94 17.15 0.97 16517112872 53688000 \n",
- "76 19.05 11.93 0.85 63256224340 278441000 \n",
- "50 18.57 13.26 1.24 10035519873 40760000 \n",
- "25 35.38 8.51 0.99 31216601386 103751000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "80 0.107833 13.77 4.21 1.47 29987649751 517296000 \n",
+ "31 0.128998 19.71 5.25 1.42 42807571261 413400000 \n",
+ "36 0.024254 583.74 0.27 1.71 41418694505 261119000 \n",
+ "46 0.143754 17.94 17.15 0.97 16517112872 53688000 \n",
+ "76 0.194796 19.05 11.93 0.85 63256224340 278441000 \n",
+ "50 0.172310 18.57 13.26 1.24 10035519873 40760000 \n",
+ "25 0.285973 35.38 8.51 0.99 31216601386 103751000 "
]
},
- "execution_count": 44,
+ "execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@@ -1974,7 +2284,7 @@
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": 23,
"metadata": {},
"outputs": [
{
@@ -2002,6 +2312,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2016,6 +2327,7 @@
" Oracle Corp. \n",
" Information Technology \n",
" 1.949619 \n",
+ " 0.077350 \n",
" 17.61 \n",
" 3.15 \n",
" 1.11 \n",
@@ -2028,6 +2340,7 @@
" F5 Networks \n",
" Information Technology \n",
" 1.701382 \n",
+ " 0.064989 \n",
" 19.49 \n",
" 6.54 \n",
" 0.98 \n",
@@ -2040,6 +2353,7 @@
" Gartner Inc \n",
" Information Technology \n",
" 1.337328 \n",
+ " 0.165214 \n",
" 59.34 \n",
" 2.57 \n",
" 1.21 \n",
@@ -2052,6 +2366,7 @@
" Alphabet Inc Class A \n",
" Information Technology \n",
" 1.198026 \n",
+ " 0.214640 \n",
" 30.89 \n",
" 49.16 \n",
" 1.02 \n",
@@ -2064,6 +2379,7 @@
" Accenture plc \n",
" Information Technology \n",
" 1.113858 \n",
+ " 0.225818 \n",
" 28.34 \n",
" 7.49 \n",
" 1.03 \n",
@@ -2076,6 +2392,7 @@
" Facebook, Inc. \n",
" Information Technology \n",
" 1.105767 \n",
+ " 0.238789 \n",
" 33.32 \n",
" 6.43 \n",
" 1.05 \n",
@@ -2088,6 +2405,7 @@
" Automatic Data Processing \n",
" Information Technology \n",
" 1.004579 \n",
+ " 0.183269 \n",
" 32.04 \n",
" 5.66 \n",
" 0.87 \n",
@@ -2100,6 +2418,7 @@
" Fiserv Inc \n",
" Information Technology \n",
" 0.948895 \n",
+ " 0.249903 \n",
" 71.58 \n",
" 1.71 \n",
" 0.80 \n",
@@ -2112,6 +2431,7 @@
" Apple Inc. \n",
" Information Technology \n",
" 0.919063 \n",
+ " 0.236049 \n",
" 25.66 \n",
" 12.66 \n",
" 1.29 \n",
@@ -2124,6 +2444,7 @@
" Texas Instruments \n",
" Information Technology \n",
" 0.886247 \n",
+ " 0.224912 \n",
" 25.24 \n",
" 5.24 \n",
" 1.24 \n",
@@ -2136,6 +2457,7 @@
" Salesforce.com \n",
" Information Technology \n",
" 0.885841 \n",
+ " 0.207470 \n",
" 200.68 \n",
" 0.95 \n",
" 1.19 \n",
@@ -2148,6 +2470,7 @@
" Synopsys Inc. \n",
" Information Technology \n",
" 0.801366 \n",
+ " 0.258979 \n",
" 47.31 \n",
" 3.45 \n",
" 1.18 \n",
@@ -2160,6 +2483,7 @@
" Motorola Solutions Inc. \n",
" Information Technology \n",
" 0.785703 \n",
+ " 0.231468 \n",
" 37.31 \n",
" 4.94 \n",
" 0.50 \n",
@@ -2172,6 +2496,7 @@
" Microsoft Corp. \n",
" Information Technology \n",
" 0.688151 \n",
+ " 0.322501 \n",
" 32.28 \n",
" 5.74 \n",
" 1.15 \n",
@@ -2184,6 +2509,7 @@
" Adobe Systems Inc \n",
" Information Technology \n",
" 0.616060 \n",
+ " 0.329761 \n",
" 63.17 \n",
" 6.01 \n",
" 1.09 \n",
@@ -2212,25 +2538,25 @@
"60 MSFT Microsoft Corp. Information Technology 0.688151 \n",
"1 ADBE Adobe Systems Inc Information Technology 0.616060 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "70 17.61 3.15 1.11 177928293945 3207649000 \n",
- "34 19.49 6.54 0.98 7753118169 60804000 \n",
- "41 59.34 2.57 1.21 13633532057 89453000 \n",
- "7 30.89 49.16 1.02 1044236513876 299895000 \n",
- "0 28.34 7.49 1.03 139515576338 656946000 \n",
- "35 33.32 6.43 1.05 610509360122 2405746000 \n",
- "14 32.04 5.66 0.87 78255412500 431754000 \n",
- "38 71.58 1.71 0.80 83164756192 679895000 \n",
- "12 25.66 12.66 1.29 1421812279411 4375480000 \n",
- "85 25.24 5.24 1.24 123223956977 932032000 \n",
- "79 200.68 0.95 1.19 168485647293 887000000 \n",
- "83 47.31 3.45 1.18 24589893168 150535000 \n",
- "63 37.31 4.94 0.50 31596072387 171336000 \n",
- "60 32.28 5.74 1.15 1409780857873 7606047000 \n",
- "1 63.17 6.01 1.09 185174936969 487726000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "70 0.077350 17.61 3.15 1.11 177928293945 3207649000 \n",
+ "34 0.064989 19.49 6.54 0.98 7753118169 60804000 \n",
+ "41 0.165214 59.34 2.57 1.21 13633532057 89453000 \n",
+ "7 0.214640 30.89 49.16 1.02 1044236513876 299895000 \n",
+ "0 0.225818 28.34 7.49 1.03 139515576338 656946000 \n",
+ "35 0.238789 33.32 6.43 1.05 610509360122 2405746000 \n",
+ "14 0.183269 32.04 5.66 0.87 78255412500 431754000 \n",
+ "38 0.249903 71.58 1.71 0.80 83164756192 679895000 \n",
+ "12 0.236049 25.66 12.66 1.29 1421812279411 4375480000 \n",
+ "85 0.224912 25.24 5.24 1.24 123223956977 932032000 \n",
+ "79 0.207470 200.68 0.95 1.19 168485647293 887000000 \n",
+ "83 0.258979 47.31 3.45 1.18 24589893168 150535000 \n",
+ "63 0.231468 37.31 4.94 0.50 31596072387 171336000 \n",
+ "60 0.322501 32.28 5.74 1.15 1409780857873 7606047000 \n",
+ "1 0.329761 63.17 6.01 1.09 185174936969 487726000 "
]
},
- "execution_count": 45,
+ "execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
@@ -2243,7 +2569,7 @@
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": 24,
"metadata": {},
"outputs": [
{
@@ -2271,6 +2597,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2285,6 +2612,7 @@
" LyondellBasell \n",
" Materials \n",
" 2.072393 \n",
+ " 0.103512 \n",
" 8.65 \n",
" 9.55 \n",
" 1.45 \n",
@@ -2297,6 +2625,7 @@
" Newmont Mining Corporation \n",
" Materials \n",
" 1.248661 \n",
+ " 0.189686 \n",
" 15.83 \n",
" 2.78 \n",
" 0.16 \n",
@@ -2309,6 +2638,7 @@
" Air Products & Chemicals Inc \n",
" Materials \n",
" 1.224824 \n",
+ " 0.153161 \n",
" 30.09 \n",
" 8.51 \n",
" 0.86 \n",
@@ -2321,6 +2651,7 @@
" Freeport-McMoRan Inc. \n",
" Materials \n",
" 1.031316 \n",
+ " 0.038646 \n",
" 78.35 \n",
" 0.16 \n",
" 2.42 \n",
@@ -2333,6 +2664,7 @@
" Albemarle Corp \n",
" Materials \n",
" 0.990292 \n",
+ " 0.132207 \n",
" 16.67 \n",
" 5.38 \n",
" 1.57 \n",
@@ -2345,6 +2677,7 @@
" FMC Corporation \n",
" Materials \n",
" 0.889526 \n",
+ " 0.193867 \n",
" 27.41 \n",
" 3.85 \n",
" 1.54 \n",
@@ -2356,24 +2689,24 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio \\\n",
- "55 LYB LyondellBasell Materials 2.072393 8.65 \n",
- "65 NEM Newmont Mining Corporation Materials 1.248661 15.83 \n",
- "4 APD Air Products & Chemicals Inc Materials 1.224824 30.09 \n",
- "40 FCX Freeport-McMoRan Inc. Materials 1.031316 78.35 \n",
- "5 ALB Albemarle Corp Materials 0.990292 16.67 \n",
- "39 FMC FMC Corporation Materials 0.889526 27.41 \n",
+ " ticker name sector sharpe ratio FFM returns \\\n",
+ "55 LYB LyondellBasell Materials 2.072393 0.103512 \n",
+ "65 NEM Newmont Mining Corporation Materials 1.248661 0.189686 \n",
+ "4 APD Air Products & Chemicals Inc Materials 1.224824 0.153161 \n",
+ "40 FCX Freeport-McMoRan Inc. Materials 1.031316 0.038646 \n",
+ "5 ALB Albemarle Corp Materials 0.990292 0.132207 \n",
+ "39 FMC FMC Corporation Materials 0.889526 0.193867 \n",
"\n",
- " EPS beta mkt cap shares \n",
- "55 9.55 1.45 27505799491 333000000 \n",
- "65 2.78 0.16 36130286851 819839000 \n",
- "4 8.51 0.86 56495776935 220678000 \n",
- "40 0.16 2.42 17759187027 1450914000 \n",
- "5 5.38 1.57 9504798055 106033000 \n",
- "39 3.85 1.54 13670494208 129615000 "
+ " P/E ratio EPS beta mkt cap shares \n",
+ "55 8.65 9.55 1.45 27505799491 333000000 \n",
+ "65 15.83 2.78 0.16 36130286851 819839000 \n",
+ "4 30.09 8.51 0.86 56495776935 220678000 \n",
+ "40 78.35 0.16 2.42 17759187027 1450914000 \n",
+ "5 16.67 5.38 1.57 9504798055 106033000 \n",
+ "39 27.41 3.85 1.54 13670494208 129615000 "
]
},
- "execution_count": 46,
+ "execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
@@ -2386,7 +2719,7 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": 25,
"metadata": {},
"outputs": [
{
@@ -2414,6 +2747,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2428,6 +2762,7 @@
" Host Hotels & Resorts \n",
" Real Estate \n",
" 2.308137 \n",
+ " 0.052833 \n",
" 10.89 \n",
" 1.55 \n",
" 1.17 \n",
@@ -2440,6 +2775,7 @@
" Iron Mountain Incorporated \n",
" Real Estate \n",
" 2.233518 \n",
+ " 0.073061 \n",
" 35.67 \n",
" 0.93 \n",
" 0.53 \n",
@@ -2452,6 +2788,7 @@
" Equity Residential \n",
" Real Estate \n",
" 2.158996 \n",
+ " 0.089495 \n",
" 34.53 \n",
" 2.50 \n",
" 0.45 \n",
@@ -2464,6 +2801,7 @@
" Crown Castle International Corp. \n",
" Real Estate \n",
" 1.281977 \n",
+ " 0.163975 \n",
" 83.64 \n",
" 1.98 \n",
" 0.30 \n",
@@ -2481,14 +2819,14 @@
"32 EQR Equity Residential Real Estate 2.158996 \n",
"28 CCI Crown Castle International Corp. Real Estate 1.281977 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "49 10.89 1.55 1.17 12127479870 717178000 \n",
- "52 35.67 0.93 0.53 9521121824 287300000 \n",
- "32 34.53 2.50 0.45 32134657027 371671000 \n",
- "28 83.64 1.98 0.30 69005081855 415768000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "49 0.052833 10.89 1.55 1.17 12127479870 717178000 \n",
+ "52 0.073061 35.67 0.93 0.53 9521121824 287300000 \n",
+ "32 0.089495 34.53 2.50 0.45 32134657027 371671000 \n",
+ "28 0.163975 83.64 1.98 0.30 69005081855 415768000 "
]
},
- "execution_count": 51,
+ "execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
@@ -2501,7 +2839,7 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": 26,
"metadata": {},
"outputs": [
{
@@ -2529,6 +2867,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2543,6 +2882,7 @@
" PPL Corp. \n",
" Utilities \n",
" 2.755488 \n",
+ " 0.098239 \n",
" 14.38 \n",
" 2.46 \n",
" 0.51 \n",
@@ -2555,6 +2895,7 @@
" FirstEnergy Corp \n",
" Utilities \n",
" 1.510567 \n",
+ " 0.129910 \n",
" 31.45 \n",
" 1.66 \n",
" 0.20 \n",
@@ -2567,6 +2908,7 @@
" Alliant Energy Corp \n",
" Utilities \n",
" 1.366718 \n",
+ " 0.166244 \n",
" 26.79 \n",
" 2.23 \n",
" 0.23 \n",
@@ -2579,6 +2921,7 @@
" CenterPoint Energy \n",
" Utilities \n",
" 1.361230 \n",
+ " 0.121502 \n",
" 21.58 \n",
" 1.26 \n",
" 0.44 \n",
@@ -2591,6 +2934,7 @@
" AES Corp \n",
" Utilities \n",
" 1.182641 \n",
+ " 0.162654 \n",
" 27.44 \n",
" 0.76 \n",
" 1.05 \n",
@@ -2603,6 +2947,7 @@
" NextEra Energy \n",
" Utilities \n",
" 0.928683 \n",
+ " 0.227986 \n",
" 34.73 \n",
" 8.02 \n",
" 0.15 \n",
@@ -2615,6 +2960,7 @@
" NRG Energy \n",
" Utilities \n",
" 0.692217 \n",
+ " 0.208670 \n",
" 10.31 \n",
" 3.89 \n",
" 0.71 \n",
@@ -2626,26 +2972,26 @@
""
],
"text/plain": [
- " ticker name sector sharpe ratio P/E ratio EPS \\\n",
- "73 PPL PPL Corp. Utilities 2.755488 14.38 2.46 \n",
- "37 FE FirstEnergy Corp Utilities 1.510567 31.45 1.66 \n",
- "6 LNT Alliant Energy Corp Utilities 1.366718 26.79 2.23 \n",
- "23 CNP CenterPoint Energy Utilities 1.361230 21.58 1.26 \n",
- "2 AES AES Corp Utilities 1.182641 27.44 0.76 \n",
- "66 NEE NextEra Energy Utilities 0.928683 34.73 8.02 \n",
- "67 NRG NRG Energy Utilities 0.692217 10.31 3.89 \n",
+ " ticker name sector sharpe ratio FFM returns \\\n",
+ "73 PPL PPL Corp. Utilities 2.755488 0.098239 \n",
+ "37 FE FirstEnergy Corp Utilities 1.510567 0.129910 \n",
+ "6 LNT Alliant Energy Corp Utilities 1.366718 0.166244 \n",
+ "23 CNP CenterPoint Energy Utilities 1.361230 0.121502 \n",
+ "2 AES AES Corp Utilities 1.182641 0.162654 \n",
+ "66 NEE NextEra Energy Utilities 0.928683 0.227986 \n",
+ "67 NRG NRG Energy Utilities 0.692217 0.208670 \n",
"\n",
- " beta mkt cap shares \n",
- "73 0.51 25573676437 723033000 \n",
- "37 0.20 28241486749 540714000 \n",
- "6 0.23 14358652779 244628000 \n",
- "23 0.44 13650929559 502242000 \n",
- "2 1.05 13895280692 663893000 \n",
- "66 0.15 136133886150 488776000 \n",
- "67 0.71 10078855985 251594000 "
+ " P/E ratio EPS beta mkt cap shares \n",
+ "73 14.38 2.46 0.51 25573676437 723033000 \n",
+ "37 31.45 1.66 0.20 28241486749 540714000 \n",
+ "6 26.79 2.23 0.23 14358652779 244628000 \n",
+ "23 21.58 1.26 0.44 13650929559 502242000 \n",
+ "2 27.44 0.76 1.05 13895280692 663893000 \n",
+ "66 34.73 8.02 0.15 136133886150 488776000 \n",
+ "67 10.31 3.89 0.71 10078855985 251594000 "
]
},
- "execution_count": 52,
+ "execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
@@ -2658,7 +3004,7 @@
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": 27,
"metadata": {},
"outputs": [
{
@@ -2686,6 +3032,7 @@
" name \n",
" sector \n",
" sharpe ratio \n",
+ " FFM returns \n",
" P/E ratio \n",
" EPS \n",
" beta \n",
@@ -2700,6 +3047,7 @@
" Genuine Parts \n",
" Consumer Discretionary \n",
" 2.924464 \n",
+ " 0.074228 \n",
" 17.71 \n",
" 5.45 \n",
" 0.89 \n",
@@ -2712,6 +3060,7 @@
" General Mills \n",
" Consumer Staples \n",
" 2.641281 \n",
+ " 0.063147 \n",
" 15.34 \n",
" 3.48 \n",
" 0.73 \n",
@@ -2724,6 +3073,7 @@
" Cabot Oil & Gas \n",
" Energy \n",
" 1.952983 \n",
+ " -0.050017 \n",
" 7.80 \n",
" 1.90 \n",
" 0.47 \n",
@@ -2736,6 +3086,7 @@
" Synchrony Financial \n",
" Financials \n",
" 2.493336 \n",
+ " 0.091836 \n",
" 6.07 \n",
" 5.56 \n",
" 1.21 \n",
@@ -2748,6 +3099,7 @@
" Amgen Inc \n",
" Health Care \n",
" 1.861649 \n",
+ " 0.151749 \n",
" 17.36 \n",
" 12.88 \n",
" 1.12 \n",
@@ -2760,6 +3112,7 @@
" Southwest Airlines \n",
" Industrials \n",
" 1.726576 \n",
+ " 0.107833 \n",
" 13.77 \n",
" 4.21 \n",
" 1.47 \n",
@@ -2772,6 +3125,7 @@
" Alphabet Inc Class A \n",
" Information Technology \n",
" 1.198026 \n",
+ " 0.214640 \n",
" 30.89 \n",
" 49.16 \n",
" 1.02 \n",
@@ -2784,6 +3138,7 @@
" LyondellBasell \n",
" Materials \n",
" 2.072393 \n",
+ " 0.103512 \n",
" 8.65 \n",
" 9.55 \n",
" 1.45 \n",
@@ -2796,6 +3151,7 @@
" Host Hotels & Resorts \n",
" Real Estate \n",
" 2.308137 \n",
+ " 0.052833 \n",
" 10.89 \n",
" 1.55 \n",
" 1.17 \n",
@@ -2808,6 +3164,7 @@
" PPL Corp. \n",
" Utilities \n",
" 2.755488 \n",
+ " 0.098239 \n",
" 14.38 \n",
" 2.46 \n",
" 0.51 \n",
@@ -2831,20 +3188,20 @@
"8 HST Host Hotels & Resorts Real Estate 2.308137 \n",
"9 PPL PPL Corp. Utilities 2.755488 \n",
"\n",
- " P/E ratio EPS beta mkt cap shares \n",
- "0 17.71 5.45 0.89 14016415887 145293000 \n",
- "1 15.34 3.48 0.73 32242795100 604817000 \n",
- "2 7.80 1.90 0.47 6037284157 407925000 \n",
- "3 6.07 5.56 1.21 20704848750 613477000 \n",
- "4 17.36 12.88 1.12 131810065840 589807000 \n",
- "5 13.77 4.21 1.47 29987649751 517296000 \n",
- "6 30.89 49.16 1.02 1044236513876 299895000 \n",
- "7 8.65 9.55 1.45 27505799491 333000000 \n",
- "8 10.89 1.55 1.17 12127479870 717178000 \n",
- "9 14.38 2.46 0.51 25573676437 723033000 "
+ " FFM returns P/E ratio EPS beta mkt cap shares \n",
+ "0 0.074228 17.71 5.45 0.89 14016415887 145293000 \n",
+ "1 0.063147 15.34 3.48 0.73 32242795100 604817000 \n",
+ "2 -0.050017 7.80 1.90 0.47 6037284157 407925000 \n",
+ "3 0.091836 6.07 5.56 1.21 20704848750 613477000 \n",
+ "4 0.151749 17.36 12.88 1.12 131810065840 589807000 \n",
+ "5 0.107833 13.77 4.21 1.47 29987649751 517296000 \n",
+ "6 0.214640 30.89 49.16 1.02 1044236513876 299895000 \n",
+ "7 0.103512 8.65 9.55 1.45 27505799491 333000000 \n",
+ "8 0.052833 10.89 1.55 1.17 12127479870 717178000 \n",
+ "9 0.098239 14.38 2.46 0.51 25573676437 723033000 "
]
},
- "execution_count": 66,
+ "execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
diff --git a/selection_data.csv b/selection_data.csv
index 1ca7832..78a1164 100644
--- a/selection_data.csv
+++ b/selection_data.csv
@@ -1,93 +1,93 @@
-ticker,name,sector,sharpe ratio,P/E ratio,EPS,beta,mkt cap,shares
-ACN,Accenture plc,Information Technology,1.113857669340631,28.34,7.49,1.03,139515576338,656946000
-ADBE,Adobe Systems Inc,Information Technology,0.6160597494509739,63.17,6.01,1.09,185174936969,487726000
-AES,AES Corp,Utilities,1.1826406099615412,27.44,0.76,1.05,13895280692,663893000
-AMG,Affiliated Managers Group Inc,Financials,1.0979859640832188,267.18,0.31,1.69,4084648875,49272000
-APD,Air Products & Chemicals Inc,Materials,1.2248244816385878,30.09,8.51,0.86,56495776935,220678000
-ALB,Albemarle Corp,Materials,0.9902917360691272,16.67,5.38,1.57,9504798055,106033000
-LNT,Alliant Energy Corp,Utilities,1.366717870072912,26.79,2.23,0.23,14358652779,244628000
-GOOGL,Alphabet Inc Class A,Information Technology,1.1980263475215909,30.89,49.16,1.02,1044236513876,299895000
-AXP,American Express Co,Financials,1.2144084830799449,17.01,7.99,0.99,111178449600,808041000
-ABC,AmerisourceBergen Corp,Health Care,2.824204459596733,30.62,3.08,1.01,19427969245,205892000
-AMGN,Amgen Inc,Health Care,1.8616491950461436,17.36,12.88,1.12,131810065840,589807000
-AON,Aon plc,Financials,1.1043185924986845,37.0,6.37,0.83,54701475530,234137000
-AAPL,Apple Inc.,Information Technology,0.9190627984536254,25.66,12.66,1.29,1421812279411,4375480000
-AJG,Arthur J. Gallagher & Co.,Financials,0.9671115946025484,31.03,3.52,0.76,20549043209,188247000
-ADP,Automatic Data Processing,Information Technology,1.0045789926171458,32.04,5.66,0.87,78255412500,431754000
-BBY,Best Buy Co. Inc.,Consumer Discretionary,0.8239151677600225,15.98,5.64,1.12,23344272933,258777000
-HRB,Block H&R,Financials,2.2106749521427664,11.75,1.9,0.23,4369605316,195246000
-BWA,BorgWarner,Consumer Discretionary,1.6822710938226986,9.2,3.71,1.91,7048901814,206410000
-BSX,Boston Scientific,Health Care,0.933786790381214,12.7,3.33,0.87,58972695354,1393824000
-BMY,Bristol-Myers Squibb,Health Care,2.6885152748619983,33.05,2.01,0.76,155607591281,2344185000
-COG,Cabot Oil & Gas,Energy,1.9529827367707384,7.8,1.9,0.47,6037284157,407925000
-COF,Capital One Financial,Financials,2.0347637955056546,9.31,11.02,1.25,46865423721,456600000
-KMX,Carmax Inc,Consumer Discretionary,1.703158159266752,19.16,5.16,1.1,16144071451,163385000
-CNP,CenterPoint Energy,Utilities,1.3612303069648497,21.58,1.26,0.44,13650929559,502242000
-CINF,Cincinnati Financial,Financials,1.121373755776759,9.52,12.1,0.57,18822318390,163374000
-CTAS,Cintas Corporation,Industrials,0.7031855337517299,35.38,8.51,0.99,31216601386,103751000
-KO,Coca-Cola Company (The),Consumer Staples,2.1971578395739524,28.99,2.07,0.41,256586003265,4280000000
-COST,Costco Wholesale Corp.,Consumer Staples,1.0606439166888946,37.75,8.43,0.9,140615987901,441758000
-CCI,Crown Castle International Corp.,Real Estate,1.28197687434905,83.64,1.98,0.3,69005081855,415768000
-CVS,CVS Health,Consumer Staples,1.7079627340498365,14.05,5.08,0.93,92849804253,1300964000
-DISCK,Discovery Communications-C,Consumer Discretionary,2.3096592718590108,11.1,2.59,1.45,15392873644,360664000
-ETN,Eaton Corporation,Industrials,1.6047656571399305,19.71,5.25,1.42,42807571261,413400000
-EQR,Equity Residential,Real Estate,2.1589960066234664,34.53,2.5,0.45,32134657027,371671000
-EXPE,Expedia Inc.,Consumer Discretionary,2.407311381193101,32.58,3.77,1.01,17792025802,139363000
-FFIV,F5 Networks,Information Technology,1.7013819459588144,19.49,6.54,0.98,7753118169,60804000
-FB,"Facebook, Inc.",Information Technology,1.1057666021536463,33.32,6.43,1.05,610509360122,2405746000
-FDX,FedEx Corporation,Industrials,1.5098202059987225,583.74,0.27,1.71,41418694505,261119000
-FE,FirstEnergy Corp,Utilities,1.510567029063732,31.45,1.66,0.2,28241486749,540714000
-FISV,Fiserv Inc,Information Technology,0.9488954080578804,71.58,1.71,0.8,83164756192,679895000
-FMC,FMC Corporation,Materials,0.8895256452785432,27.41,3.85,1.54,13670494208,129615000
-FCX,Freeport-McMoRan Inc.,Materials,1.0313162803944909,78.35,0.16,2.42,17759187027,1450914000
-IT,Gartner Inc,Information Technology,1.3373284476702674,59.34,2.57,1.21,13633532057,89453000
-GIS,General Mills,Consumer Staples,2.6412807761987938,15.34,3.48,0.73,32242795100,604817000
-GM,General Motors,Consumer Discretionary,1.9037211165069965,7.6,4.57,1.38,49672072361,1429002000
-GPC,Genuine Parts,Consumer Discretionary,2.9244641954801547,17.71,5.45,0.89,14016415887,145293000
-GS,Goldman Sachs Group,Financials,1.8288212830340496,11.27,21.03,1.32,83946946608,354087000
-GWW,Grainger (W.W.) Inc.,Industrials,1.3581101466189422,17.94,17.15,0.97,16517112872,53688000
-HLT,Hilton Worldwide Holdings Inc,Consumer Discretionary,1.0598993481607704,37.27,3.04,1.14,31415437971,277448000
-HOLX,Hologic,Health Care,2.425411589403344,173.01,0.31,0.85,13960272160,263302000
-HST,Host Hotels & Resorts,Real Estate,2.308137021714921,10.89,1.55,1.17,12127479870,717178000
-HII,Huntington Ingalls Industries,Industrials,1.1543380976790991,18.57,13.26,1.24,10035519873,40760000
-INCY,Incyte,Health Care,1.2682583277151145,38.21,2.05,1.06,17006076538,216776000
-IRM,Iron Mountain Incorporated,Real Estate,2.2335183274879347,35.67,0.93,0.53,9521121824,287300000
-KMI,Kinder Morgan,Energy,1.0384695673083184,22.87,0.96,0.81,49831386000,2265063000
-LKQ,LKQ Corporation,Consumer Discretionary,2.216065603315,23.73,1.4,1.3,10174538633,306462000
-LYB,LyondellBasell,Materials,2.072392824468477,8.65,9.55,1.45,27505799491,333000000
-M,Macy's Inc.,Consumer Discretionary,0.8264829931760201,5.39,3.09,0.66,5150446573,308965000
-MDT,Medtronic plc,Health Care,1.9179209088058464,33.97,3.45,0.6,157266553194,1340378000
-MRK,Merck & Co.,Health Care,1.3680581566358117,21.52,3.84,0.57,210425581484,2545984000
-MTD,Mettler Toledo,Health Care,0.9692418639176908,33.97,22.47,1.39,18357249893,24053000
-MSFT,Microsoft Corp.,Information Technology,0.6881506526553905,32.28,5.74,1.15,1409780857873,7606047000
-MHK,Mohawk Industries,Consumer Discretionary,1.2551682079723412,13.4,10.3,1.36,9882403253,71622000
-MCO,Moody's Corp,Financials,0.927983578033472,37.43,7.42,1.21,52148688479,187700000
-MSI,Motorola Solutions Inc.,Information Technology,0.7857028051967873,37.31,4.94,0.5,31596072387,171336000
-MYL,Mylan N.V.,Health Care,0.8932799452587622,239.58,0.09,1.72,11303303743,516177000
-NEM,Newmont Mining Corporation,Materials,1.2486611843780435,15.83,2.78,0.16,36130286851,819839000
-NEE,NextEra Energy,Utilities,0.9286832114176752,34.73,8.02,0.15,136133886150,488776000
-NRG,NRG Energy,Utilities,0.6922170062921974,10.31,3.89,0.71,10078855985,251594000
-OXY,Occidental Petroleum,Energy,2.054770999686784,29.53,1.41,0.9,37161985836,893317000
-OKE,ONEOK,Energy,0.9173258155980414,25.56,3.01,1.11,31799253894,413085000
-ORCL,Oracle Corp.,Information Technology,1.9496194449404018,17.61,3.15,1.11,177928293945,3207649000
-PEP,PepsiCo Inc.,Consumer Staples,1.9512497779197016,28.31,5.19,0.53,204968008309,1389545000
-RL,Polo Ralph Lauren Corp.,Consumer Discretionary,1.6850277667707554,14.16,8.61,0.9,8984857815,48862000
-PPL,PPL Corp.,Utilities,2.7554877393877537,14.38,2.46,0.51,25573676437,723033000
-PHM,Pulte Homes Inc.,Consumer Discretionary,1.1252252514376082,12.77,3.66,0.56,12605132379,269975000
-RJF,Raymond James Financial Inc.,Financials,1.2811378025870532,13.44,7.36,1.5,13782151374,139284000
-RTN,Raytheon Co.,Industrials,1.158337993905323,19.05,11.93,0.85,63256224340,278441000
-RMD,ResMed,Health Care,0.834963320137938,56.31,3.14,0.48,25539363082,144617000
-RCL,Royal Caribbean Cruises Ltd,Consumer Discretionary,1.3470625587214564,12.55,9.02,1.44,23627921924,208801000
-CRM,Salesforce.com,Information Technology,0.8858414532311987,200.68,0.95,1.19,168485647293,887000000
-LUV,Southwest Airlines,Industrials,1.7265757683369565,13.77,4.21,1.47,29987649751,517296000
-SBUX,Starbucks Corp.,Consumer Discretionary,1.3884881607519866,29.15,3.06,0.56,104787934567,1173700000
-SYF,Synchrony Financial,Financials,2.4933359586834767,6.07,5.56,1.21,20704848750,613477000
-SNPS,Synopsys Inc.,Information Technology,0.8013663430252196,47.31,3.45,1.18,24589893168,150535000
-TGT,Target Corp.,Consumer Discretionary,1.340881991913131,18.64,6.26,0.56,59100734918,506737000
-TXN,Texas Instruments,Information Technology,0.8862468117623082,25.24,5.24,1.24,123223956977,932032000
-HSY,The Hershey Company,Consumer Staples,1.4696819942330823,29.33,5.47,0.02,23779704176,148308000
-TMO,Thermo Fisher Scientific,Health Care,0.9572371356767688,36.98,9.17,1.14,136012138268,400991000
-UNH,United Health Group Inc.,Health Care,0.8928925321222835,20.86,14.33,0.69,283068652543,947415000
-VFC,V.F. Corp.,Consumer Discretionary,1.3232414086548459,25.99,3.22,1.2,33022293377,394720000
-WMT,Wal-Mart Stores,Consumer Staples,1.2710964130621618,23.55,5.0,0.36,334474559018,2837175000
-WBA,Walgreens Boots Alliance,Consumer Staples,2.224201311650672,13.0,4.07,0.92,46817805348,885862000
+ticker,name,sector,sharpe ratio,FFM returns,P/E ratio,EPS,beta,mkt cap,shares
+ACN,Accenture plc,Information Technology,1.113857669340631,0.225818128,28.34,7.49,1.03,139515576338,656946000
+ADBE,Adobe Systems Inc,Information Technology,0.6160597494509739,0.329761028,63.17,6.01,1.09,185174936969,487726000
+AES,AES Corp,Utilities,1.1826406099615412,0.162653808,27.44,0.76,1.05,13895280692,663893000
+AMG,Affiliated Managers Group Inc,Financials,1.0979859640832188,-0.13879823300000002,267.18,0.31,1.69,4084648875,49272000
+APD,Air Products & Chemicals Inc,Materials,1.2248244816385878,0.153160881,30.09,8.51,0.86,56495776935,220678000
+ALB,Albemarle Corp,Materials,0.9902917360691272,0.132207229,16.67,5.38,1.57,9504798055,106033000
+LNT,Alliant Energy Corp,Utilities,1.366717870072912,0.166244327,26.79,2.23,0.23,14358652779,244628000
+GOOGL,Alphabet Inc Class A,Information Technology,1.1980263475215909,0.214639843,30.89,49.16,1.02,1044236513876,299895000
+AXP,American Express Co,Financials,1.2144084830799449,0.132252227,17.01,7.99,0.99,111178449600,808041000
+ABC,AmerisourceBergen Corp,Health Care,2.824204459596733,0.018486986,30.62,3.08,1.01,19427969245,205892000
+AMGN,Amgen Inc,Health Care,1.8616491950461436,0.151748658,17.36,12.88,1.12,131810065840,589807000
+AON,Aon plc,Financials,1.1043185924986845,0.183167419,37.0,6.37,0.83,54701475530,234137000
+AAPL,Apple Inc.,Information Technology,0.9190627984536254,0.236049322,25.66,12.66,1.29,1421812279411,4375480000
+AJG,Arthur J. Gallagher & Co.,Financials,0.9671115946025484,0.195583018,31.03,3.52,0.76,20549043209,188247000
+ADP,Automatic Data Processing,Information Technology,1.0045789926171458,0.18326947600000001,32.04,5.66,0.87,78255412500,431754000
+BBY,Best Buy Co. Inc.,Consumer Discretionary,0.8239151677600225,0.264073092,15.98,5.64,1.12,23344272933,258777000
+HRB,Block H&R,Financials,2.2106749521427664,0.001103738,11.75,1.9,0.23,4369605316,195246000
+BWA,BorgWarner,Consumer Discretionary,1.6822710938226986,-0.008936781,9.2,3.71,1.91,7048901814,206410000
+BSX,Boston Scientific,Health Care,0.933786790381214,0.23386062100000002,12.7,3.33,0.87,58972695354,1393824000
+BMY,Bristol-Myers Squibb,Health Care,2.6885152748619983,0.083176807,33.05,2.01,0.76,155607591281,2344185000
+COG,Cabot Oil & Gas,Energy,1.9529827367707384,-0.050016632000000005,7.8,1.9,0.47,6037284157,407925000
+COF,Capital One Financial,Financials,2.0347637955056546,0.11610429900000001,9.31,11.02,1.25,46865423721,456600000
+KMX,Carmax Inc,Consumer Discretionary,1.703158159266752,0.099285234,19.16,5.16,1.1,16144071451,163385000
+CNP,CenterPoint Energy,Utilities,1.3612303069648497,0.121501687,21.58,1.26,0.44,13650929559,502242000
+CINF,Cincinnati Financial,Financials,1.121373755776759,0.199837867,9.52,12.1,0.57,18822318390,163374000
+CTAS,Cintas Corporation,Industrials,0.7031855337517299,0.2859733,35.38,8.51,0.99,31216601386,103751000
+KO,Coca-Cola Company (The),Consumer Staples,2.1971578395739524,0.103820149,28.99,2.07,0.41,256586003265,4280000000
+COST,Costco Wholesale Corp.,Consumer Staples,1.0606439166888946,0.19212997399999998,37.75,8.43,0.9,140615987901,441758000
+CCI,Crown Castle International Corp.,Real Estate,1.28197687434905,0.163975237,83.64,1.98,0.3,69005081855,415768000
+CVS,CVS Health,Consumer Staples,1.7079627340498365,-0.010387317,14.05,5.08,0.93,92849804253,1300964000
+DISCK,Discovery Communications-C,Consumer Discretionary,2.3096592718590108,0.061552496,11.1,2.59,1.45,15392873644,360664000
+ETN,Eaton Corporation,Industrials,1.6047656571399305,0.128998261,19.71,5.25,1.42,42807571261,413400000
+EQR,Equity Residential,Real Estate,2.1589960066234664,0.08949458,34.53,2.5,0.45,32134657027,371671000
+EXPE,Expedia Inc.,Consumer Discretionary,2.407311381193101,0.086285553,32.58,3.77,1.01,17792025802,139363000
+FFIV,F5 Networks,Information Technology,1.7013819459588144,0.06498939599999999,19.49,6.54,0.98,7753118169,60804000
+FB,"Facebook, Inc.",Information Technology,1.1057666021536463,0.23878909399999998,33.32,6.43,1.05,610509360122,2405746000
+FDX,FedEx Corporation,Industrials,1.5098202059987225,0.02425391,583.74,0.27,1.71,41418694505,261119000
+FE,FirstEnergy Corp,Utilities,1.510567029063732,0.129909559,31.45,1.66,0.2,28241486749,540714000
+FISV,Fiserv Inc,Information Technology,0.9488954080578804,0.249902978,71.58,1.71,0.8,83164756192,679895000
+FMC,FMC Corporation,Materials,0.8895256452785432,0.193866857,27.41,3.85,1.54,13670494208,129615000
+FCX,Freeport-McMoRan Inc.,Materials,1.0313162803944909,0.038646264,78.35,0.16,2.42,17759187027,1450914000
+IT,Gartner Inc,Information Technology,1.3373284476702674,0.165213744,59.34,2.57,1.21,13633532057,89453000
+GIS,General Mills,Consumer Staples,2.6412807761987938,0.063146888,15.34,3.48,0.73,32242795100,604817000
+GM,General Motors,Consumer Discretionary,1.9037211165069965,0.08449462,7.6,4.57,1.38,49672072361,1429002000
+GPC,Genuine Parts,Consumer Discretionary,2.9244641954801547,0.074228025,17.71,5.45,0.89,14016415887,145293000
+GS,Goldman Sachs Group,Financials,1.8288212830340496,0.09991453900000001,11.27,21.03,1.32,83946946608,354087000
+GWW,Grainger (W.W.) Inc.,Industrials,1.3581101466189422,0.143753783,17.94,17.15,0.97,16517112872,53688000
+HLT,Hilton Worldwide Holdings Inc,Consumer Discretionary,1.0598993481607704,0.17104685100000003,37.27,3.04,1.14,31415437971,277448000
+HOLX,Hologic,Health Care,2.425411589403344,0.12996771199999999,173.01,0.31,0.85,13960272160,263302000
+HST,Host Hotels & Resorts,Real Estate,2.308137021714921,0.052833242,10.89,1.55,1.17,12127479870,717178000
+HII,Huntington Ingalls Industries,Industrials,1.1543380976790991,0.172309762,18.57,13.26,1.24,10035519873,40760000
+INCY,Incyte,Health Care,1.2682583277151145,0.076793095,38.21,2.05,1.06,17006076538,216776000
+IRM,Iron Mountain Incorporated,Real Estate,2.2335183274879347,0.07306073099999999,35.67,0.93,0.53,9521121824,287300000
+KMI,Kinder Morgan,Energy,1.0384695673083184,-0.038511214,22.87,0.96,0.81,49831386000,2265063000
+LKQ,LKQ Corporation,Consumer Discretionary,2.216065603315,0.12177166099999999,23.73,1.4,1.3,10174538633,306462000
+LYB,LyondellBasell,Materials,2.072392824468477,0.103512466,8.65,9.55,1.45,27505799491,333000000
+M,Macy's Inc.,Consumer Discretionary,0.8264829931760201,-0.12659805,5.39,3.09,0.66,5150446573,308965000
+MDT,Medtronic plc,Health Care,1.9179209088058464,0.12421349,33.97,3.45,0.6,157266553194,1340378000
+MRK,Merck & Co.,Health Care,1.3680581566358117,0.147015861,21.52,3.84,0.57,210425581484,2545984000
+MTD,Mettler Toledo,Health Care,0.9692418639176908,0.23289527,33.97,22.47,1.39,18357249893,24053000
+MSFT,Microsoft Corp.,Information Technology,0.6881506526553905,0.32250065,32.28,5.74,1.15,1409780857873,7606047000
+MHK,Mohawk Industries,Consumer Discretionary,1.2551682079723412,-0.016397061,13.4,10.3,1.36,9882403253,71622000
+MCO,Moody's Corp,Financials,0.927983578033472,0.234858117,37.43,7.42,1.21,52148688479,187700000
+MSI,Motorola Solutions Inc.,Information Technology,0.7857028051967873,0.231468305,37.31,4.94,0.5,31596072387,171336000
+MYL,Mylan N.V.,Health Care,0.8932799452587622,-0.130828848,239.58,0.09,1.72,11303303743,516177000
+NEM,Newmont Mining Corporation,Materials,1.2486611843780435,0.18968579600000002,15.83,2.78,0.16,36130286851,819839000
+NEE,NextEra Energy,Utilities,0.9286832114176752,0.227986191,34.73,8.02,0.15,136133886150,488776000
+NRG,NRG Energy,Utilities,0.6922170062921974,0.20866969600000002,10.31,3.89,0.71,10078855985,251594000
+OXY,Occidental Petroleum,Energy,2.054770999686784,-0.042821394000000006,29.53,1.41,0.9,37161985836,893317000
+OKE,ONEOK,Energy,0.9173258155980414,0.230147782,25.56,3.01,1.11,31799253894,413085000
+ORCL,Oracle Corp.,Information Technology,1.9496194449404018,0.077350148,17.61,3.15,1.11,177928293945,3207649000
+PEP,PepsiCo Inc.,Consumer Staples,1.9512497779197016,0.117935265,28.31,5.19,0.53,204968008309,1389545000
+RL,Polo Ralph Lauren Corp.,Consumer Discretionary,1.6850277667707554,0.046267077000000004,14.16,8.61,0.9,8984857815,48862000
+PPL,PPL Corp.,Utilities,2.7554877393877537,0.098239274,14.38,2.46,0.51,25573676437,723033000
+PHM,Pulte Homes Inc.,Consumer Discretionary,1.1252252514376082,0.16513204,12.77,3.66,0.56,12605132379,269975000
+RJF,Raymond James Financial Inc.,Financials,1.2811378025870532,0.1550463,13.44,7.36,1.5,13782151374,139284000
+RTN,Raytheon Co.,Industrials,1.158337993905323,0.19479614,19.05,11.93,0.85,63256224340,278441000
+RMD,ResMed,Health Care,0.834963320137938,0.23631678,56.31,3.14,0.48,25539363082,144617000
+RCL,Royal Caribbean Cruises Ltd,Consumer Discretionary,1.3470625587214564,0.195659444,12.55,9.02,1.44,23627921924,208801000
+CRM,Salesforce.com,Information Technology,0.8858414532311987,0.207470204,200.68,0.95,1.19,168485647293,887000000
+LUV,Southwest Airlines,Industrials,1.7265757683369565,0.10783286199999999,13.77,4.21,1.47,29987649751,517296000
+SBUX,Starbucks Corp.,Consumer Discretionary,1.3884881607519866,0.177744967,29.15,3.06,0.56,104787934567,1173700000
+SYF,Synchrony Financial,Financials,2.4933359586834767,0.091836098,6.07,5.56,1.21,20704848750,613477000
+SNPS,Synopsys Inc.,Information Technology,0.8013663430252196,0.258978767,47.31,3.45,1.18,24589893168,150535000
+TGT,Target Corp.,Consumer Discretionary,1.340881991913131,0.185069819,18.64,6.26,0.56,59100734918,506737000
+TXN,Texas Instruments,Information Technology,0.8862468117623082,0.224912306,25.24,5.24,1.24,123223956977,932032000
+HSY,The Hershey Company,Consumer Staples,1.4696819942330823,0.125085342,29.33,5.47,0.02,23779704176,148308000
+TMO,Thermo Fisher Scientific,Health Care,0.9572371356767688,0.223396092,36.98,9.17,1.14,136012138268,400991000
+UNH,United Health Group Inc.,Health Care,0.8928925321222835,0.243093824,20.86,14.33,0.69,283068652543,947415000
+VFC,V.F. Corp.,Consumer Discretionary,1.3232414086548459,0.129110804,25.99,3.22,1.2,33022293377,394720000
+WMT,Wal-Mart Stores,Consumer Staples,1.2710964130621618,0.125054707,23.55,5.0,0.36,334474559018,2837175000
+WBA,Walgreens Boots Alliance,Consumer Staples,2.224201311650672,-0.007405433,13.0,4.07,0.92,46817805348,885862000