UNPKG

finviz-screener

Version:
1,852 lines (1,783 loc) 101 kB
'use strict' const FinVizScreener = require('./base') const signalsMap = { 'Top Gainers': 'ta_topgainers', 'Top Losers': 'ta_toplosers', 'New High': 'ta_newhigh', 'New Low': 'ta_newlow', 'Most Volatile': 'ta_mostvolatile', 'Most Active': 'ta_mostactive', 'Unusual Volume': 'ta_unusualvolume', 'Overbought': 'ta_overbought', 'Oversold': 'ta_oversold', 'Downgrades': 'n_downgrades', 'Upgrades': 'n_upgrades', 'Earnings Before': 'n_earningsbefore', 'Earnings After': 'n_earningsafter', 'Recent Insider Buying': 'it_latestbuys', 'Recent Insider Selling': 'it_latestsales', 'Major News': 'n_majornews', 'Horizontal S/R': 'ta_p_horizontal', 'TL Resistance': 'ta_p_tlresistance', 'TL Support': 'ta_p_tlsupport', 'Wedge Up': 'ta_p_wedgeup', 'Wedge Down': 'ta_p_wedgedown', 'Triangle Ascending': 'ta_p_wedgeresistance', 'Triangle Descending': 'ta_p_wedgesupport', 'Wedge': 'ta_p_wedge', 'Channel Up': 'ta_p_channelup', 'Channel Down': 'ta_p_channeldown', 'Channel': 'ta_p_channel', 'Double Top': 'ta_p_doubletop', 'Double Bottom': 'ta_p_doublebottom', 'Multiple Top': 'ta_p_multipletop', 'Multiple Bottom': 'ta_p_multiplebottom', 'Head & Shoulders': 'ta_p_headandshoulders', 'Head & Shoulders Inverse': 'ta_p_headandshouldersinv' } const exchangeMap = { 'AMEX': 'amex', 'NASDAQ': 'nasd', 'NYSE': 'nyse' } const indexMap = { 'S&P 500': 'sp500', 'DJIA': 'dji' } const sectorMap = { 'Basic Materials': 'basicmaterials', 'Communication Services': 'communicationservices', 'Consumer Cyclical': 'consumercyclical', 'Consumer Defensive': 'consumerdefensive', 'Energy': 'energy', 'Financial': 'financial', 'Healthcare': 'healthcare', 'Industrials': 'industrials', 'Real Estate': 'realestate', 'Technology': 'technology', 'Utilities': 'utilities' } const industryMap = { 'Stocks only (ex-Funds)': 'stocksonly', 'Exchange Traded Fund': 'exchangetradedfund', 'Advertising Agencies': 'advertisingagencies', 'Aerospace & Defense': 'aerospacedefense', 'Agricultural Inputs': 'agriculturalinputs', 'Airlines': 'airlines', 'Airports & Air Services': 'airportsairservices', 'Aluminum': 'aluminum', 'Apparel Manufacturing': 'apparelmanufacturing', 'Apparel Retail': 'apparelretail', 'Asset Management': 'assetmanagement', 'Auto Manufacturers': 'automanufacturers', 'Auto Parts': 'autoparts', 'Auto & Truck Dealerships': 'autotruckdealerships', 'Banks - Diversified': 'banksdiversified', 'Banks - Regional': 'banksregional', 'Beverages - Brewers': 'beveragesbrewers', 'Beverages - Non-Alcoholic': 'beveragesnonalcoholic', 'Beverages - Wineries & Distilleries': 'beverageswineriesdistilleries', 'Biotechnology': 'biotechnology', 'Broadcasting': 'broadcasting', 'Building Materials': 'buildingmaterials', 'Building Products & Equipment': 'buildingproductsequipment', 'Business Equipment & Supplies': 'businessequipmentsupplies', 'Capital Markets': 'capitalmarkets', 'Chemicals': 'chemicals', 'Closed-End Fund - Debt': 'closedendfunddebt', 'Closed-End Fund - Equity': 'closedendfundequity', 'Closed-End Fund - Foreign': 'closedendfundforeign', 'Coking Coal': 'cokingcoal', 'Communication Equipment': 'communicationequipment', 'Computer Hardware': 'computerhardware', 'Confectioners': 'confectioners', 'Conglomerates': 'conglomerates', 'Consulting Services': 'consultingservices', 'Consumer Electronics': 'consumerelectronics', 'Copper': 'copper', 'Credit Services': 'creditservices', 'Department Stores': 'departmentstores', 'Diagnostics & Research': 'diagnosticsresearch', 'Discount Stores': 'discountstores', 'Drug Manufacturers - General': 'drugmanufacturersgeneral', 'Drug Manufacturers - Specialty & Generic': 'drugmanufacturersspecialtygeneric', 'Education & Training Services': 'educationtrainingservices', 'Electrical Equipment & Parts': 'electricalequipmentparts', 'Electronic Components': 'electroniccomponents', 'Electronic Gaming & Multimedia': 'electronicgamingmultimedia', 'Electronics & Computer Distribution': 'electronicscomputerdistribution', 'Engineering & Construction': 'engineeringconstruction', 'Entertainment': 'entertainment', 'Farm & Heavy Construction Machinery': 'farmheavyconstructionmachinery', 'Farm Products': 'farmproducts', 'Financial Conglomerates': 'financialconglomerates', 'Financial Data & Stock Exchanges': 'financialdatastockexchanges', 'Food Distribution': 'fooddistribution', 'Footwear & Accessories': 'footwearaccessories', 'Furnishings, Fixtures & Appliances': 'furnishingsfixturesappliances', 'Gambling': 'gambling', 'Gold': 'gold', 'Grocery Stores': 'grocerystores', 'Healthcare Plans': 'healthcareplans', 'Health Information Services': 'healthinformationservices', 'Home Improvement Retail': 'homeimprovementretail', 'Household & Personal Products': 'householdpersonalproducts', 'Industrial Distribution': 'industrialdistribution', 'Information Technology Services': 'informationtechnologyservices', 'Infrastructure Operations': 'infrastructureoperations', 'Insurance Brokers': 'insurancebrokers', 'Insurance - Diversified': 'insurancediversified', 'Insurance - Life': 'insurancelife', 'Insurance - Property & Casualty': 'insurancepropertycasualty', 'Insurance - Reinsurance': 'insurancereinsurance', 'Insurance - Specialty': 'insurancespecialty', 'Integrated Freight & Logistics': 'integratedfreightlogistics', 'Internet Content & Information': 'internetcontentinformation', 'Internet Retail': 'internetretail', 'Leisure': 'leisure', 'Lodging': 'lodging', 'Lumber & Wood Production': 'lumberwoodproduction', 'Luxury Goods': 'luxurygoods', 'Marine Shipping': 'marineshipping', 'Medical Care Facilities': 'medicalcarefacilities', 'Medical Devices': 'medicaldevices', 'Medical Distribution': 'medicaldistribution', 'Medical Instruments & Supplies': 'medicalinstrumentssupplies', 'Metal Fabrication': 'metalfabrication', 'Mortgage Finance': 'mortgagefinance', 'Oil & Gas Drilling': 'oilgasdrilling', 'Oil & Gas E&P': 'oilgasep', 'Oil & Gas Equipment & Services': 'oilgasequipmentservices', 'Oil & Gas Integrated': 'oilgasintegrated', 'Oil & Gas Midstream': 'oilgasmidstream', 'Oil & Gas Refining & Marketing': 'oilgasrefiningmarketing', 'Other Industrial Metals & Mining': 'otherindustrialmetalsmining', 'Other Precious Metals & Mining': 'otherpreciousmetalsmining', 'Packaged Foods': 'packagedfoods', 'Packaging & Containers': 'packagingcontainers', 'Paper & Paper Products': 'paperpaperproducts', 'Personal Services': 'personalservices', 'Pharmaceutical Retailers': 'pharmaceuticalretailers', 'Pollution & Treatment Controls': 'pollutiontreatmentcontrols', 'Publishing': 'publishing', 'Railroads': 'railroads', 'Real Estate - Development': 'realestatedevelopment', 'Real Estate - Diversified': 'realestatediversified', 'Real Estate Services': 'realestateservices', 'Recreational Vehicles': 'recreationalvehicles', 'REIT - Diversified': 'reitdiversified', 'REIT - Healthcare Facilities': 'reithealthcarefacilities', 'REIT - Hotel & Motel': 'reithotelmotel', 'REIT - Industrial': 'reitindustrial', 'REIT - Mortgage': 'reitmortgage', 'REIT - Office': 'reitoffice', 'REIT - Residential': 'reitresidential', 'REIT - Retail': 'reitretail', 'REIT - Specialty': 'reitspecialty', 'Rental & Leasing Services': 'rentalleasingservices', 'Residential Construction': 'residentialconstruction', 'Resorts & Casinos': 'resortscasinos', 'Restaurants': 'restaurants', 'Scientific & Technical Instruments': 'scientifictechnicalinstruments', 'Security & Protection Services': 'securityprotectionservices', 'Semiconductor Equipment & Materials': 'semiconductorequipmentmaterials', 'Semiconductors': 'semiconductors', 'Shell Companies': 'shellcompanies', 'Silver': 'silver', 'Software - Application': 'softwareapplication', 'Software - Infrastructure': 'softwareinfrastructure', 'Solar': 'solar', 'Specialty Business Services': 'specialtybusinessservices', 'Specialty Chemicals': 'specialtychemicals', 'Specialty Industrial Machinery': 'specialtyindustrialmachinery', 'Specialty Retail': 'specialtyretail', 'Staffing & Employment Services': 'staffingemploymentservices', 'Steel': 'steel', 'Telecom Services': 'telecomservices', 'Textile Manufacturing': 'textilemanufacturing', 'Thermal Coal': 'thermalcoal', 'Tobacco': 'tobacco', 'Tools & Accessories': 'toolsaccessories', 'Travel Services': 'travelservices', 'Trucking': 'trucking', 'Uranium': 'uranium', 'Utilities - Diversified': 'utilitiesdiversified', 'Utilities - Independent Power Producers': 'utilitiesindependentpowerproducers', 'Utilities - Regulated Electric': 'utilitiesregulatedelectric', 'Utilities - Regulated Gas': 'utilitiesregulatedgas', 'Utilities - Regulated Water': 'utilitiesregulatedwater', 'Utilities - Renewable': 'utilitiesrenewable', 'Waste Management': 'wastemanagement' } const countryMap = { 'USA': 'usa', 'Foreign (ex-USA)': 'notusa', 'Asia': 'asia', 'Europe': 'europe', 'Latin America': 'latinamerica', 'BRIC': 'bric', 'Argentina': 'argentina', 'Australia': 'australia', 'Bahamas': 'bahamas', 'Belgium': 'belgium', 'BeNeLux': 'benelux', 'Bermuda': 'bermuda', 'Brazil': 'brazil', 'Canada': 'canada', 'Cayman Islands': 'caymanislands', 'Chile': 'chile', 'China': 'china', 'China & Hong Kong': 'chinahongkong', 'Colombia': 'colombia', 'Cyprus': 'cyprus', 'Denmark': 'denmark', 'Finland': 'finland', 'France': 'france', 'Germany': 'germany', 'Greece': 'greece', 'Hong Kong': 'hongkong', 'Hungary': 'hungary', 'Iceland': 'iceland', 'India': 'india', 'Indonesia': 'indonesia', 'Ireland': 'ireland', 'Israel': 'israel', 'Italy': 'italy', 'Japan': 'japan', 'Kazakhstan': 'kazakhstan', 'Luxembourg': 'luxembourg', 'Malaysia': 'malaysia', 'Malta': 'malta', 'Mexico': 'mexico', 'Monaco': 'monaco', 'Netherlands': 'netherlands', 'New Zealand': 'newzealand', 'Norway': 'norway', 'Panama': 'panama', 'Peru': 'peru', 'Philippines': 'philippines', 'Portugal': 'portugal', 'Russia': 'russia', 'Singapore': 'singapore', 'South Africa': 'southafrica', 'South Korea': 'southkorea', 'Spain': 'spain', 'Sweden': 'sweden', 'Switzerland': 'switzerland', 'Taiwan': 'taiwan', 'Turkey': 'turkey', 'United Arab Emirates': 'unitedarabemirates', 'United Kingdom': 'unitedkingdom', 'Uruguay': 'uruguay' } const marketCapMap = { 'Mega ($200bln and more)': 'mega', 'Large ($10bln to $200bln)': 'large', 'Mid ($2bln to $10bln)': 'mid', 'Small ($300mln to $2bln)': 'small', 'Micro ($50mln to $300mln)': 'micro', 'Nano (under $50mln)': 'nano', '+Large (over $10bln)': 'largeover', '+Mid (over $2bln)': 'midover', '+Small (over $300mln)': 'smallover', '+Micro (over $50mln)': 'microover', '-Large (under $200bln)': 'largeunder', '-Mid (under $10bln)': 'midunder', '-Small (under $2bln)': 'smallunder', '-Micro (under $300mln)': 'microunder' } const peMap = { 'Low (<15)': 'low', 'Profitable (>0)': 'profitable', 'High (>50)': 'high', 'Under 5': 'u5', 'Under 10': 'u10', 'Under 15': 'u15', 'Under 20': 'u20', 'Under 25': 'u25', 'Under 30': 'u30', 'Under 35': 'u35', 'Under 40': 'u40', 'Under 45': 'u45', 'Under 50': 'u50', 'Over 5': 'o5', 'Over 10': 'o10', 'Over 15': 'o15', 'Over 20': 'o20', 'Over 25': 'o25', 'Over 30': 'o30', 'Over 35': 'o35', 'Over 40': 'o40', 'Over 45': 'o45', 'Over 50': 'o50' } const forwardPeMap = { 'Low (<15)': 'low', 'Profitable (>0)': 'profitable', 'High (>50)': 'high', 'Under 5': 'u5', 'Under 10': 'u10', 'Under 15': 'u15', 'Under 20': 'u20', 'Under 25': 'u25', 'Under 30': 'u30', 'Under 35': 'u35', 'Under 40': 'u40', 'Under 45': 'u45', 'Under 50': 'u50', 'Over 5': 'o5', 'Over 10': 'o10', 'Over 15': 'o15', 'Over 20': 'o20', 'Over 25': 'o25', 'Over 30': 'o30', 'Over 35': 'o35', 'Over 40': 'o40', 'Over 45': 'o45', 'Over 50': 'o50' } const pegMap = { 'Low (<1)': 'low', 'High (>2)': 'high', 'Under 1': 'u1', 'Under 2': 'u2', 'Under 3': 'u3', 'Over 1': 'o1', 'Over 2': 'o2', 'Over 3': 'o3' } const psMap = { 'Low (<1)': 'low', 'High (>10)': 'high', 'Under 1': 'u1', 'Under 2': 'u2', 'Under 3': 'u3', 'Under 4': 'u4', 'Under 5': 'u5', 'Under 6': 'u6', 'Under 7': 'u7', 'Under 8': 'u8', 'Under 9': 'u9', 'Under 10': 'u10', 'Over 1': 'o1', 'Over 2': 'o2', 'Over 3': 'o3', 'Over 4': 'o4', 'Over 5': 'o5', 'Over 6': 'o6', 'Over 7': 'o7', 'Over 8': 'o8', 'Over 9': 'o9', 'Over 10': 'o10' } const pbMap = { 'Low (<1)': 'low', 'High (>5)': 'high', 'Under 1': 'u1', 'Under 2': 'u2', 'Under 3': 'u3', 'Under 4': 'u4', 'Under 5': 'u5', 'Under 6': 'u6', 'Under 7': 'u7', 'Under 8': 'u8', 'Under 9': 'u9', 'Under 10': 'u10', 'Over 1': 'o1', 'Over 2': 'o2', 'Over 3': 'o3', 'Over 4': 'o4', 'Over 5': 'o5', 'Over 6': 'o6', 'Over 7': 'o7', 'Over 8': 'o8', 'Over 9': 'o9', 'Over 10': 'o10' } const priceCashMap = { 'Low (<3)': 'low', 'High (>50)': 'high', 'Under 1': 'u1', 'Under 2': 'u2', 'Under 3': 'u3', 'Under 4': 'u4', 'Under 5': 'u5', 'Under 6': 'u6', 'Under 7': 'u7', 'Under 8': 'u8', 'Under 9': 'u9', 'Under 10': 'u10', 'Over 1': 'o1', 'Over 2': 'o2', 'Over 3': 'o3', 'Over 4': 'o4', 'Over 5': 'o5', 'Over 6': 'o6', 'Over 7': 'o7', 'Over 8': 'o8', 'Over 9': 'o9', 'Over 10': 'o10', 'Over 20': 'o20', 'Over 30': 'o30', 'Over 40': 'o40', 'Over 50': 'o50' } const priceFreeCashFlowMap = { 'Low (<15)': 'low', 'High (>50)': 'high', 'Under 5': 'u5', 'Under 10': 'u10', 'Under 15': 'u15', 'Under 20': 'u20', 'Under 25': 'u25', 'Under 30': 'u30', 'Under 35': 'u35', 'Under 40': 'u40', 'Under 45': 'u45', 'Under 50': 'u50', 'Under 60': 'u60', 'Under 70': 'u70', 'Under 80': 'u80', 'Under 90': 'u90', 'Under 100': 'u100', 'Over 5': 'o5', 'Over 10': 'o10', 'Over 15': 'o15', 'Over 20': 'o20', 'Over 25': 'o25', 'Over 30': 'o30', 'Over 35': 'o35', 'Over 40': 'o40', 'Over 45': 'o45', 'Over 50': 'o50', 'Over 60': 'o60', 'Over 70': 'o70', 'Over 80': 'o80', 'Over 90': 'o90', 'Over 100': 'o100' } const epsGrowththisYearMap = { 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Positive Low (0-10%)': 'poslow', 'High (>25%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const epsGrowthnextYearMap = { 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Positive Low (0-10%)': 'poslow', 'High (>25%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const epsGrowthpast5YearsMap = { 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Positive Low (0-10%)': 'poslow', 'High (>25%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const epsGrowthnext5YearsMap = { 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Positive Low (<10%)': 'poslow', 'High (>25%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const salesGrowthpast5YearsMap = { 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Positive Low (0-10%)': 'poslow', 'High (>25%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const epsGrowthqtrOverQtrMap = { 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Positive Low (0-10%)': 'poslow', 'High (>25%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const salesGrowthqtrOverQtrMap = { 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Positive Low (0-10%)': 'poslow', 'High (>25%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const dividendYieldMap = { 'None (0%)': 'none', 'Positive (>0%)': 'pos', 'High (>5%)': 'high', 'Very High (>10%)': 'veryhigh', 'Over 1%': 'o1', 'Over 2%': 'o2', 'Over 3%': 'o3', 'Over 4%': 'o4', 'Over 5%': 'o5', 'Over 6%': 'o6', 'Over 7%': 'o7', 'Over 8%': 'o8', 'Over 9%': 'o9', 'Over 10%': 'o10' } const returnOnAssetsMap = { 'Positive (>0%)': 'pos', 'Negative (<0%)': 'neg', 'Very Positive (>15%)': 'verypos', 'Very Negative (<-15%)': 'veryneg', 'Under -50%': 'u-50', 'Under -45%': 'u-45', 'Under -40%': 'u-40', 'Under -35%': 'u-35', 'Under -30%': 'u-30', 'Under -25%': 'u-25', 'Under -20%': 'u-20', 'Under -15%': 'u-15', 'Under -10%': 'u-10', 'Under -5%': 'u-5', 'Over +5%': 'o5', 'Over +10%': 'o10', 'Over +15%': 'o15', 'Over +20%': 'o20', 'Over +25%': 'o25', 'Over +30%': 'o30', 'Over +35%': 'o35', 'Over +40%': 'o40', 'Over +45%': 'o45', 'Over +50%': 'o50' } const returnOnEquityMap = { 'Positive (>0%)': 'pos', 'Negative (<0%)': 'neg', 'Very Positive (>30%)': 'verypos', 'Very Negative (<-15%)': 'veryneg', 'Under -50%': 'u-50', 'Under -45%': 'u-45', 'Under -40%': 'u-40', 'Under -35%': 'u-35', 'Under -30%': 'u-30', 'Under -25%': 'u-25', 'Under -20%': 'u-20', 'Under -15%': 'u-15', 'Under -10%': 'u-10', 'Under -5%': 'u-5', 'Over +5%': 'o5', 'Over +10%': 'o10', 'Over +15%': 'o15', 'Over +20%': 'o20', 'Over +25%': 'o25', 'Over +30%': 'o30', 'Over +35%': 'o35', 'Over +40%': 'o40', 'Over +45%': 'o45', 'Over +50%': 'o50' } const returnOnInvestmentMap = { 'Positive (>0%)': 'pos', 'Negative (<0%)': 'neg', 'Very Positive (>25%)': 'verypos', 'Very Negative (<-10%)': 'veryneg', 'Under -50%': 'u-50', 'Under -45%': 'u-45', 'Under -40%': 'u-40', 'Under -35%': 'u-35', 'Under -30%': 'u-30', 'Under -25%': 'u-25', 'Under -20%': 'u-20', 'Under -15%': 'u-15', 'Under -10%': 'u-10', 'Under -5%': 'u-5', 'Over +5%': 'o5', 'Over +10%': 'o10', 'Over +15%': 'o15', 'Over +20%': 'o20', 'Over +25%': 'o25', 'Over +30%': 'o30', 'Over +35%': 'o35', 'Over +40%': 'o40', 'Over +45%': 'o45', 'Over +50%': 'o50' } const currentRatioMap = { 'High (>3)': 'high', 'Low (<1)': 'low', 'Under 1': 'u1', 'Under 0.5': 'u0.5', 'Over 0.5': 'o0.5', 'Over 1': 'o1', 'Over 1.5': 'o1.5', 'Over 2': 'o2', 'Over 3': 'o3', 'Over 4': 'o4', 'Over 5': 'o5', 'Over 10': 'o10' } const quickRatioMap = { 'High (>3)': 'high', 'Low (<0.5)': 'low', 'Under 1': 'u1', 'Under 0.5': 'u0.5', 'Over 0.5': 'o0.5', 'Over 1': 'o1', 'Over 1.5': 'o1.5', 'Over 2': 'o2', 'Over 3': 'o3', 'Over 4': 'o4', 'Over 5': 'o5', 'Over 10': 'o10' } const ltDebtEquityMap = { 'High (>0.5)': 'high', 'Low (<0.1)': 'low', 'Under 1': 'u1', 'Under 0.9': 'u0.9', 'Under 0.8': 'u0.8', 'Under 0.7': 'u0.7', 'Under 0.6': 'u0.6', 'Under 0.5': 'u0.5', 'Under 0.4': 'u0.4', 'Under 0.3': 'u0.3', 'Under 0.2': 'u0.2', 'Under 0.1': 'u0.1', 'Over 0.1': 'o0.1', 'Over 0.2': 'o0.2', 'Over 0.3': 'o0.3', 'Over 0.4': 'o0.4', 'Over 0.5': 'o0.5', 'Over 0.6': 'o0.6', 'Over 0.7': 'o0.7', 'Over 0.8': 'o0.8', 'Over 0.9': 'o0.9', 'Over 1': 'o1' } const debtEquityMap = { 'High (>0.5)': 'high', 'Low (<0.1)': 'low', 'Under 1': 'u1', 'Under 0.9': 'u0.9', 'Under 0.8': 'u0.8', 'Under 0.7': 'u0.7', 'Under 0.6': 'u0.6', 'Under 0.5': 'u0.5', 'Under 0.4': 'u0.4', 'Under 0.3': 'u0.3', 'Under 0.2': 'u0.2', 'Under 0.1': 'u0.1', 'Over 0.1': 'o0.1', 'Over 0.2': 'o0.2', 'Over 0.3': 'o0.3', 'Over 0.4': 'o0.4', 'Over 0.5': 'o0.5', 'Over 0.6': 'o0.6', 'Over 0.7': 'o0.7', 'Over 0.8': 'o0.8', 'Over 0.9': 'o0.9', 'Over 1': 'o1' } const grossMarginMap = { 'Positive (>0%)': 'pos', 'Negative (<0%)': 'neg', 'High (>50%)': 'high', 'Under 90%': 'u90', 'Under 80%': 'u80', 'Under 70%': 'u70', 'Under 60%': 'u60', 'Under 50%': 'u50', 'Under 45%': 'u45', 'Under 40%': 'u40', 'Under 35%': 'u35', 'Under 30%': 'u30', 'Under 25%': 'u25', 'Under 20%': 'u20', 'Under 15%': 'u15', 'Under 10%': 'u10', 'Under 5%': 'u5', 'Under 0%': 'u0', 'Under -10%': 'u-10', 'Under -20%': 'u-20', 'Under -30%': 'u-30', 'Under -50%': 'u-50', 'Under -70%': 'u-70', 'Under -100%': 'u-100', 'Over 0%': 'o0', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30', 'Over 35%': 'o35', 'Over 40%': 'o40', 'Over 45%': 'o45', 'Over 50%': 'o50', 'Over 60%': 'o60', 'Over 70%': 'o70', 'Over 80%': 'o80', 'Over 90%': 'o90' } const operatingMarginMap = { 'Positive (>0%)': 'pos', 'Negative (<0%)': 'neg', 'Very Negative (<-20%)': 'veryneg', 'High (>25%)': 'high', 'Under 90%': 'u90', 'Under 80%': 'u80', 'Under 70%': 'u70', 'Under 60%': 'u60', 'Under 50%': 'u50', 'Under 45%': 'u45', 'Under 40%': 'u40', 'Under 35%': 'u35', 'Under 30%': 'u30', 'Under 25%': 'u25', 'Under 20%': 'u20', 'Under 15%': 'u15', 'Under 10%': 'u10', 'Under 5%': 'u5', 'Under 0%': 'u0', 'Under -10%': 'u-10', 'Under -20%': 'u-20', 'Under -30%': 'u-30', 'Under -50%': 'u-50', 'Under -70%': 'u-70', 'Under -100%': 'u-100', 'Over 0%': 'o0', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30', 'Over 35%': 'o35', 'Over 40%': 'o40', 'Over 45%': 'o45', 'Over 50%': 'o50', 'Over 60%': 'o60', 'Over 70%': 'o70', 'Over 80%': 'o80', 'Over 90%': 'o90' } const netProfitMarginMap = { 'Positive (>0%)': 'pos', 'Negative (<0%)': 'neg', 'Very Negative (<-20%)': 'veryneg', 'High (>20%)': 'high', 'Under 90%': 'u90', 'Under 80%': 'u80', 'Under 70%': 'u70', 'Under 60%': 'u60', 'Under 50%': 'u50', 'Under 45%': 'u45', 'Under 40%': 'u40', 'Under 35%': 'u35', 'Under 30%': 'u30', 'Under 25%': 'u25', 'Under 20%': 'u20', 'Under 15%': 'u15', 'Under 10%': 'u10', 'Under 5%': 'u5', 'Under 0%': 'u0', 'Under -10%': 'u-10', 'Under -20%': 'u-20', 'Under -30%': 'u-30', 'Under -50%': 'u-50', 'Under -70%': 'u-70', 'Under -100%': 'u-100', 'Over 0%': 'o0', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30', 'Over 35%': 'o35', 'Over 40%': 'o40', 'Over 45%': 'o45', 'Over 50%': 'o50', 'Over 60%': 'o60', 'Over 70%': 'o70', 'Over 80%': 'o80', 'Over 90%': 'o90' } const payoutRatioMap = { 'None (0%)': 'none', 'Positive (>0%)': 'pos', 'Low (<20%)': 'low', 'High (>50%)': 'high', 'Over 0%': 'o0', 'Over 10%': 'o10', 'Over 20%': 'o20', 'Over 30%': 'o30', 'Over 40%': 'o40', 'Over 50%': 'o50', 'Over 60%': 'o60', 'Over 70%': 'o70', 'Over 80%': 'o80', 'Over 90%': 'o90', 'Over 100%': 'o100', 'Under 10%': 'u10', 'Under 20%': 'u20', 'Under 30%': 'u30', 'Under 40%': 'u40', 'Under 50%': 'u50', 'Under 60%': 'u60', 'Under 70%': 'u70', 'Under 80%': 'u80', 'Under 90%': 'u90', 'Under 100%': 'u100' } const insiderOwnershipMap = { 'Low (<5%)': 'low', 'High (>30%)': 'high', 'Very High (>50%)': 'veryhigh', 'Over 10%': 'o10', 'Over 20%': 'o20', 'Over 30%': 'o30', 'Over 40%': 'o40', 'Over 50%': 'o50', 'Over 60%': 'o60', 'Over 70%': 'o70', 'Over 80%': 'o80', 'Over 90%': 'o90' } const insiderTransactionsMap = { 'Very Negative (<20%)': 'veryneg', 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Very Positive (>20%)': 'verypos', 'Under -90%': 'u-90', 'Under -80%': 'u-80', 'Under -70%': 'u-70', 'Under -60%': 'u-60', 'Under -50%': 'u-50', 'Under -45%': 'u-45', 'Under -40%': 'u-40', 'Under -35%': 'u-35', 'Under -30%': 'u-30', 'Under -25%': 'u-25', 'Under -20%': 'u-20', 'Under -15%': 'u-15', 'Under -10%': 'u-10', 'Under -5%': 'u-5', 'Over +5%': 'o5', 'Over +10%': 'o10', 'Over +15%': 'o15', 'Over +20%': 'o20', 'Over +25%': 'o25', 'Over +30%': 'o30', 'Over +35%': 'o35', 'Over +40%': 'o40', 'Over +45%': 'o45', 'Over +50%': 'o50', 'Over +60%': 'o60', 'Over +70%': 'o70', 'Over +80%': 'o80', 'Over +90%': 'o90' } const institutionalOwnershipMap = { 'Low (<5%)': 'low', 'High (>90%)': 'high', 'Under 90%': 'u90', 'Under 80%': 'u80', 'Under 70%': 'u70', 'Under 60%': 'u60', 'Under 50%': 'u50', 'Under 40%': 'u40', 'Under 30%': 'u30', 'Under 20%': 'u20', 'Under 10%': 'u10', 'Over 10%': 'o10', 'Over 20%': 'o20', 'Over 30%': 'o30', 'Over 40%': 'o40', 'Over 50%': 'o50', 'Over 60%': 'o60', 'Over 70%': 'o70', 'Over 80%': 'o80', 'Over 90%': 'o90' } const institutionalTransactionsMap = { 'Very Negative (<20%)': 'veryneg', 'Negative (<0%)': 'neg', 'Positive (>0%)': 'pos', 'Very Positive (>20%)': 'verypos', 'Under -50%': 'u-50', 'Under -45%': 'u-45', 'Under -40%': 'u-40', 'Under -35%': 'u-35', 'Under -30%': 'u-30', 'Under -25%': 'u-25', 'Under -20%': 'u-20', 'Under -15%': 'u-15', 'Under -10%': 'u-10', 'Under -5%': 'u-5', 'Over +5%': 'o5', 'Over +10%': 'o10', 'Over +15%': 'o15', 'Over +20%': 'o20', 'Over +25%': 'o25', 'Over +30%': 'o30', 'Over +35%': 'o35', 'Over +40%': 'o40', 'Over +45%': 'o45', 'Over +50%': 'o50' } const floatShortMap = { 'Low (<5%)': 'low', 'High (>20%)': 'high', 'Under 5%': 'u5', 'Under 10%': 'u10', 'Under 15%': 'u15', 'Under 20%': 'u20', 'Under 25%': 'u25', 'Under 30%': 'u30', 'Over 5%': 'o5', 'Over 10%': 'o10', 'Over 15%': 'o15', 'Over 20%': 'o20', 'Over 25%': 'o25', 'Over 30%': 'o30' } const analystRecomMap = { 'Strong Buy (1)': 'strongbuy', 'Buy or better': 'buybetter', 'Buy': 'buy', 'Hold or better': 'holdbetter', 'Hold': 'hold', 'Hold or worse': 'holdworse', 'Sell': 'sell', 'Sell or worse': 'sellworse', 'Strong Sell (5)': 'strongsell' } const optionShortMap = { 'Optionable': 'option', 'Shortable': 'short', 'Optionable and shortable': 'optionshort' } const earningsDateMap = { 'Today': 'today', 'Today Before Market Open': 'todaybefore', 'Today After Market Close': 'todayafter', 'Tomorrow': 'tomorrow', 'Tomorrow Before Market Open': 'tomorrowbefore', 'Tomorrow After Market Close': 'tomorrowafter', 'Yesterday': 'yesterday', 'Yesterday Before Market Open': 'yesterdaybefore', 'Yesterday After Market Close': 'yesterdayafter', 'Next 5 Days': 'nextdays5', 'Previous 5 Days': 'prevdays5', 'This Week': 'thisweek', 'Next Week': 'nextweek', 'Previous Week': 'prevweek', 'This Month': 'thismonth' } const performanceMap = { 'Today Up': 'dup', 'Today Down': 'ddown', 'Today -15%': 'd15u', 'Today -10%': 'd10u', 'Today -5%': 'd5u', 'Today +5%': 'd5o', 'Today +10%': 'd10o', 'Today +15%': 'd15o', 'Week -30%': '1w30u', 'Week -20%': '1w20u', 'Week -10%': '1w10u', 'Week Down': '1wdown', 'Week Up': '1wup', 'Week +10%': '1w10o', 'Week +20%': '1w20o', 'Week +30%': '1w30o', 'Month -50%': '4w50u', 'Month -30%': '4w30u', 'Month -20%': '4w20u', 'Month -10%': '4w10u', 'Month Down': '4wdown', 'Month Up': '4wup', 'Month +10%': '4w10o', 'Month +20%': '4w20o', 'Month +30%': '4w30o', 'Month +50%': '4w50o', 'Quarter -50%': '13w50u', 'Quarter -30%': '13w30u', 'Quarter -20%': '13w20u', 'Quarter -10%': '13w10u', 'Quarter Down': '13wdown', 'Quarter Up': '13wup', 'Quarter +10%': '13w10o', 'Quarter +20%': '13w20o', 'Quarter +30%': '13w30o', 'Quarter +50%': '13w50o', 'Half -75%': '26w75u', 'Half -50%': '26w50u', 'Half -30%': '26w30u', 'Half -20%': '26w20u', 'Half -10%': '26w10u', 'Half Down': '26wdown', 'Half Up': '26wup', 'Half +10%': '26w10o', 'Half +20%': '26w20o', 'Half +30%': '26w30o', 'Half +50%': '26w50o', 'Half +100%': '26w100o', 'Year -75%': '52w75u', 'Year -50%': '52w50u', 'Year -30%': '52w30u', 'Year -20%': '52w20u', 'Year -10%': '52w10u', 'Year Down': '52wdown', 'Year Up': '52wup', 'Year +10%': '52w10o', 'Year +20%': '52w20o', 'Year +30%': '52w30o', 'Year +50%': '52w50o', 'Year +100%': '52w100o', 'Year +200%': '52w200o', 'Year +300%': '52w300o', 'Year +500%': '52w500o', 'YTD -75%': 'ytd75u', 'YTD -50%': 'ytd50u', 'YTD -30%': 'ytd30u', 'YTD -20%': 'ytd20u', 'YTD -10%': 'ytd10u', 'YTD -5%': 'ytd5u', 'YTD Down': 'ytddown', 'YTD Up': 'ytdup', 'YTD +5%': 'ytd5o', 'YTD +10%': 'ytd10o', 'YTD +20%': 'ytd20o', 'YTD +30%': 'ytd30o', 'YTD +50%': 'ytd50o', 'YTD +100%': 'ytd100o' } const performance2Map = { 'Today Up': 'dup', 'Today Down': 'ddown', 'Today -15%': 'd15u', 'Today -10%': 'd10u', 'Today -5%': 'd5u', 'Today +5%': 'd5o', 'Today +10%': 'd10o', 'Today +15%': 'd15o', 'Week -30%': '1w30u', 'Week -20%': '1w20u', 'Week -10%': '1w10u', 'Week Down': '1wdown', 'Week Up': '1wup', 'Week +10%': '1w10o', 'Week +20%': '1w20o', 'Week +30%': '1w30o', 'Month -50%': '4w50u', 'Month -30%': '4w30u', 'Month -20%': '4w20u', 'Month -10%': '4w10u', 'Month Down': '4wdown', 'Month Up': '4wup', 'Month +10%': '4w10o', 'Month +20%': '4w20o', 'Month +30%': '4w30o', 'Month +50%': '4w50o', 'Quarter -50%': '13w50u', 'Quarter -30%': '13w30u', 'Quarter -20%': '13w20u', 'Quarter -10%': '13w10u', 'Quarter Down': '13wdown', 'Quarter Up': '13wup', 'Quarter +10%': '13w10o', 'Quarter +20%': '13w20o', 'Quarter +30%': '13w30o', 'Quarter +50%': '13w50o', 'Half -75%': '26w75u', 'Half -50%': '26w50u', 'Half -30%': '26w30u', 'Half -20%': '26w20u', 'Half -10%': '26w10u', 'Half Down': '26wdown', 'Half Up': '26wup', 'Half +10%': '26w10o', 'Half +20%': '26w20o', 'Half +30%': '26w30o', 'Half +50%': '26w50o', 'Half +100%': '26w100o', 'Year -75%': '52w75u', 'Year -50%': '52w50u', 'Year -30%': '52w30u', 'Year -20%': '52w20u', 'Year -10%': '52w10u', 'Year Down': '52wdown', 'Year Up': '52wup', 'Year +10%': '52w10o', 'Year +20%': '52w20o', 'Year +30%': '52w30o', 'Year +50%': '52w50o', 'Year +100%': '52w100o', 'Year +200%': '52w200o', 'Year +300%': '52w300o', 'Year +500%': '52w500o', 'YTD -75%': 'ytd75u', 'YTD -50%': 'ytd50u', 'YTD -30%': 'ytd30u', 'YTD -20%': 'ytd20u', 'YTD -10%': 'ytd10u', 'YTD -5%': 'ytd5u', 'YTD Down': 'ytddown', 'YTD Up': 'ytdup', 'YTD +5%': 'ytd5o', 'YTD +10%': 'ytd10o', 'YTD +20%': 'ytd20o', 'YTD +30%': 'ytd30o', 'YTD +50%': 'ytd50o', 'YTD +100%': 'ytd100o' } const volatilityMap = { 'Week - Over 3%': 'wo3', 'Week - Over 4%': 'wo4', 'Week - Over 5%': 'wo5', 'Week - Over 6%': 'wo6', 'Week - Over 7%': 'wo7', 'Week - Over 8%': 'wo8', 'Week - Over 9%': 'wo9', 'Week - Over 10%': 'wo10', 'Week - Over 12%': 'wo12', 'Week - Over 15%': 'wo15', 'Month - Over 2%': 'mo2', 'Month - Over 3%': 'mo3', 'Month - Over 4%': 'mo4', 'Month - Over 5%': 'mo5', 'Month - Over 6%': 'mo6', 'Month - Over 7%': 'mo7', 'Month - Over 8%': 'mo8', 'Month - Over 9%': 'mo9', 'Month - Over 10%': 'mo10', 'Month - Over 12%': 'mo12', 'Month - Over 15%': 'mo15' } const rsi14Map = { 'Overbought (90)': 'ob90', 'Overbought (80)': 'ob80', 'Overbought (70)': 'ob70', 'Overbought (60)': 'ob60', 'Oversold (40)': 'os40', 'Oversold (30)': 'os30', 'Oversold (20)': 'os20', 'Oversold (10)': 'os10', 'Not Overbought (<60)': 'nob60', 'Not Overbought (<50)': 'nob50', 'Not Oversold (>50)': 'nos50', 'Not Oversold (>40)': 'nos40' } const gapMap = { 'Up': 'u', 'Up 0%': 'u0', 'Up 1%': 'u1', 'Up 2%': 'u2', 'Up 3%': 'u3', 'Up 4%': 'u4', 'Up 5%': 'u5', 'Up 6%': 'u6', 'Up 7%': 'u7', 'Up 8%': 'u8', 'Up 9%': 'u9', 'Up 10%': 'u10', 'Up 15%': 'u15', 'Up 20%': 'u20', 'Down': 'd', 'Down 0%': 'd0', 'Down 1%': 'd1', 'Down 2%': 'd2', 'Down 3%': 'd3', 'Down 4%': 'd4', 'Down 5%': 'd5', 'Down 6%': 'd6', 'Down 7%': 'd7', 'Down 8%': 'd8', 'Down 9%': 'd9', 'Down 10%': 'd10', 'Down 15%': 'd15', 'Down 20%': 'd20' } const twentyDaySimpleMovingAverageMap = { 'Price below SMA20': 'pb', 'Price 10% below SMA20': 'pb10', 'Price 20% below SMA20': 'pb20', 'Price 30% below SMA20': 'pb30', 'Price 40% below SMA20': 'pb40', 'Price 50% below SMA20': 'pb50', 'Price above SMA20': 'pa', 'Price 10% above SMA20': 'pa10', 'Price 20% above SMA20': 'pa20', 'Price 30% above SMA20': 'pa30', 'Price 40% above SMA20': 'pa40', 'Price 50% above SMA20': 'pa50', 'Price crossed SMA20': 'pc', 'Price crossed SMA20 above': 'pca', 'Price crossed SMA20 below': 'pcb', 'SMA20 crossed SMA50': 'cross50', 'SMA20 crossed SMA50 above': 'cross50a', 'SMA20 crossed SMA50 below': 'cross50b', 'SMA20 crossed SMA200': 'cross200', 'SMA20 crossed SMA200 above': 'cross200a', 'SMA20 crossed SMA200 below': 'cross200b', 'SMA20 above SMA50': 'sa50', 'SMA20 below SMA50': 'sb50', 'SMA20 above SMA200': 'sa200', 'SMA20 below SMA200': 'sb200' } const fiftyDaySimpleMovingAverageMap = { 'Price below SMA50': 'pb', 'Price 10% below SMA50': 'pb10', 'Price 20% below SMA50': 'pb20', 'Price 30% below SMA50': 'pb30', 'Price 40% below SMA50': 'pb40', 'Price 50% below SMA50': 'pb50', 'Price above SMA50': 'pa', 'Price 10% above SMA50': 'pa10', 'Price 20% above SMA50': 'pa20', 'Price 30% above SMA50': 'pa30', 'Price 40% above SMA50': 'pa40', 'Price 50% above SMA50': 'pa50', 'Price crossed SMA50': 'pc', 'Price crossed SMA50 above': 'pca', 'Price crossed SMA50 below': 'pcb', 'SMA50 crossed SMA20': 'cross20', 'SMA50 crossed SMA20 above': 'cross20a', 'SMA50 crossed SMA20 below': 'cross20b', 'SMA50 crossed SMA200': 'cross200', 'SMA50 crossed SMA200 above': 'cross200a', 'SMA50 crossed SMA200 below': 'cross200b', 'SMA50 above SMA20': 'sa20', 'SMA50 below SMA20': 'sb20', 'SMA50 above SMA200': 'sa200', 'SMA50 below SMA200': 'sb200' } const twoHundredDaySimpleMovingAverageMap = { 'Price below SMA200': 'pb', 'Price 10% below SMA200': 'pb10', 'Price 20% below SMA200': 'pb20', 'Price 30% below SMA200': 'pb30', 'Price 40% below SMA200': 'pb40', 'Price 50% below SMA200': 'pb50', 'Price 60% below SMA200': 'pb60', 'Price 70% below SMA200': 'pb70', 'Price 80% below SMA200': 'pb80', 'Price 90% below SMA200': 'pb90', 'Price above SMA200': 'pa', 'Price 10% above SMA200': 'pa10', 'Price 20% above SMA200': 'pa20', 'Price 30% above SMA200': 'pa30', 'Price 40% above SMA200': 'pa40', 'Price 50% above SMA200': 'pa50', 'Price 60% above SMA200': 'pa60', 'Price 70% above SMA200': 'pa70', 'Price 80% above SMA200': 'pa80', 'Price 90% above SMA200': 'pa90', 'Price 100% above SMA200': 'pa100', 'Price crossed SMA200': 'pc', 'Price crossed SMA200 above': 'pca', 'Price crossed SMA200 below': 'pcb', 'SMA200 crossed SMA20': 'cross20', 'SMA200 crossed SMA20 above': 'cross20a', 'SMA200 crossed SMA20 below': 'cross20b', 'SMA200 crossed SMA50': 'cross50', 'SMA200 crossed SMA50 above': 'cross50a', 'SMA200 crossed SMA50 below': 'cross50b', 'SMA200 above SMA20': 'sa20', 'SMA200 below SMA20': 'sb20', 'SMA200 above SMA50': 'sa50', 'SMA200 below SMA50': 'sb50' } const changeMap = { 'Up': 'u', 'Up 1%': 'u1', 'Up 2%': 'u2', 'Up 3%': 'u3', 'Up 4%': 'u4', 'Up 5%': 'u5', 'Up 6%': 'u6', 'Up 7%': 'u7', 'Up 8%': 'u8', 'Up 9%': 'u9', 'Up 10%': 'u10', 'Up 15%': 'u15', 'Up 20%': 'u20', 'Down': 'd', 'Down 1%': 'd1', 'Down 2%': 'd2', 'Down 3%': 'd3', 'Down 4%': 'd4', 'Down 5%': 'd5', 'Down 6%': 'd6', 'Down 7%': 'd7', 'Down 8%': 'd8', 'Down 9%': 'd9', 'Down 10%': 'd10', 'Down 15%': 'd15', 'Down 20%': 'd20' } const changeFromOpenMap = { 'Up': 'u', 'Up 1%': 'u1', 'Up 2%': 'u2', 'Up 3%': 'u3', 'Up 4%': 'u4', 'Up 5%': 'u5', 'Up 6%': 'u6', 'Up 7%': 'u7', 'Up 8%': 'u8', 'Up 9%': 'u9', 'Up 10%': 'u10', 'Up 15%': 'u15', 'Up 20%': 'u20', 'Down': 'd', 'Down 1%': 'd1', 'Down 2%': 'd2', 'Down 3%': 'd3', 'Down 4%': 'd4', 'Down 5%': 'd5', 'Down 6%': 'd6', 'Down 7%': 'd7', 'Down 8%': 'd8', 'Down 9%': 'd9', 'Down 10%': 'd10', 'Down 15%': 'd15', 'Down 20%': 'd20' } const twentyDayHighLowMap = { 'New High': 'nh', 'New Low': 'nl', '5% or more below High': 'b5h', '10% or more below High': 'b10h', '15% or more below High': 'b15h', '20% or more below High': 'b20h', '30% or more below High': 'b30h', '40% or more below High': 'b40h', '50% or more below High': 'b50h', '0-3% below High': 'b0to3h', '0-5% below High': 'b0to5h', '0-10% below High': 'b0to10h', '5% or more above Low': 'a5h', '10% or more above Low': 'a10h', '15% or more above Low': 'a15h', '20% or more above Low': 'a20h', '30% or more above Low': 'a30h', '40% or more above Low': 'a40h', '50% or more above Low': 'a50h', '0-3% above Low': 'a0to3h', '0-5% above Low': 'a0to5h', '0-10% above Low': 'a0to10h' } const fiftyDayHighLowMap = { 'New High': 'nh', 'New Low': 'nl', '5% or more below High': 'b5h', '10% or more below High': 'b10h', '15% or more below High': 'b15h', '20% or more below High': 'b20h', '30% or more below High': 'b30h', '40% or more below High': 'b40h', '50% or more below High': 'b50h', '0-3% below High': 'b0to3h', '0-5% below High': 'b0to5h', '0-10% below High': 'b0to10h', '5% or more above Low': 'a5h', '10% or more above Low': 'a10h', '15% or more above Low': 'a15h', '20% or more above Low': 'a20h', '30% or more above Low': 'a30h', '40% or more above Low': 'a40h', '50% or more above Low': 'a50h', '0-3% above Low': 'a0to3h', '0-5% above Low': 'a0to5h', '0-10% above Low': 'a0to10h' } const fiftyTwoWeekHighLowMap = { 'New High': 'nh', 'New Low': 'nl', '5% or more below High': 'b5h', '10% or more below High': 'b10h', '15% or more below High': 'b15h', '20% or more below High': 'b20h', '30% or more below High': 'b30h', '40% or more below High': 'b40h', '50% or more below High': 'b50h', '60% or more below High': 'b60h', '70% or more below High': 'b70h', '80% or more below High': 'b80h', '90% or more below High': 'b90h', '0-3% below High': 'b0to3h', '0-5% below High': 'b0to5h', '0-10% below High': 'b0to10h', '5% or more above Low': 'a5h', '10% or more above Low': 'a10h', '15% or more above Low': 'a15h', '20% or more above Low': 'a20h', '30% or more above Low': 'a30h', '40% or more above Low': 'a40h', '50% or more above Low': 'a50h', '60% or more above Low': 'a60h', '70% or more above Low': 'a70h', '80% or more above Low': 'a80h', '90% or more above Low': 'a90h', '100% or more above Low': 'a100h', '120% or more above Low': 'a120h', '150% or more above Low': 'a150h', '200% or more above Low': 'a200h', '300% or more above Low': 'a300h', '500% or more above Low': 'a500h', '0-3% above Low': 'a0to3h', '0-5% above Low': 'a0to5h', '0-10% above Low': 'a0to10h' } const patternMap = { 'Horizontal S/R': 'horizontal', 'Horizontal S/R (Strong)': 'horizontal2', 'TL Resistance': 'tlresistance', 'TL Resistance (Strong)': 'tlresistance2', 'TL Support': 'tlsupport', 'TL Support (Strong)': 'tlsupport2', 'Wedge Up': 'wedgeup', 'Wedge Up (Strong)': 'wedgeup2', 'Wedge Down': 'wedgedown', 'Wedge Down (Strong)': 'wedgedown2', 'Triangle Ascending': 'wedgeresistance', 'Triangle Ascending (Strong)': 'wedgeresistance2', 'Triangle Descending': 'wedgesupport', 'Triangle Descending (Strong)': 'wedgesupport2', 'Wedge': 'wedge', 'Wedge (Strong)': 'wedge2', 'Channel Up': 'channelup', 'Channel Up (Strong)': 'channelup2', 'Channel Down': 'channeldown', 'Channel Down (Strong)': 'channeldown2', 'Channel': 'channel', 'Channel (Strong)': 'channel2', 'Double Top': 'doubletop', 'Double Bottom': 'doublebottom', 'Multiple Top': 'multipletop', 'Multiple Bottom': 'multiplebottom', 'Head & Shoulders': 'headandshoulders', 'Head & Shoulders Inverse': 'headandshouldersinv' } const candlestickMap = { 'Long Lower Shadow': 'lls', 'Long Upper Shadow': 'lus', 'Hammer': 'h', 'Inverted Hammer': 'ih', 'Spinning Top White': 'stw', 'Spinning Top Black': 'stb', 'Doji': 'd', 'Dragonfly Doji': 'dd', 'Gravestone Doji': 'gd', 'Marubozu White': 'mw', 'Marubozu Black': 'mb' } const betaMap = { 'Under 0': 'u0', 'Under 0.5': 'u0.5', 'Under 1': 'u1', 'Under 1.5': 'u1.5', 'Under 2': 'u2', 'Over 0': 'o0', 'Over 0.5': 'o0.5', 'Over 1': 'o1', 'Over 1.5': 'o1.5', 'Over 2': 'o2', 'Over 2.5': 'o2.5', 'Over 3': 'o3', 'Over 4': 'o4', '0 to 0.5': '0to0.5', '0 to 1': '0to1', '0.5 to 1': '0.5to1', '0.5 to 1.5': '0.5to1.5', '1 to 1.5': '1to1.5', '1 to 2': '1to2' } const averageTrueRangeMap = { 'Over 0.25': 'o0.25', 'Over 0.5': 'o0.5', 'Over 0.75': 'o0.75', 'Over 1': 'o1', 'Over 1.5': 'o1.5', 'Over 2': 'o2', 'Over 2.5': 'o2.5', 'Over 3': 'o3', 'Over 3.5': 'o3.5', 'Over 4': 'o4', 'Over 4.5': 'o4.5', 'Over 5': 'o5', 'Under 0.25': 'u0.25', 'Under 0.5': 'u0.5', 'Under 0.75': 'u0.75', 'Under 1': 'u1', 'Under 1.5': 'u1.5', 'Under 2': 'u2', 'Under 2.5': 'u2.5', 'Under 3': 'u3', 'Under 3.5': 'u3.5', 'Under 4': 'u4', 'Under 4.5': 'u4.5', 'Under 5': 'u5' } const averageVolumeMap = { 'Under 50K': 'u50', 'Under 100K': 'u100', 'Under 500K': 'u500', 'Under 750K': 'u750', 'Under 1M': 'u1000', 'Over 50K': 'o50', 'Over 100K': 'o100', 'Over 200K': 'o200', 'Over 300K': 'o300', 'Over 400K': 'o400', 'Over 500K': 'o500', 'Over 750K': 'o750', 'Over 1M': 'o1000', 'Over 2M': 'o2000', '100K to 500K': '100to500', '100K to 1M': '100to1000', '500K to 1M': '500to1000', '500K to 10M': '500to10000' } const relativeVolumeMap = { 'Over 10': 'o10', 'Over 5': 'o5', 'Over 3': 'o3', 'Over 2': 'o2', 'Over 1.5': 'o1.5', 'Over 1': 'o1', 'Over 0.75': 'o0.75', 'Over 0.5': 'o0.5', 'Over 0.25': 'o0.25', 'Under 2': 'u2', 'Under 1.5': 'u1.5', 'Under 1': 'u1', 'Under 0.75': 'u0.75', 'Under 0.5': 'u0.5', 'Under 0.25': 'u0.25', 'Under 0.1': 'u0.1' } const currentVolumeMap = { 'Under 50K': 'u50', 'Under 100K': 'u100', 'Under 500K': 'u500', 'Under 750K': 'u750', 'Under 1M': 'u1000', 'Over 0': 'o0', 'Over 50K': 'o50', 'Over 100K': 'o100', 'Over 200K': 'o200', 'Over 300K': 'o300', 'Over 400K': 'o400', 'Over 500K': 'o500', 'Over 750K': 'o750', 'Over 1M': 'o1000', 'Over 2M': 'o2000', 'Over 5M': 'o5000', 'Over 10M': 'o10000', 'Over 20M': 'o20000' } const priceMap = { 'Under $1': 'u1', 'Under $2': 'u2', 'Under $3': 'u3', 'Under $4': 'u4', 'Under $5': 'u5', 'Under $7': 'u7', 'Under $10': 'u10', 'Under $15': 'u15', 'Under $20': 'u20', 'Under $30': 'u30', 'Under $40': 'u40', 'Under $50': 'u50', 'Over $1': 'o1', 'Over $2': 'o2', 'Over $3': 'o3', 'Over $4': 'o4', 'Over $5': 'o5', 'Over $7': 'o7', 'Over $10': 'o10', 'Over $15': 'o15', 'Over $20': 'o20', 'Over $30': 'o30', 'Over $40': 'o40', 'Over $50': 'o50', 'Over $60': 'o60', 'Over $70': 'o70', 'Over $80': 'o80', 'Over $90': 'o90', 'Over $100': 'o100', '$1 to $5': '1to5', '$1 to $10': '1to10', '$1 to $20': '1to20', '$5 to $10': '5to10', '$5 to $20': '5to20', '$5 to $50': '5to50', '$10 to $20': '10to20', '$10 to $50': '10to50', '$20 to $50': '20to50', '$50 to $100': '50to100' } const targetPriceMap = { '50% Above Price': 'a50', '40% Above Price': 'a40', '30% Above Price': 'a30', '20% Above Price': 'a20', '10% Above Price': 'a10', '5% Above Price': 'a5', 'Above Price': 'above', 'Below Price': 'below', '5% Below Price': 'b5', '10% Below Price': 'b10', '20% Below Price': 'b20', '30% Below Price': 'b30', '40% Below Price': 'b40', '50% Below Price': 'b50' } const ipoDateMap = { 'Today': 'today', 'Yesterday': 'yesterday', 'In the last week': 'prevweek', 'In the last month': 'prevmonth', 'In the last quarter': 'prevquarter', 'In the last year': 'prevyear', 'In the last 2 years': 'prev2yrs', 'In the last 3 years': 'prev3yrs', 'In the last 5 years': 'prev5yrs', 'More than a year ago': 'more1', 'More than 5 years ago': 'more5', 'More than 10 years ago': 'more10', 'More than 15 years ago': 'more15', 'More than 20 years ago': 'more20', 'More than 25 years ago': 'more25' } const sharesOutstandingMap = { 'Under 1M': 'u1', 'Under 5M': 'u5', 'Under 10M': 'u10', 'Under 20M': 'u20', 'Under 50M': 'u50', 'Under 100M': 'u100', 'Over 1M': 'o1', 'Over 2M': 'o2', 'Over 5M': 'o5', 'Over 10M': 'o10', 'Over 20M': 'o20', 'Over 50M': 'o50', 'Over 100M': 'o100', 'Over 200M': 'o200', 'Over 500M': 'o500', 'Over 1000M': 'o1000' } const floatMap = { 'Under 1M': 'u1', 'Under 5M': 'u5', 'Under 10M': 'u10', 'Under 20M': 'u20', 'Under 50M': 'u50', 'Under 100M': 'u100', 'Over 1M': 'o1', 'Over 2M': 'o2', 'Over 5M': 'o5', 'Over 10M': 'o10', 'Over 20M': 'o20', 'Over 50M': 'o50', 'Over 100M': 'o100', 'Over 200M': 'o200', 'Over 500M': 'o500', 'Over 1000M': 'o1000' } /** * Stock Exchange at which a stock is listed. * * @param {'AMEX'|'NASDAQ'|'NYSE'} filter Filter * @returns {this} this */ FinVizScreener.prototype.exchange = function (filter) { if (! exchangeMap[filter]) { throw Error('Unknown filter: ' + filter) } this._filters.push('exch_' + exchangeMap[filter]) return this } /** * A major index membership of a stock. * * @param {'S&P 500'|'DJIA'} fi