Overall Statistics |
Total Trades 21772 Average Win 0.11% Average Loss -0.10% Compounding Annual Return 7.424% Drawdown 11.700% Expectancy 0.034 Net Profit 44.548% Sharpe Ratio 0.588 Probabilistic Sharpe Ratio 12.796% Loss Rate 50% Win Rate 50% Profit-Loss Ratio 1.08 Alpha 0.056 Beta -0.028 Annual Standard Deviation 0.091 Annual Variance 0.008 Information Ratio -0.211 Tracking Error 0.146 Treynor Ratio -1.882 Total Fees $197148.21 |
from System import * from QuantConnect import * from QuantConnect.Algorithm import * from QuantConnect.Data.Market import TradeBar from QuantConnect.Algorithm.Framework import * from QuantConnect.Algorithm.Framework.Risk import * from QuantConnect.Orders.Fees import ConstantFeeModel from QuantConnect.Algorithm.Framework.Alphas import * from QuantConnect.Algorithm.Framework.Execution import * from QuantConnect.Algorithm.Framework.Portfolio import * from QuantConnect.Algorithm.Framework.Selection import * def GetSymbols(): symbols = ['AAPL', 'FB', 'AXP', 'AMZN', 'MSFT', 'BAC', 'GOOGL', 'BABA', 'GILD', 'XOM', 'PCLN', 'BIDU', 'CSCO', 'MDT', 'JPM', 'GOOG', 'JNJ', 'GE', 'NFLX', 'PG', 'CMCSA', 'CVX', 'ACT', 'AIG', 'SLB', 'TWTR', 'TSLA', 'GPRO', 'ABBV', 'WFC', 'HAL', 'C', 'INTC', 'Z', 'F', 'VZ', 'MU', 'PFE', 'DUK', 'FEYE', 'FCX', 'DAL', 'BIIB', 'QCOM', 'TXN', 'MCD', 'T', 'BA', 'MGM', 'YHOO', 'CELG', 'PEP', 'AMGN', 'DIS', 'KO', 'LVS', 'MRK', 'NOV', 'COP', 'VLO', 'SO', 'GM', 'EOG', 'V', 'MA', 'WMT', 'CVS', 'GS', 'UNP', 'IBM', 'VIPS', 'HD', 'CBS', 'DOW', 'ORCL', 'MMM', 'ADI', 'UPS', 'ADP', 'CCI', 'LUV', 'TRV', 'LYB', 'MET', 'VDSI', 'D', 'EXC', 'OXY', 'BRK.B', 'AAL', 'UTX', 'PM', 'NKE', 'APA', 'PRU', 'DVN', 'BLK', 'UNH', 'XEL', 'CAT', 'WLL', 'NEE', 'KMI', 'MDLZ', 'CP', 'HPQ', 'MO', 'M', 'DFS', 'WMB', 'HES', 'FDX', 'PXD', 'SBUX', 'COF', 'ABT', 'DG', 'PCG', 'YUM', 'AMAT', 'AEP', 'MRO', 'WYNN', 'LLY', 'REGN', 'WM', 'TGT', 'PBR', 'RIG', 'PSX', 'ED', 'MAR', 'AKAM', 'UAL', 'CF', 'HON', 'TEVA', 'LOW', 'BMY', 'NXPI', 'MS', 'VFC', 'TSM', 'RCL', 'PNC', 'DTE', 'EXPE', 'CCL', 'CLR', 'FTI', 'USB', 'FE', 'CYBR', 'GT', 'CAG', 'AMT', 'BAX', 'VRX', 'SCHW', 'UA', 'CHK', 'MCK', 'XEC', 'STT', 'EIX', 'RDS.A', 'WU', 'PPG', 'INTU', 'CSX', 'COST', 'BP', 'TJX', 'PPL', 'VTR', 'PEG', 'LBTYA', 'ADM', 'LMT', 'EMR', 'CERN', 'ESV', 'HCA', 'TRIP', 'KR', 'AAP', 'CRM', 'ABX', 'GWW', 'SPG', 'CL', 'SRE', 'PRGO', 'LB', 'DE', 'FLR', 'K', 'CSGP', 'NTAP', 'ABC', 'ACN', 'ATVI', 'GPS', 'CMI', 'ALXN', 'BK', 'GIS', 'CTSH', 'KORS', 'EL', 'LNG', 'NBL', 'FOSL', 'NOC', 'DHR', 'HP', 'YY', 'TAP', 'BUD', 'KMB', 'GD', 'X', 'TMO', 'HCP', 'MRVL', 'ZTS', 'VALE', 'PANW', 'RL', 'MHK', 'NU', 'LBTYK', 'MLM', 'AVGO', 'DLTR', 'NE', 'ADBE', 'DVA', 'WBA', 'CI', 'JD', 'RAD', 'GLW', 'HLT', 'BX', 'SHW', 'EA', 'RIO', 'CXO', 'AGIO', 'WEC', 'ANTM', 'KSS', 'RRC', 'AZN', 'VIAB', 'GSK', 'EQR', 'BG', 'OAS', 'ILMN', 'ALL', 'WDC', 'NBR', 'MSI', 'ETN', 'MMC', 'BBBY', 'ACE', 'SWKS', 'BHP', 'JACK', 'ZMH', 'GRPN', 'FITB', 'AMP', 'HUM', 'RTN', 'AON', 'MYL', 'SWN', 'HST', 'CTL', 'WDAY', 'IPG', 'SJM', 'NI', 'NEM', 'CNP', 'ETR', 'PSA', 'WHR', 'CMS', 'IP', 'HCN', 'OC', 'PLD', 'NSC', 'EQT', 'LNC', 'OKE', 'ENDP', 'COG', 'JWN', 'DISH', 'URI', 'ITW', 'GENE', 'NCR', 'WY', 'CNQ', 'APD', 'ADS', 'LEN', 'DNR', 'HSY', 'BDX', 'AZO', 'BBT', 'FSLR', 'VRTX', 'JCI', 'ECL', 'AVB', 'XLNX', 'RF', 'NVS', 'A', 'SU', 'MHFI', 'TS', 'AFL', 'SPLK', 'FANG', 'DISCA', 'MNK', 'ROST', 'HUN', 'CPN', 'GPC', 'TCO', 'NVDA', 'WR', 'BWA', 'AEE', 'DOV', 'SYK', 'PHM', 'HFC', 'COH', 'DHI', 'CLB', 'KIM', 'O', 'BMRN', 'FAST', 'NRG', 'OII', 'SYY', 'AMBA', 'AEM', 'CAH', 'OMC', 'GRMN', 'ICE', 'STI', 'ISIS', 'SBAC', 'CME', 'NLSN', 'TRGP', 'BLL', 'BXP', 'IR', 'EQIX', 'DLPH', 'WBC', 'JAZZ', 'MAC', 'JBLU', 'SIRI', 'YELP', 'HRL', 'LRCX', 'ISRG', 'PII', 'ARCP', 'TPX', 'FFIV', 'CNI', 'MUR', 'KEY', 'BSX', 'PNW', 'AMTD', 'UTHR', 'MT', 'BBY', 'NOK', 'DDD', 'PVH', 'SYMC', 'CTRP', 'VMW', 'QSR', 'CAR', 'TROW', 'DPS', 'MCO', 'IBN', 'PX', 'S', 'RSG', 'SLW', 'TSN', 'PTEN', 'CHTR', 'ORLY', 'AWK', 'PAYX', 'FBHS', 'PWR', 'HIG', 'HSBC', 'ROK', 'DLR', 'SLCA', 'CHKP', 'PH', 'DO', 'INFY', 'RE', 'SSYS', 'IACI', 'TMUS', 'ITUB', 'MAT', 'MDRX', 'COLM', 'HLX', 'SRCL', 'PBR.A', 'POT', 'PGR', 'FLS', 'SEE', 'VNO', 'RY', 'DAR', 'VOD', 'WPX', 'ADSK', 'EW', 'PBF', 'LH', 'INCY', 'ODP', 'KLAC', 'ALLY', 'SPN', 'FLT', 'ROP', 'CVE', 'EFX', 'YNDX', 'XRX', 'TRN', 'BBRY', 'IVZ', 'KMX', 'FTR', 'ALKS', 'VMC', 'HLF', 'SM', 'ITT', 'ALK', 'ATO', 'TSCO', 'TEL', 'LPI', 'LNT', 'FISV', 'ECA', 'MPEL', 'AIZ', 'LULU', 'LEA', 'ICPT', 'CX', 'ALLE', 'CHD', 'GRA', 'EPD', 'IDXX', 'EMN', 'BEN', 'NOW', 'VOYA'] symbols += ['VC', 'UDR', 'NTRS', 'XRAY', 'NCLH', 'MGA', 'WAB', 'SWK', 'PNR', 'CLX', 'MTB', 'AMX', 'CNX', 'AES', 'DDR', 'WLK', 'LECO', 'LCI', 'UNM', 'CHRW', 'AR', 'HRS', 'FIS', 'MAN', 'UN', 'CMA', 'BBL', 'RYN', 'MCHP', 'TEX', 'FL', 'STZ', 'SKX', 'CPB', 'HAS', 'KKR', 'NUE', 'QEP', 'KSU', 'ST', 'SNE', 'HOG', 'PCAR', 'ACM', 'TOL', 'HDB', 'AMG', 'NNN', 'DECK', 'PPC', 'OHI', 'NAVI', 'SPW', 'BIG', 'BC', 'ASH', 'PBCT', 'TCK', 'QRVO', 'SPWR', 'IFF', 'CFX', 'IT', 'H', 'CSIQ', 'TDC', 'RDS.B', 'PKG', 'KN', 'AEO', 'ALB', 'CS', 'MNST', 'AVP', 'TTM', 'STO', 'HBI', 'CPA', 'SIVB', 'BKU', 'TIF', 'NWL', 'FNF', 'SAVE', 'MFC', 'CTXS', 'PFG', 'JNPR', 'PDCO', 'NVAX', 'NLY', 'HDS', 'ERIC', 'FNV', 'SNH', 'TD', 'SIG', 'MXIM', 'GNC', 'MAS', 'JEC', 'FMC', 'GPOR', 'TOT', 'ALSN', 'WSM', 'CRZO', 'DGX', 'UGI', 'EXP', 'KBH', 'BITA', 'AJG', 'RBC', 'JBHT', 'HII', 'CYH', 'IRM', 'CDW', 'GPK', 'BCS', 'SLG', 'RGLD', 'JCP', 'HBAN', 'WEX', 'BRK.A', 'TTWO', 'STLD', 'TRI', 'FTNT', 'DB', 'CNC', 'ZION', 'BR', 'DRE', 'BAM', 'DISCK', 'DNKN', 'THS', 'XON', 'AYI', 'DRI', 'WDR', 'ETFC', 'RDN', 'THC', 'VAR', 'HSIC', 'MEOH', 'TM', 'BMO', 'EXPD', 'LM', 'CREE', 'TXT', 'ESS', 'ALV', 'HOLX', 'ULTA', 'VRSN', 'ZNGA', 'HAIN', 'AME', 'RLGY', 'AGNC', 'LAZ', 'RH', 'ALNY', 'MD', 'BID', 'CRTO', 'CAKE', 'SAN', 'TRP', 'SNY', 'HOLI', 'ING', 'GNW', 'COO', 'BNS', 'WCN', 'L', 'CLVS', 'WCC', 'DAN', 'DEO', 'CPT', 'GCI', 'DKS', 'CY', 'LPX', 'AGCO', 'FLEX', 'MOH', 'NUS', 'OGE', 'PDCE', 'NDAQ', 'DRQ', 'CUBE', 'TDG', 'CCK', 'TRMB', 'YPF', 'SYF', 'ALGN', 'MMP', 'MELI', 'KRC', 'SPR', 'ABEV', 'MKC', 'AUY', 'BAP', 'KNDI', 'UHS', 'EXR', 'DOX', 'FRT', 'AKRX', 'ACAD', 'ARMK', 'CHL', 'STWD', 'NFG', 'AIV', 'GME', 'ASML', 'ACHN', 'SCCO', 'SBGI', 'PAA', 'HRB', 'GWR', 'APH', 'FDS', 'ANF', 'HIW', 'CGNX', 'BCE', 'R', 'SYNA', 'TKR', 'LL', 'UFS', 'BLUE', 'CSOD', 'GNRC', 'ABB', 'CIT', 'SNPS', 'LMCA', 'JBL', 'CR', 'SBH', 'EXH', 'REG', 'RMD', 'GRUB', 'WUBA', 'PSXP', 'FHN', 'KAR', 'RRGB', 'CEO', 'MIC', 'SNA', 'CE', 'AU', 'EAT', 'BKD', 'SRPT', 'PBYI', 'OI', 'FET', 'AKS', 'RS', 'PEB', 'EBIX', 'AN', 'MDU', 'NSP', 'PCRX', 'ODFL', 'ZBRA', 'SCI', 'MRC', 'SERV', 'SNV', 'CFR', 'LEG', 'PLCE', 'OCN', 'PBI', 'TFX', 'MTW', 'BLMN', 'FCAU', 'MTD', 'VMI', 'HALO', 'MBT', 'NGG', 'GLNG', 'IGT', 'CCJ', 'HA', 'CBRL', 'JLL', 'URBN', 'DDS', 'SGEN', 'DBD', 'UL', 'CRL', 'COMM', 'WSO', 'WETF', 'TV', 'CLF', 'PDS', 'OPK', 'RPAI', 'AMAG', 'AGO', 'RRD', 'LII', 'BCEI', 'CBOE', 'BERY', 'RHI', 'HUB.B', 'SNCR', 'POR', 'MPW', 'MSCI', 'LMCK', 'CTAS', 'PAG', 'AMCX', 'XYL', 'WWW', 'NTES', 'WAT', 'CRR', 'NBIX', 'DF', 'EV', 'GBX', 'RPM', 'DEI', 'IEX', 'EWBC', 'CG', 'DK', 'MAA', 'JCOM', 'AOS', 'ARW', 'ENB', 'IDA', 'PTC', 'TWO', 'RJF', 'VRSK', 'CRUS', 'MKL', 'TMK', 'HBHC', 'HHC', 'AZPN', 'MSA', 'DNOW', 'ARCC', 'SPB', 'PIR', 'SWIR', 'NYCB', 'INT', 'CXW', 'BPL', 'GPN', 'KEX', 'JKHY', 'OFC', 'GWPH', 'RNR', 'LUK', 'SKT', 'RGA', 'FRC', 'SFUN', 'ARE', 'TSRA', 'AVT', 'AVY', 'BOX', 'WRI', 'WPC', 'XPO', 'INXN', 'JDSU', 'SSTK', 'AXL', 'LKQ', 'TDS', 'CDNS', 'CIEN', 'AER', 'ACOR', 'BSMX', 'IPGP', 'PDM', 'KBR', 'IMAX', 'HTA', 'CRC', 'KNX', 'MDCO', 'KEYS', 'CBT', 'TCBI', 'WTR', 'PKI', 'TGI', 'LSTR', 'TECH', 'WCG', 'ICON', 'MNKD', 'TER', 'CTB', 'HLS', 'SAFM', 'EXAS', 'GHC', 'DXCM', 'DRH', 'BURL', 'FAF', 'AXS', 'GFI', 'CVLT', 'PAAS', 'UNFI', 'NVO', 'BRFS', 'SC', 'ATI', 'PRLB', 'ESPR', 'MIDD', 'OTEX', 'EGO', 'BTI', 'SHO', 'QLYS', 'LPT', 'MTH', 'CSL', 'CVA', 'FMX', 'CIB', 'HL', 'CNK', 'CM', 'WTS', 'HOS', 'FLIR', 'THRX', 'SLF', 'WWE', 'DCI', 'ANSS', 'MUSA', 'SEMG', 'CMP', 'UBNT', 'TEN', 'ZIOP', 'SINA', 'WBS', 'ABMD', 'SNP', 'WRB', 'ABG', 'GNTX', 'AMD', 'STE', 'EC', 'IHG', 'BAH', 'INGR', 'PTR', 'RLJ', 'NUAN', 'CLH', 'FLO'] symbols += ['ALGT', 'CFG', 'RCI', 'MSM', 'TUP', 'AMC', 'MANH', 'CHS', 'APO', 'CVI', 'NAV', 'KALU', 'SIMO', 'FIVE', 'KMT', 'BRKR', 'COTY', 'CEMP', 'PTLA', 'BF.B', 'CXP', 'SSL', 'HR', 'MTG', 'NVR', 'MMS', 'LPLA', 'BRO', 'BYD', 'SABR', 'WEN', 'SEIC', 'TTS', 'BECN', 'LAMR', 'DPZ', 'SBNY', 'Y', 'MDC', 'PB', 'ACGL', 'ICLR', 'CINF', 'PHG', 'TPH', 'NR', 'QGEN', 'PAGP', 'CRK', 'EQC', 'BDC', 'HZNP', 'CBL', 'KGC', 'CRI', 'DPM', 'RYAM', 'PFPT', 'HE', 'CPRT', 'ATR', 'HPP', 'ASNA', 'TXRH', 'OMI', 'POST', 'AMKR', 'HIMX', 'DV', 'NLNK', 'GES', 'BBVA', 'OUT', 'CLDX', 'SCSS', 'PDLI', 'BOKF', 'VEEV', 'SEAS', 'TEF', 'EXEL', 'MRKT', 'MTOR', 'SIX', 'LOCO', 'THRM', 'PGRE', 'GIL', 'PE', 'SLAB', 'GMT', 'POL', 'IBIO', 'PSEC', 'VRNT', 'AEL', 'GWRE', 'UBS', 'ACHC', 'RCII', 'SAM', 'LYV', 'BAS', 'GIB', 'INN', 'CASY', 'VSAT', 'MFA', 'DEPO', 'CDE', 'AREX', 'TASR', 'WWD', 'RES', 'LXP', 'PAYC', 'DLX', 'OSK', 'GLUU', 'BPOP', 'INFN', 'TDY', 'HNI', 'ZEN', 'BDN', 'IDCC', 'MTN', 'OLN', 'YRCW', 'FICO', 'IRWD', 'TERP', 'SON', 'POOL', 'SGNL', 'CUZ', 'AAN', 'JKS', 'CNO', 'TSEM', 'PKX', 'GHL', 'RDUS', 'PEI', 'NHI', 'LOGM', 'VECO', 'GEO', 'SBRA', 'KEP', 'ELS', 'AL', 'GPRE', 'EVR', 'PRAA', 'MKTX', 'RYAAY', 'ALE', 'CALM', 'PODD', 'VIV', 'ATHM', 'ANDE', 'AFG', 'BTE', 'ANIP', 'WPG', 'GGG', 'SLGN', 'MTSI', 'WERN', 'MTDR', 'NJR', 'HT', 'SEM', 'SMG', 'GPI', 'NWE', 'MGNX', 'SKM', 'UNT', 'EPR', 'GOGO', 'SAIC', 'HEES', 'SSRI', 'PNM', 'SGMO', 'OZRK', 'CUK', 'CMPR', 'UMPQ', 'NWS', 'IPHI', 'BPT', 'CPG', 'HMC', 'HAE', 'GTLS', 'PEGI', 'SUI', 'IAG', 'ERF', 'MYGN', 'ASGN', 'IDRA', 'CBSH', 'SBS', 'BKH', 'CBD', 'TRUE', 'HXL', 'VIP', 'MLNX', 'MINI', 'AB', 'MDSO', 'VSH', 'LFUS', 'BOFI', 'NGD', 'SHOO', 'WTI', 'RESI', 'PENN', 'SBGL', 'SOHU', 'HELE', 'EQM', 'MX', 'AAWW', 'WES', 'MTX', 'FTK', 'CSTE', 'EEFT', 'LDOS', 'LOPE', 'SSNC', 'CBPO', 'KRG', 'LC', 'OLED', 'RHP', 'MBI', 'FRGI', 'EGRX', 'PAHC', 'TK', 'ISBC', 'CRS', 'RPTP', 'MTZ', 'TYL', 'THO', 'TARO', 'MCY', 'THG', 'CATM', 'ITRI', 'BPFH', 'CRIS', 'AVA', 'SAIA', 'GIII', 'BOH', 'ORAN', 'PZZA', 'TU', 'QIWI', 'GGAL', 'FR', 'CMRX', 'SLM', 'BJRI', 'VNDA', 'LTRPA', 'BVN', 'SMCI', 'PTCT', 'CPE', 'IBKC', 'EPAM', 'IBKR', 'ENPH', 'ARWR', 'SF', 'SKYW', 'AEG', 'ARAY', 'DHT', 'ASPS', 'SSI', 'WNC', 'PWE', 'BWC', 'MORN', 'EGP', 'NDLS', 'BIO', 'ANET', 'IVR', 'HRC', 'MNRO', 'MNTA', 'CONN', 'PVG', 'CENX', 'CBM', 'CACI', 'PLAY', 'MSG', 'BCOR', 'PBA', 'PLT', 'NDSN', 'LZB', 'WBAI', 'ROG', 'ACIW', 'SXT', 'ABY', 'NUVA', 'STM', 'CTIC', 'SSD', 'W', 'OPHT', 'BCRX', 'HMSY', 'FULT', 'PSMT', 'BCC', 'TMST', 'LYG', 'NATI', 'IMGN', 'FCFS', 'UIHC', 'FDP', 'RXN', 'IRDM', 'FII', 'DOOR', 'SNX', 'B', 'HUBG', 'NS', 'CONE', 'ACXM', 'HCLP', 'WAL', 'OGS', 'ROVI', 'TTC', 'CNA', 'LAD', 'UVV', 'HIBB', 'MPWR', 'FBP', 'MHLD', 'AINV', 'CRH', 'BGCP', 'LGND', 'NKTR', 'FRAN', 'WRLD', 'SMFG', 'LG', 'BCPC', 'SANM', 'NEU', 'GLPI', 'STNG', 'CZZ', 'SYRG', 'ATRO', 'CMC', 'GOV', 'FUL', 'CHE', 'NICE', 'PINC', 'AXTA', 'MWA', 'VG', 'ECR', 'TGP', 'FLWS', 'EXPR', 'EME', 'BRC', 'MPLX', 'ORI', 'EDU', 'DORM', 'UBSI', 'TECD', 'IRBT', 'RBA', 'IPHS', 'CSWC', 'PBH', 'PCH', 'WTW', 'E', 'AKR', 'ENV', 'IMO', 'STMP', 'SXC', 'BSAC', 'TTEK', 'PHYS', 'SUN', 'GRFS', 'INFI', 'CVEO', 'TX', 'LFC', 'BXS', 'VLY', 'VNET', 'HEI', 'ORA', 'GDOT', 'SJR', 'MACK', 'TRQ', 'AXE', 'WGO', 'GGB', 'CW', 'CLGX', 'SONS', 'CTLT', 'GLOG', 'RPT', 'OFG', 'MEI', 'ALEX', 'FI', 'MLHR', 'DIN', 'BZH', 'NTGR', 'TROX', 'NWBI', 'ESNT', 'AEIS', 'ECPG', 'VGR', 'ADTN', 'TNET', 'BKE', 'BFAM', 'PBPB', 'VAC', 'BLKB', 'PRO', 'SQM', 'PRA', 'RDY', 'HMHC', 'SAH', 'WTFC', 'CCMP', 'WTM', 'CACC', 'CLI', 'UIS', 'ENTA', 'CYTK', 'ZAYO', 'TAXI', 'OMCL', 'MDR', 'LNN', 'CLW', 'ARCB', 'AMH', 'ARR', 'FSC', 'SPPI', 'GBCI', 'ELP', 'RGEN', 'WOR', 'BCO', 'KYN', 'RWT', 'EIGI', 'BHE', 'FNB', 'ANIK', 'AWR', 'IMKTA'] symbols += ['NTCT', 'XLRN', 'LBRDK', 'MLI', 'CEF', 'GEL', 'VBLT', 'SWM', 'NGL', 'ANGI', 'AIT', 'FWRD', 'BDSI', 'RGR', 'NXST', 'BXMT', 'EBS', 'BIP', 'WMGI', 'WST', 'CHU', 'SYKE', 'CIR', 'UHAL', 'GSAT', 'WMS', 'ROL', 'CIG', 'AHT', 'PMT', 'FOLD', 'SCHN', 'POWI', 'ZUMZ', 'PEIX', 'NEA', 'HCSG', 'TRMK', 'PUK', 'SJI', 'NAT', 'VVUS', 'SWX', 'FCN', 'UVE', 'ESRT', 'XRS', 'HTLD', 'DVAX', 'CCOI', 'ENS', 'NRP', 'G', 'RARE', 'INSM', 'KFY', 'OSIS', 'BABY', 'GERN', 'JW.A', 'NSIT', 'BNFT', 'MATX', 'MERC', 'JOE', 'TMHC', 'CNHI', 'OSTK', 'QDEL', 'LMNX', 'EGY', 'TUES', 'ACCO', 'HASI', 'BWS', 'AGII', 'SAGE', 'MASI', 'HUBS', 'SNN', 'WABC', 'VNCE', 'CMCM', 'CATY', 'SSLT', 'FLDM', 'NOAH', 'AAVL', 'ATRC', 'VRNS', 'EPZM', 'AG', 'IART', 'MGLN', 'TNK', 'HMY', 'PRSC', 'WLH', 'MKSI', 'NYT', 'NYMT', 'VRTS', 'RGLS', 'GEVO', 'DLB', 'VSTM', 'UNF', 'NMM', 'APAM', 'LFL', 'ROLL', 'ENLC', 'KW', 'COR', 'TKMR', 'WRE', 'LTC', 'ENI', 'BBN', 'SGMS', 'CPSI', 'OMER', 'WAFD', 'PLUG', 'ACTG', 'CSGS', 'HURN', 'HZO', 'KOF', 'JJSF', 'CLDT', 'FARO', 'FMBI', 'NG', 'CHH', 'IPI', 'COLB', 'NAC', 'CSII', 'CVBF', 'DENN', 'ONB', 'HMN', 'SMTC', 'CROX', 'FRO', 'ICUI', 'COUP', 'THLD', 'TOWN', 'XOMA', 'LOGI', 'SWHC', 'OXM', 'AXAS', 'BLDP', 'MOG.A', 'MDP', 'CLTX', 'HSC', 'GEF', 'STL', 'GTE', 'EVTC', 'IBOC', 'MIK', 'MAIN', 'ETH', 'UMBF', 'SMRT', 'HQY', 'JRJC', 'PDI', 'VVI', 'TREX', 'CMO', 'TOO', 'CIM', 'PRTA', 'WIT', 'STAG', 'EPAY', 'TYPE', 'CSTM', 'WAIR', 'DY', 'SPSC', 'RRTS', 'BGG', 'UE', 'COHR', 'AHS', 'ETY', 'RMBS', 'RTRX', 'WPRT', 'TBI', 'AGI', 'CMTL', 'LE', 'FELE', 'CLNE', 'AI', 'NVGS', 'ABM', 'GY', 'CNMD', 'RGS', 'TPRE', 'MATW', 'MSTR', 'CMN', 'PCTY', 'JMEI', 'ZFGN', 'KPTI', 'RDWR', 'GEOS', 'GCO', 'CORE', 'CAJ', 'PSO', 'TTPH', 'ELNK', 'LSCC', 'TLK', 'TYG', 'WDFC', 'NPO', 'PSB', 'CWT', 'RLI', 'WMC', 'FCF', 'TREE', 'AERI', 'CZR', 'AGEN', 'SFL', 'MCC', 'CKH', 'HI', 'ONVO', 'VRTU', 'LBY', 'ELGX', 'CUB', 'ENSG', 'DXPE', 'FIBK', 'EGOV', 'STON', 'BBCN', 'ROIC', 'SCS', 'TGH', 'UTL', 'CEM', 'MANT', 'AVAV', 'RUSHA', 'STRA', 'TPC', 'HOV', 'WIRE', 'USNA', 'CERS', 'CECO', 'QUAD', 'HAFC', 'REX', 'RFP', 'PLUS', 'REXR', 'VIVO', 'DIOD', 'PJC', 'TNP', 'PCI', 'KLIC', 'LPSN', 'SIGI', 'KT', 'MPAA', 'IIM', 'TKC', 'VVR', 'LXU', 'FFBC', 'CFFN', 'EURN', 'CHDN', 'UEIC', 'CLMT', 'ACRX', 'GVA', 'KNL', 'ECOL', 'ISCA', 'TFSL', 'AYR', 'HLIT', 'PML', 'ARLP', 'NHF', 'GMED', 'HOMB', 'IEP', 'KB', 'RNG', 'VJET', 'PLXS', 'LANC', 'INGN', 'UEPS', 'RBS', 'BOOT', 'IMMU', 'CPL', 'OTTR', 'BRKS', 'PHI', 'TBPH', 'BLX', 'AWP', 'PSLV', 'FFIN', 'APTS', 'USAK', 'ONDK', 'NEWR', 'CALX', 'NMFC', 'PNFP', 'BCX', 'TTI', 'LPL', 'SA', 'KMPR', 'ANFI', 'PDFS', 'EE', 'BSBR', 'BIOS', 'PGNX', 'GLT', 'FSP', 'ECHO', 'CAMP', 'QSII', 'RNET', 'SATS', 'ASTE', 'HY', 'PMX', 'OTIC', 'CHRS', 'GHDX', 'GIM', 'NMZ', 'NRK', 'IOSP', 'TEO', 'STOR', 'TWI', 'LBRDA', 'SHLX', 'USM', 'HPI', 'CLDN', 'DHX', 'JOBS', 'RMTI', 'GOL', 'WBK', 'MOV', 'XONE', 'NEWM', 'ARI', 'NCMI', 'SALT', 'TRS', 'NTG', 'ATRA', 'RAIL', 'NWN', 'MTRX', 'PRIM', 'MMYT', 'BBSI', 'KRA', 'PETS', 'AJX', 'JMF', 'MEIP', 'CNSL', 'HTD', 'UFPI', 'VSLR', 'UTF', 'INDB', 'MUC', 'RNP', 'GSM', 'OMAM', 'TR', 'BLCM', 'FSIC', 'EXLS', 'AMED', 'LDP', 'GCAP', 'JAKK', 'SPH', 'CAF', 'WB', 'ELY', 'PMF', 'CUR', 'CATO', 'LEJU', 'RESN', 'FOE', 'FPRX', 'CVR', 'PRGS', 'AAT', 'SMLP', 'AMBC', 'CVGW', 'CAP', 'BTT', 'NCI', 'SCSC', 'SJT', 'TAC', 'MXL', 'PNNT', 'CNS', 'BLE', 'HSTM', 'INTL', 'INWK', 'HABT', 'DRYS', 'IQI', 'SNR', 'APOG', 'FMS', 'IMMR', 'NVRO', 'MMLP', 'MHO', 'FUN', 'CBU', 'VET', 'WIX', 'PLAB', 'SSB', 'CHKR', 'PATK', 'NCS', 'RAVN', 'FOR', 'RUTH', 'EOI', 'ANH', 'UCBI', 'ERIE', 'VMO', 'HWAY', 'COT', 'CPF', 'MMSI', 'VLCCF', 'VRA', 'DPLO', 'CHSCL', 'CHUY', 'RNST', 'TGTX', 'I', 'ECOM', 'IGD', 'NBB', 'VNOM', 'BBW', 'ADXS', 'PEGA', 'SXI', 'PRAH', 'CASH', 'NEOG', 'CTRN', 'RUBI', 'HYT', 'HTH', 'INF', 'KELYA'] symbols += ['GTN', 'GFF', 'ANY', 'MCF', 'FAX', 'NX', 'FSS', 'GER', 'MOBL', 'BANR', 'HYI', 'PACB', 'CYRN', 'AMWD', 'NNBR', 'TWOU', 'AIR', 'FGP', 'TBBK', 'NEP', 'HQH', 'AVID', 'MTSC', 'GTS', 'MTRN', 'HNP', 'GMLP', 'IIVI', 'STC', 'CCS', 'MGEE', 'TTMI', 'GB', 'DL', 'KOP', 'HSEB', 'CVTI', 'FORM', 'SYN', 'ENVA', 'CHY', 'GBDC', 'IRET', 'MC', 'GLRE', 'FFA', 'VTA', 'AMPE', 'MYD', 'JPC', 'ENBL', 'TILE', 'PHK', 'EXPO', 'IDT', 'FNHC', 'LQDT', 'NUV', 'MNR', 'USCR', 'TRNO', 'TTP', 'WD', 'ORC', 'WNS', 'CPLP', 'FEI', 'TA', 'KTOS', 'LTXB', 'EFC', 'UAN', 'NXJ', 'PGTI', 'BWG', 'BGY', 'HIX', 'RIF', 'VCV', 'AIN', 'TNC', 'MGI', 'AAON', 'EGHT', 'UBSH', 'LEO', 'CHA', 'CHT', 'EVV', 'MTL', 'DKT', 'ASR', 'KFRC', 'TCAP', 'FCNCA', 'SSP', 'GWB', 'EIM', 'ATOS', 'AVX', 'RP', 'AIMC', 'RCKY', 'BOE', 'BRKL', 'FLY', 'GAB', 'PER', 'JCE', 'LAKE', 'KWR', 'SSW', 'QTS', 'PBFX', 'CRY', 'COKE', 'JPI', 'CDR', 'VRTV', 'PFS', 'SCL', 'EOS', 'HTGC', 'XENT', 'EVN', 'JQC', 'FSRV', 'CEVA', 'ESD', 'FARM', 'CBPX', 'MRCY', 'ZGNX', 'FMO', 'AAOI', 'NEWT', 'PMO', 'ROYT', 'TROV', 'ANGO', 'PAC', 'SLRC', 'COWN', 'CPK', 'EROS', 'MYI', 'ETO', 'TXMD', 'FGEN', 'NAD', 'CSLT', 'NKX', 'EVT', 'VKQ', 'VGM', 'TISI', 'CPRX', 'TPL', 'EXD', 'NFBK', 'MDCA', 'EXK', 'LORL', 'CYOU', 'SHG', 'NFJ', 'EDD', 'USA', 'RQI', 'QTWO', 'WSBC', 'MMI', 'GMZ', 'BMI', 'NLS', 'STAR', 'CUBI', 'KAMN', 'AXDX', 'BXMX', 'FPF', 'UTG', 'MFG', 'PFNX', 'FLML', 'DNP', 'DAKT', 'OSUR', 'ETW', 'IVC', 'PLOW', 'AHP', 'RM', 'PHX', 'JBT', 'BFK', 'NM', 'AZZ', 'GLDD', 'KMF', 'QURE', 'MGU', 'RECN', 'VSAR', 'FNWB', 'HRTG', 'SRV', 'BFZ', 'EZPW', 'MMD', 'FFC', 'MRTN', 'BKN', 'AWF', 'CEQP', 'FN', 'CCLP', 'VEC', 'AEGN', 'ESGR', 'MUA', 'ATEN', 'IBCP', 'EMKR', 'BCH', 'ITCI', 'WHG', 'NNI', 'BHLB', 'TLYS', 'SCHL', 'ORIT', 'RUK', 'AT', 'NGVC', 'PXLW', 'PRK', 'ERA', 'AMSF', 'BIOC', 'REV', 'THR', 'EHTH', 'CTR', 'NCV', 'ANAT', 'SREV', 'REGI', 'ATNI', 'MUI', 'MYE', 'MED', 'FRPT', 'UTI', 'CLS', 'JBSS', 'DCOM', 'AFB', 'FEN', 'SBLK', 'AVAL', 'SJW', 'SILC', 'RDNT', 'TCPC', 'MQT', 'SPTN', 'HEI.A', 'JRO', 'LGIH', 'ETG', 'CHI', 'BPY', 'NGHC', 'IBTX', 'PHT', 'PRFT', 'GPX', 'PMM', 'LLNW', 'CTSO', 'GGN', 'UFI', 'GCA', 'TOUR', 'ADC', 'ATHX', 'SAND', 'EOT', 'EMO', 'ERC', 'ZNH', 'VIA', 'FBC', 'BEAT', 'MVT', 'MCA', 'ETV', 'LDL', 'VZA', 'TZOO', 'MG', 'TRST', 'CCF', 'RTEC', 'CBAY', 'THQ', 'IMOS', 'IX', 'CSU', 'NMY', 'ISP', 'MFL', 'EVC', 'CVCO', 'MHN', 'CMRE', 'KTF', 'EIG', 'DBL', 'ASC', 'MNGA', 'TRC', 'BGB', 'BH', 'JFR', 'TRIB', 'PTY', 'WYY', 'SNSS', 'TTEC', 'NEO', 'ZAGG', 'HQL', 'SID', 'BSET', 'DNI', 'PPT', 'JPS', 'IGR', 'TSLX', 'PFN', 'EGBN', 'UBA', 'FCEL', 'BKCC', 'ZIXI', 'HPS', 'VHC', 'FRA', 'RTIX', 'MUS', 'CTRE', 'SKYS', 'SNHY', 'ALLT', 'WIW', 'SRNE', 'RVP', 'LOR', 'BLW', 'ACLS', 'RSO', 'IPAR', 'RVT', 'GDV', 'JSD', 'SAFT', 'CHEF', 'CORR', 'SUPN', 'TICC', 'VPV', 'TCRD', 'BTA', 'PDT', 'IFN', 'STML', 'QQQX', 'VKI', 'NUO', 'WIFI', 'GLQ', 'MYC', 'ABCB', 'NTRSP', 'BPI', 'SGU', 'GALE', 'HIO', 'VSEC', 'AGX', 'LEI', 'GHY', 'GLP', 'SHOS', 'RAVE', 'CARA', 'CII', 'MHI', 'RMAX', 'GOOD', 'ALG', 'TMP', 'CHSCM', 'NEV', 'AGTC', 'KODK', 'TEI', 'CTS', 'CCRN', 'MCR', 'CPS', 'MXF', 'ESE', 'ACRE', 'KIRK', 'PCK', 'TTGT', 'AOD', 'POWL', 'HEB', 'GBAB', 'ARC', 'DSX', 'HHS', 'AUDC', 'NAO', 'DIAX', 'MMU', 'NNC', 'HPJ', 'BGR', 'CCU', 'AVD', 'TSI', 'UHT', 'OFIX', 'NSL', 'INCR', 'STKL', 'BYM', 'NBTB', 'NVG', 'NBH', 'USPH', 'CBZ', 'HSII', 'BHK', 'JE', 'ICFI', 'CBB', 'CHGG', 'AMPH', 'MIL', 'CRMT', 'CHCO', 'JGH', 'APEI', 'USAC', 'CLM', 'JRVR', 'ATAX', 'EVLV', 'CAE', 'TG', 'UEC', 'DX', 'LIVE', 'MYRG', 'SFNC', 'CRVL', 'MQY', 'EBSB', 'NID', 'PSTI', 'GNMK', 'ATRI', 'STAY', 'TNDM', 'PHD', 'CODI', 'LPG', 'IO', 'TCBK', 'KRO', 'CBMG', 'CSV', 'FSM', 'WLDN', 'DMB', 'CCXI', 'MYN', 'FPL', 'ARCO', 'NXR', 'BTZ', 'FIF', 'GABC'] symbols += ['UCTT', 'PCN', 'ADX', 'DWSN', 'NPK', 'CRNT', 'RBCN', 'EAD', 'MGRC', 'ISD', 'WSR', 'JOF', 'OESX', 'MOMO', 'KCAP', 'PPR', 'CARB', 'VCRA', 'BGFV', 'AMOT', 'DPG', 'ATRS', 'GLOP', 'EVM', 'CKX', 'MODN', 'INAP', 'NZF', 'WK', 'HRTX', 'FIX', 'XNCR', 'DGLY', 'LKFN', 'FF', 'HAYN', 'EDF', 'WIA', 'NNA', 'MDGN', 'SVA', 'MAV', 'UBNK', 'SCON', 'FRME', 'CGEN', 'NMR', 'SOL', 'AGRO', 'FSFR', 'CNNX', 'CMCO', 'MCEP', 'GASS', 'RVNC', 'ESTE', 'ISF', 'STRT', 'MIN', 'EVG', 'CEE', 'FFG', 'DRNA', 'ICL', 'JOUT', 'MSD', 'CAPL', 'AHH', 'PFLT', 'JLS', 'FOMX', 'JMLP', 'KEM', 'MEN', 'SUP', 'CEN', 'TSE', 'VOXX', 'UFCS', 'STN', 'CRAI', 'CNCE', 'DMO', 'IIIN', 'OEC', 'AVH', 'NDRO', 'IRT', 'JDD', 'GEN', 'CTWS', 'RCS', 'LNDC', 'SMP', 'VTN', 'BTX', 'AE', 'NEON', 'BOOM', 'QADA', 'FORR', 'RWLK', 'MOD', 'MUX', 'GSVC', 'CNOB', 'ESLT', 'BCOV', 'DXYN', 'MIFI', 'WEA', 'NICK', 'ALCO', 'GSH', 'OCUL', 'PKOH', 'CPSS', 'FFIC', 'TWIN', 'MFT', 'TNXP', 'AGM', 'CTBI', 'NHS', 'OAKS', 'BBK', 'STFC', 'WLKP', 'PEO', 'GTY', 'AVK', 'ORBC', 'OPY', 'HTHT', 'DSE', 'BUI', 'OHRP', 'OMAB', 'GAM', 'BIT', 'PIM', 'STAA', 'PBT', 'AMRN', 'WSFS', 'SCVL', 'MYJ', 'BFO', 'FWP', 'CPST', 'SEB', 'ABR', 'NVMI', 'HEP', 'OVLY', 'CRF', 'TY', 'DMF', 'SDT', 'RDCM', 'MLAB', 'GLO', 'OMN', 'IVH', 'NWLI', 'FMN', 'WMK', 'SPOK', 'IRS', 'PICO', 'PRTK', 'FSTR', 'SHI', 'DEX', 'HTBI', 'HOFT', 'GLAD', 'GENC', 'STBA', 'ARDX', 'SQBG', 'MTLS', 'LJPC', 'MNI', 'CLFD', 'BGH', 'OIA', 'KE', 'QNST', 'BTO', 'CENTA', 'HPF', 'PRAN', 'HBM', 'EARN', 'GORO', 'SPXX', 'CSFL', 'RFI', 'TREC', 'FDUS', 'MANU', 'NRIM', 'OCIR', 'PPHM', 'EOD', 'ARDC', 'GTIM', 'VTL', 'BLDR', 'ROX', 'EDAP', 'MNTX', 'EFSC', 'AINC', 'CNAT', 'MCS', 'MN', 'GALT', 'ASA', 'PFBC', 'BMTC', 'TNAV', 'BAF', 'REI', 'ADMS', 'NC', 'TGA', 'HVT', 'LBAI', 'BCA', 'PKE', 'NTC', 'MSB', 'ENX', 'MRLN', 'PRGX', 'PRQR', 'DCO', 'CJJD', 'AIF', 'KAI', 'CMFN', 'MUH', 'ALIM', 'ENZ', 'QUIK', 'ATNM', 'PSDV', 'NMT', 'MVF', 'PAM', 'RICK', 'FENG', 'FCSC', 'EMF', 'BGX', 'AGRX', 'PZC', 'LHCG', 'ATSG', 'SRI', 'PCM', 'AKBA', 'DMLP', 'FLXN', 'NAVB', 'TEDU', 'FCT', 'CGIX', 'BSD', 'PFSI', 'CHW', 'EFR', 'HYB', 'VUZI', 'EHI', 'JMP', 'SANW', 'SBR', 'NHC', 'DSM', 'DBVT', 'RDHL', 'NRO', 'GHM', 'NMIH', 'GAIN', 'BSTC', 'SASR', 'PFMT', 'RIGL', 'KBAL', 'SRDX', 'WASH', 'BFS', 'ATTO', 'NCT', 'PTSI', 'AFT', 'DHY', 'CLUB', 'GF', 'AOI', 'SHEN', 'MLNK', 'SEAC', 'CWST', 'BANF', 'MSON', 'NUW', 'MBUU', 'OPB', 'CISG', 'ADMP', 'DLNG', 'MUJ', 'NAZ', 'OLBK', 'GTT', 'DHIL', 'LCUT', 'CYAN', 'CNTY', 'FLXS', 'MGPI', 'LEE', 'MYF', 'TSLF', 'MIY', 'INVE', 'CPTA', 'WVFC', 'DQ', 'MMT', 'CASS', 'GGT', 'SFBS', 'MRIN', 'DEA', 'EVOL', 'LXRX', 'HMST', 'GSBC', 'MRTX', 'ARES', 'AP', 'UACL', 'SBCF', 'FIZZ', 'CORT', 'NQP', 'TAST', 'DSPG', 'PCCC', 'KIO', 'JOEZ', 'RLH', 'PSBH', 'PEBO', 'MIXT', 'LEN.B', 'VPG', 'TCX', 'AFH', 'FLKS', 'RNWK', 'BREW', 'CZNC', 'CSS', 'FPI', 'NTWK', 'ASMB', 'IVAC', 'ISG', 'PCYG', 'MVO', 'NCZ', 'CLCT', 'CUBA', 'MSEX', 'UMH', 'SDR', 'ESBA', 'ERH', 'BELFB', 'BBF', 'CALA', 'GILT', 'BLRX', 'FITBI', 'BGT', 'CTT', 'SQNS', 'SB', 'CUTR', 'JRS', 'AGD', 'STCK', 'ADUS', 'MNP', 'NATH', 'HIE', 'PFD', 'AHC', 'VICR', 'PARR', 'FOXF', 'MFM', 'RMT', 'LYTS', 'MGIC', 'UMC', 'NWPX', 'HNRG', 'SPNS', 'CYBE', 'DSGX', 'SYNL', 'FISI', 'MHD', 'GRC', 'DGICA', 'BANC', 'IDE', 'ASRVP', 'AAMC', 'CTG', 'CDZI', 'IAF', 'LMNR', 'FONR', 'MVC', 'NOA', 'SYBT', 'KF', 'CNDO', 'FAM', 'TCBIP', 'DNN', 'CAC', 'CIK', 'FLC', 'BKT', 'ABIO', 'PSF', 'WINA', 'USAP', 'THFF', 'STK', 'SVVC', 'PDVW', 'OGXI', 'CRMD', 'SPCB', 'DSU', 'PCF', 'ETB', 'AGNCB', 'LFVN', 'AMRS', 'SWZ', 'MRCC', 'CLIR', 'IIF', 'VCYT', 'ZF', 'SPRT', 'HTY', 'GLOB', 'CCNE', 'IGI', 'NVEE', 'EBF', 'PLX', 'APPS', 'HCAP', 'ISR', 'CANF', 'EFF', 'SOR', 'PFIS', 'EML', 'SRCE', 'RLGT', 'HNW', 'ERII', 'CUO', 'GSIG', 'JTD', 'KRNY', 'TGB', 'SFE', 'CEV', 'LEU', 'CO', 'WSBF', 'LARK', 'ISDR'] symbols += ['SPAR', 'TITN', 'NETE', 'SHLO', 'GRBK', 'TLI'] return [Symbol.Create(x, SecurityType.Equity, Market.USA) for x in symbols]
import numpy as np import pandas as pd from QuantConnect.Data import * from QuantConnect.Data.Custom.Estimize import * from symbols import * class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2015, 1, 1) # Set Start Date # self.SetEndDate(2015, 3, 30) self.SetCash(1000000) # Set Strategy Cash self.AddEquity('SPY') self.SetBenchmark("SPY") self.UniverseSettings.Resolution = Resolution.Hour symbols = GetSymbols() self.SetUniverseSelection(ManualUniverseSelectionModel(symbols[:1250])) # self.SetUniverseSelection(CoarseFundamentalUniverseSelectionModel(self.CoarseSelectionFunction)) ## Set equal-weighting Portfolio Construction Model self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel()) ## Set Execution Model self.SetExecution(ImmediateExecutionModel()) self.symbolDataBySymbol = {} self.consensusSymbolMap = {} self.releaseSymbolMap = {} self.symbolsWithReleaseData = [] self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 30), self.BuyAndSell) def CoarseSelectionFunction(self, coarse): # sort descending by daily dollar volume sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True) # return the symbol objects of the top entries from our sorted collection return [ x.Symbol for x in sortedByDollarVolume if x.HasFundamentalData][:750] def OnData(self, data): quarter = (self.Time.month - 1) // 3 + 1 year = self.Time.year releaseData = data.Get(EstimizeRelease) consensusData = data.Get(EstimizeConsensus) for key in releaseData.Keys: symbol = self.releaseSymbolMap[key] symbolData = self.symbolDataBySymbol[symbol] bar = releaseData[key] if bar is None: continue consensus = bar.ConsensusWeightedEpsEstimate actual = bar.Eps if (actual is None) or (consensus is None): continue self.Log(f'{self.Time} :: Release data for {symbolData.Symbol.Value} :: EPS Actual {actual} / EPS Consensus {consensus}') symbolData.meanEstimateStandardDeviation = np.mean([x for x in symbolData.estimateHistory]) if symbolData.estimateHistory.Count > 0 else 0 symbolData.normalized_delta = (actual - consensus) / (symbolData.meanEstimateStandardDeviation + 0.01) if symbolData.meanEstimateStandardDeviation != 0 else 0 symbolData.estimateHistory.Reset() self.Log(f'{self.Time} :: Normalized EPS delta for {symbolData.Symbol.Value}: {symbolData.normalized_delta}') for key in consensusData.Keys: symbol = self.consensusSymbolMap[key] symbolData = self.symbolDataBySymbol[symbol] bar = consensusData[key] if (bar is None) or (bar.Source == 0): continue if (bar.FiscalYear == year) and (bar.FiscalQuarter == quarter): if bar.StandardDeviation is None: continue if (not np.isinf(bar.StandardDeviation)) and (not np.isnan(bar.StandardDeviation)): symbolData.estimateHistory.Add(bar.StandardDeviation) def GenerateInsights(self): insights = [] go_long, go_short = self.TakeDeciles() if len(go_long): insights += [Insight.Price(symbol, timedelta(1), InsightDirection.Up) for symbol, score in go_long] insights += [Insight.Price(symbol, timedelta(1), InsightDirection.Down) for symbol, score in go_short] return insights return [] def BuyAndSell(self): insights = self.GenerateInsights() self.EmitInsights(insights) for symbol, symbolData in self.symbolDataBySymbol.items(): symbolData.normalized_delta = None def TakeDeciles(self): symbols = [symbol for symbol, symbolData in self.symbolDataBySymbol.items() if symbolData.normalized_delta is not None] avg = np.mean([self.symbolDataBySymbol[x].normalized_delta for x in symbols]) std = np.std([self.symbolDataBySymbol[x].normalized_delta for x in symbols]) zscores = [(self.symbolDataBySymbol[x].normalized_delta - avg)/std for x in symbols] zscores = zip(symbols, zscores) orderedZ = sorted(zscores, key=lambda x: x[1], reverse = True) if len(orderedZ) < 10: self.Log('Fewer than 10 stocks with z-scores') return [], [] else: go_long = [x for x in orderedZ if x[1] > 0] go_short = [x for x in orderedZ if x[1] < 0] go_long = go_long[:10] if len(go_long) > 10 else go_long go_short = go_short[-10:] if len(go_short) > 10 else go_short return go_long, go_short def OnSecuritiesChanged(self, changes): symbols = [x.Symbol for x in changes.AddedSecurities] for symbol in symbols: symbolData = SymbolData(symbol, self) symbolData.Initialize(symbol, self) self.symbolDataBySymbol[symbol] = symbolData self.consensusSymbolMap[symbolData.estimate] = symbol self.releaseSymbolMap[symbolData.release] = symbol class SymbolData: def __init__(self, symbol, algorithm): self.Symbol = symbol self.release = None self.estimate = None self.normalized_delta = None self.meanEstimateStandardDeviation = None self.estimateHistory = RollingWindow[float](100) def Initialize(self, symbol, algorithm): self.release = algorithm.AddData(EstimizeRelease, symbol).Symbol self.estimate = algorithm.AddData(EstimizeConsensus, symbol).Symbol history = algorithm.History([self.estimate], timedelta(365), Resolution.Daily) values = self.GetStandardDeviations(history, algorithm.Time) for x in values: if np.isnan(x): continue self.estimateHistory.Add(x) def GetStandardDeviations(self, history, time): if history.empty: return [] history = history.loc[self.estimate] if history.empty: return [] quarter = (time.month - 1) // 3 + 1 year = time.year history = history.loc[history['fiscalquarter'] == quarter] history = history.loc[history['fiscalyear'] == year] history = history.loc[history['type'] == 0] filtered_data = history.loc[history['source'] == 0] if filtered_data.empty or ('standarddeviation' not in filtered_data.columns): return [] return list(filtered_data['standarddeviation'].values)