diff --git a/.gitignore b/.gitignore index dc0990e9..b200a1b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .DS_Store __pycache__/ -__pycache__ \ No newline at end of file +__pycache__ +*.pyc +.vscode/settings.json diff --git a/filtered_tickers.csv b/filtered_tickers.csv new file mode 100644 index 00000000..da0bf228 --- /dev/null +++ b/filtered_tickers.csv @@ -0,0 +1,5037 @@ +Ticker +A +AAMC +AAN +AAP +AAT +AAU +AB +ABB +ABC +ABG +ABR +ABM +AC +ACA +ACEL +ACCO +ACH +ACI +ACM +ACN +ACRE +ACU +ACY +ADC +ADNT +ADSW +ADM +ADS +ADT +AE +ADX +AEB +AEFC +AEG +AEM +AER +AES +AEP +AFB +AFC +AFGC +AFGB +AFGD +AFGH +AFG +AFT +AFL +AG +AGD +AGCO +AGE +AGI +AGM +AGO +AGRO +AGX +AGS +AHC +AHH +AHT +AI +AIC +AIG +AINC +AIN +AIO +AIR +AIT +AIW +AIV +AIZ +AJG +AJX +AJRD +AJXA +AKR +AL +ALC +ALEX +ALE +ALG +ALB +ALK +ALL +ALLE +ALSN +ALTG +ALUS +ALV +AMBO +AMBC +ALX +AMG +AME +AMH +AMN +AMJ +AMOV +AMPE +AMPY +AMRC +AMT +AMU +AMX +AMUB +ANF +ANET +AN +ANH +ANVS +ANTM +AOS +AP +APG +APAM +APLE +AON +APD +APH +APO +APTS +APTV +APT +ARD +ARDC +ARA +ARC +ARE +ARCO +AQNB +ARES +ARL +ARCH +ARGD +ARI +AROC +ARMP +ARLO +ARMK +ARR +ARW +ARNC +ASB +ARGO +ASA +ASC +ASGI +ASG +ASGN +ASIX +ASM +ASH +ASPN +ASX +AT +ATCO +ATEST +ATEN +ATH +ATHM +ATI +ATKR +ATMP +ATO +ATR +ATTO +ATV +AUG +AVAL +AVA +AVK +AVB +AVLR +AVNS +AVNT +AVYA +AVTR +AWF +AWI +AVY +AWK +AWP +AWR +AXR +AXO +AXS +AXTA +AXU +AZEK +AZO +AZRE +AZN +AZZ +AZUL +B +BAF +BAL +BAH +BAK +BANC +BAM +BAR +BATL +BAP +BAX +BB +BBDC +BBAR +BBDO +BBK +BBF +BBU +BBN +BBW +BBY +BBX +BBVA +BC +BCEI +BCE +BCH +BCO +BCV +BCSF +BCM +BCX +BDC +BDCS +BDCZ +BDJ +BDL +BDR +BDXB +BDN +BE +BEDU +BEN +BEPC +BEP +BERY +BEST +BFAM +BFO +BFK +BFS +BG +BFY +BFZ +BGH +BGI +BGR +BGIO +BGS +BGX +BGSF +BGT +BH +BGY +BHB +BHC +BHE +BHK +BHLB +BHR +BHP +BHV +BIG +BHVN +BIF +BILL +BIOX +BIPC +BIT +BIP +BITA +BJ +BKD +BKE +BKI +BKH +BKK +BKTI +BKT +BKN +BLD +BLE +BLW +BLX +BLL +BME +BMA +BMI +BMO +BMRG +BNED +BNKD +BNKU +BNS +BNY +BOH +BOE +BOOT +BOX +BPMP +BPT +BR +BQH +BRBR +BRC +BRFS +BRBS +BRG +BRMK +BRT +BRN +BRX +BRO +BSA +BSBR +BSIG +BSD +BST +BSM +BSE +BSL +BSTZ +BSMX +BTA +BTE +BTI +BTN +BTT +BUI +BTU +BURL +BV +BTZ +BUD +BTO +BVN +BW +BWA +BWXT +BWG +BXC +BXG +BXMT +BX +BXP +BY +BXS +BYD +BYM +BZH +BZM +CAAP +CABO +CADE +CAE +CAF +CACI +CAG +CAI +CAH +CALX +CAL +CANG +CAJ +CANF +CAPE +CARS +CAPL +CAT +CBB +CATO +CBD +CBH +CBO +CBOE +CBT +CBU +CBX +CC +CBZ +CCAC +CCEP +CCH +CCF +CCI +CCJ +CCK +CCM +CCO +CCR +CCS +CCX +CCXX +CDAY +CCZ +CDOR +CDR +CE +CEE +CEI +CEA +CEIX +CELP +CEM +CEO +CEQP +CET +CEV +CF +CFX +CFR +CGA +CFXA +CHAP +CHA +CHAQ +CHD +CHE +CHGG +CHMI +CHH +CHL +CHRA +CHN +CHT +CHS +CHWY +CHX +CHU +CI +CIA +CIEN +CIB +CIG +CII +CIM +CINR +CIO +CIR +CIT +CIX +CKH +CKX +CLB +CL +CLDT +CLH +CLI +CLNC +CLM +CLPR +CLR +CLS +CLW +CMC +CLX +CM +CMCM +CMCL +CMG +CMD +CMO +CMI +CMP +CMRE +CMS +CMSC +CMSD +CMU +CMT +CNA +CNF +CNHI +CNI +CNMD +CNK +CNNE +CNO +CNQ +CNX +CNS +CNXM +CO +CODI +COE +COF +COLD +COHN +COR +COO +CORR +COW +CP +CPA +CPAC +CPB +CPHI +CPG +CPRI +CPK +CPLG +CPT +CQP +CR +CRF +CRH +CRHM +CRI +CRK +CRMD +CRM +CRL +CROC +CRT +CRY +CRS +CSL +CSLT +CS +CSV +CTAA +CTDD +CTBB +CTEST +CTEK +CTB +CTK +CTO +CTLT +CTR +CTRA +CTS +CTV +CTT +CTVA +CTZ +CTY +CUBE +CUBB +CUB +CUBI +CUK +CUZ +CVEO +CVA +CVNA +CVM +CULP +CW +CWEN +CWH +CWK +CXE +CWT +CXO +CXH +CXP +CXW +CYH +DAC +CYD +CZZ +D +DAN +DAR +DAO +DAUD +DAVA +DCHF +DCO +DCI +DCP +DCUE +DDD +DDF +DDT +DEA +DDS +DECK +DE +DEI +DELL +DEO +DESP +DEUR +DEX +DFIN +DFNS +DFVL +DFP +DFVS +DFS +DGP +DGZ +DHF +DHI +DHR +DHT +DIAX +DIN +DIVC +DIT +DJP +DJPY +DK +DKL +DKS +DL +DLA +DLB +DLPH +DMB +DLY +DMO +DMS +DMYT +DMF +DNK +DNN +DNI +DNP +DOOR +DOC +DPW +DOV +DPG +DPZ +DQ +DRE +DRH +DRQ +DRI +DRUA +DS +DSE +DSS +DSL +DSU +DSX +DT +DTJ +DTQ +DTE +DTP +DTW +DTUS +DTY +DTUL +DTYL +DUKB +DUC +DUKH +DVA +DUK +DX +DVD +DXF +DXC +DXR +DY +DYFN +E +DZZ +EAB +EAD +EAI +EAF +EARN +EAT +EB +EBR +EBF +EBS +ECC +ECCB +ECCX +ECCY +ECF +ECL +ED +EDD +EDF +EDN +EDI +EDU +EEH +EEA +EEX +EFC +EFF +EFT +EFL +EFR +EGHT +EFX +EGO +EGY +EHC +EGP +EHI +EIC +EIG +EIM +EIX +ELA +EL +ELAT +ELC +ELF +ELJ +ELMD +ELLO +ELP +ELVT +ELU +ELY +EME +EMD +EMO +EMF +EMN +EMP +EMX +ENBA +EMR +ENB +ENBL +ENIA +ENIC +ENLC +ENO +ENR +ENSV +ENS +ENV +ENVA +ENZ +EOG +EOD +EOI +EOS +EPAC +EOT +EPAM +EPM +EPR +EPRT +EQC +EQH +EQS +EQNR +EQR +EQX +ERC +ERF +ERH +ERJ +EROS +ESBA +ES +ESE +ESI +ESNT +ESRT +ESP +ESTE +ESS +ESTC +ETG +ETB +ETH +ETJ +ETM +ETO +ETN +ETR +ETV +ETY +ETX +ETW +EURN +EVA +EVBN +EUFX +EV +EVC +EVF +EVG +EVI +EVN +EVR +EVRI +EVTC +EVV +EW +EXG +EXK +EXPR +EXTN +EXR +EXP +EZT +FAM +FAF +FBC +FBHS +FAX +FBGX +FBM +FBK +FC +FBP +FCAU +FCN +FCT +FCO +FCPT +FDEU +FDS +FDX +FEAC +FEDU +FEI +FENG +FEN +FEUL +FET +FEO +FF +FFA +FFC +FFEU +FGB +FHI +FI +FICO +FIEE +FIF +FINS +FIHD +FINV +FIS +FISK +FIYY +FIX +FL +FLC +FLNG +FLGE +FLOW +FLO +FLT +FLS +FLR +FLY +FMC +FMO +FMN +FMS +FMX +FN +FND +FNB +FNGD +FNGO +FNF +FNGU +FNV +FOUR +FOR +FOE +FOF +FNGZ +FPAC +FPF +FR +FPI +FPL +FRC +FRA +FRD +FRLG +FRT +FRO +FSD +FSK +FSI +FSKR +FSLF +FSM +FSP +FSS +FT +FTAI +FTCH +FTHY +FTK +FTSI +FTS +FTV +FUE +FUL +FVAC +FUN +G +GAB +GAM +GAU +GATX +GAZ +GBR +GBL +GBAB +GBX +GCE +GCI +GCO +GCP +GCV +GDDY +GDL +GDP +GDOT +GDV +GEF +GEL +GEN +GEO +GES +GER +GFF +GF +GFL +GFY +GFLU +GGG +GGN +GGM +GGZ +GHL +GHG +GHC +GIK +GHY +GIL +GIX +GIS +GIM +GJH +GJP +GJO +GJR +GKOS +GJT +GJS +GLEO +GL +GLO +GLOG +GLOP +GLT +GLU +GLQ +GME +GMED +GMO +GMRE +GMS +GMTA +GNAF +GMZ +GNE +GNK +GNL +GNRC +GNT +GOED +GOF +GOL +GOOS +GOLF +GPC +GORO +GPJA +GPI +GPL +GPMT +GPM +GPN +GPRK +GPX +GRAF +GRA +GRAM +GRF +GRC +GRN +GRU +GRUB +GRX +GS +GSAT +GSH +GSL +GSK +GSLD +GSP +GSS +GSX +GTES +GTE +GSV +GSBD +GTN +GTT +GTX +GTS +GUT +GV +GVA +GWB +GYC +GWW +H +HAE +HASI +HBB +HBM +HCA +HCFT +HCHC +HCI +HCXZ +HCXY +HEI +HE +HEQ +HEP +HESM +HEXO +HFRO +HES +HFC +HGH +HGV +HGLB +HHC +HI +HIE +HIG +HIL +HIW +HIO +HKIB +HIX +HLI +HLF +HLT +HLX +HMC +HMG +HMI +HNGR +HNI +HNP +HNW +HOME +HOG +HOV +HMN +HPF +HP +HPI +HPR +HPP +HPS +HQL +HQH +HRI +HR +HRC +HRB +HRL +HRTG +HSY +HSBC +HSC +HT +HTA +HTFA +HTGC +HTY +HTH +HUBS +HUBB +HUD +HUM +HUYA +HUSA +HUN +HVT +HWM +HXL +HY +HYI +HZO +IAA +IAE +IBM +IAF +IBO +IBP +ICD +ICE +ICL +IDT +IEX +IDA +IFF +IFN +IFS +IGA +IGD +IGC +IGI +IGR +IGZ +IHC +IHTA +IHG +IHT +IID +IIF +IIM +IIPR +IMAX +IMH +IMLP +INDO +INFO +INFU +IMO +INGR +INS +INSI +INSW +INTT +INT +INVH +IO +IOR +IPG +IPHI +IP +IPV +IQV +IQI +IR +IRL +IRR +IRM +IRS +ISDR +ISD +ISR +IRT +IT +ITCB +ITGR +ITP +ITRG +ITT +IVH +ITW +IVC +JAX +IX +JBGS +JBK +J +JBT +JBL +JCAP +JCE +JCO +JDD +JE +JELD +JEF +JFR +JEQ +JGH +JHAA +JHG +JHB +JHS +JHI +JIH +JHY +JHX +JILL +JJA +JJE +JJC +JJM +JJN +JJT +JJP +JJU +JKS +JLS +JMIA +JNPR +JMM +JO +JOB +JOF +JP +JPC +JPI +JPT +JPS +JRI +JQC +JRS +JSD +JTA +JTD +JWS +K +KAI +KAR +KAMN +KB +KBH +KDMN +KBR +KEX +KEP +KFS +KFY +KKR +KLR +KL +KMF +KMB +KMPR +KMX +KN +KMT +KNAB +KNL +KNX +KODK +KOF +KOP +KRC +KREF +KRO +KRG +KRP +KSU +KT +KTH +KTB +KTF +KTN +KW +LAC +KYN +LADR +KWR +L +LAIX +LBRT +LAZ +LD +LCII +LCTX +LDOS +LCI +LDL +LEA +LDP +LEAF +LEG +LEE +LEJU +LEN +LEU +LEO +LEVI +LFC +LGC +LGI +LH +LIN +LHX +LII +LINX +LITB +LMHA +LMND +LMHB +LN +LLY +LMT +LNC +LND +LNN +LNG +LOAK +LPG +LOV +LOW +LOMA +LPL +LSI +LTC +LPX +LTHM +LUB +LW +LXU +LXP +LYB +LYV +MA +LZB +MAIN +MAN +MANU +MBI +MAV +MAS +MATX +MAXR +MCB +MC +MCD +MCC +MCF +MCA +MCI +MCK +MCN +MCV +MCO +MCS +MCR +MD +MCY +MDLA +MDLQ +MDC +MDLY +MDLX +MDU +MEC +MDP +MED +MEG +MEN +MEI +MET +MFAC +MFC +MFD +MFG +MFL +MFO +MFM +MG +MFV +MFT +MGA +MGR +MGP +MGU +MGF +MHD +MHH +MHF +MHI +MHK +MHLA +MHNC +MHO +MIE +MIN +MITT +MIXT +MKC +MLI +MLM +MLPC +MLPE +MLPG +MLPI +MLPO +MLSS +MLPY +MLR +MMI +MMD +MMS +MMP +MMM +MN +MMT +MMU +MNP +MOD +MNRL +MNR +MOGU +MOH +MOS +MOV +MPA +MPLX +MPW +MPV +MR +MQT +MQY +MSCI +MSB +MSC +MSGE +MSGS +MSD +MSGN +MSI +MSN +MTCN +MT +MSM +MTA +MTB +MTD +MTH +MTG +MTL +MTNB +MTN +MTR +MTRN +MTT +MTZ +MTX +MUA +MUE +MUH +MUJ +MUFG +MUI +MUS +MUSA +MUX +MVF +MVC +MVCD +MVO +MX +MWA +MVT +MXC +MXE +MXL +MYD +MXF +MYF +MYE +MYJ +MYO +MYOV +MYI +MYN +NAD +NAC +MZA +NAV +NAN +NAK +NAZ +NAVB +NBH +NBO +NBW +NBB +NCA +NCB +NCV +NBY +NC +NCZ +NCR +NEE +NEA +NEN +NES +NEP +NET +NEV +NEWR +NEU +NEX +NEXA +NFH +NFJ +NGL +NGVC +NHA +NHI +NI +NHC +NHS +NIE +NID +NINE +NJV +NIM +NJR +NIQ +NKX +NKG +NLSN +NL +NM +NMCO +NMFC +NMFX +NMI +NML +NMM +NMR +NMS +NMT +NMY +NMZ +NNI +NNN +NNVC +NNY +NOAH +NOMD +NOM +NOVA +NOW +NPO +NP +NPK +NPN +NPTN +NR +NREF +NQP +NRG +NRGD +NRGO +NRGX +NRGU +NRGZ +NRK +NRO +NRUC +NRP +NRT +NS +NSC +NSCO +NSP +NSPR +NTB +NTCO +NTEST +NTN +NTG +NTIP +NTP +NTR +NTZ +NUE +NUM +NUS +NUW +NUV +NVG +NVGS +NVRO +NVO +NVST +NVS +NVT +NVTA +NWG +NWE +NWHM +NX +NXC +NXE +NXJ +NXR +NXN +NXRT +NYCB +NXQ +NYV +NZF +OAC +O +OCFT +OC +OBLG +OCX +OCN +ODC +OEC +OFC +OFG +OGCP +OGEN +OGE +OHI +OI +OII +OLP +OMF +OLN +ONDK +OMI +ONTO +ONE +OPP +OR +ORAN +OPY +ORCC +ORA +ORC +OSG +OOMA +OSB +OTIS +OUT +PAA +OVV +PACD +PACK +PAG +PAGP +PAGS +PAM +PANW +PARR +PAR +PBA +PBF +PBB +PBFX +PBH +PBI +PBY +PBT +PCF +PCK +PCI +PCPL +PCN +PCM +PCQ +PDI +PD +PDS +PDM +PDT +PEAK +PED +PEI +PEG +PEN +PEO +PER +PFFL +PFL +PFNX +PFS +PFSI +PGM +PGP +PGRE +PGR +PGTI +PGZ +PH +PHD +PHG +PHGE +PHI +PHK +PHT +PHM +PIC +PHX +PIM +PING +PINE +PJH +PJT +PKG +PKI +PKE +PKO +PLAG +PLAN +PKX +PLD +PLG +PLM +PLT +PLX +PLOW +PM +PMM +PMF +PMT +PMO +PML +PNC +PMX +PNF +PNM +PNR +PNI +POR +PNW +POST +PPT +PPX +PPR +PRA +PRGO +PRI +PRH +PRLB +PRK +PRMW +PRO +PROS +PRS +PRSP +PRT +PRU +PSA +PSB +PSN +PSF +PSTG +PSO +PSV +PSTL +PSX +PSXP +PTN +PTR +PUK +PUMP +PVG +PTY +PVH +PVL +PW +PWR +PXD +PYPE +PYN +PYS +PYT +PZC +PZG +PZN +QD +QGEN +QSR +QTS +QUAD +QTWO +QVCD +RA +RAD +R +RACE +RAMP +RBA +RCG +RCB +RCI +RCP +RCS +RCUS +RE +RDN +RDY +REI +REML +RENN +RELX +RESI +REV +REVG +RES +REX +REZI +RFI +RFP +RGA +RGR +RGT +RHE +RH +RGS +RHP +RHI +RIO +RJA +RIV +RJF +RJI +RJZ +RJN +RLGT +RL +RLGY +RLH +RLJ +RLI +RM +RMD +RMAX +RMG +RMI +RMM +RNG +RMT +RNGR +RNP +RODI +ROG +ROK +ROP +RPLA +ROL +ROYT +RPAI +RPM +RQI +RPT +RSF +RS +RVI +RVLV +RVP +RWT +RVT +RXN +RY +RYB +RYAM +RYCE +RYN +RZB +SA +SACH +SAFE +SAH +SAK +SALT +SAM +SAND +SAR +SB +SBBA +SBOW +SBI +SBS +SC +SCA +SCCO +SCD +SCCB +SCM +SCPE +SCI +SCL +SCVX +SCU +SCS +SD +SCX +SDYL +SE +SEE +SEB +SENS +SERV +SF +SFB +SFE +SFTW +SFL +SFUN +SGG +SGU +SHAK +SHI +SHG +SHLL +SHO +SHOP +SHW +SIF +SID +SILV +SII +SIM +SIG +SITC +SITE +SJI +SJR +SJIJ +SJIU +SJM +SJT +SKM +SLCA +SLG +SLF +SMAR +SMFG +SMG +SMHB +SMM +SMTS +SNA +SMP +SNDR +SNMP +SNN +SNE +SNP +SNR +SNV +SNX +SOAC +SO +SOI +SOJB +SOJA +SOJC +SOL +SOJD +SON +SOS +SPAQ +SPB +SPGI +SPLP +SPH +SPN +SPOT +SPR +SPXC +SQNS +SQM +SRC +SR +SRE +SRG +SREA +SRI +SRL +SRT +SRLP +SRV +SSD +SSL +ST +SSTK +SSY +STAG +STAR +STC +STG +STE +STK +STL +STN +STM +STPP +STON +STOR +STNG +STT +STWD +STXS +STZ +SUI +SUM +SUN +SUPV +SVM +SUP +SWCH +SWI +SVT +SWT +SWK +SWM +SXC +SXI +SWZ +SWX +SYX +SYK +SYN +SYY +SZC +TAC +TAK +TAL +TALO +TAP +TAT +TARO +TBB +TCI +TCO +TCRW +TCRZ +TCS +TD +TDA +TDC +TDE +TDI +TDF +TDOC +TDJ +TDS +TDW +TEAF +TECK +TEL +TEN +TEO +TEX +TFII +TG +TGB +TGC +TFX +TGH +TGI +TGNA +TGP +TGS +TGT +THC +THGA +THM +THG +THQ +THS +THO +THW +TIF +TISI +TKAT +TK +TKC +TKR +TLI +TLK +TLRD +TLYS +TMBR +TM +TMO +TMQ +TMP +TMST +TNET +TNC +TNK +TNP +TPH +TPB +TOL +TPC +TPR +TPRE +TPVG +TPL +TPX +TPVY +TPZ +TRC +TREC +TR +TREX +TRGP +TRI +TPHS +TRNE +TRN +TRNO +TRQ +TROX +TRT +TRP +TRTN +TRTX +TRU +TRX +TRV +TRWH +TRXC +TS +TSE +TSLX +TSI +TSU +TT +TSN +TTI +TTC +TTP +TTM +TUFN +TUP +TVC +TVE +TV +TWLO +TWI +TWN +TX +TY +TYG +TYL +UAG +UAMY +UAN +UAUD +UBG +UBA +UCHF +UCIB +UBS +UE +UCI +UEC +UEUR +UFI +UGBP +UFS +UGI +UHS +UI +UGP +UIS +UMC +UL +UJPY +UHT +UMH +UNF +UNVR +UN +UNM +UNMA +URI +UNFI +URG +UPS +UNP +USA +USAC +USAS +USDP +USM +USFD +USPH +USNA +USX +USV +UTF +UTI +UTG +UUU +UTL +UUUU +UVE +UVV +UZB +UZA +UZC +VAPO +VAC +VBF +VAR +VCIF +VCF +VCRA +VEC +VEDL +VEEV +VEL +VET +VFC +VGI +VFL +VGR +VGZ +VHC +VGM +VHI +VICI +VIST +VJET +VIV +VKQ +VKI +VLRS +VLO +VLT +VMC +VMM +VMI +VMW +VMO +VNE +VNO +VNCE +VNTR +VNRX +VOC +VPV +VQT +VRT +VRS +VRTV +VSLR +VSH +VSTO +VST +VTN +VTOL +VTA +VTR +VVI +VVNT +VVR +VVV +VXZ +WAB +W +WAL +WALA +WAT +WBAI +WBK +WBS +WBT +WCC +WD +WCN +WDR +WEA +WELL +WEI +WES +WF +WEX +WGO +WH +WHD +WHG +WHR +WIL +WIA +WK +WIW +WIT +WMC +WMS +WNS +WNC +WOR +WPC +WPF +WPP +WRE +WRK +WRI +WSM +WSO +WSR +WST +WTRG +WTM +WTRU +WUBA +WTS +WWE +WWW +WYND +WYY +WY +XAN +XEC +XFLT +XHR +XIN +XPL +XPO +XTNT +XVZ +XXII +XYL +XYF +YCBD +Y +YETI +YELP +YGRN +YRD +YUM +YUMC +ZBH +ZDGE +ZBZX +ZEN +ZTEST +ZNH +ZTO +ZUO +ZTS +ZTR +ZVV +ZYME +AACG +AACQU +AAME +AAON +AAWW +AAXN +ABEO +ABCB +ABIO +ABMD +ABUS +ABTX +ACAM +ACAMU +ACAMW +ACCD +ACER +ACEVU +ACGL +ACHC +ACGLP +ACGLO +ACHV +ACIU +ACIW +ACLS +ACMR +ACOR +ACNB +ACRS +ACRX +ACTG +ADBE +ADES +ADI +ADILW +ADMP +ADIL +ADMS +ADRO +ADP +ADPT +ADTN +ADSK +ADTX +ADUS +ADVM +ADXN +ADXS +AEHR +AEIS +AEMD +AERI +AEY +AESE +AEZS +AFH +AFIN +AFINP +AFMD +AFYA +AGBA +AGBAU +AGBAR +AGBAW +AGEN +AGFSW +AGIO +AGFS +AGMH +AGLE +AGNCM +AGNCN +AGNCP +AGNCO +AGRX +AGTC +AHPI +AGYS +AHCO +AIH +AIKI +AIHS +AIMT +AIRT +AIRG +AIRTW +AIRTP +AKCA +AKAM +AKBA +AKER +AKTX +AKRO +AKTS +AKUS +ALACR +ALAC +ALACU +ALACW +ALBO +ALDX +ALGN +ALCO +ALGT +ALIM +ALJJ +ALKS +ALLK +ALNY +ALNA +ALLT +ALPN +ALRM +ALOT +ALRN +ALSK +ALTA +ALT +ALTM +ALTR +ALVR +ALXO +ALXN +AMAG +AMAL +AMBA +AMCI +AMCIU +AMCX +AMED +AMCIW +AMEH +AMHC +AMHCU +AMKR +AMGN +AMHCW +AMNB +AMPH +AMRB +AMRHW +AMRH +AMRK +AMSC +AMRS +AMSF +AMSWA +AMTBB +AMTB +AMTX +AMTI +AMTD +AMWD +AMYT +AMZN +ANAB +ANCN +ANDAR +ANDA +ANDAW +ANDAU +ANGI +ANDE +ANIP +ANNX +ANIK +ANTE +ANSS +ANY +APDN +AOSL +APEI +APEN +APEX +API +APLS +APLT +APM +APOPW +APOG +APPF +APPN +APOP +APPS +APRE +APTO +APVO +APWC +APXT +APXTW +APYX +AQMS +AQB +AQST +ARAV +ARAY +ARCB +ARCE +ARCT +ARCC +AREC +ARDX +ARGX +ARKR +ARNA +ARLP +ARPO +AROW +ARTL +ARQT +ARTLW +ARVN +ARTW +ARYB +ARWR +ARYBU +ARYBW +ASLN +ASFI +ASML +ASPU +ASPS +ASRT +ASRV +ASTC +ASUR +ASRVP +ASTE +ASYS +ATCX +ATEC +ATCXW +ATHE +ATEX +ATHX +ATLC +ATIF +ATNI +ATLO +ATNX +ATOM +ATOS +ATRC +ATRA +ATSG +ATRS +ATRO +ATRI +AUBAP +ATXI +AUB +AUDC +AUBN +AUPH +AUTO +AVAV +AVCTW +AVCT +AVCO +AVDL +AVGOP +AVEO +AVGO +AVGR +AVNW +AVRO +AVID +AVT +AWRE +AXDX +AXGT +AXNX +AXGN +AXLA +AY +AYLA +AYRO +AZRX +BAND +BATRK +BASI +BATRA +BBCP +BBGI +BANX +BBIO +BBQ +BBI +BCBP +BCDA +BBSI +BCDAW +BCOM +BCLI +BCML +BCOR +BCOV +BCOW +BCPC +BCYC +BDGE +BDSI +BDTX +BEAM +BEAT +BECN +BELFA +BFC +BELFB +BFST +BFRA +BFIN +BFYT +BGFV +BGNE +BHFAL +BHFAP +BHFAO +BHTG +BIDU +BILI +BIIB +BIMI +BIOL +BJRI +BKCC +BKEPP +BKEP +BKNG +BKYI +BKSC +BLCM +BLBD +BLCT +BLDR +BLFS +BLI +BLIN +BLMN +BLNK +BLNKW +BLPH +BLRX +BLU +BLUE +BMCH +BMRA +BMLP +BMRN +BMRC +BNFT +BMTC +BNR +BNGOW +BNSO +BNTC +BNTX +BOKFL +BOCH +BOKF +BOMN +BOSC +BOTJ +BPMC +BPFH +BPOPN +BPOP +BPTH +BPRN +BPY +BPYPN +BPYPO +BPYPP +BPYUP +BPYU +BREW +BRKL +BRID +BRKR +BRKS +BRLIR +BRLI +BRLIU +BRLIW +BROGW +BROG +BRP +BRPAR +BRPAU +BRPAW +BRY +BSGM +BSBK +BSQR +BSET +BSTC +BSRR +BTAI +BUSE +BVXV +BWAY +BSVN +BWFG +BXRX +BWMX +BYFC +BYSI +BZUN +CAAS +CABA +CACC +CAC +CAKE +CALB +CALA +CAMP +CALT +CALM +CAMT +CAPR +CAN +CAR +CARA +CARG +CARE +CARV +CASA +CASH +CASI +CATB +CASS +CATC +CASY +CATM +CATY +CBAT +CBAY +CBFV +CBIO +CBLI +CBNK +CBPO +CBMG +CBRL +CBSH +CBTX +CBSHP +CCAP +CCB +CCBG +CCCL +CCD +CCMP +CCLP +CCOI +CCRC +CCNE +CCRN +CCXI +CDK +CDLX +CDMO +CDMOP +CDNA +CDNS +CDTX +CDXS +CELC +CDZI +CECE +CELH +CENTA +CENT +CENX +CERC +CERN +CETV +CERS +CETX +CETXW +CETXP +CEVA +CFBK +CFBI +CFB +CFFA +CFFI +CFFAW +CFRX +CFMS +CGBD +CG +CGIX +CGNX +CGEN +CGRO +CGROU +CGROW +CHCI +CHCO +CHDN +CHEKZ +CHEF +CHEK +CHMA +CHMG +CHNG +CHNGU +CHNR +CHPMU +CHPMW +CHPM +CHRS +CHRW +CHSCL +CHSCM +CHSCO +CHSCN +CHTR +CHUY +CIDM +CHW +CIGI +CHY +CIH +CIICU +CINF +CIVB +CJJD +CKPT +CLBK +CLBS +CLCT +CLEU +CLDB +CLFD +CLGN +CLIR +CLPS +CLNE +CLRBZ +CLPT +CLRB +CLSD +CLSK +CLSN +CLUB +CLWT +CLXT +CMBM +CME +CMFNL +CMCO +CMCT +CMPR +CMLS +CMRX +CMTL +CNDT +CNET +CNFR +CNBKA +CNFRL +CNNB +CNSL +CNOB +CNTG +CNST +CNTY +COCP +CODA +COHR +COFS +COKE +COHU +COLL +COLM +COMM +COLB +CONE +COOP +CORE +CONN +COST +COWN +COUP +COWNZ +CPAA +CPAAU +CPAH +CPIX +CPRT +CPLP +CPSH +CPST +CPSS +CPTA +CPTAG +CPTAL +CRBP +CPZ +CRDF +CRAI +CREE +CREG +CRESY +CREXW +CREX +CRIS +CRMT +CPSI +CRNC +CRNT +CRNX +CRSA +CRON +CRSAW +CRSP +CRTO +CRVL +CRVS +CRWD +CSBR +CRWS +CSGS +CSGP +CSII +CSIQ +CSPI +CSSE +CSTE +CSSEN +CSSEP +CSTL +CSTR +CSWCL +CSWC +CSWI +CTBI +CSX +CTG +CTHR +CTIB +CTAS +CTIC +CTRM +CTMX +CTSH +CTXRW +CTRN +CTSO +CTXR +CTXS +CUBA +CUE +CVCO +CUTR +CVET +CVCY +CVBF +CVGW +CVLG +CVV +CVLY +CWBC +CWBR +CWCO +CXDC +CWST +CXDO +CYAN +CYBE +CYCC +CYCN +CYCCP +CYRN +CYTK +CZR +CZWI +CZNC +DAIO +DAKT +DBCP +DARE +DADA +DCPH +DCOMP +DCTH +DDOG +DENN +DFHTU +DFFN +DFPH +DFPHW +DGICA +DGII +DGLY +DHC +DHCNL +DGICB +DHCNI +DHIL +DIOD +DISCA +DISCB +DISCK +DJCO +DISH +DLHC +DLPNW +DLPN +DLTH +DLTR +DMAC +DMLP +DMPI +DMRC +DNJR +DMTK +DNKN +DOCU +DOGZ +DOOO +DOMO +DOYU +DOX +DPHCU +DPHC +DPHCW +DRADP +DRAD +DRIO +DRRX +DRNA +DRTT +DSGX +DSKE +DSKEW +DSPG +DSWL +DTSS +DTEA +DTIL +DVAX +DWSN +DXCM +DXPE +DXLG +DXYN +DZSI +EA +EARS +EAST +EBIX +EBON +EBAYL +EBMT +EBSB +EBTC +ECHO +ECOLW +ECPG +EDIT +EDNT +EDRY +EDSA +EDTK +EDUC +EEFT +EFOI +EGLE +EGBN +EGOV +EH +EGRX +EHTH +EIDX +EIGR +ELSE +ELOX +ELTK +EMCF +EMKR +ENDP +EML +ENG +ENLV +ENOB +ENSG +ENT +ENTA +ENTG +ENTXW +ENTX +EPIX +EPAY +EPSN +EPZM +EQ +EQBK +ERESU +ERIE +ERYP +ESCA +ESEA +ESGR +ESBK +ESGRO +ESLT +ESGRP +ESPR +ESQ +ESSA +ESSCR +ESSC +ESSCU +ESTA +ESXB +ETFC +ETNB +ETON +ETTX +EVER +EVGBC +EVFM +EVGN +EVLMC +EVLO +EVOK +EVSI +EVOP +EVOL +EVSIW +EWBC +EXAS +EXEL +EXFO +EXLS +EXPC +EXPE +EXPO +EXPI +EXTR +EYEG +EYE +EYEN +EYES +EYESW +EYPT +FAMI +EZPW +EXPCU +FANG +FANH +FARM +FARO +FAT +FATBW +FATBP +FAST +FATE +FBIO +FBMS +FBIOP +FBIZ +FBRX +FBNC +FBSS +FCBP +FCBC +FCAP +FCCY +FCFS +FCNCA +FDUS +FDBC +FDUSG +FDUSL +FDUSZ +FELE +FEIM +FENC +FFBC +FFBW +FFIV +FFIC +FFIN +FFWM +FFNW +FGEN +FIBK +FHB +FISV +FITBO +FITBI +FIVE +FITBP +FIVN +FIZZ +FLDM +FLEX +FLIC +FLIR +FLL +FLMNW +FLMN +FLWS +FLNT +FMBH +FMBIO +FMBI +FMBIP +FMCIU +FMCIW +FMCI +FMTX +FMNB +FNCB +FNHC +FNKO +FNWB +FNLC +FOLD +FOCS +FONR +FORD +FORM +FORTY +FOX +FOSL +FORR +FPAY +FRAF +FOXA +FRBA +FRBK +FRAN +FREQ +FRG +FRHC +FRPH +FRME +FRPT +FRTA +FRSX +FSEA +FSBW +FSFG +FSLR +FSRV +FSRVW +FSRVU +FSTR +FSV +FTAC +FTACW +FTACU +FTDR +FTFT +FTEK +FTHM +FULC +FTNT +FULT +FUNC +FUSB +FUSN +FUND +FUTU +FUV +FVCB +FWONK +FWRD +FWP +FXNC +GAIN +GAINL +GAINM +GAIA +GAN +GALT +GARS +GBDC +GASS +GBLI +GBLIZ +GBLIL +GBCI +GBT +GCBC +GDS +GDYN +GDEN +GEC +GDYNW +GECC +GECCL +GECCM +GENC +GEOS +GECCN +GFN +GFNSL +GGAL +GEVO +GHIV +GHIVW +GERN +GHIVU +GIII +GENE +GILT +GIGM +GLADD +GLADL +GLDI +GLDD +GLG +GLIBA +GLIBP +GLBZ +GLNG +GLUU +GLYC +GLPI +GMBL +GMAB +GMBLW +GMHI +GMDA +GMHIU +GMLP +GMHIW +GMLPP +GNFT +GNCA +GNLN +GNMK +GNPX +GNRS +GNRSW +GNSS +GNTY +GNTX +GOCO +GOGO +GOGL +GOOD +GOOG +GOODN +GOODM +GOSS +GPOR +GPP +GPRO +GRCYU +GRBK +GRFS +GRIN +GRMN +GRNQ +GRNV +GRNVR +GRNVU +GRPN +GROW +GRTS +GRVY +GSBC +GSHD +GSKY +GSIT +GSMG +GSMGW +GTEC +GTH +GTHX +GTIM +GTYH +GTLS +GURE +GWPH +GWGH +GXGX +GXGXU +GXGXW +HA +HAIN +HALO +HALL +HARP +HAPP +HAS +HAYN +HBIO +HBCP +HBMD +HBANO +HBP +HCAC +HBT +HCACU +HCACW +HCAPZ +HCAP +HCCH +HCCHR +HCCHU +HCCHW +HCCI +HCCOU +HCCOW +HCM +HCKT +HCSG +HDS +HEBT +HEAR +HECCU +HEES +HECCW +HELE +HFFG +HGSH +HHT +HHR +HIBB +HIMX +HIHO +HJLIW +HLG +HLNE +HMHC +HLIO +HMNF +HMSY +HMTV +HNRG +HNNA +HOFV +HOFT +HOLI +HOLX +HOOK +HONE +HOPE +HOTH +HQY +HQI +HOVNP +HROW +HRTX +HRZN +HSIC +HSDT +HSON +HSII +HSKA +HSTM +HSTO +HTBI +HTGM +HTHT +HTLD +HTIA +HTLFP +HTLF +HUIZ +HUBG +HUGE +HVBC +HURN +HUSN +HURC +HWBK +HWCC +HWCPL +HWCPZ +HWKN +HX +HYACW +HYACU +HYRE +HZNP +HYMCW +IART +IAC +IBKR +IBOC +IBTX +ICAD +ICBK +ICCC +ICCH +ICFI +ICHR +ICLK +ICLR +ICMB +ICPT +ICUI +IDN +IDCC +IDXG +IDRA +IDXX +IDYA +IEA +IEAWW +IEC +IESC +IEP +IGIC +IFMK +IFRX +IGICW +IHRT +IIIV +III +IIIN +IKNX +IIN +ILMN +ILPT +IIVI +IMAB +IMAC +IMACW +IMGN +IMMP +IMKTA +IMOS +IMMR +IMMU +IMRN +IMRA +IMRNW +IMTE +IMTXW +IMV +IMVT +INBKZ +INBKL +INBK +INCY +INGN +INFI +INFN +INMB +INDB +INMD +INOD +INPX +INSU +INSM +INSG +INSUU +INSUW +INTU +INTG +INWK +INZY +IONS +INVE +IPAR +IPDN +IPGP +IPHA +IPWR +IPLDP +IRCP +IRIX +IRDM +IRBT +IRTC +IRWD +IOSP +IROQ +ISBC +ISIG +ISNS +ISSC +ISTR +ITIC +ITCI +ITMR +ITOS +ITRI +ITRM +IVA +ITRN +IVAC +JAGX +JACK +JAMF +JAKK +JAN +JAZZ +JBHT +JCOM +JBSS +JFIN +JCTCF +JFKKU +JFK +JFKKR +JFU +JJSF +JMPNZ +JMPNL +JNCE +JOUT +JRVR +JRSH +JSM +JYNT +KALA +KALU +KALV +KBLM +KBAL +KBLMW +KBLMR +KBSF +KBLMU +KC +KCAPL +KE +KELYA +KERNW +KELYB +KEQU +KERN +KFFB +KGJI +KIDS +KIN +KINS +KLAC +KLXE +KMDA +KNDI +KLIC +KNSA +KOD +KRMD +KOPN +KPTI +KRKR +KOSS +KRNT +KROS +KRTX +KRUS +KRYS +KTCC +KURA +KZIA +KXIN +KZR +LACQW +LAKE +LACQU +LAMR +LACQ +LAND +LANC +LANDP +LARK +LATNU +LAUR +LATNW +LAWS +LAZY +LBRDK +LBAI +LBTYA +LCA +LBTYB +LBTYK +LCAHW +LCNB +LCUT +LE +LECO +LBRDA +LEDS +LEGH +LEGN +LEVL +LFACU +LFAC +LFACW +LFUS +LGHL +LGHLW +LGIH +LGND +LHCG +LI +LIFE +LILA +LILAK +LIND +LINC +LITE +LIQT +LIVE +LIVK +LIVKU +LIVKW +LIVX +LIVN +LIZI +LJPC +LKCO +LKFN +LLNW +LLIT +LMAT +LMFA +LMB +LMFAW +LMNL +LMPX +LMNX +LMRK +LMRKO +LMRKN +LMST +LNTH +LOAC +LNT +LOACU +LOCO +LOAN +LOGC +LOGM +LONE +LOOP +LOGI +LORL +LOPE +LOVE +LPCN +LPLA +LPSN +LPTX +LQDA +LPTH +LRMR +LRCX +LSACW +LSBK +LSCC +LSXMA +LSXMB +LTBR +LSXMK +LTRN +LTRX +LTRPA +LUMO +LUNA +LVGO +LX +LWAY +LYL +LYRA +MAGS +MANH +MANT +LYTS +MARA +MARPS +MAR +MASI +MATW +MAYS +MAT +MBCN +MBIN +MBII +MBINP +MBIO +MBOT +MBRX +MBUU +MBWM +MCACU +MCEP +MCFT +MCHX +MCHP +MCRB +MCRI +MDB +MDGL +MDGS +MDIA +MDJH +MDRR +MDWD +MDRX +MEDP +MDGSW +MEDS +MEIP +MELI +MEOH +MESO +MESA +MERC +METX +METXW +MFH +MFIN +MFINL +MFNC +MGI +MGEN +MGEE +MGLN +MGIC +MGNX +MGNI +MGTA +MGPI +MGTX +MGYR +MHLD +MICT +MIME +MIND +MINDP +MIST +MITK +MKD +MITO +MKGI +MKSI +MKTX +MLACU +MLND +MLCO +MLVF +MLHR +MMLP +MMAC +MMSI +MMYT +MNCL +MNCLU +MNDO +MNKD +MNOV +MNLO +MNRO +MNSB +MNTA +MNST +MNTX +MOFG +MOBL +MOHO +MOGO +MORF +MOR +MOSY +MOTS +MOMO +MORN +MOXC +MPAA +MPWR +MRAM +MPB +MRBK +MRCC +MRCY +MREO +MRKR +MRLN +MRNS +MRTX +MRUS +MSBI +MSEX +MSTR +MTBC +MTC +MSVB +MTEM +MTBCP +MTCH +MTLS +MTRX +MTEX +MTP +MTSI +MTSC +MWK +MVBF +MYFW +MYGN +MYOK +MXIM +MYOS +MYRG +MYSZ +MYT +NAKD +NARI +NAOV +NATH +NBAC +NBACR +NAVI +NBACU +NBACW +NBEV +NBLX +NBIX +NBTB +NBN +NBSE +NBRV +NCBS +NCNA +NCNO +NCSM +NDLS +NDAQ +NDRA +NDRAW +NDSN +NEON +NEO +NEPH +NEPT +NESR +NERV +NEOS +NESRW +NEWA +NEWTI +NEWT +NEXT +NEWTL +NFE +NFBK +NFIN +NFINW +NFINU +NGHCN +NGHCO +NGHC +NGHCP +NGM +NHICU +NH +NHLDW +NHLD +NHTC +NIU +NICE +NICK +NK +NKLAW +NKSH +NKTX +NKTR +NLTX +NMIH +NMRD +NMTR +NMRK +NODK +NNBR +NOVSU +NOVT +NPA +NPAUU +NRBO +NPAWW +NRIX +NRIM +NSIT +NSEC +NSSC +NSTG +NTCT +NSYS +NTAP +NTGR +NTES +NTIC +NTLA +NTRA +NTRP +NTRS +NTRSO +NTWK +NUVA +NUAN +NVCN +NVEE +NVEC +NVIV +NVMI +NWBI +NVUS +NWGI +NWLI +NWPX +NWS +NWL +NWSA +NXST +NXTC +NXTD +NYMTN +NYMTM +NYMTO +NYMX +OBAS +OBSV +OBNK +OBLN +OCFC +OCFCP +OCCIP +OCCI +OCSI +OCSL +ODP +OCUL +ODT +ODFL +OESX +OEG +OFIX +OFED +OFLX +OFSSI +OGI +OFSSZ +OIIM +OKTA +OLED +OLLI +OMEX +OMER +OMP +ON +ONCS +ONB +ONEM +ONCT +ONCY +ONEW +ONTXW +ONVO +OPES +OPESU +OPCH +OPESW +OPHC +OPGN +OPI +OPINI +OPINL +OPNT +OPRA +OPOF +OPRT +OPRX +OPTN +OPTT +ORBC +ORGO +ORGS +ORLY +ORIC +ORMP +ORSN +ORSNR +ORSNU +ORSNW +ORTX +OSMT +OSIS +OSPN +OSN +OSS +OSUR +OSTK +OSW +OTIC +OTEL +OTLKW +OTEX +OTLK +OTRK +OVID +OVBC +OVLY +OXBRW +OXBR +OXFD +OXLCM +OXLC +OXLCO +OXSQZ +OXSQ +OXSQL +OYST +PACB +PACQ +PAAS +OZK +PACQU +PACQW +PAE +PACW +PAHC +PAND +PAEWW +PANL +PASG +PAVM +PATI +PATK +PAVMZ +PAYS +PAVMW +PAYX +PBCTP +PBCT +PBFS +PBHC +PBTS +PBPB +PBIP +PCAR +PBYI +PCB +PCH +PCRX +PCOM +PCVX +PCTY +PCTI +PCYG +PCYO +PDCE +PDCO +PDFS +PDLB +PDEX +PDLI +PEBO +PECK +PEBK +PEIX +PEGA +PETQ +PESI +PETZ +PEP +PFBC +PFC +PFHD +PFBI +PFG +PFIE +PFLT +PFIN +PFPT +PGC +PGEN +PHAS +PGNY +PHAT +PHIO +PHCF +PHUN +PI +PIH +PICO +PIHPP +PIRS +PINC +PIXY +PKOH +PLAB +PLCE +PLIN +PLBC +PLMR +PLL +PLRX +PLSE +PLPC +PLUS +PLXP +PLYA +PLXS +PMD +PNBK +PME +PNFP +PNNT +PNNTG +PNTG +POAI +POLA +POOL +PODD +POWI +POWL +PPBI +PPD +PPC +PPHI +PPIH +PRAA +PRAH +PRDO +PRCP +PRFT +PRGS +PRIM +PRGX +PRNB +PROF +PROG +PRPH +PROV +PRPL +PRPLW +PRPO +PRQR +PRTA +PRTH +PRTK +PRVB +PRVL +PRTS +PS +PSEC +PSHG +PSMT +PSNL +PSTI +PSTV +PT +PSTX +PTAC +PTACU +PTACW +PTCT +PTE +PTGX +PTI +PTMN +PTNR +PTVCA +PULM +PUYI +PTVCB +PVAC +PVBC +PWFL +PXLW +PWOD +PXS +PYPD +PZZA +QADB +QADA +QDEL +QCRH +QFIN +QIWI +QK +QLYS +QMCO +QNST +QRHC +QRTEA +QTNT +QQQX +QRVO +QTRX +QTT +QUIK +QUMU +RADA +QURE +RAPT +RAVE +RARE +RAND +RBB +RBBN +RBCN +RBCAA +RBKB +RCEL +RCII +RBNC +RCKT +RCKY +RCM +RCMT +RDCM +RCON +RDFN +RDHL +RDIB +RDI +RDNT +RDUS +RDVT +RDWR +REAL +REDU +REFR +REGI +REG +REGN +REKR +RELL +REPH +REPL +RELV +RESN +RETA +RETO +REXN +RFIL +RGEN +RGCO +RGLD +REYN +RGLS +RIBT +RGP +RILY +RICK +RGNX +RIGL +RILYH +RILYG +RILYM +RILYI +RILYO +RILYP +RILYN +RILYZ +RKDA +RIVE +RLAY +RLMD +RMBL +RMBI +RMBS +RMCF +RMNI +RMR +RMTI +RNA +RMRM +RNDB +RNET +RNLX +RNWK +ROAD +ROCH +ROCHU +ROCHW +ROCK +ROIC +ROLL +ROSE +ROSEU +ROSEW +RP +ROST +RPAY +RPD +RPTX +RPRX +RRR +RRBI +RTLR +RUBY +RSSS +RTRX +RUN +RUHN +RUSHA +RUSHB +RUTH +RVMD +RVNC +RWLK +RYTM +SAFM +SAGE +SAFT +SAIA +SAL +SAMA +SALM +SAMAW +SANM +SAMG +SAQNU +SAQNW +SAQN +SATS +SASR +SBBP +SAVA +SBCF +SBFG +SBBX +SBLK +SBGI +SBNY +SBPH +SBRA +SBSI +SBT +SCHN +SCKT +SCON +SCOR +SCPH +SCPL +SCSC +SCVL +SCYX +SCWX +SDGR +SEAC +SEDG +SECO +SEED +SELB +SEIC +SENEA +SELF +SFBC +SENEB +SFET +SFIX +SFM +SFBS +SFNC +SG +SGBX +SGA +SGEN +SGC +SGH +SGLBW +SGMO +SGMA +SGOC +SGRP +SGRY +SHEN +SHIPW +SHLO +SHOO +SHYF +SHSP +SIBN +SHIPZ +SIC +SIEB +SIFY +SIGA +SILC +SILK +SIGI +SIMO +SINT +SINA +SINO +SITM +SIVBP +SJ +SKYS +SLCT +SLAB +SKYW +SLDB +SLGL +SLNO +SLGN +SLM +SLMBP +SLP +SLRC +SLS +SLVO +SMBC +SMED +SMCI +SMIT +SMMC +SMMCW +SMMCU +SMPL +SMMF +SMMT +SMSI +SMRT +SMTC +SNBR +SNCR +SND +SNDE +SNDX +SNDL +SNES +SNEX +SNFCA +SNOA +SNGXW +SNPS +SOHOB +SOHO +SOHON +SOHU +SOHOO +SONA +SOLY +SONM +SONO +SONN +SP +SPCB +SPFI +SPI +SPKE +SPLK +SPKEP +SPNE +SPOK +SPNS +SPPI +SPRO +SPRT +SPSC +SPT +SPTN +SPWR +SPWH +SRAC +SRACU +SRCE +SRAX +SRCL +SRDX +SREV +SRGA +SRPT +SRRK +SRTS +SSBI +SSKN +SSB +SSP +SSNC +SSNT +SSPKU +SSRM +SSTI +SSSS +SSYS +STAA +STAY +STBA +STIM +STKS +STKL +STNE +STND +STCN +STOK +STRL +STRM +STRA +STRS +STRT +STRO +STXB +STSA +SUMR +SUNW +SUNS +SUPN +SURF +SVA +SVBI +SVRA +SVMK +SVVC +SWBI +SWKH +SWIR +SWTX +SXTC +SY +SWKS +SYBX +SYKE +SYNA +SYNC +SYNH +SYPR +SYNL +TA +TACO +TAIT +TANH +TANNI +TANNZ +TANNL +TARA +TAOP +TATT +TAYD +TAST +TBIO +TBK +TBKCP +TBLT +TBNK +TBPH +TCBI +TCBIL +TCCO +TCDA +TCBK +TCF +TCFCP +TBLTW +TCFC +TCON +TCPC +TCRD +TDAC +TCX +TDACU +TDACW +TECH +TECTP +TEAM +TEDU +TELA +TELL +TENB +TER +TENX +TEUM +TESS +TERP +TGLS +TH +TGTX +TGA +THBR +THBRU +THCA +THCAU +THCAW +THCBU +THCB +THRM +THMO +THTX +TIG +THWWW +TIGO +TIGR +TILE +TITN +TIPT +TLC +TLF +TLGT +TLSA +TLND +TMDI +TMDX +TNDM +TNAV +TORC +TOTA +TOUR +TPCO +TPTX +TRCH +TREE +TRIL +TRHC +TRIB +TRIP +TRMD +TRMB +TRMT +TRMK +TRNS +TRS +TROW +TRUP +TRUE +TRVI +TRVG +TRST +TRVN +TSC +TSCAP +TSBK +TSCBP +TSCO +TSEM +TTEC +TTGT +TTEK +TTMI +TTWO +TURN +TVTY +TUSK +TW +TWMC +TWNK +TWOU +TWNKW +TWST +TXG +TXAC +TXMD +TXRH +TXN +TYHT +TYME +TZACU +TZAC +TZACW +TZOO +UBOH +UBCP +UBX +UBSI +UCBIO +UCBI +UEPS +UEIC +UCTT +UFPT +UFPI +UIHC +UG +UFCS +ULH +UHAL +ULTA +UMBF +UMRX +UMPQ +UNIT +UNB +UNTY +UONEK +UPWK +URBN +UROV +USAK +USAP +USEG +USCR +USWS +USOI +USLM +UTHR +UTSI +UTMD +UXIN +UVSP +VBLT +VALU +VBFC +VCEL +VCNX +VC +VCYT +VECO +VERBW +VERI +VERB +VERO +VERU +VERY +VFF +VG +VICR +VIAV +VIE +VIOT +VIR +VIRC +VIRT +VITL +VIVE +VKTX +VIVO +VLGEA +VLYPP +VLYPO +VLY +VNOM +VOD +VNET +VOXX +VRA +VRCA +VRM +VREX +VRMEW +VRNA +VRNS +VRNT +VRRM +VRSK +VRSN +VRTS +VRTU +VRTX +VSEC +VSTM +VTNR +VTSI +VTVT +VUZI +VYGR +WAFD +WAFU +WABC +WB +WATT +WASH +WDAY +WDFC +WDC +WEN +WERN +WEYS +WETF +WHF +WHLM +WHFBZ +WHLR +WHLRD +WHLRP +WIMI +WIFI +WINA +WING +WINS +WINT +WIRE +WISA +WIX +WKEY +WLFC +WLDN +WMGI +WORX +WNEB +WPRT +WRLD +WRTC +WSBC +WSBF +WSC +WSG +WSTL +WSTG +WTBA +WTFCM +WTRE +WTFCP +WTFC +WTREP +WVE +WVFC +WVVI +WVVIP +WW +WWD +WWR +XAIR +XBIOW +XBIO +XCUR +XBIT +XELB +XENT +XERS +XEL +XFOR +XGN +XLNX +XNCR +XLRN +XNET +XOMA +XONE +XP +XPER +XTLB +XSPA +YGYI +YGYIP +XRAY +YI +YJ +YMAB +YNDX +YTEN +YORW +YRCW +YVR +YY +Z +ZAGG +ZAZZT +ZBRA +ZCMD +ZBZZT +ZEUS +ZG +ZEAL +ZGNX +ZGYHR +ZGYHU +ZGYHW +ZIONN +ZI +ZION +ZIONO +ZIONL +ZIONP +ZJZZT +ZIOP +ZIXI +ZKIN +ZLAB +ZN +ZNTL +ZNWAA +ZS +ZUMZ +ZSAN +ZVO +ZVZZC +ZVZZT +ZWZZT +ZYNE +ZYXI diff --git a/flask_server.py b/flask_server.py new file mode 100644 index 00000000..913c6e34 --- /dev/null +++ b/flask_server.py @@ -0,0 +1,32 @@ +import flask +from flask import Flask, request, send_from_directory, render_template +import os +import numpy + +from market_scanner import mainObj + +app = flask.Flask(__name__, static_url_path='') +app.config["DEBUG"] = False + +SECRET_KEY = os.getenv('SECRET_KEY', 'deditated_wam') #pulls SECRET_KEY from env var, else sets as 'detitaded_wam' +app.config['SECRET_KEY'] = SECRET_KEY + + + +@app.after_request +def after_request(response): + response.headers.add('Access-Control-Allow-Origin', 'localhost*,192.168.*') + response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization') + response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS') + return response + +@app.route('/', methods=['GET']) +def home(): + return render_template('dynamic.html', stonks=stonks) + +if __name__ == "__main__": + stonk_search = mainObj() + stonks = stonk_search.main_func(doFilter=True) + + app.run(host='0.0.0.0',port='5000') # run the app on LAN + #app.run() # run the app on your machine diff --git a/market_scanner.py b/market_scanner.py index 9695f7f7..8673d644 100644 --- a/market_scanner.py +++ b/market_scanner.py @@ -5,95 +5,88 @@ from datetime import date import datetime import numpy as np +import pandas as pd import sys + from stocklist import NasdaqController + from tqdm import tqdm from joblib import Parallel, delayed, parallel_backend import multiprocessing + ########################### # THIS IS THE MAIN SCRIPT # ########################### -# Change variables to your liking then run the script -MONTH_CUTTOFF = 6 -DAY_CUTTOFF = 3 -STD_CUTTOFF = 10 - - class mainObj: - def __init__(self): - pass + def __init__(self,_month_cuttoff=6,_day_cuttoff=3,_std_cuttoff=10): #default params + self.MONTH_CUTTOFF = _month_cuttoff + self.DAY_CUTTOFF = _day_cuttoff + self.STD_CUTTOFF = _std_cuttoff def getData(self, ticker): - global MONTH_CUTOFF currentDate = datetime.datetime.strptime( date.today().strftime("%Y-%m-%d"), "%Y-%m-%d") pastDate = currentDate - \ - dateutil.relativedelta.relativedelta(months=MONTH_CUTTOFF) + dateutil.relativedelta.relativedelta(months=self.MONTH_CUTTOFF) + + #potentially fixing an off-by-one bug(yfinance not getting data for currentDate), will test more after market close on monday. Doesn't break anything in the meantime + currentDate += dateutil.relativedelta.relativedelta(days=1) + sys.stdout = open(os.devnull, "w") data = yf.download(ticker, pastDate, currentDate) sys.stdout = sys.__stdout__ return data[["Volume"]] - def find_anomalies(self, data): - global STD_CUTTOFF - indexs = [] - outliers = [] + def find_anomalies(self, data, currentDate): data_std = np.std(data['Volume']) data_mean = np.mean(data['Volume']) - anomaly_cut_off = data_std * STD_CUTTOFF + anomaly_cut_off = data_std * self.STD_CUTTOFF upper_limit = data_mean + anomaly_cut_off data.reset_index(level=0, inplace=True) - for i in range(len(data)): - temp = data['Volume'].iloc[i] - if temp > upper_limit: - indexs.append(str(data['Date'].iloc[i])[:-9]) - outliers.append(temp) - d = {'Dates': indexs, 'Volume': outliers} - return d + is_outlier = data['Volume'] > upper_limit + is_in_three_days = ((currentDate - data['Date']) <= datetime.timedelta(days=self.DAY_CUTTOFF)) + return data[is_outlier & is_in_three_days] def customPrint(self, d, tick): print("\n\n\n******* " + tick.upper() + " *******") print("Ticker is: "+tick.upper()) - for i in range(len(d['Dates'])): - str1 = str(d['Dates'][i]) - str2 = str(d['Volume'][i]) - print(str1 + " - " + str2) + print(d) print("*********************\n\n\n") - def days_between(self, d1, d2): - d1 = datetime.datetime.strptime(d1, "%Y-%m-%d") - d2 = datetime.datetime.strptime(d2, "%Y-%m-%d") - return abs((d2 - d1).days) - - def parallel_wrapper(self, x, currentDate, positive_scans): - global DAY_CUTTOFF - d = (self.find_anomalies(self.getData(x))) - if d['Dates']: - for i in range(len(d['Dates'])): - if self.days_between(str(currentDate)[:-9], str(d['Dates'][i])) <= DAY_CUTTOFF: - self.customPrint(d, x) - stonk = dict() - stonk['Ticker'] = x - stonk['TargetDate'] = d['Dates'][0] - stonk['TargetVolume'] = d['Volume'][0] - positive_scans.append(stonk) - - def main_func(self): + def parallel_wrapper(self,x, currentDate, positive_scans): + d = (self.find_anomalies(self.getData(x), currentDate)) + if d.empty: + return + + self.customPrint(d, x) + stonk = dict() + stonk['Ticker'] = x + stonk['TargetDate'] = d['Date'].iloc[0] + stonk['TargetVolume'] = d['Volume'].iloc[0] + positive_scans.append(stonk) + + def main_func(self,doFilter=False): + manager = multiprocessing.Manager() + positive_scans = manager.list() + StocksController = NasdaqController(True) list_of_tickers = StocksController.getList() + if doFilter: + filtered_tickers = pd.read_csv('filtered_tickers.csv', names=['Ticker'], index_col=None, header=None).Ticker.astype('string') + list_of_tickers = list(filtered_tickers.values) + + print(f'num tickers: {len(list_of_tickers)}') + currentDate = datetime.datetime.strptime( date.today().strftime("%Y-%m-%d"), "%Y-%m-%d") start_time = time.time() - manager = multiprocessing.Manager() - positive_scans = manager.list() - with parallel_backend('loky', n_jobs=multiprocessing.cpu_count()): Parallel()(delayed(self.parallel_wrapper)(x, currentDate, positive_scans) - for x in tqdm(list_of_tickers)) + for x in tqdm(list_of_tickers, miniters=1)) print("\n\n\n\n--- this took %s seconds to run ---" % (time.time() - start_time)) @@ -102,48 +95,6 @@ def main_func(self): if __name__ == '__main__': - mainObj().main_func() - - -""" -Some legacy code down below - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def find_anomalies(self, data, cutoff): - data_std = np.std(data['Volume']) - data_mean = np.mean(data['Volume']) - anomaly_cut_off = data_std * cutoff - upper_limit = data_mean + anomaly_cut_off - indexs = data[data['Volume'] > upper_limit].index.tolist() - outliers = data[data['Volume'] > upper_limit].Volume.tolist() - index_clean = [str(x)[:-9] for x in indexs] - d = {'Dates': index_clean, 'Volume': outliers} - return d -""" + results = mainObj(_month_cuttoff=6,_day_cuttoff=3,_std_cuttoff=10).main_func(doFilter=True) #customize these params to your liking + for outlier in results: + print(outlier) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 1dc4b646..3b5a9b7a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ tqdm==4.48.0 joblib flask multiprocessing +pandas diff --git a/stocklist.py b/stocklist.py index 03e06bc8..a7f27b66 100644 --- a/stocklist.py +++ b/stocklist.py @@ -6,15 +6,13 @@ # this is used to get all tickers from the market. -exportList = [] - class NasdaqController: - def getList(self): - return exportList def __init__(self, update=True): + self.exportList = [] + self.filenames = { "otherlisted": "data/otherlisted.txt", "nasdaqlisted": "data/nasdaqlisted.txt" @@ -56,6 +54,8 @@ def __init__(self, update=True): continue all_listed.write(line[0] + ",") - global exportList - exportList.append(line[0]) + self.exportList.append(line[0]) all_listed.write(line[0] + "|" + line[1] + "\n") + + def getList(self): + return self.exportList diff --git a/stocklist_filter.py b/stocklist_filter.py new file mode 100644 index 00000000..3d16e247 --- /dev/null +++ b/stocklist_filter.py @@ -0,0 +1,44 @@ +from stocklist import NasdaqController +import market_scanner + +from joblib import Parallel, delayed, parallel_backend +import multiprocessing +from tqdm import tqdm + +import numpy as np +import pandas as pd + +class stockFilter: + + def __init__(self,manager,master_list): + self.scanner = market_scanner.mainObj(_month_cuttoff=6,_day_cuttoff=3,_std_cuttoff=10) + self.tickers = NasdaqController(True).getList() + self.frame = pd.DataFrame(columns=['Ticker','AvgVol']) + + with parallel_backend('loky', n_jobs=multiprocessing.cpu_count()): + Parallel()(delayed(self.parallel_getData_wrapper)(x, master_list) + for x in tqdm(self.tickers, miniters=1)) + + self.frame = pd.DataFrame.from_records(master_list) + + low = 0.0 # change these to set the range + high = 0.95 + + self.filtered_tickers = self.frame[self.frame.AvgVol.between(*self.frame.AvgVol.quantile([low, high]).tolist())].Ticker + self.filtered_tickers.to_csv('filtered_tickers.csv',index=False) + + print("filtered tickers by avg volume (0-95th percentile)") + + def parallel_getData_wrapper(self,x,master_list): + d = self.scanner.getData(x) + if d.empty: + return + else: + data_mean = np.mean(d) + new_row = {'Ticker':x, 'AvgVol':data_mean.values[0]} + master_list.append(new_row) + +if __name__ == "__main__": + manager = multiprocessing.Manager() + master_list = manager.list() + tmp = stockFilter(manager,master_list) \ No newline at end of file diff --git a/templates/dynamic.html b/templates/dynamic.html new file mode 100644 index 00000000..022945d0 --- /dev/null +++ b/templates/dynamic.html @@ -0,0 +1,55 @@ + + + + +
+Get alerted when a stock's volume exceeds 10 standard deviations from the mean within the last 3 days. Find the next $KODK.
+Ticker | +Date | +Volume | +
---|---|---|
{{stonk['Ticker']}} | +{{stonk['TargetDate']}} | +{{stonk['TargetVolume']}} | +