In this small study, we use hierarchical clustering techniques to explore the structure of correlations between US stocks. To do so, we first download a dataset of adjusted close prices for the US stocks from Quandl.

import numpy as np
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv('data/WIKI_PRICES.csv')
df.head()
ticker date open high low close volume ex-dividend split_ratio adj_open adj_high adj_low adj_close adj_volume
0 A 1999-11-18 45.50 50.00 40.00 44.00 44739900 0 1 31.105117 34.181447 27.345157 30.079673 44739900
1 A 1999-11-19 42.94 43.00 39.81 40.38 10897100 0 1 29.355027 29.396044 27.215268 27.604936 10897100
2 A 1999-11-22 41.31 44.00 40.06 44.00 4705200 0 1 28.240711 30.079673 27.386175 30.079673 4705200
3 A 1999-11-23 42.50 43.63 40.25 40.25 4274400 0 1 29.054230 29.826730 27.516065 27.516065 4274400
4 A 1999-11-24 40.13 41.94 40.00 41.06 3464400 0 1 27.434029 28.671398 27.345157 28.069804 3464400
#convert the dataframe built from the csv file to the right input dataframe format
names = sorted(set(df['ticker']))
subdf = df[['ticker','date','adj_close']]
subdf.index = [datetime.strptime(d, '%Y-%m-%d') for d in subdf['date'].get_values()]
sorted_dates = sorted(set(subdf.index))
prices_df = pd.DataFrame(columns=names,index=sorted_dates)
print("shape:",prices_df.shape)
prices_df = subdf.pivot_table('adj_close', ['date'], 'ticker')
prices_df.index = pd.to_datetime(prices_df.index, format='%Y-%m-%d')
del prices_df.index.name
del prices_df.columns.name
prices_df.head()
shape: (14105, 3190)



There are in total 3190 stocks with more or less complete historical time series of prices.
A AA AAL AAMC AAN AAOI AAON AAP AAPL AAT ... ZIOP ZIXI ZLC ZLTQ ZMH ZNGA ZOES ZQK ZTS ZUMZ
1962-01-02 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1962-01-03 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1962-01-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1962-01-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1962-01-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 3190 columns

We consider only the last 2000 trading days, i.e. starting in roughly 2010.

#consider a smaller dataframe: only the last 2000 trading days
subperimeter_prices = prices_df[prices_df.columns[:]][-2000:]

plt.figure(figsize=(30,8))
plt.plot(subperimeter_prices)
plt.ylim([0,1000])
plt.show()

png

#convert prices to returns
X = pd.DataFrame(np.diff(np.log(subperimeter_prices),axis=0))
X.index = subperimeter_prices.index[1:]
X.columns = subperimeter_prices.columns

plt.figure(figsize=(30,8))
plt.plot(X)
plt.show()

X.shape

png

(1999, 3190)

We keep only stocks having enough history (95% of non-missing values).

from ClusterLib.clusterlib import *
from ClusterLib.preprocessing import *

min_percent = 95
nb_clusters = 75

X = delete_small_historical(X,min_percent)
X.fillna(value=0,inplace=True)

plt.figure(figsize=(30,8))
plt.plot(X)
plt.show()

X.shape, X.isnull().values.any()

png

((1999, 2068), False)

We compute the clusters using the Ward method working on distances based on Spearman correlation between stocks.

clusters, cluster_map = get_clusters(X,"ward","spearman",nb_clusters)
clusters
[array(['EXC', 'FE', 'AEE', 'CMS', 'DTE', 'LNT', 'PNW', 'SCG', 'ES', 'WEC',
        'XEL', 'GXP', 'WR', 'ED', 'SO', 'AEP', 'DUK', 'D', 'NEE', 'EIX',
        'PCG', 'ETR', 'PEG', 'PPL'], dtype=object),
 array(['AWK', 'WTR', 'HE', 'MGEE', 'OTTR', 'EE', 'PNM', 'POR', 'AVA',
        'IDA', 'ALE', 'NWE', 'SJI', 'NJR', 'WGL', 'NWN', 'SWX', 'BKH',
        'UGI', 'ATO', 'VVC', 'CPK', 'UTL', 'CPN', 'NRG', 'CNP', 'OGE', 'NI',
        'SRE', 'AES', 'MDU', 'NFG'], dtype=object),
 array(['TSN', 'PPC', 'SAFM'], dtype=object),
 array(['PM', 'MO', 'RAI', 'UVV', 'VGR', 'SYY', 'HSY', 'CAG', 'MDLZ', 'SJM',
        'HRL', 'GIS', 'K', 'CPB', 'MKC', 'DF', 'FLO', 'PG', 'CL', 'KMB',
        'CHD', 'CLX', 'TAP', 'BF_B', 'STZ', 'MNST', 'CCE', 'DPS', 'KO',
        'PEP'], dtype=object),
 array(['GPT', 'CDR', 'KRG', 'RPT', 'ADC', 'GTY', 'BFS', 'UBA', 'UHT',
        'IRET', 'MNR', 'ALX', 'UMH', 'GOOD', 'OLP'], dtype=object),
 array(['SBRA', 'HR', 'OHI', 'SNH', 'VTR', 'HCN', 'HCP', 'MPW', 'LTC',
        'NHI', 'CUBE', 'EXR', 'PSA', 'MAA', 'AIV', 'CPT', 'ESS', 'UDR',
        'AVB', 'EQR', 'ACC', 'EDR', 'ELS', 'SUI', 'EQIX', 'DFT', 'DLR',
        'CLI', 'OFC', 'SLG', 'BXP', 'VNO', 'ARE', 'DEI', 'KRC', 'WRE',
        'BDN', 'DRE', 'HIW', 'CUZ', 'PKY', 'GOV', 'FPO', 'FR', 'PLD', 'DCT',
        'EGP', 'LXP', 'FSP', 'PSB', 'EPR', 'O', 'GGP', 'DDR', 'FRT', 'SPG',
        'AKR', 'REG', 'KIM', 'WRI', 'SKT', 'MAC', 'TCO', 'FCE_A', 'CBL',
        'PEI'], dtype=object),
 array(['PZG', 'GORO', 'CDE', 'HL', 'GOLD', 'NEM', 'RGLD'], dtype=object),
 array(['ARI', 'STWD', 'CIM', 'PMT', 'RWT', 'RAS', 'RSO', 'AI', 'STAR',
        'NYMT', 'ARR', 'CYS', 'AGNC', 'NLY', 'DX', 'IVR', 'MFA', 'ANH',
        'CMO'], dtype=object),
 array(['BPTH', 'OLBK', 'MCBC', 'NATH', 'RVLT', 'FRBK', 'III'], dtype=object),
 array(['BRT', 'ARCW', 'LOV', 'SIF'], dtype=object),
 array(['CUR', 'CUTR', 'PTSI', 'BBGI', 'GAIA', 'LEE'], dtype=object),
 array(['VTNR', 'REI', 'TAT', 'CIDM', 'GALT', 'NNVC'], dtype=object),
 array(['INTX', 'WSTL', 'GTXI', 'OGXI', 'PRKR', 'PTX', 'NAVB', 'SNSS',
        'OMEX', 'BDSI', 'RPRX'], dtype=object),
 array(['NETE', 'PCYO', 'TWMC', 'EGAN', 'UNXL', 'BIOL', 'NEON'], dtype=object),
 array(['MITK', 'GLUU', 'ZAGG', 'MEIP', 'NEO', 'PCYG', 'GFN', 'ISSC',
        'STRT', 'PHMD', 'TEAR', 'CPSS', 'DAVE', 'TRXC', 'CALL', 'PERI'], dtype=object),
 array(['PCTI', 'BHB', 'HOFT', 'MOFG', 'AMNB', 'PGC', 'RDI', 'TIS', 'HBCP',
        'NRIM', 'FFNW', 'WSBF', 'CUNB', 'PPBI', 'FBIZ', 'SGBK', 'GBNK',
        'PFBC', 'LION', 'HBNC', 'MBWM', 'ANCX', 'FFKT'], dtype=object),
 array(['CFFI', 'DGAS', 'CASH', 'DJCO', 'SPNS', 'LCNB', 'BXC', 'PROV',
        'HIFS', 'ITIC', 'CHMG', 'PLPM', 'CIX', 'LFVN'], dtype=object),
 array(['REIS', 'SALM', 'AE', 'UCFC', 'ACHC', 'ADUS', 'AXDX', 'BSET',
        'FLXS', 'SNAK', 'TESS', 'MLAB', 'UTMD', 'CORR', 'HCCI', 'CLCT',
        'PATK', 'MDCA', 'WETF', 'NLS', 'CSV', 'PGTI', 'CECE', 'TREC', 'SPA',
        'UFPT'], dtype=object),
 array(['FNHC', 'HCI', 'UIHC', 'DXYN', 'ESCA', 'SQBG', 'DOOR', 'PFIS',
        'CUI', 'PLUG', 'TREE', 'GTT', 'NYNY'], dtype=object),
 array(['GALE', 'IDRA', 'CYTR', 'INO', 'SGYP', 'THLD', 'ARWR', 'ACHN',
        'AGEN', 'KERX', 'HRTX', 'INSY', 'MDXG', 'TXMD', 'FCSC', 'OHRP'], dtype=object),
 array(['LGND', 'LXRX', 'MNTA', 'ACOR', 'EBS', 'GHDX', 'SPPI', 'MDCO',
        'RIGL', 'CRIS', 'EXEL', 'CYTK', 'SGMO', 'HALO', 'IMGN', 'CLDX',
        'ALNY', 'NBIX', 'BCRX', 'GERN', 'NVAX', 'ZIOP', 'NKTR', 'PGNX',
        'ARRY', 'IMMU', 'VNDA', 'DVAX', 'INFI', 'ANIP', 'OPK', 'SRPT',
        'XOMA', 'VVUS', 'ARNA', 'OREX', 'MNKD', 'MYGN', 'EXAS', 'PDLI',
        'OMER', 'BTX', 'CORT', 'BSTC', 'SCLN', 'ATRS', 'AMAG', 'CERS',
        'BEAT', 'RMTI', 'AMRI', 'FOLD', 'ACAD', 'INSM', 'ANIK', 'RGEN'], dtype=object),
 array(['GILD', 'BIIB', 'AMGN', 'CELG', 'ILMN', 'UTHR', 'ALKS', 'INCY',
        'SGEN', 'VRTX', 'REGN', 'ALXN', 'BMRN'], dtype=object),
 array(['PRGO', 'AGN', 'MYL', 'ENDP', 'VRX', 'DEPO', 'SCMP', 'LCI', 'AKRX',
        'IPXL'], dtype=object),
 array(['STAA', 'OSUR', 'QDEL', 'CSII', 'ELGX', 'NXTM', 'ABMD', 'SPNC',
        'DXCM', 'PODD', 'IVC', 'OFIX', 'ANGO', 'BABY', 'MMSI', 'NUVA',
        'WMGI', 'ABAX', 'LMNX', 'HAE', 'ICUI', 'IART', 'MASI', 'CNMD',
        'TFX', 'STE', 'WST', 'ENSG', 'USPH', 'ALOG', 'LDR', 'VIVO', 'BCPC',
        'NEOG', 'OMCL', 'CRVL', 'CRY', 'CBM', 'EXAC', 'SRDX'], dtype=object),
 array(['AMED', 'AFAM', 'LHCG', 'HLS', 'CYH', 'LPNT', 'UHS', 'PMC', 'BKD',
        'CSU', 'KND', 'SEM'], dtype=object),
 array(['HUM', 'CI', 'UNH', 'AET', 'ANTM', 'WCG', 'CNC', 'MOH', 'GTS',
        'MGLN'], dtype=object),
 array(['BMY', 'MRK', 'PFE', 'LLY', 'ABT', 'JNJ'], dtype=object),
 array(['ABC', 'CAH', 'MCK', 'ESRX', 'DVA', 'DGX', 'LH', 'OMI', 'XRAY',
        'HSIC', 'PDCO', 'WOOF', 'CHE', 'MD', 'BAX', 'MDT', 'SYK', 'ZBH',
        'BCR', 'BDX', 'ISRG', 'BSX', 'HOLX', 'HRC', 'VAR', 'EW', 'RMD',
        'BRKR', 'MTD', 'TMO', 'WAT', 'A', 'PKI', 'ALGN', 'COO', 'CRL',
        'PRXL', 'QGEN', 'IDXX', 'BIO', 'TECH'], dtype=object),
 array(['SDRL', 'ATW', 'DO', 'RIG', 'PKD', 'BAS', 'KEG', 'RES', 'PES',
        'UNT', 'HP', 'PTEN', 'SLB', 'BHI', 'HAL', 'FTI', 'NOV', 'DRQ',
        'OII', 'OIS', 'SPN', 'CRR', 'BRS', 'CKH', 'HOS', 'TDW', 'MTRX',
        'MDR', 'TESO', 'NR', 'HLX', 'TTI', 'WG', 'GEOS', 'IO'], dtype=object),
 array(['NBL', 'APC', 'APA', 'DVN', 'OXY', 'COP', 'MRO', 'HES', 'MUR',
        'PDCE', 'XEC', 'CXO', 'EOG', 'PXD', 'EGN', 'NFX', 'BP', 'CVX',
        'XOM', 'INT', 'OKE', 'WMB', 'COG', 'EQT', 'RRC', 'CHK', 'GPOR',
        'EGY', 'HK', 'GST', 'CLNE', 'REN', 'REXX', 'XCO', 'PQ', 'NOG',
        'CRK', 'SGY', 'WTI', 'BBG', 'DNR', 'SM', 'CRZO', 'CLR', 'WLL',
        'AXAS', 'CPE', 'AREX', 'MCF'], dtype=object),
 array(['AWH', 'VR', 'ACGL', 'RE', 'RNR', 'AHL', 'AXS', 'WTM', 'AON', 'MMC',
        'AJG', 'BRO', 'AFSI', 'XL', 'PGR', 'ALL', 'CB', 'CINF', 'MCY',
        'ORI', 'PRA', 'THG', 'AFG', 'WRB', 'MKL', 'Y', 'ANAT', 'ERIE'], dtype=object),
 array(['SNV', 'MTB', 'PNC', 'BBT', 'USB', 'WFC', 'FHN', 'CMA', 'ZION',
        'RF', 'HBAN', 'STI', 'FITB', 'KEY', 'COF', 'AXP', 'DFS', 'STT',
        'BK', 'NTRS', 'GS', 'MS', 'C', 'BAC', 'JPM'], dtype=object),
 array(['BLK', 'EV', 'BEN', 'TROW', 'AMG', 'AMP', 'IVZ', 'LM', 'WDR', 'FII',
        'SEIC', 'CNS', 'VRTS', 'LAZ', 'EVR', 'GHL', 'ITG', 'IBKR', 'PJC',
        'RJF', 'SF', 'ETFC', 'AMTD', 'SCHW', 'NDAQ', 'CME', 'ICE', 'BRK_A',
        'BRK_B', 'AFL', 'HIG', 'LNC', 'MET', 'PRU', 'PFG', 'TMK', 'UNM',
        'AIZ', 'RGA', 'AIG', 'LUK', 'CNA', 'L'], dtype=object),
 array(['CPF', 'HAFC', 'BANR', 'UCBI', 'FBP', 'BPOP', 'OFG', 'TBBK', 'NFBK',
        'ORIT', 'FRME', 'PFS', 'INDB', 'FFBC', 'UBSI', 'FFIN', 'FNB', 'CBU',
        'NBTB', 'IBOC', 'TRMK', 'WSBC', 'CHCO', 'STBA', 'CHFC', 'PRK',
        'FFIC', 'BRKL', 'DCOM', 'BHLB', 'ISBC', 'OZRK', 'HOMB', 'PNFP',
        'WAL', 'BPFH', 'PACW', 'COLB', 'UMBF', 'ONB', 'UMPQ', 'CVBF',
        'GBCI', 'WABC', 'WTFC', 'BXS', 'FCF', 'FMBI', 'MBFI', 'TCBI',
        'IBKC', 'HBHC', 'BOKF', 'CFR', 'PB', 'SBNY', 'VLY', 'FULT', 'BOH',
        'CBSH', 'SIVB', 'CATY', 'EWBC', 'WBS', 'AF', 'NYCB', 'PBCT', 'NWBI',
        'WAFD', 'CFFN', 'TFSL'], dtype=object),
 array(['OB', 'ESGR', 'GLRE', 'MHLD', 'UFCS', 'IPCC', 'SAFT', 'AGII',
        'NAVG', 'RLI', 'SIGI', 'AMSF', 'EIG', 'BOFI', 'UVE', 'BLX', 'OPY',
        'FCNCA', 'HTH', 'HMN', 'KMPR', 'FFG', 'AEL', 'CNO', 'PZN', 'MKTX',
        'BGCP', 'SFE'], dtype=object),
 array(['NICK', 'BANC', 'FBC', 'PSTB', 'SBCF', 'HTBK', 'SNBC', 'CNOB',
        'FDEF', 'CHFN', 'CCF', 'EBTC', 'IHC'], dtype=object),
 array(['BMTC', 'FISI', 'WSFS', 'PCBK', 'EFSC', 'HFWA', 'ABCB', 'WTBA',
        'BUSE', 'TOWN', 'SBSI', 'FBNC', 'AROW', 'GABC', 'GSBC', 'HTLF',
        'UVSP', 'FCBC', 'LBAI', 'TCBK', 'STL', 'UBSH', 'TMP', 'BANF',
        'SRCE', 'THFF', 'TRST', 'LKFN', 'SASR', 'SFNC', 'RNST', 'WASH',
        'CTBI', 'SYBT', 'CAC', 'MSFG', 'BKMU', 'PEBO', 'UBNK', 'CSFL',
        'EGBN', 'COBZ', 'FLIC', 'BSRR', 'OCFC', 'OKSB', 'RBCAA', 'ESSA',
        'CSBK', 'EBSB', 'BNCL', 'KRNY', 'SENEA', 'NUTR', 'ODC', 'DGICA',
        'HALL', 'EMCI', 'GBLI', 'STFC', 'CTO', 'CIA', 'NHC', 'CASS', 'WEYS',
        'TBNK', 'BFIN', 'CZNC', 'BDGE', 'CCNE', 'FNLC', 'ATLO', 'BWINB',
        'CCBG', 'PWOD', 'CNBKA', 'BMRC', 'NKSH'], dtype=object),
 array(['HTGC', 'MAIN', 'TCAP', 'TICC', 'PNNT', 'PSEC', 'AINV', 'ARCC',
        'BKCC', 'FSC', 'CSWC', 'MVC', 'GAIN', 'GLAD'], dtype=object),
 array(['JAKK', 'WWE', 'FLWS', 'AVHI', 'TTGT', 'ENZ', 'OME', 'DMRC', 'SNMX',
        'ARAY', 'ARQL', 'LWAY', 'ISRL', 'ATRI', 'NVEC', 'OFLX', 'USLM',
        'HBIO', 'RTIX', 'CWCO', 'KMG', 'PRSC', 'CFI', 'HCKT', 'PLUS',
        'WINA', 'NATR', 'JOUT', 'ALCO', 'LMNR', 'HNRG', 'AIQ', 'RDNT',
        'HNH', 'PLPC', 'SGA', 'BDE', 'NMRX', 'SHLO', 'BREW', 'SAM', 'MPAA',
        'ATRC', 'HSTM'], dtype=object),
 array(['CFNB', 'GRIF', 'GSIT', 'RELL', 'LINC', 'IVAC', 'QTM', 'MOSY',
        'RBCN', 'CLUB', 'ATEC', 'AVNW', 'CVO', 'AHC', 'MNI', 'PRGX', 'RST',
        'DWSN', 'MIND', 'AOI', 'FVE', 'MSL', 'RTK', 'JMBA', 'PCO', 'FHCO',
        'PTIE', 'CTG', 'GSOL', 'HIL', 'SEAC', 'LUB', 'RSYS', 'CTIC', 'PPHM',
        'BIOS', 'CPST', 'FCEL', 'XRM', 'UEC', 'URG', 'CYTX', 'VICL', 'HDNG',
        'GMO', 'SPRT'], dtype=object),
 array(['ARTNA', 'YORW', 'CTWS', 'MSEX', 'SJW', 'AWR', 'CWT', 'IDT', 'CBB',
        'CNSL', 'GNCMA', 'ATNI', 'SHEN', 'CALM', 'CORE', 'CVGW', 'BGS',
        'THS', 'WDFC', 'LNCE', 'JJSF', 'LANC', 'TR', 'JBSS', 'FARM', 'COKE',
        'FIZZ'], dtype=object),
 array(['LRN', 'BPI', 'CECO', 'CPLA', 'STRA', 'APEI', 'LOPE', 'GHC', 'UTI'], dtype=object),
 array(['HAIN', 'VRSK', 'ABCO', 'INWK', 'MED', 'NTRI', 'CHDN', 'ISCA',
        'TRK', 'MTN', 'HELE', 'HSNI', 'NCMI', 'RGS', 'CENTA', 'PBH', 'UHAL',
        'VRTU', 'EXLS', 'MMS', 'SYNT', 'CSGS', 'CVG', 'SYKE', 'TTEC',
        'PRFT', 'LYV', 'CSGP', 'JCOM', 'LDOS', 'CACI', 'MANT', 'HCSG',
        'CTAS', 'UNF', 'ABM', 'ROL', 'ACXM', 'HI', 'BCO', 'SCI', 'SSP',
        'MDP', 'NYT', 'RRD', 'JW_A', 'SCHL', 'RECN', 'HSII', 'KFY', 'ASGN',
        'DLX', 'KFRC', 'MAN', 'RHI', 'KELYA', 'TBI', 'FCN', 'HURN', 'TILE',
        'KNL', 'SCS', 'HNI', 'MLHR', 'VOXX', 'NSR', 'OSIS', 'IRBT', 'UEIC'], dtype=object),
 array(['ERII', 'STRL', 'GLDD', 'ORN', 'LTS', 'COWN', 'ATRO', 'INTL', 'AGM',
        'BBSI', 'CWST', 'CRMT', 'MG', 'CMTL', 'RNWK', 'ETM', 'PKOH', 'MYRG',
        'GHM', 'TISI', 'CLH', 'ECOL', 'HURC', 'NNBR', 'SEB', 'SP', 'AMSWA',
        'TYPE', 'MRLN', 'LBY', 'LCUT', 'CRD_B', 'KVHI', 'AGYS', 'CRAI',
        'LABL', 'ICFI', 'FC', 'GPX', 'VICR', 'CDI', 'LYTS', 'HZO', 'LDL',
        'ELY', 'SPAR', 'FORR', 'TRC', 'ARC', 'SYX', 'HHS', 'MPX', 'CCRN',
        'MLR', 'NWLI', 'NC', 'WMAR', 'MCRI', 'HVT', 'NPK', 'MTSC', 'RAVN',
        'DEL', 'FIX', 'BRC', 'MATW', 'EXPO', 'NCI', 'MYE', 'MCS', 'NSP',
        'BELFB', 'BBOX', 'DAKT', 'AAON', 'MEI', 'FSS', 'ROG', 'CTS', 'PKE',
        'LNDC', 'ACET', 'CSS', 'DHIL', 'IIIN', 'EBF', 'VVI', 'GBL', 'WHG',
        'NEWS', 'PICO', 'UFI', 'MLNK', 'EXTR', 'VDSI', 'DCO', 'VSEC', 'CBZ',
        'DGII', 'DSPG', 'ESIO', 'KOPN', 'COHU', 'IXYS', 'MRCY', 'XOXO'], dtype=object),
 array(['AZZ', 'POWL', 'AIMC', 'WIRE', 'AIN', 'BDC', 'ENS', 'NPO', 'CIR',
        'SNHY', 'ASTE', 'EME', 'MLI', 'B', 'WTS', 'AIT', 'KAMN', 'MSA',
        'FELE', 'ROLL', 'TTEK', 'BGG', 'ESE', 'CMCO', 'KAI', 'JBT', 'TNC',
        'SXI', 'BMI', 'GRC', 'NNI', 'MOD', 'SUP', 'AYR', 'RUSHA', 'TRS',
        'MGRC', 'MINI', 'DORM', 'SMP', 'ALG', 'ATSG', 'SRI', 'ACCO', 'MWA',
        'AVD', 'FOE', 'SCL', 'SHLM', 'KWR', 'POL', 'FUL', 'MTX', 'SXT',
        'OLN', 'KOP', 'TG', 'IPHS', 'HWKN', 'IOSP', 'OMN', 'ANDE', 'CCC',
        'DAR', 'LXU'], dtype=object),
 array(['EPM', 'NGS', 'PHX', 'GIFI', 'HWCC', 'USAP', 'LAYN', 'AP', 'BOOM',
        'CVGI', 'TWIN', 'ASCMA', 'NWPX', 'FSTR', 'PHIIK', 'EZPW', 'FCFS',
        'WRLD', 'ECPG', 'PRAA', 'DDD', 'SSYS', 'AMSC', 'MCHX', 'ENOC',
        'SPWR', 'CVA', 'ORA'], dtype=object),
 array(['MCD', 'SBUX', 'YUM', 'CMG', 'PNRA', 'TAST', 'BH', 'DENN', 'RUTH',
        'DRI', 'EAT', 'CBRL', 'CAKE', 'TXRH', 'BOBE', 'DIN', 'RT', 'BJRI',
        'BWLD', 'DPZ', 'PZZA', 'WEN', 'RRGB', 'JACK', 'SONC'], dtype=object),
 array(['SVU', 'KR', 'WFM', 'VLGEA', 'IMKTA', 'WMK', 'SPTN', 'UNFI'], dtype=object),
 array(['DEST', 'DXLG', 'BGFV', 'SCVL', 'SMRT', 'SSI', 'PSMT', 'MNRO',
        'CASY', 'FRED', 'BKS', 'CTRN', 'KIRK', 'TUES', 'BBW', 'CONN',
        'BONT', 'CBK', 'NWY', 'BEBE', 'RGR'], dtype=object),
 array(['COH', 'VFC', 'PVH', 'RL', 'HBI', 'NKE', 'UAA', 'SKX', 'CROX',
        'DECK', 'SHOO', 'WWW', 'MOV', 'PERY', 'ICON', 'GIII', 'COLM', 'OXM'], dtype=object),
 array(['AAP', 'AZO', 'ORLY', 'TGT', 'COST', 'WMT', 'ROST', 'TJX', 'BIG',
        'DLTR'], dtype=object),
 array(['ODP', 'SPLS', 'BBY', 'GME', 'AAN', 'RCII', 'PIR', 'BBBY', 'WSM',
        'SBH', 'TSCO', 'ULTA', 'VSI', 'CAB', 'DKS', 'HIBB', 'FINL', 'FL',
        'CRI', 'PLCE', 'GPS', 'LB', 'AEO', 'ANF', 'GES', 'ZUMZ', 'DSW',
        'ASNA', 'CHS', 'BKE', 'CATO', 'GCO', 'SHLD', 'JCP', 'KSS', 'DDS',
        'JWN', 'M'], dtype=object),
 array(['TRUE', 'AMD', 'MU', 'MRVL', 'NVDA', 'AMKR', 'KLAC', 'LRCX', 'AMAT',
        'TER', 'CRUS', 'AVGO', 'SWKS', 'MXIM', 'XLNX', 'MCHP', 'ADI', 'TXN',
        'CAVM', 'CY', 'DIOD', 'IDTI', 'MSCC', 'SLAB', 'SMTC', 'MPWR',
        'POWI', 'PLAB', 'CCMP', 'AEIS', 'BRKS', 'ENTG', 'MKSI', 'UCTT',
        'NANO', 'RTEC', 'ACLS', 'PDFS', 'SIGM', 'IMMR', 'SYNA', 'KEM',
        'CEVA', 'CREE', 'VECO', 'FORM', 'RMBS', 'LSCC', 'XCRA'], dtype=object),
 array(['TTWO', 'ATVI', 'EA', 'NFLX', 'BIDU', 'EXPE', 'GOOGL', 'AMZN',
        'PCLN', 'AKAM', 'VRSN', 'CHKP', 'DOX', 'CVLT', 'VMW', 'CRM', 'CTXS',
        'RHT', 'CDNS', 'SNPS', 'ADSK', 'ANSS', 'ADBE', 'INTU', 'AZPN',
        'NUAN', 'STX', 'WDC', 'HPQ', 'XRX', 'CTSH', 'ACN', 'IBM', 'CSCO',
        'INTC', 'SYMC', 'MSFT', 'CA', 'ORCL', 'AAPL', 'MSI', 'EBAY', 'QCOM'], dtype=object),
 array(['OCLR', 'INFN', 'CIEN', 'FNSR', 'BRCD', 'NTAP', 'FFIV', 'JNPR',
        'OLED', 'IPGP', 'COHR', 'IIVI', 'FARO', 'CGNX', 'LFUS', 'TTMI',
        'JBL', 'SANM', 'BHE', 'PLXS', 'NSIT', 'SCSC', 'SNX', 'TECD', 'ARW',
        'AVT', 'AVX', 'VSH', 'GRMN', 'ITRI', 'NATI', 'TRMB', 'FLIR', 'HRS',
        'GLW', 'APH', 'TEL', 'SONS', 'SNCR', 'HLIT', 'NTCT', 'DLB', 'IDCC',
        'ADTN', 'ARRS', 'VSAT', 'NTGR', 'PLT', 'DHX', 'MXWL', 'CRAY',
        'SMCI', 'DBD', 'NCR', 'PAY', 'UIS', 'ZBRA', 'BID', 'EFII', 'WEX',
        'DGI', 'LORL', 'SATS'], dtype=object),
 array(['CPSI', 'QSII', 'ATHN', 'CERN', 'MDRX', 'IRDM', 'ORBC', 'CCOI',
        'LVLT', 'EGHT', 'VG', 'CLFD', 'QUIK', 'CAMP', 'WBMD', 'VRNT',
        'PEGA', 'MSTR', 'MANH', 'TYL', 'ULTI', 'EGOV', 'EPAY', 'PRGS',
        'ACIW', 'BLKB', 'CALD', 'GUID', 'MDSO', 'LOGM', 'PRO', 'STMP',
        'OSTK', 'SHOR', 'EHTH', 'PETS', 'LQDT', 'CATM', 'BCOR', 'LPSN',
        'EBIX', 'MGI', 'INAP', 'LLNW', 'CACC', 'ACTG', 'HMSY', 'WTW',
        'SIRI', 'CETV', 'KTOS', 'VHC', 'SFLY', 'ZIXI', 'TIVO', 'TZOO'], dtype=object),
 array(['UNP', 'CSX', 'NSC', 'GWR', 'KSU', 'MSM', 'FAST', 'GWW', 'JCI',
        'GE', 'DHR', 'HON', 'UTX', 'ITW', 'MMM', 'PCAR', 'CAT', 'CMI', 'IR',
        'ETN', 'PH', 'EMR', 'ROK', 'WAB', 'AME', 'ROP', 'CFX', 'PNR', 'ITT',
        'CR', 'DOV', 'FLS', 'RBC', 'ATU', 'KMT', 'TKR', 'NDSN', 'GGG',
        'IEX', 'DCI', 'LECO'], dtype=object),
 array(['ACM', 'CBI', 'KBR', 'FLR', 'JEC', 'DY', 'MTZ', 'PWR', 'AGX',
        'PRIM', 'NCS', 'FOR', 'BECN', 'AEGN', 'GVA', 'TPC', 'TITN', 'AGCO',
        'DE', 'LNN', 'VMI', 'RAIL', 'ARII', 'GBX', 'TRN', 'CAR', 'HTZ',
        'OSK', 'MTW', 'TEX', 'WNC', 'NAV', 'MTOR', 'WBC', 'TGH', 'HEES',
        'URI', 'GTLS', 'TWI', 'DXPE', 'AXE', 'WCC', 'BGC', 'HSC'], dtype=object),
 array(['GPK', 'ATR', 'BMS', 'SON', 'AVY', 'SEE', 'GEF', 'SLGN', 'BLL',
        'CCK', 'UFS', 'KS', 'IP', 'PKG', 'SWM', 'CLW', 'GLT', 'NP'], dtype=object),
 array(['IPI', 'CF', 'MOS', 'DD', 'DOW', 'HUN', 'CBT', 'FMC', 'CE', 'EMN',
        'WLK', 'APD', 'PX', 'IFF', 'ECL', 'PPG', 'RPM', 'NEU', 'ASH', 'ALB',
        'GRA', 'CMP', 'MON'], dtype=object),
 array(['CLF', 'AKS', 'X', 'ZEUS', 'SCHN', 'CMC', 'RS', 'NUE', 'STLD',
        'CRS', 'WOR', 'FCX', 'SCCO', 'ARNC', 'CENX', 'GSM', 'KALU', 'HAYN',
        'MTRN'], dtype=object),
 array(['HFC', 'TSO', 'VLO', 'CVI', 'ALJ', 'DK'], dtype=object),
 array(['NNA', 'DHT', 'FRO', 'NAT', 'TNK', 'PEIX', 'GPRE', 'REX', 'NM',
        'SB', 'WLB', 'GLNG', 'SFL', 'TK', 'FTK', 'LNG', 'MNTX', 'KRO', 'NL'], dtype=object),
 array(['AAL', 'DAL', 'UAL', 'JBLU', 'ALK', 'LUV', 'ALGT', 'HA', 'SKYW'], dtype=object),
 array(['HTLD', 'KNX', 'WERN', 'ODFL', 'JBHT', 'LSTR', 'ARCB', 'SAIA',
        'CGI', 'MRTN', 'KEX', 'MATX', 'FDX', 'UPS', 'CHRW', 'EXPD', 'AAWW',
        'FWRD', 'HUBG', 'ECHO', 'XPO', 'USAK', 'YRCW'], dtype=object),
 array(['LMT', 'NOC', 'RTN', 'GD', 'LLL', 'SPR', 'BA', 'COL', 'HXL', 'TXT',
        'TDG', 'TGI', 'AVAV', 'CUB', 'ESL', 'MOG_A', 'CW', 'TDY', 'AIR',
        'HEI'], dtype=object),
 array(['CMLS', 'EVC', 'GTN', 'NXST', 'SBGI', 'CNK', 'RGC', 'SNI', 'DISCA',
        'DISCK', 'DIS', 'FOX', 'FOXA', 'TWX', 'CBS', 'VIAB', 'DISH',
        'CMCSA', 'LBTYA'], dtype=object),
 array(['SBAC', 'AMT', 'CCI', 'VOD', 'CTL', 'T', 'VZ', 'TDS', 'USM', 'S',
        'TMUS'], dtype=object),
 array(['HRG', 'SPB', 'HLF', 'NUS', 'USNA', 'IPAR', 'REV', 'ADM', 'BG',
        'FDP', 'INGR', 'CCL', 'RCL', 'CHH', 'MAR', 'WYN', 'IRM', 'LAMR',
        'IPG', 'OMC', 'EL', 'TRI', 'SMG', 'NWL', 'TUP', 'CCO', 'CPA', 'STC',
        'CLGX', 'FNF', 'ALR', 'HRB', 'RAD', 'CVS', 'WBA', 'SRCL', 'WCN',
        'RSG', 'WM', 'MA', 'V', 'MORN', 'MCO', 'FDS', 'MSCI', 'EFX', 'FICO',
        'IT', 'BR', 'DST', 'EEFT', 'MIDD', 'G', 'ADP', 'PAYX', 'FIS',
        'FISV', 'JKHY', 'ADS', 'WU', 'GPN', 'TSS'], dtype=object),
 array(['NVR', 'MHO', 'PHM', 'TOL', 'DHI', 'LEN', 'KBH', 'MDC', 'MTH',
        'BZH', 'HOV'], dtype=object),
 array(['KMX', 'AN', 'LAD', 'ABG', 'SAH', 'GPI', 'PAG', 'CTB', 'GT', 'THRM',
        'F', 'GNTX', 'AXL', 'BWA', 'DAN', 'TEN'], dtype=object),
 array(['TREX', 'AMWD', 'BLDR', 'CVCO', 'APOG', 'ROCK', 'NX', 'GFF', 'SSD',
        'UFPI', 'EXP', 'MLM', 'VMC', 'LPX', 'OC', 'USG', 'AWI', 'MAS',
        'MHK', 'SHW', 'HD', 'LOW', 'CPRT', 'POOL', 'GPC', 'LKQ', 'WSO',
        'AOS', 'LII', 'AYI', 'TTC', 'CSL', 'SNA', 'SWK', 'SCSS', 'TPX',
        'ETH', 'LZB', 'LEG', 'WHR', 'HAS', 'MAT', 'HOG', 'BC', 'PII', 'SIG',
        'TIF', 'LL', 'THO', 'WGO'], dtype=object),
 array(['AHT', 'FCH', 'RHP', 'HT', 'HPT', 'SHO', 'HST', 'DRH', 'LHO', 'CXW',
        'GEO', 'WY', 'PCH', 'RYN', 'JOE', 'CBG', 'JLL', 'HF', 'KW'], dtype=object),
 array(['MGM', 'LVS', 'WYNN', 'PENN', 'BYD', 'PNK', 'IGT', 'SGMS'], dtype=object),
 array(['MTG', 'RDN', 'AGO', 'MBI', 'ASPS', 'OCN', 'PHH', 'WAC'], dtype=object)]

This can be quite puzzling without knowing the stocks. So we are going to study these clusters a bit further… Below we sort the rows and columns of the correlation matrix using the dendrogram computed by the Ward method. We can see that blocks appear on the diagonal. These blocks correspond to the clusters. Some are strongly correlated, some less so. Some are far (uncorrelated) from the rest of the stocks, some are mildly correlated with nearly every other stocks.

display_filtered_correlation(X,nb_clusters=nb_clusters,method="ward",type_correl="spearman")

png

Now, we are trying to name automatically these clusters based on descriptive features for each stock. Here we will use only industry related information and rating, but one can be more imaginative to add various different factors.

#import features describing the stocks
features = pd.read_csv('stock_features.csv')
features.index = features['Unnamed: 0']
del features.index.name

main_features = features[['INDUSTRY_SECTOR','INDUSTRY_GROUP','INDUSTRY_SUBGROUP','RTG_SP_LT_LC_ISSUER_CREDIT']].T
main_features = main_features[X.columns]
main_features.head()
A AAL AAN AAON AAP AAPL AAWW ABAX ABC ABCB ... YRCW YUM ZAGG ZBH ZBRA ZEUS ZION ZIOP ZIXI ZUMZ
INDUSTRY_SECTOR Industrial Consumer, Cyclical Consumer, Non-cyclical Industrial Consumer, Cyclical Technology Industrial Consumer, Non-cyclical Consumer, Non-cyclical Financial ... Industrial Consumer, Cyclical Industrial Consumer, Non-cyclical Industrial Industrial Financial Consumer, Non-cyclical Communications Consumer, Cyclical
INDUSTRY_GROUP Electronics Airlines Commercial Services Building Materials Retail Computers Transportation Healthcare-Products Pharmaceuticals Banks ... Transportation Retail Electronics Healthcare-Products Machinery-Diversified Metal Fabricate/Hardware Banks Biotechnology Internet Retail
INDUSTRY_SUBGROUP Electronic Measur Instr Airlines Rental Auto/Equipment Bldg Prod-Air&Heating Retail-Auto Parts Computers Transport-Air Freight Medical Instruments Medical-Whsle Drug Dist Commer Banks-Southern US ... Transport-Truck Retail-Restaurants Electronic Compo-Misc Medical Products Machinery-General Indust Metal Products-Distrib Commer Banks-Western US Medical-Biomedical/Gene Internet Security Retail-Sporting Goods
RTG_SP_LT_LC_ISSUER_CREDIT BBB+ BB- NaN NaN BBB- AA+ NaN NaN A- NaN ... B- BB NaN BBB BB- NaN BBB- NaN NaN NaN

4 rows × 2067 columns

We compute the name for the clusters:

clusters, cluster_names = build_named_clustering(X,main_features,nb_clusters)

We can see below that some clusters correspond very precisely to a given (sub)industry:

for cluster,cluster_name in zip(clusters,cluster_names):
    print(cluster_name + "\t\t| size: " + str(len(cluster)) + "\t\t| mean correl: " + "%.2f" % X[cluster].corr(method="spearman").values.mean())
    print(cluster,end="\n\n")
Electric-Integrated/(0.75)		| size: 24		| mean correl: 0.72
['EXC' 'FE' 'AEE' 'CMS' 'DTE' 'LNT' 'PNW' 'SCG' 'ES' 'WEC' 'XEL' 'GXP' 'WR'
 'ED' 'SO' 'AEP' 'DUK' 'D' 'NEE' 'EIX' 'PCG' 'ETR' 'PEG' 'PPL']

Utilities/(0.65)		| size: 32		| mean correl: 0.60
['AWK' 'WTR' 'HE' 'MGEE' 'OTTR' 'EE' 'PNM' 'POR' 'AVA' 'IDA' 'ALE' 'NWE'
 'SJI' 'NJR' 'WGL' 'NWN' 'SWX' 'BKH' 'UGI' 'ATO' 'VVC' 'CPK' 'UTL' 'CPN'
 'NRG' 'CNP' 'OGE' 'NI' 'SRE' 'AES' 'MDU' 'NFG']

Poultry/(0.8)		| size: 3		| mean correl: 0.66
['TSN' 'PPC' 'SAFM']

Beverages/(0.33)		| size: 30		| mean correl: 0.47
['PM' 'MO' 'RAI' 'UVV' 'VGR' 'SYY' 'HSY' 'CAG' 'MDLZ' 'SJM' 'HRL' 'GIS' 'K'
 'CPB' 'MKC' 'DF' 'FLO' 'PG' 'CL' 'KMB' 'CHD' 'CLX' 'TAP' 'BF_B' 'STZ'
 'MNST' 'CCE' 'DPS' 'KO' 'PEP']

REITS-Shopping Centers/(0.44)		| size: 15		| mean correl: 0.53
['GPT' 'CDR' 'KRG' 'RPT' 'ADC' 'GTY' 'BFS' 'UBA' 'UHT' 'IRET' 'MNR' 'ALX'
 'UMH' 'GOOD' 'OLP']

REITS/(0.71)		| size: 66		| mean correl: 0.62
['SBRA' 'HR' 'OHI' 'SNH' 'VTR' 'HCN' 'HCP' 'MPW' 'LTC' 'NHI' 'CUBE' 'EXR'
 'PSA' 'MAA' 'AIV' 'CPT' 'ESS' 'UDR' 'AVB' 'EQR' 'ACC' 'EDR' 'ELS' 'SUI'
 'EQIX' 'DFT' 'DLR' 'CLI' 'OFC' 'SLG' 'BXP' 'VNO' 'ARE' 'DEI' 'KRC' 'WRE'
 'BDN' 'DRE' 'HIW' 'CUZ' 'PKY' 'GOV' 'FPO' 'FR' 'PLD' 'DCT' 'EGP' 'LXP'
 'FSP' 'PSB' 'EPR' 'O' 'GGP' 'DDR' 'FRT' 'SPG' 'AKR' 'REG' 'KIM' 'WRI'
 'SKT' 'MAC' 'TCO' 'FCE_A' 'CBL' 'PEI']

Gold Mining/(0.73)		| size: 7		| mean correl: 0.67
['PZG' 'GORO' 'CDE' 'HL' 'GOLD' 'NEM' 'RGLD']

REITS-Mortgage/(0.97)		| size: 19		| mean correl: 0.47
['ARI' 'STWD' 'CIM' 'PMT' 'RWT' 'RAS' 'RSO' 'AI' 'STAR' 'NYMT' 'ARR' 'CYS'
 'AGNC' 'NLY' 'DX' 'IVR' 'MFA' 'ANH' 'CMO']

Retail-Restaurants/B-/(0.25)		| size: 7		| mean correl: 0.23
['BPTH' 'OLBK' 'MCBC' 'NATH' 'RVLT' 'FRBK' 'III']

Private Equity/(0.25)		| size: 4		| mean correl: 0.29
['BRT' 'ARCW' 'LOV' 'SIF']

Radio/B+/(0.29)		| size: 6		| mean correl: 0.27
['CUR' 'CUTR' 'PTSI' 'BBGI' 'GAIA' 'LEE']

E-Services/Consulting/(0.25)		| size: 6		| mean correl: 0.25
['VTNR' 'REI' 'TAT' 'CIDM' 'GALT' 'NNVC']

Marine Services/(0.15)		| size: 11		| mean correl: 0.22
['INTX' 'WSTL' 'GTXI' 'OGXI' 'PRKR' 'PTX' 'NAVB' 'SNSS' 'OMEX' 'BDSI'
 'RPRX']

Retail-Music Store/(0.25)		| size: 7		| mean correl: 0.21
['NETE' 'PCYO' 'TWMC' 'EGAN' 'UNXL' 'BIOL' 'NEON']

Trucking&Leasing/(0.11)		| size: 16		| mean correl: 0.14
['MITK' 'GLUU' 'ZAGG' 'MEIP' 'NEO' 'PCYG' 'GFN' 'ISSC' 'STRT' 'PHMD' 'TEAR'
 'CPSS' 'DAVE' 'TRXC' 'CALL' 'PERI']

Commer Banks-Western US/(0.16)		| size: 23		| mean correl: 0.25
['PCTI' 'BHB' 'HOFT' 'MOFG' 'AMNB' 'PGC' 'RDI' 'TIS' 'HBCP' 'NRIM' 'FFNW'
 'WSBF' 'CUNB' 'PPBI' 'FBIZ' 'SGBK' 'GBNK' 'PFBC' 'LION' 'HBNC' 'MBWM'
 'ANCX' 'FFKT']

Savings&Loans/(0.11)		| size: 14		| mean correl: 0.16
['CFFI' 'DGAS' 'CASH' 'DJCO' 'SPNS' 'LCNB' 'BXC' 'PROV' 'HIFS' 'ITIC'
 'CHMG' 'PLPM' 'CIX' 'LFVN']

Communications/B/(0.12)		| size: 26		| mean correl: 0.20
['REIS' 'SALM' 'AE' 'UCFC' 'ACHC' 'ADUS' 'AXDX' 'BSET' 'FLXS' 'SNAK' 'TESS'
 'MLAB' 'UTMD' 'CORR' 'HCCI' 'CLCT' 'PATK' 'MDCA' 'WETF' 'NLS' 'CSV' 'PGTI'
 'CECE' 'TREC' 'SPA' 'UFPT']

Bldg Prod-Doors&Windows/BB/(0.14)		| size: 13		| mean correl: 0.18
['FNHC' 'HCI' 'UIHC' 'DXYN' 'ESCA' 'SQBG' 'DOOR' 'PFIS' 'CUI' 'PLUG' 'TREE'
 'GTT' 'NYNY']

Medical-Drugs/(0.2)		| size: 16		| mean correl: 0.23
['GALE' 'IDRA' 'CYTR' 'INO' 'SGYP' 'THLD' 'ARWR' 'ACHN' 'AGEN' 'KERX'
 'HRTX' 'INSY' 'MDXG' 'TXMD' 'FCSC' 'OHRP']

Biotechnology/(0.52)		| size: 56		| mean correl: 0.33
['LGND' 'LXRX' 'MNTA' 'ACOR' 'EBS' 'GHDX' 'SPPI' 'MDCO' 'RIGL' 'CRIS'
 'EXEL' 'CYTK' 'SGMO' 'HALO' 'IMGN' 'CLDX' 'ALNY' 'NBIX' 'BCRX' 'GERN'
 'NVAX' 'ZIOP' 'NKTR' 'PGNX' 'ARRY' 'IMMU' 'VNDA' 'DVAX' 'INFI' 'ANIP'
 'OPK' 'SRPT' 'XOMA' 'VVUS' 'ARNA' 'OREX' 'MNKD' 'MYGN' 'EXAS' 'PDLI'
 'OMER' 'BTX' 'CORT' 'BSTC' 'SCLN' 'ATRS' 'AMAG' 'CERS' 'BEAT' 'RMTI'
 'AMRI' 'FOLD' 'ACAD' 'INSM' 'ANIK' 'RGEN']

Biotechnology/(0.29)		| size: 13		| mean correl: 0.52
['GILD' 'BIIB' 'AMGN' 'CELG' 'ILMN' 'UTHR' 'ALKS' 'INCY' 'SGEN' 'VRTX'
 'REGN' 'ALXN' 'BMRN']

Medical-Generic Drugs/(0.46)		| size: 10		| mean correl: 0.43
['PRGO' 'AGN' 'MYL' 'ENDP' 'VRX' 'DEPO' 'SCMP' 'LCI' 'AKRX' 'IPXL']

Healthcare-Products/(0.53)		| size: 40		| mean correl: 0.40
['STAA' 'OSUR' 'QDEL' 'CSII' 'ELGX' 'NXTM' 'ABMD' 'SPNC' 'DXCM' 'PODD'
 'IVC' 'OFIX' 'ANGO' 'BABY' 'MMSI' 'NUVA' 'WMGI' 'ABAX' 'LMNX' 'HAE' 'ICUI'
 'IART' 'MASI' 'CNMD' 'TFX' 'STE' 'WST' 'ENSG' 'USPH' 'ALOG' 'LDR' 'VIVO'
 'BCPC' 'NEOG' 'OMCL' 'CRVL' 'CRY' 'CBM' 'EXAC' 'SRDX']

Medical-Hospitals/(0.47)		| size: 12		| mean correl: 0.47
['AMED' 'AFAM' 'LHCG' 'HLS' 'CYH' 'LPNT' 'UHS' 'PMC' 'BKD' 'CSU' 'KND'
 'SEM']

Medical-HMO/(1.0)		| size: 10		| mean correl: 0.59
['HUM' 'CI' 'UNH' 'AET' 'ANTM' 'WCG' 'CNC' 'MOH' 'GTS' 'MGLN']

Medical-Drugs/AA/(0.5)		| size: 6		| mean correl: 0.61
['BMY' 'MRK' 'PFE' 'LLY' 'ABT' 'JNJ']

Healthcare-Products/(0.39)		| size: 41		| mean correl: 0.48
['ABC' 'CAH' 'MCK' 'ESRX' 'DVA' 'DGX' 'LH' 'OMI' 'XRAY' 'HSIC' 'PDCO'
 'WOOF' 'CHE' 'MD' 'BAX' 'MDT' 'SYK' 'ZBH' 'BCR' 'BDX' 'ISRG' 'BSX' 'HOLX'
 'HRC' 'VAR' 'EW' 'RMD' 'BRKR' 'MTD' 'TMO' 'WAT' 'A' 'PKI' 'ALGN' 'COO'
 'CRL' 'PRXL' 'QGEN' 'IDXX' 'BIO' 'TECH']

Oil&Gas Services/(0.76)		| size: 35		| mean correl: 0.57
['SDRL' 'ATW' 'DO' 'RIG' 'PKD' 'BAS' 'KEG' 'RES' 'PES' 'UNT' 'HP' 'PTEN'
 'SLB' 'BHI' 'HAL' 'FTI' 'NOV' 'DRQ' 'OII' 'OIS' 'SPN' 'CRR' 'BRS' 'CKH'
 'HOS' 'TDW' 'MTRX' 'MDR' 'TESO' 'NR' 'HLX' 'TTI' 'WG' 'GEOS' 'IO']

Oil Comp-Explor&Prodtn/(0.85)		| size: 49		| mean correl: 0.55
['NBL' 'APC' 'APA' 'DVN' 'OXY' 'COP' 'MRO' 'HES' 'MUR' 'PDCE' 'XEC' 'CXO'
 'EOG' 'PXD' 'EGN' 'NFX' 'BP' 'CVX' 'XOM' 'INT' 'OKE' 'WMB' 'COG' 'EQT'
 'RRC' 'CHK' 'GPOR' 'EGY' 'HK' 'GST' 'CLNE' 'REN' 'REXX' 'XCO' 'PQ' 'NOG'
 'CRK' 'SGY' 'WTI' 'BBG' 'DNR' 'SM' 'CRZO' 'CLR' 'WLL' 'AXAS' 'CPE' 'AREX'
 'MCF']

Insurance/(0.52)		| size: 28		| mean correl: 0.54
['AWH' 'VR' 'ACGL' 'RE' 'RNR' 'AHL' 'AXS' 'WTM' 'AON' 'MMC' 'AJG' 'BRO'
 'AFSI' 'XL' 'PGR' 'ALL' 'CB' 'CINF' 'MCY' 'ORI' 'PRA' 'THG' 'AFG' 'WRB'
 'MKL' 'Y' 'ANAT' 'ERIE']

Super-Regional Banks-US/(0.53)		| size: 25		| mean correl: 0.70
['SNV' 'MTB' 'PNC' 'BBT' 'USB' 'WFC' 'FHN' 'CMA' 'ZION' 'RF' 'HBAN' 'STI'
 'FITB' 'KEY' 'COF' 'AXP' 'DFS' 'STT' 'BK' 'NTRS' 'GS' 'MS' 'C' 'BAC' 'JPM']

Diversified Finan Serv/(0.52)		| size: 43		| mean correl: 0.59
['BLK' 'EV' 'BEN' 'TROW' 'AMG' 'AMP' 'IVZ' 'LM' 'WDR' 'FII' 'SEIC' 'CNS'
 'VRTS' 'LAZ' 'EVR' 'GHL' 'ITG' 'IBKR' 'PJC' 'RJF' 'SF' 'ETFC' 'AMTD'
 'SCHW' 'NDAQ' 'CME' 'ICE' 'BRK_A' 'BRK_B' 'AFL' 'HIG' 'LNC' 'MET' 'PRU'
 'PFG' 'TMK' 'UNM' 'AIZ' 'RGA' 'AIG' 'LUK' 'CNA' 'L']

Banks/(0.48)		| size: 71		| mean correl: 0.65
['CPF' 'HAFC' 'BANR' 'UCBI' 'FBP' 'BPOP' 'OFG' 'TBBK' 'NFBK' 'ORIT' 'FRME'
 'PFS' 'INDB' 'FFBC' 'UBSI' 'FFIN' 'FNB' 'CBU' 'NBTB' 'IBOC' 'TRMK' 'WSBC'
 'CHCO' 'STBA' 'CHFC' 'PRK' 'FFIC' 'BRKL' 'DCOM' 'BHLB' 'ISBC' 'OZRK'
 'HOMB' 'PNFP' 'WAL' 'BPFH' 'PACW' 'COLB' 'UMBF' 'ONB' 'UMPQ' 'CVBF' 'GBCI'
 'WABC' 'WTFC' 'BXS' 'FCF' 'FMBI' 'MBFI' 'TCBI' 'IBKC' 'HBHC' 'BOKF' 'CFR'
 'PB' 'SBNY' 'VLY' 'FULT' 'BOH' 'CBSH' 'SIVB' 'CATY' 'EWBC' 'WBS' 'AF'
 'NYCB' 'PBCT' 'NWBI' 'WAFD' 'CFFN' 'TFSL']

Insurance/(0.36)		| size: 28		| mean correl: 0.48
['OB' 'ESGR' 'GLRE' 'MHLD' 'UFCS' 'IPCC' 'SAFT' 'AGII' 'NAVG' 'RLI' 'SIGI'
 'AMSF' 'EIG' 'BOFI' 'UVE' 'BLX' 'OPY' 'FCNCA' 'HTH' 'HMN' 'KMPR' 'FFG'
 'AEL' 'CNO' 'PZN' 'MKTX' 'BGCP' 'SFE']

S&L/Thrifts-Central US/(0.18)		| size: 13		| mean correl: 0.36
['NICK' 'BANC' 'FBC' 'PSTB' 'SBCF' 'HTBK' 'SNBC' 'CNOB' 'FDEF' 'CHFN' 'CCF'
 'EBTC' 'IHC']

Banks/(0.45)		| size: 78		| mean correl: 0.51
['BMTC' 'FISI' 'WSFS' 'PCBK' 'EFSC' 'HFWA' 'ABCB' 'WTBA' 'BUSE' 'TOWN'
 'SBSI' 'FBNC' 'AROW' 'GABC' 'GSBC' 'HTLF' 'UVSP' 'FCBC' 'LBAI' 'TCBK'
 'STL' 'UBSH' 'TMP' 'BANF' 'SRCE' 'THFF' 'TRST' 'LKFN' 'SASR' 'SFNC' 'RNST'
 'WASH' 'CTBI' 'SYBT' 'CAC' 'MSFG' 'BKMU' 'PEBO' 'UBNK' 'CSFL' 'EGBN'
 'COBZ' 'FLIC' 'BSRR' 'OCFC' 'OKSB' 'RBCAA' 'ESSA' 'CSBK' 'EBSB' 'BNCL'
 'KRNY' 'SENEA' 'NUTR' 'ODC' 'DGICA' 'HALL' 'EMCI' 'GBLI' 'STFC' 'CTO'
 'CIA' 'NHC' 'CASS' 'WEYS' 'TBNK' 'BFIN' 'CZNC' 'BDGE' 'CCNE' 'FNLC' 'ATLO'
 'BWINB' 'CCBG' 'PWOD' 'CNBKA' 'BMRC' 'NKSH']

Investment Companies/(0.96)		| size: 14		| mean correl: 0.48
['HTGC' 'MAIN' 'TCAP' 'TICC' 'PNNT' 'PSEC' 'AINV' 'ARCC' 'BKCC' 'FSC'
 'CSWC' 'MVC' 'GAIN' 'GLAD']

Internet/(0.09)		| size: 44		| mean correl: 0.25
['JAKK' 'WWE' 'FLWS' 'AVHI' 'TTGT' 'ENZ' 'OME' 'DMRC' 'SNMX' 'ARAY' 'ARQL'
 'LWAY' 'ISRL' 'ATRI' 'NVEC' 'OFLX' 'USLM' 'HBIO' 'RTIX' 'CWCO' 'KMG'
 'PRSC' 'CFI' 'HCKT' 'PLUS' 'WINA' 'NATR' 'JOUT' 'ALCO' 'LMNR' 'HNRG' 'AIQ'
 'RDNT' 'HNH' 'PLPC' 'SGA' 'BDE' 'NMRX' 'SHLO' 'BREW' 'SAM' 'MPAA' 'ATRC'
 'HSTM']

Electronic Compo-Semicon/(0.11)		| size: 46		| mean correl: 0.23
['CFNB' 'GRIF' 'GSIT' 'RELL' 'LINC' 'IVAC' 'QTM' 'MOSY' 'RBCN' 'CLUB'
 'ATEC' 'AVNW' 'CVO' 'AHC' 'MNI' 'PRGX' 'RST' 'DWSN' 'MIND' 'AOI' 'FVE'
 'MSL' 'RTK' 'JMBA' 'PCO' 'FHCO' 'PTIE' 'CTG' 'GSOL' 'HIL' 'SEAC' 'LUB'
 'RSYS' 'CTIC' 'PPHM' 'BIOS' 'CPST' 'FCEL' 'XRM' 'UEC' 'URG' 'CYTX' 'VICL'
 'HDNG' 'GMO' 'SPRT']

Water/(0.38)		| size: 27		| mean correl: 0.40
['ARTNA' 'YORW' 'CTWS' 'MSEX' 'SJW' 'AWR' 'CWT' 'IDT' 'CBB' 'CNSL' 'GNCMA'
 'ATNI' 'SHEN' 'CALM' 'CORE' 'CVGW' 'BGS' 'THS' 'WDFC' 'LNCE' 'JJSF' 'LANC'
 'TR' 'JBSS' 'FARM' 'COKE' 'FIZZ']

Schools/(0.95)		| size: 9		| mean correl: 0.49
['LRN' 'BPI' 'CECO' 'CPLA' 'STRA' 'APEI' 'LOPE' 'GHC' 'UTI']

Commercial Services/(0.31)		| size: 69		| mean correl: 0.44
['HAIN' 'VRSK' 'ABCO' 'INWK' 'MED' 'NTRI' 'CHDN' 'ISCA' 'TRK' 'MTN' 'HELE'
 'HSNI' 'NCMI' 'RGS' 'CENTA' 'PBH' 'UHAL' 'VRTU' 'EXLS' 'MMS' 'SYNT' 'CSGS'
 'CVG' 'SYKE' 'TTEC' 'PRFT' 'LYV' 'CSGP' 'JCOM' 'LDOS' 'CACI' 'MANT' 'HCSG'
 'CTAS' 'UNF' 'ABM' 'ROL' 'ACXM' 'HI' 'BCO' 'SCI' 'SSP' 'MDP' 'NYT' 'RRD'
 'JW_A' 'SCHL' 'RECN' 'HSII' 'KFY' 'ASGN' 'DLX' 'KFRC' 'MAN' 'RHI' 'KELYA'
 'TBI' 'FCN' 'HURN' 'TILE' 'KNL' 'SCS' 'HNI' 'MLHR' 'VOXX' 'NSR' 'OSIS'
 'IRBT' 'UEIC']

Industrial/(0.17)		| size: 106		| mean correl: 0.39
['ERII' 'STRL' 'GLDD' 'ORN' 'LTS' 'COWN' 'ATRO' 'INTL' 'AGM' 'BBSI' 'CWST'
 'CRMT' 'MG' 'CMTL' 'RNWK' 'ETM' 'PKOH' 'MYRG' 'GHM' 'TISI' 'CLH' 'ECOL'
 'HURC' 'NNBR' 'SEB' 'SP' 'AMSWA' 'TYPE' 'MRLN' 'LBY' 'LCUT' 'CRD_B' 'KVHI'
 'AGYS' 'CRAI' 'LABL' 'ICFI' 'FC' 'GPX' 'VICR' 'CDI' 'LYTS' 'HZO' 'LDL'
 'ELY' 'SPAR' 'FORR' 'TRC' 'ARC' 'SYX' 'HHS' 'MPX' 'CCRN' 'MLR' 'NWLI' 'NC'
 'WMAR' 'MCRI' 'HVT' 'NPK' 'MTSC' 'RAVN' 'DEL' 'FIX' 'BRC' 'MATW' 'EXPO'
 'NCI' 'MYE' 'MCS' 'NSP' 'BELFB' 'BBOX' 'DAKT' 'AAON' 'MEI' 'FSS' 'ROG'
 'CTS' 'PKE' 'LNDC' 'ACET' 'CSS' 'DHIL' 'IIIN' 'EBF' 'VVI' 'GBL' 'WHG'
 'NEWS' 'PICO' 'UFI' 'MLNK' 'EXTR' 'VDSI' 'DCO' 'VSEC' 'CBZ' 'DGII' 'DSPG'
 'ESIO' 'KOPN' 'COHU' 'IXYS' 'MRCY' 'XOXO']

Chemicals/(0.29)		| size: 65		| mean correl: 0.51
['AZZ' 'POWL' 'AIMC' 'WIRE' 'AIN' 'BDC' 'ENS' 'NPO' 'CIR' 'SNHY' 'ASTE'
 'EME' 'MLI' 'B' 'WTS' 'AIT' 'KAMN' 'MSA' 'FELE' 'ROLL' 'TTEK' 'BGG' 'ESE'
 'CMCO' 'KAI' 'JBT' 'TNC' 'SXI' 'BMI' 'GRC' 'NNI' 'MOD' 'SUP' 'AYR' 'RUSHA'
 'TRS' 'MGRC' 'MINI' 'DORM' 'SMP' 'ALG' 'ATSG' 'SRI' 'ACCO' 'MWA' 'AVD'
 'FOE' 'SCL' 'SHLM' 'KWR' 'POL' 'FUL' 'MTX' 'SXT' 'OLN' 'KOP' 'TG' 'IPHS'
 'HWKN' 'IOSP' 'OMN' 'ANDE' 'CCC' 'DAR' 'LXU']

Finance-Consumer Loans/(0.18)		| size: 28		| mean correl: 0.37
['EPM' 'NGS' 'PHX' 'GIFI' 'HWCC' 'USAP' 'LAYN' 'AP' 'BOOM' 'CVGI' 'TWIN'
 'ASCMA' 'NWPX' 'FSTR' 'PHIIK' 'EZPW' 'FCFS' 'WRLD' 'ECPG' 'PRAA' 'DDD'
 'SSYS' 'AMSC' 'MCHX' 'ENOC' 'SPWR' 'CVA' 'ORA']

Retail-Restaurants/(0.91)		| size: 25		| mean correl: 0.45
['MCD' 'SBUX' 'YUM' 'CMG' 'PNRA' 'TAST' 'BH' 'DENN' 'RUTH' 'DRI' 'EAT'
 'CBRL' 'CAKE' 'TXRH' 'BOBE' 'DIN' 'RT' 'BJRI' 'BWLD' 'DPZ' 'PZZA' 'WEN'
 'RRGB' 'JACK' 'SONC']

Food-Retail/(0.86)		| size: 8		| mean correl: 0.48
['SVU' 'KR' 'WFM' 'VLGEA' 'IMKTA' 'WMK' 'SPTN' 'UNFI']

Retail-Apparel/Shoe/(0.3)		| size: 21		| mean correl: 0.33
['DEST' 'DXLG' 'BGFV' 'SCVL' 'SMRT' 'SSI' 'PSMT' 'MNRO' 'CASY' 'FRED' 'BKS'
 'CTRN' 'KIRK' 'TUES' 'BBW' 'CONN' 'BONT' 'CBK' 'NWY' 'BEBE' 'RGR']

Apparel/(0.78)		| size: 18		| mean correl: 0.52
['COH' 'VFC' 'PVH' 'RL' 'HBI' 'NKE' 'UAA' 'SKX' 'CROX' 'DECK' 'SHOO' 'WWW'
 'MOV' 'PERY' 'ICON' 'GIII' 'COLM' 'OXM']

Retail-Discount/(0.53)		| size: 10		| mean correl: 0.50
['AAP' 'AZO' 'ORLY' 'TGT' 'COST' 'WMT' 'ROST' 'TJX' 'BIG' 'DLTR']

Retail-Apparel/Shoe/(0.44)		| size: 38		| mean correl: 0.46
['ODP' 'SPLS' 'BBY' 'GME' 'AAN' 'RCII' 'PIR' 'BBBY' 'WSM' 'SBH' 'TSCO'
 'ULTA' 'VSI' 'CAB' 'DKS' 'HIBB' 'FINL' 'FL' 'CRI' 'PLCE' 'GPS' 'LB' 'AEO'
 'ANF' 'GES' 'ZUMZ' 'DSW' 'ASNA' 'CHS' 'BKE' 'CATO' 'GCO' 'SHLD' 'JCP'
 'KSS' 'DDS' 'JWN' 'M']

Semiconductors/(0.83)		| size: 48		| mean correl: 0.50
['AMD' 'MU' 'MRVL' 'NVDA' 'AMKR' 'KLAC' 'LRCX' 'AMAT' 'TER' 'CRUS' 'AVGO'
 'SWKS' 'MXIM' 'XLNX' 'MCHP' 'ADI' 'TXN' 'CAVM' 'CY' 'DIOD' 'IDTI' 'MSCC'
 'SLAB' 'SMTC' 'MPWR' 'POWI' 'PLAB' 'CCMP' 'AEIS' 'BRKS' 'ENTG' 'MKSI'
 'UCTT' 'NANO' 'RTEC' 'ACLS' 'PDFS' 'SIGM' 'IMMR' 'SYNA' 'KEM' 'CEVA'
 'CREE' 'VECO' 'FORM' 'RMBS' 'LSCC' 'XCRA']

Software/(0.37)		| size: 43		| mean correl: 0.45
['TTWO' 'ATVI' 'EA' 'NFLX' 'BIDU' 'EXPE' 'GOOGL' 'AMZN' 'PCLN' 'AKAM'
 'VRSN' 'CHKP' 'DOX' 'CVLT' 'VMW' 'CRM' 'CTXS' 'RHT' 'CDNS' 'SNPS' 'ADSK'
 'ANSS' 'ADBE' 'INTU' 'AZPN' 'NUAN' 'STX' 'WDC' 'HPQ' 'XRX' 'CTSH' 'ACN'
 'IBM' 'CSCO' 'INTC' 'SYMC' 'MSFT' 'CA' 'ORCL' 'AAPL' 'MSI' 'EBAY' 'QCOM']

Electronics/(0.4)		| size: 63		| mean correl: 0.47
['OCLR' 'INFN' 'CIEN' 'FNSR' 'BRCD' 'NTAP' 'FFIV' 'JNPR' 'OLED' 'IPGP'
 'COHR' 'IIVI' 'FARO' 'CGNX' 'LFUS' 'TTMI' 'JBL' 'SANM' 'BHE' 'PLXS' 'NSIT'
 'SCSC' 'SNX' 'TECD' 'ARW' 'AVT' 'AVX' 'VSH' 'GRMN' 'ITRI' 'NATI' 'TRMB'
 'FLIR' 'HRS' 'GLW' 'APH' 'TEL' 'SONS' 'SNCR' 'HLIT' 'NTCT' 'DLB' 'IDCC'
 'ADTN' 'ARRS' 'VSAT' 'NTGR' 'PLT' 'DHX' 'MXWL' 'CRAY' 'SMCI' 'DBD' 'NCR'
 'PAY' 'UIS' 'ZBRA' 'BID' 'EFII' 'WEX' 'DGI' 'LORL' 'SATS']

Software/(0.35)		| size: 56		| mean correl: 0.33
['CPSI' 'QSII' 'ATHN' 'CERN' 'MDRX' 'IRDM' 'ORBC' 'CCOI' 'LVLT' 'EGHT' 'VG'
 'CLFD' 'QUIK' 'CAMP' 'WBMD' 'VRNT' 'PEGA' 'MSTR' 'MANH' 'TYL' 'ULTI'
 'EGOV' 'EPAY' 'PRGS' 'ACIW' 'BLKB' 'CALD' 'GUID' 'MDSO' 'LOGM' 'PRO'
 'STMP' 'OSTK' 'SHOR' 'EHTH' 'PETS' 'LQDT' 'CATM' 'BCOR' 'LPSN' 'EBIX'
 'MGI' 'INAP' 'LLNW' 'CACC' 'ACTG' 'HMSY' 'WTW' 'SIRI' 'CETV' 'KTOS' 'VHC'
 'SFLY' 'ZIXI' 'TIVO' 'TZOO']

Diversified Manufact Op/(0.34)		| size: 41		| mean correl: 0.62
['UNP' 'CSX' 'NSC' 'GWR' 'KSU' 'MSM' 'FAST' 'GWW' 'JCI' 'GE' 'DHR' 'HON'
 'UTX' 'ITW' 'MMM' 'PCAR' 'CAT' 'CMI' 'IR' 'ETN' 'PH' 'EMR' 'ROK' 'WAB'
 'AME' 'ROP' 'CFX' 'PNR' 'ITT' 'CR' 'DOV' 'FLS' 'RBC' 'ATU' 'KMT' 'TKR'
 'NDSN' 'GGG' 'IEX' 'DCI' 'LECO']

Engineering&Construction/(0.36)		| size: 44		| mean correl: 0.50
['ACM' 'CBI' 'KBR' 'FLR' 'JEC' 'DY' 'MTZ' 'PWR' 'AGX' 'PRIM' 'NCS' 'FOR'
 'BECN' 'AEGN' 'GVA' 'TPC' 'TITN' 'AGCO' 'DE' 'LNN' 'VMI' 'RAIL' 'ARII'
 'GBX' 'TRN' 'CAR' 'HTZ' 'OSK' 'MTW' 'TEX' 'WNC' 'NAV' 'MTOR' 'WBC' 'TGH'
 'HEES' 'URI' 'GTLS' 'TWI' 'DXPE' 'AXE' 'WCC' 'BGC' 'HSC']

Packaging&Containers/(0.67)		| size: 18		| mean correl: 0.54
['GPK' 'ATR' 'BMS' 'SON' 'AVY' 'SEE' 'GEF' 'SLGN' 'BLL' 'CCK' 'UFS' 'KS'
 'IP' 'PKG' 'SWM' 'CLW' 'GLT' 'NP']

Chemicals/(0.62)		| size: 23		| mean correl: 0.56
['IPI' 'CF' 'MOS' 'DD' 'DOW' 'HUN' 'CBT' 'FMC' 'CE' 'EMN' 'WLK' 'APD' 'PX'
 'IFF' 'ECL' 'PPG' 'RPM' 'NEU' 'ASH' 'ALB' 'GRA' 'CMP' 'MON']

Iron/Steel/(0.6)		| size: 19		| mean correl: 0.60
['CLF' 'AKS' 'X' 'ZEUS' 'SCHN' 'CMC' 'RS' 'NUE' 'STLD' 'CRS' 'WOR' 'FCX'
 'SCCO' 'ARNC' 'CENX' 'GSM' 'KALU' 'HAYN' 'MTRN']

Oil Refining&Marketing/(0.8)		| size: 6		| mean correl: 0.70
['HFC' 'TSO' 'VLO' 'CVI' 'ALJ' 'DK']

Transport-Marine/(0.62)		| size: 19		| mean correl: 0.34
['NNA' 'DHT' 'FRO' 'NAT' 'TNK' 'PEIX' 'GPRE' 'REX' 'NM' 'SB' 'WLB' 'GLNG'
 'SFL' 'TK' 'FTK' 'LNG' 'MNTX' 'KRO' 'NL']

Airlines/(0.95)		| size: 9		| mean correl: 0.63
['AAL' 'DAL' 'UAL' 'JBLU' 'ALK' 'LUV' 'ALGT' 'HA' 'SKYW']

Transport-Truck/(0.74)		| size: 23		| mean correl: 0.51
['HTLD' 'KNX' 'WERN' 'ODFL' 'JBHT' 'LSTR' 'ARCB' 'SAIA' 'CGI' 'MRTN' 'KEX'
 'MATX' 'FDX' 'UPS' 'CHRW' 'EXPD' 'AAWW' 'FWRD' 'HUBG' 'ECHO' 'XPO' 'USAK'
 'YRCW']

Aerospace/Defense/(0.72)		| size: 20		| mean correl: 0.56
['LMT' 'NOC' 'RTN' 'GD' 'LLL' 'SPR' 'BA' 'COL' 'HXL' 'TXT' 'TDG' 'TGI'
 'AVAV' 'CUB' 'ESL' 'MOG_A' 'CW' 'TDY' 'AIR' 'HEI']

Media/(0.63)		| size: 19		| mean correl: 0.46
['CMLS' 'EVC' 'GTN' 'NXST' 'SBGI' 'CNK' 'RGC' 'SNI' 'DISCA' 'DISCK' 'DIS'
 'FOX' 'FOXA' 'TWX' 'CBS' 'VIAB' 'DISH' 'CMCSA' 'LBTYA']

Cellular Telecom/(0.5)		| size: 11		| mean correl: 0.46
['SBAC' 'AMT' 'CCI' 'VOD' 'CTL' 'T' 'VZ' 'TDS' 'USM' 'S' 'TMUS']

Commercial Serv-Finance/(0.23)		| size: 62		| mean correl: 0.42
['HRG' 'SPB' 'HLF' 'NUS' 'USNA' 'IPAR' 'REV' 'ADM' 'BG' 'FDP' 'INGR' 'CCL'
 'RCL' 'CHH' 'MAR' 'WYN' 'IRM' 'LAMR' 'IPG' 'OMC' 'EL' 'TRI' 'SMG' 'NWL'
 'TUP' 'CCO' 'CPA' 'STC' 'CLGX' 'FNF' 'ALR' 'HRB' 'RAD' 'CVS' 'WBA' 'SRCL'
 'WCN' 'RSG' 'WM' 'MA' 'V' 'MORN' 'MCO' 'FDS' 'MSCI' 'EFX' 'FICO' 'IT' 'BR'
 'DST' 'EEFT' 'MIDD' 'G' 'ADP' 'PAYX' 'FIS' 'FISV' 'JKHY' 'ADS' 'WU' 'GPN'
 'TSS']

Bldg-Residential/Commer/(0.92)		| size: 11		| mean correl: 0.73
['NVR' 'MHO' 'PHM' 'TOL' 'DHI' 'LEN' 'KBH' 'MDC' 'MTH' 'BZH' 'HOV']

Retail-Automobile/(0.54)		| size: 16		| mean correl: 0.58
['KMX' 'AN' 'LAD' 'ABG' 'SAH' 'GPI' 'PAG' 'CTB' 'GT' 'THRM' 'F' 'GNTX'
 'AXL' 'BWA' 'DAN' 'TEN']

Building Materials/(0.45)		| size: 50		| mean correl: 0.49
['TREX' 'AMWD' 'BLDR' 'CVCO' 'APOG' 'ROCK' 'NX' 'GFF' 'SSD' 'UFPI' 'EXP'
 'MLM' 'VMC' 'LPX' 'OC' 'USG' 'AWI' 'MAS' 'MHK' 'SHW' 'HD' 'LOW' 'CPRT'
 'POOL' 'GPC' 'LKQ' 'WSO' 'AOS' 'LII' 'AYI' 'TTC' 'CSL' 'SNA' 'SWK' 'SCSS'
 'TPX' 'ETH' 'LZB' 'LEG' 'WHR' 'HAS' 'MAT' 'HOG' 'BC' 'PII' 'SIG' 'TIF'
 'LL' 'THO' 'WGO']

REITS-Hotels/(0.64)		| size: 19		| mean correl: 0.53
['AHT' 'FCH' 'RHP' 'HT' 'HPT' 'SHO' 'HST' 'DRH' 'LHO' 'CXW' 'GEO' 'WY'
 'PCH' 'RYN' 'JOE' 'CBG' 'JLL' 'HF' 'KW']

Casino Hotels/(0.62)		| size: 8		| mean correl: 0.56
['MGM' 'LVS' 'WYNN' 'PENN' 'BYD' 'PNK' 'IGT' 'SGMS']

Financial Guarantee Ins/(0.67)		| size: 8		| mean correl: 0.45
['MTG' 'RDN' 'AGO' 'MBI' 'ASPS' 'OCN' 'PHH' 'WAC']