from enum import Enum
from typing import List

from pyfinviz.utils import WebScraper


class Screener:
    class ScreenerFilterOption:
        ALL = ""

    class OrderBy(Enum):
        SIGNAL = "sigrow"
        TICKER = "ticker"
        TICKERS_INPUT_FILTER = "tickersfilter"
        COMPANY = "company"
        SECTOR = "sector"
        INDUSTRY = "industry"
        COUNTRY = "country"
        INDEX = "index"
        MARKET_CAP = "marketcap"
        PRICE_EARNINGS = "pe"
        FORWARD_PRICE_EARNINGS = "forwardpe"
        PEG_PRICE_EARNINGS_GROWTH = "peg"
        PRICE_SALES = "ps"
        PRICE_BOOK = "pb"
        PRICE_CASH = "pc"
        PRICE_FREE_CASH_FLOW = "pfcf"
        DIVIDEND_YIELD = "dividendyield"
        PAYOUT_RATIO = "payoutratio"
        EPS_TTM = "eps"
        EPS_GROWTH_THIS_YEAR = "epsyoy"
        EPS_GROWTH_NEXT_YEAR = "epsyoy1"
        EPS_GROWTH_PAST_5_YEARS = "eps5years"
        EPS_GROWTH_NEXT_5_YEARS = "estltgrowth"
        SALES_GROWTH_PAST_5_YEARS = "sales5years"
        EPS_GROWTH_QTR_OVER_QTR = "epsqoq"
        SALES_GROWTH_QTR_OVER_QTR = "salesqoq"
        EPS_SURPRISE = "epssurprise"
        REVENUE_SURPRISE = "revenuesurprise"
        SHARES_OUTSTANDING = "sharesoutstanding2"
        SHARES_FLOAT = "sharesfloat"
        FLOAT_OUTSTANDING = "floatoutstandingpct"
        INSIDER_OWNERSHIP = "insiderown"
        INSIDER_TRANSACTIONS = "insidertrans"
        INSTITUTIONAL_OWNERSHIP = "instown"
        INSTITUTIONAL_TRANSACTIONS = "insttrans"
        SHORT_INTEREST_SHARE = "shortinterestshare"
        SHORT_INTEREST_RATIO = "shortinterestratio"
        SHORT_INTEREST = "shortInterest"
        EARNINGS_DATE = "earningsdate"
        RETURN_ON_ASSETS = "roa"
        RETURN_ON_EQUITY = "roe"
        RETURN_ON_INVESTMENT = "roi"
        CURRENT_RATIO = "curratio"
        QUICK_RATIO = "quickratio"
        LT_DEBT_EQUITY = "ltdebteq"
        TOTAL_DEBT_EQUITY = "debteq"
        GROSS_MARGIN = "grossmargin"
        OPERATING_MARGIN = "opermargin"
        NET_PROFIT_MARGIN = "netmargin"
        ANALYST_RECOMMENDATION = "recom"
        PERFORMANCE_WEEK = "perf1w"
        PERFORMANCE_MONTH = "perf4w"
        PERFORMANCE_QUARTER = "perf13w"
        PERFORMANCE_HALF_YEAR = "perf26w"
        PERFORMANCE_YEAR = "perf52w"
        PERFORMANCE_YEAR_TO_DATE = "perfytd"
        BETA = "beta"
        AVERAGE_TRUE_RANGE = "averagetruerange"
        VOLATILITY_WEEK = "volatility1w"
        VOLATILITY_MONTH = "volatility4w"
        _20_DAY_SMA_RELATIVE = "sma20"
        _50_DAY_SMA_RELATIVE = "sma50"
        _200_DAY_SMA_RELATIVE = "sma200"
        _50_DAY_HIGH_RELATIVE = "high50d"
        _50_DAY_LOW_RELATIVE = "low50d"
        _52_WEEK_HIGH_RELATIVE = "high52w"
        _52_WEEK_LOW_RELATIVE = "low52w"
        ALL_TIME_HIGH_RELATIVE = "highat"
        ALL_TIME_LOW_RELATIVE = "lowat"
        RELATIVE_STRENGTH_INDEX_14 = "rsi"
        AVERAGE_VOLUME_3_MONTH = "averagevolume"
        RELATIVE_VOLUME = "relativevolume"
        CHANGE = "change"
        CHANGE_FROM_OPEN = "changeopen"
        GAP = "gap"
        VOLUME = "volume"
        OPEN = "open"
        HIGH = "high"
        LOW = "low"
        PRICE = "price"
        TARGET_PRICE = "targetprice"
        IPO_DATE = "ipodate"
        BOOK_VALUE_PER_SHARE = "book"
        CASH_PER_SHARE = "cashPerShare"
        DIVIDEND = "dividend"
        EMPLOYEES = "employees"
        EPS_ESTIMATE_NEXT_QUARTER = "estQ1"
        INCOME = "income"
        PREVIOUS_CLOSE = "prevclose"
        SALES = "sales"
        OPTIONABLE = "optionable"
        SHORTABLE = "shortable"
        ETF_SINGLE_CATEGORY = "e.category"
        ETF_TAGS = "e.tags"
        ETF_TOTAL_HOLDINGS = "e.totalholdings"
        ETF_ASSETS_UNDER_MANAGEMENT = "e.assetsundermanagement"
        ETF_NET_FUND_FLOWS_PERCENT_1_MONTH = "e.netflows1monthpct"
        ETF_NET_FUND_FLOWS_PERCENT_3_MONTH = "e.netflows3monthpct"
        ETF_NET_FUND_FLOWS_PERCENT_YTD = "e.netflowsytdpct"
        ETF_ANNUALIZED_RETURN_1_YEAR = "e.return1year"
        ETF_ANNUALIZED_RETURN_3_YEAR = "e.return3year"
        ETF_ANNUALIZED_RETURN_5_YEAR = "e.return5year"
        ETF_NET_EXPENSE_RATIO = "e.netexpenseratio"

    class OrderDirection(Enum):
        ASC = ""
        DESC = "-"

    class SignalOption(ScreenerFilterOption, Enum):
        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_AND_SHOULDERS = "ta_p_headandshoulders"
        HEAD_AND_SHOULDERS_INVERSE = "ta_p_headandshouldersinv"

    class CustomSettingsOption(Enum):
        NO = "0"
        TICKER = "1"
        COMPANY = "2"
        INDEX = "79"
        SECTOR = "3"
        INDUSTRY = "4"
        COUNTRY = "5"
        MARKET_CAP = "6"
        P_E = "7"
        FORWARD_P_E = "8"
        PEG = "9"
        P_S = "10"
        P_B = "11"
        P_CASH = "12"
        P_FREE_CASH_FLOW = "13"
        BOOK_VALUE_PER_SHARE = "73"
        CASH_PER_SHARE = "74"
        DIVIDEND = "75"
        DIVIDEND_YIELD = "14"
        PAYOUT_RATIO = "15"
        EPS = "16"
        EPS_ESTIMATE_NEXT_QUARTER = "77"
        EPS_GROWTH_THIS_YEAR = "17"
        EPS_GROWTH_NEXT_YEAR = "18"
        EPS_GROWTH_PAST_5_YEARS = "19"
        EPS_GROWTH_NEXT_5_YEARS = "20"
        SALES_GROWTH_PAST_5_YEARS = "21"
        SALES_GROWTH_QTR_OVER_QTR = "23"
        EPS_GROWTH_QTR_OVER_QTR = "22"
        SALES = "82"
        INCOME = "78"
        EPS_SURPRISE = "127"
        REVENUE_SURPRISE = "128"
        SHARES_OUTSTANDING = "24"
        SHARES_FLOAT = "25"
        FLOAT_OUTSTANDING = "85"
        INSIDER_OWNERSHIP = "26"
        INSIDER_TRANSACTIONS = "27"
        INSTITUTIONAL_OWNERSHIP = "28"
        INSTITUTIONAL_TRANSACTIONS = "29"
        FLOAT_SHORT = "30"
        SHORT_RATIO = "31"
        SHORT_INTEREST = "84"
        RETURN_ON_ASSETS = "32"
        RETURN_ON_EQUITY = "33"
        RETURN_ON_INVESTMENTS = "34"
        CURRENT_RATIO = "35"
        QUICK_RATIO = "36"
        LONG_TERM_DEBT_EQUITY = "37"
        TOTAL_DEBT_EQUITY = "38"
        GROSS_MARGIN = "39"
        OPERATING_MARGIN = "40"
        NET_PROFIT_MARGIN = "41"
        PERFORMANCE_WEEK = "42"
        PERFORMANCE_MONTH = "43"
        PERFORMANCE_QUARTER = "44"
        PERFORMANCE_HALF_YEAR = "45"
        PERFORMANCE_YEAR = "46"
        PERFORMANCE_YEARTODATE = "47"
        BETA = "48"
        AVERAGE_TRUE_RANGE = "49"
        VOLATILITY_WEEK = "50"
        VOLATILITY_MONTH = "51"
        _20_DAY_SIMPLE_MOVING_AVERAGE = "52"
        _50_DAY_SIMPLE_MOVING_AVERAGE = "53"
        _200_DAY_SIMPLE_MOVING_AVERAGE = "54"
        _50_DAY_HIGH = "55"
        _50_DAY_LOW = "56"
        _52_WEEK_HIGH = "57"
        _52_WEEK_LOW = "58"
        ALL_TIME_HIGH = "125"
        ALL_TIME_LOW = "126"
        RSI = "59"
        EARNINGS_DATE = "68"
        IPO_DATE = "70"
        OPTIONABLE = "80"
        SHORTABLE = "83"
        EMPLOYEES = "76"
        CHANGE_FROM_OPEN = "60"
        GAP = "61"
        ANALYST_RECOM = "62"
        AVERAGE_VOLUME = "63"
        RELATIVE_VOLUME = "64"
        VOLUME = "67"
        TARGET_PRICE = "69"
        PREVIOUS_CLOSE = "81"
        OPEN = "86"
        HIGH = "87"
        LOW = "88"
        PRICE = "65"
        CHANGE = "66"
        CATEGORY = "103"
        ASSET_TYPE = "100"
        NET_EXPENSE_RATIO = "107"
        TOTAL_HOLDINGS = "108"
        AUM = "109"
        NET_FLOWS_1M = "112"
        NET_FLOWS_PERCENT_1M = "113"
        NET_FLOWS_3M = "114"
        NET_FLOWS_PERCENT_3M = "115"
        NET_FLOWS_YTD = "116"
        NET_FLOWS_PERCENT_YTD = "117"
        RETURN_PERCENT_1Y = "120"
        RETURN_PERCENT_3Y = "121"
        RETURN_PERCENT_5Y = "122"
        TAGS = "105"

    class ViewOption(ScreenerFilterOption, Enum):
        OVERVIEW = "111"
        VALUATION = "121"
        FINANCIAL = "161"
        OWNERSHIP = "131"
        PERFORMANCE = "141"
        TECHNICAL = "171"
        ETF = "181"
        ETF_PERF = "191"
        CUSTOM_WITH_FILTERS = "151"
        CUSTOM_WITH_SETTINGS = "152"

    class ExchangeOption(ScreenerFilterOption, Enum):
        AMEX = "exch_amex"
        NASDAQ = "exch_nasd"
        NYSE = "exch_nyse"
        CUSTOM_ELITE_ONLY = "exch_modal"

    class IndexOption(ScreenerFilterOption, Enum):
        S_AND_P_500 = "idx_sp500"
        NASDAQ_100 = "idx_ndx"
        DJIA = "idx_dji"
        RUSSELL_2000 = "idx_rut"
        CUSTOM_ELITE_ONLY = "idx_modal"

    class SectorOption(ScreenerFilterOption, Enum):
        BASIC_MATERIALS = "sec_basicmaterials"
        COMMUNICATION_SERVICES = "sec_communicationservices"
        CONSUMER_CYCLICAL = "sec_consumercyclical"
        CONSUMER_DEFENSIVE = "sec_consumerdefensive"
        ENERGY = "sec_energy"
        FINANCIAL = "sec_financial"
        HEALTHCARE = "sec_healthcare"
        INDUSTRIALS = "sec_industrials"
        REAL_ESTATE = "sec_realestate"
        TECHNOLOGY = "sec_technology"
        UTILITIES = "sec_utilities"
        CUSTOM_ELITE_ONLY = "sec_modal"

    class IndustryOption(ScreenerFilterOption, Enum):
        STOCKS_ONLY_EX_FUNDS = "ind_stocksonly"
        EXCHANGE_TRADED_FUND = "ind_exchangetradedfund"
        ADVERTISING_AGENCIES = "ind_advertisingagencies"
        AEROSPACE_AND_DEFENSE = "ind_aerospacedefense"
        AGRICULTURAL_INPUTS = "ind_agriculturalinputs"
        AIRLINES = "ind_airlines"
        AIRPORTS_AND_AIR_SERVICES = "ind_airportsairservices"
        ALUMINUM = "ind_aluminum"
        APPAREL_MANUFACTURING = "ind_apparelmanufacturing"
        APPAREL_RETAIL = "ind_apparelretail"
        ASSET_MANAGEMENT = "ind_assetmanagement"
        AUTO_MANUFACTURERS = "ind_automanufacturers"
        AUTO_PARTS = "ind_autoparts"
        AUTO_AND_TRUCK_DEALERSHIPS = "ind_autotruckdealerships"
        BANKS_DIVERSIFIED = "ind_banksdiversified"
        BANKS_REGIONAL = "ind_banksregional"
        BEVERAGES_BREWERS = "ind_beveragesbrewers"
        BEVERAGES_NON_ALCOHOLIC = "ind_beveragesnonalcoholic"
        BEVERAGES_WINERIES_AND_DISTILLERIES = "ind_beverageswineriesdistilleries"
        BIOTECHNOLOGY = "ind_biotechnology"
        BROADCASTING = "ind_broadcasting"
        BUILDING_MATERIALS = "ind_buildingmaterials"
        BUILDING_PRODUCTS_AND_EQUIPMENT = "ind_buildingproductsequipment"
        BUSINESS_EQUIPMENT_AND_SUPPLIES = "ind_businessequipmentsupplies"
        CAPITAL_MARKETS = "ind_capitalmarkets"
        CHEMICALS = "ind_chemicals"
        CLOSED_END_FUND_DEBT = "ind_closedendfunddebt"
        CLOSED_END_FUND_EQUITY = "ind_closedendfundequity"
        CLOSED_END_FUND_FOREIGN = "ind_closedendfundforeign"
        COKING_COAL = "ind_cokingcoal"
        COMMUNICATION_EQUIPMENT = "ind_communicationequipment"
        COMPUTER_HARDWARE = "ind_computerhardware"
        CONFECTIONERS = "ind_confectioners"
        CONGLOMERATES = "ind_conglomerates"
        CONSULTING_SERVICES = "ind_consultingservices"
        CONSUMER_ELECTRONICS = "ind_consumerelectronics"
        COPPER = "ind_copper"
        CREDIT_SERVICES = "ind_creditservices"
        DEPARTMENT_STORES = "ind_departmentstores"
        DIAGNOSTICS_AND_RESEARCH = "ind_diagnosticsresearch"
        DISCOUNT_STORES = "ind_discountstores"
        DRUG_MANUFACTURERS_GENERAL = "ind_drugmanufacturersgeneral"
        DRUG_MANUFACTURERS_SPECIALTY_AND_GENERIC = "ind_drugmanufacturersspecialtygeneric"
        EDUCATION_AND_TRAINING_SERVICES = "ind_educationtrainingservices"
        ELECTRICAL_EQUIPMENT_AND_PARTS = "ind_electricalequipmentparts"
        ELECTRONIC_COMPONENTS = "ind_electroniccomponents"
        ELECTRONIC_GAMING_AND_MULTIMEDIA = "ind_electronicgamingmultimedia"
        ELECTRONICS_AND_COMPUTER_DISTRIBUTION = "ind_electronicscomputerdistribution"
        ENGINEERING_AND_CONSTRUCTION = "ind_engineeringconstruction"
        ENTERTAINMENT = "ind_entertainment"
        FARM_AND_HEAVY_CONSTRUCTION_MACHINERY = "ind_farmheavyconstructionmachinery"
        FARM_PRODUCTS = "ind_farmproducts"
        FINANCIAL_CONGLOMERATES = "ind_financialconglomerates"
        FINANCIAL_DATA_AND_STOCK_EXCHANGES = "ind_financialdatastockexchanges"
        FOOD_DISTRIBUTION = "ind_fooddistribution"
        FOOTWEAR_AND_ACCESSORIES = "ind_footwearaccessories"
        FURNISHINGS_FIXTURES_AND_APPLIANCES = "ind_furnishingsfixturesappliances"
        GAMBLING = "ind_gambling"
        GOLD = "ind_gold"
        GROCERY_STORES = "ind_grocerystores"
        HEALTHCARE_PLANS = "ind_healthcareplans"
        HEALTH_INFORMATION_SERVICES = "ind_healthinformationservices"
        HOME_IMPROVEMENT_RETAIL = "ind_homeimprovementretail"
        HOUSEHOLD_AND_PERSONAL_PRODUCTS = "ind_householdpersonalproducts"
        INDUSTRIAL_DISTRIBUTION = "ind_industrialdistribution"
        INFORMATION_TECHNOLOGY_SERVICES = "ind_informationtechnologyservices"
        INFRASTRUCTURE_OPERATIONS = "ind_infrastructureoperations"
        INSURANCE_BROKERS = "ind_insurancebrokers"
        INSURANCE_DIVERSIFIED = "ind_insurancediversified"
        INSURANCE_LIFE = "ind_insurancelife"
        INSURANCE_PROPERTY_AND_CASUALTY = "ind_insurancepropertycasualty"
        INSURANCE_REINSURANCE = "ind_insurancereinsurance"
        INSURANCE_SPECIALTY = "ind_insurancespecialty"
        INTEGRATED_FREIGHT_AND_LOGISTICS = "ind_integratedfreightlogistics"
        INTERNET_CONTENT_AND_INFORMATION = "ind_internetcontentinformation"
        INTERNET_RETAIL = "ind_internetretail"
        LEISURE = "ind_leisure"
        LODGING = "ind_lodging"
        LUMBER_AND_WOOD_PRODUCTION = "ind_lumberwoodproduction"
        LUXURY_GOODS = "ind_luxurygoods"
        MARINE_SHIPPING = "ind_marineshipping"
        MEDICAL_CARE_FACILITIES = "ind_medicalcarefacilities"
        MEDICAL_DEVICES = "ind_medicaldevices"
        MEDICAL_DISTRIBUTION = "ind_medicaldistribution"
        MEDICAL_INSTRUMENTS_AND_SUPPLIES = "ind_medicalinstrumentssupplies"
        METAL_FABRICATION = "ind_metalfabrication"
        MORTGAGE_FINANCE = "ind_mortgagefinance"
        OIL_AND_GAS_DRILLING = "ind_oilgasdrilling"
        OIL_AND_GAS_E_AND_P = "ind_oilgasep"
        OIL_AND_GAS_EQUIPMENT_AND_SERVICES = "ind_oilgasequipmentservices"
        OIL_AND_GAS_INTEGRATED = "ind_oilgasintegrated"
        OIL_AND_GAS_MIDSTREAM = "ind_oilgasmidstream"
        OIL_AND_GAS_REFINING_AND_MARKETING = "ind_oilgasrefiningmarketing"
        OTHER_INDUSTRIAL_METALS_AND_MINING = "ind_otherindustrialmetalsmining"
        OTHER_PRECIOUS_METALS_AND_MINING = "ind_otherpreciousmetalsmining"
        PACKAGED_FOODS = "ind_packagedfoods"
        PACKAGING_AND_CONTAINERS = "ind_packagingcontainers"
        PAPER_AND_PAPER_PRODUCTS = "ind_paperpaperproducts"
        PERSONAL_SERVICES = "ind_personalservices"
        PHARMACEUTICAL_RETAILERS = "ind_pharmaceuticalretailers"
        POLLUTION_AND_TREATMENT_CONTROLS = "ind_pollutiontreatmentcontrols"
        PUBLISHING = "ind_publishing"
        RAILROADS = "ind_railroads"
        REAL_ESTATE_DEVELOPMENT = "ind_realestatedevelopment"
        REAL_ESTATE_DIVERSIFIED = "ind_realestatediversified"
        REAL_ESTATE_SERVICES = "ind_realestateservices"
        RECREATIONAL_VEHICLES = "ind_recreationalvehicles"
        REIT_DIVERSIFIED = "ind_reitdiversified"
        REIT_HEALTHCARE_FACILITIES = "ind_reithealthcarefacilities"
        REIT_HOTEL_AND_MOTEL = "ind_reithotelmotel"
        REIT_INDUSTRIAL = "ind_reitindustrial"
        REIT_MORTGAGE = "ind_reitmortgage"
        REIT_OFFICE = "ind_reitoffice"
        REIT_RESIDENTIAL = "ind_reitresidential"
        REIT_RETAIL = "ind_reitretail"
        REIT_SPECIALTY = "ind_reitspecialty"
        RENTAL_AND_LEASING_SERVICES = "ind_rentalleasingservices"
        RESIDENTIAL_CONSTRUCTION = "ind_residentialconstruction"
        RESORTS_AND_CASINOS = "ind_resortscasinos"
        RESTAURANTS = "ind_restaurants"
        SCIENTIFIC_AND_TECHNICAL_INSTRUMENTS = "ind_scientifictechnicalinstruments"
        SECURITY_AND_PROTECTION_SERVICES = "ind_securityprotectionservices"
        SEMICONDUCTOR_EQUIPMENT_AND_MATERIALS = "ind_semiconductorequipmentmaterials"
        SEMICONDUCTORS = "ind_semiconductors"
        SHELL_COMPANIES = "ind_shellcompanies"
        SILVER = "ind_silver"
        SOFTWARE_APPLICATION = "ind_softwareapplication"
        SOFTWARE_INFRASTRUCTURE = "ind_softwareinfrastructure"
        SOLAR = "ind_solar"
        SPECIALTY_BUSINESS_SERVICES = "ind_specialtybusinessservices"
        SPECIALTY_CHEMICALS = "ind_specialtychemicals"
        SPECIALTY_INDUSTRIAL_MACHINERY = "ind_specialtyindustrialmachinery"
        SPECIALTY_RETAIL = "ind_specialtyretail"
        STAFFING_AND_EMPLOYMENT_SERVICES = "ind_staffingemploymentservices"
        STEEL = "ind_steel"
        TELECOM_SERVICES = "ind_telecomservices"
        TEXTILE_MANUFACTURING = "ind_textilemanufacturing"
        THERMAL_COAL = "ind_thermalcoal"
        TOBACCO = "ind_tobacco"
        TOOLS_AND_ACCESSORIES = "ind_toolsaccessories"
        TRAVEL_SERVICES = "ind_travelservices"
        TRUCKING = "ind_trucking"
        URANIUM = "ind_uranium"
        UTILITIES_DIVERSIFIED = "ind_utilitiesdiversified"
        UTILITIES_INDEPENDENT_POWER_PRODUCERS = "ind_utilitiesindependentpowerproducers"
        UTILITIES_REGULATED_ELECTRIC = "ind_utilitiesregulatedelectric"
        UTILITIES_REGULATED_GAS = "ind_utilitiesregulatedgas"
        UTILITIES_REGULATED_WATER = "ind_utilitiesregulatedwater"
        UTILITIES_RENEWABLE = "ind_utilitiesrenewable"
        WASTE_MANAGEMENT = "ind_wastemanagement"
        CUSTOM_ELITE_ONLY = "ind_modal"

    class CountryOption(ScreenerFilterOption, Enum):
        USA = "geo_usa"
        FOREIGN_EX_USA = "geo_notusa"
        ASIA = "geo_asia"
        EUROPE = "geo_europe"
        LATIN_AMERICA = "geo_latinamerica"
        BRIC = "geo_bric"
        ARGENTINA = "geo_argentina"
        AUSTRALIA = "geo_australia"
        BAHAMAS = "geo_bahamas"
        BELGIUM = "geo_belgium"
        BENELUX = "geo_benelux"
        BERMUDA = "geo_bermuda"
        BRAZIL = "geo_brazil"
        CANADA = "geo_canada"
        CAYMAN_ISLANDS = "geo_caymanislands"
        CHILE = "geo_chile"
        CHINA = "geo_china"
        CHINA_AND_HONG_KONG = "geo_chinahongkong"
        COLOMBIA = "geo_colombia"
        CYPRUS = "geo_cyprus"
        DENMARK = "geo_denmark"
        FINLAND = "geo_finland"
        FRANCE = "geo_france"
        GERMANY = "geo_germany"
        GREECE = "geo_greece"
        HONG_KONG = "geo_hongkong"
        HUNGARY = "geo_hungary"
        ICELAND = "geo_iceland"
        INDIA = "geo_india"
        INDONESIA = "geo_indonesia"
        IRELAND = "geo_ireland"
        ISRAEL = "geo_israel"
        ITALY = "geo_italy"
        JAPAN = "geo_japan"
        KAZAKHSTAN = "geo_kazakhstan"
        LUXEMBOURG = "geo_luxembourg"
        MALAYSIA = "geo_malaysia"
        MALTA = "geo_malta"
        MEXICO = "geo_mexico"
        MONACO = "geo_monaco"
        NETHERLANDS = "geo_netherlands"
        NEW_ZEALAND = "geo_newzealand"
        NORWAY = "geo_norway"
        PANAMA = "geo_panama"
        PERU = "geo_peru"
        PHILIPPINES = "geo_philippines"
        PORTUGAL = "geo_portugal"
        RUSSIA = "geo_russia"
        SINGAPORE = "geo_singapore"
        SOUTH_AFRICA = "geo_southafrica"
        SOUTH_KOREA = "geo_southkorea"
        SPAIN = "geo_spain"
        SWEDEN = "geo_sweden"
        SWITZERLAND = "geo_switzerland"
        TAIWAN = "geo_taiwan"
        TURKEY = "geo_turkey"
        UNITED_ARAB_EMIRATES = "geo_unitedarabemirates"
        UNITED_KINGDOM = "geo_unitedkingdom"
        URUGUAY = "geo_uruguay"
        CUSTOM_ELITE_ONLY = "geo_modal"

    class MarketCapOption(ScreenerFilterOption, Enum):
        MEGA_USD200BLN_AND_MORE = "cap_mega"
        LARGE_USD10BLN_TO_USD200BLN = "cap_large"
        MID_USD2BLN_TO_USD10BLN = "cap_mid"
        SMALL_USD300MLN_TO_USD2BLN = "cap_small"
        MICRO_USD50MLN_TO_USD300MLN = "cap_micro"
        NANO_UNDER_USD50MLN = "cap_nano"
        LARGE_OVER_USD10BLN = "cap_largeover"
        MID_OVER_USD2BLN = "cap_midover"
        SMALL_OVER_USD300MLN = "cap_smallover"
        MICRO_OVER_USD50MLN = "cap_microover"
        LARGE_UNDER_USD200BLN = "cap_largeunder"
        MID_UNDER_USD10BLN = "cap_midunder"
        SMALL_UNDER_USD2BLN = "cap_smallunder"
        MICRO_UNDER_USD300MLN = "cap_microunder"
        CUSTOM_ELITE_ONLY = "cap_frange"

    class PEOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_15 = "fa_pe_low"
        PROFITABLE_GREATER_THAN_0 = "fa_pe_profitable"
        HIGH_GREATER_THAN_50 = "fa_pe_high"
        UNDER_5 = "fa_pe_u5"
        UNDER_10 = "fa_pe_u10"
        UNDER_15 = "fa_pe_u15"
        UNDER_20 = "fa_pe_u20"
        UNDER_25 = "fa_pe_u25"
        UNDER_30 = "fa_pe_u30"
        UNDER_35 = "fa_pe_u35"
        UNDER_40 = "fa_pe_u40"
        UNDER_45 = "fa_pe_u45"
        UNDER_50 = "fa_pe_u50"
        OVER_5 = "fa_pe_o5"
        OVER_10 = "fa_pe_o10"
        OVER_15 = "fa_pe_o15"
        OVER_20 = "fa_pe_o20"
        OVER_25 = "fa_pe_o25"
        OVER_30 = "fa_pe_o30"
        OVER_35 = "fa_pe_o35"
        OVER_40 = "fa_pe_o40"
        OVER_45 = "fa_pe_o45"
        OVER_50 = "fa_pe_o50"
        CUSTOM_ELITE_ONLY = "fa_pe_frange"

    class ForwardPEOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_15 = "fa_fpe_low"
        PROFITABLE_GREATER_THAN_0 = "fa_fpe_profitable"
        HIGH_GREATER_THAN_50 = "fa_fpe_high"
        UNDER_5 = "fa_fpe_u5"
        UNDER_10 = "fa_fpe_u10"
        UNDER_15 = "fa_fpe_u15"
        UNDER_20 = "fa_fpe_u20"
        UNDER_25 = "fa_fpe_u25"
        UNDER_30 = "fa_fpe_u30"
        UNDER_35 = "fa_fpe_u35"
        UNDER_40 = "fa_fpe_u40"
        UNDER_45 = "fa_fpe_u45"
        UNDER_50 = "fa_fpe_u50"
        OVER_5 = "fa_fpe_o5"
        OVER_10 = "fa_fpe_o10"
        OVER_15 = "fa_fpe_o15"
        OVER_20 = "fa_fpe_o20"
        OVER_25 = "fa_fpe_o25"
        OVER_30 = "fa_fpe_o30"
        OVER_35 = "fa_fpe_o35"
        OVER_40 = "fa_fpe_o40"
        OVER_45 = "fa_fpe_o45"
        OVER_50 = "fa_fpe_o50"
        CUSTOM_ELITE_ONLY = "fa_fpe_frange"

    class PEGOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_1 = "fa_peg_low"
        HIGH_GREATER_THAN_2 = "fa_peg_high"
        UNDER_1 = "fa_peg_u1"
        UNDER_2 = "fa_peg_u2"
        UNDER_3 = "fa_peg_u3"
        OVER_1 = "fa_peg_o1"
        OVER_2 = "fa_peg_o2"
        OVER_3 = "fa_peg_o3"
        CUSTOM_ELITE_ONLY = "fa_peg_frange"

    class PSOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_1 = "fa_ps_low"
        HIGH_GREATER_THAN_10 = "fa_ps_high"
        UNDER_1 = "fa_ps_u1"
        UNDER_2 = "fa_ps_u2"
        UNDER_3 = "fa_ps_u3"
        UNDER_4 = "fa_ps_u4"
        UNDER_5 = "fa_ps_u5"
        UNDER_6 = "fa_ps_u6"
        UNDER_7 = "fa_ps_u7"
        UNDER_8 = "fa_ps_u8"
        UNDER_9 = "fa_ps_u9"
        UNDER_10 = "fa_ps_u10"
        OVER_1 = "fa_ps_o1"
        OVER_2 = "fa_ps_o2"
        OVER_3 = "fa_ps_o3"
        OVER_4 = "fa_ps_o4"
        OVER_5 = "fa_ps_o5"
        OVER_6 = "fa_ps_o6"
        OVER_7 = "fa_ps_o7"
        OVER_8 = "fa_ps_o8"
        OVER_9 = "fa_ps_o9"
        OVER_10 = "fa_ps_o10"
        CUSTOM_ELITE_ONLY = "fa_ps_frange"

    class PBOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_1 = "fa_pb_low"
        HIGH_GREATER_THAN_5 = "fa_pb_high"
        UNDER_1 = "fa_pb_u1"
        UNDER_2 = "fa_pb_u2"
        UNDER_3 = "fa_pb_u3"
        UNDER_4 = "fa_pb_u4"
        UNDER_5 = "fa_pb_u5"
        UNDER_6 = "fa_pb_u6"
        UNDER_7 = "fa_pb_u7"
        UNDER_8 = "fa_pb_u8"
        UNDER_9 = "fa_pb_u9"
        UNDER_10 = "fa_pb_u10"
        OVER_1 = "fa_pb_o1"
        OVER_2 = "fa_pb_o2"
        OVER_3 = "fa_pb_o3"
        OVER_4 = "fa_pb_o4"
        OVER_5 = "fa_pb_o5"
        OVER_6 = "fa_pb_o6"
        OVER_7 = "fa_pb_o7"
        OVER_8 = "fa_pb_o8"
        OVER_9 = "fa_pb_o9"
        OVER_10 = "fa_pb_o10"
        CUSTOM_ELITE_ONLY = "fa_pb_frange"

    class PriceCashOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_3 = "fa_pc_low"
        HIGH_GREATER_THAN_50 = "fa_pc_high"
        UNDER_1 = "fa_pc_u1"
        UNDER_2 = "fa_pc_u2"
        UNDER_3 = "fa_pc_u3"
        UNDER_4 = "fa_pc_u4"
        UNDER_5 = "fa_pc_u5"
        UNDER_6 = "fa_pc_u6"
        UNDER_7 = "fa_pc_u7"
        UNDER_8 = "fa_pc_u8"
        UNDER_9 = "fa_pc_u9"
        UNDER_10 = "fa_pc_u10"
        OVER_1 = "fa_pc_o1"
        OVER_2 = "fa_pc_o2"
        OVER_3 = "fa_pc_o3"
        OVER_4 = "fa_pc_o4"
        OVER_5 = "fa_pc_o5"
        OVER_6 = "fa_pc_o6"
        OVER_7 = "fa_pc_o7"
        OVER_8 = "fa_pc_o8"
        OVER_9 = "fa_pc_o9"
        OVER_10 = "fa_pc_o10"
        OVER_20 = "fa_pc_o20"
        OVER_30 = "fa_pc_o30"
        OVER_40 = "fa_pc_o40"
        OVER_50 = "fa_pc_o50"
        CUSTOM_ELITE_ONLY = "fa_pc_frange"

    class PriceFreeCashFlowOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_15 = "fa_pfcf_low"
        HIGH_GREATER_THAN_50 = "fa_pfcf_high"
        UNDER_5 = "fa_pfcf_u5"
        UNDER_10 = "fa_pfcf_u10"
        UNDER_15 = "fa_pfcf_u15"
        UNDER_20 = "fa_pfcf_u20"
        UNDER_25 = "fa_pfcf_u25"
        UNDER_30 = "fa_pfcf_u30"
        UNDER_35 = "fa_pfcf_u35"
        UNDER_40 = "fa_pfcf_u40"
        UNDER_45 = "fa_pfcf_u45"
        UNDER_50 = "fa_pfcf_u50"
        UNDER_60 = "fa_pfcf_u60"
        UNDER_70 = "fa_pfcf_u70"
        UNDER_80 = "fa_pfcf_u80"
        UNDER_90 = "fa_pfcf_u90"
        UNDER_100 = "fa_pfcf_u100"
        OVER_5 = "fa_pfcf_o5"
        OVER_10 = "fa_pfcf_o10"
        OVER_15 = "fa_pfcf_o15"
        OVER_20 = "fa_pfcf_o20"
        OVER_25 = "fa_pfcf_o25"
        OVER_30 = "fa_pfcf_o30"
        OVER_35 = "fa_pfcf_o35"
        OVER_40 = "fa_pfcf_o40"
        OVER_45 = "fa_pfcf_o45"
        OVER_50 = "fa_pfcf_o50"
        OVER_60 = "fa_pfcf_o60"
        OVER_70 = "fa_pfcf_o70"
        OVER_80 = "fa_pfcf_o80"
        OVER_90 = "fa_pfcf_o90"
        OVER_100 = "fa_pfcf_o100"
        CUSTOM_ELITE_ONLY = "fa_pfcf_frange"

    class EPSGrowthThisYearOption(ScreenerFilterOption, Enum):
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_epsyoy_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_epsyoy_pos"
        POSITIVE_LOW_0_TO_10_PERCENT = "fa_epsyoy_poslow"
        HIGH_GREATER_THAN_25_PERCENT = "fa_epsyoy_high"
        UNDER_5_PERCENT = "fa_epsyoy_u5"
        UNDER_10_PERCENT = "fa_epsyoy_u10"
        UNDER_15_PERCENT = "fa_epsyoy_u15"
        UNDER_20_PERCENT = "fa_epsyoy_u20"
        UNDER_25_PERCENT = "fa_epsyoy_u25"
        UNDER_30_PERCENT = "fa_epsyoy_u30"
        OVER_5_PERCENT = "fa_epsyoy_o5"
        OVER_10_PERCENT = "fa_epsyoy_o10"
        OVER_15_PERCENT = "fa_epsyoy_o15"
        OVER_20_PERCENT = "fa_epsyoy_o20"
        OVER_25_PERCENT = "fa_epsyoy_o25"
        OVER_30_PERCENT = "fa_epsyoy_o30"
        CUSTOM_ELITE_ONLY = "fa_epsyoy_frange"

    class EPSGrowthNextYearOption(ScreenerFilterOption, Enum):
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_epsyoy1_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_epsyoy1_pos"
        POSITIVE_LOW_0_TO_10_PERCENT = "fa_epsyoy1_poslow"
        HIGH_GREATER_THAN_25_PERCENT = "fa_epsyoy1_high"
        UNDER_5_PERCENT = "fa_epsyoy1_u5"
        UNDER_10_PERCENT = "fa_epsyoy1_u10"
        UNDER_15_PERCENT = "fa_epsyoy1_u15"
        UNDER_20_PERCENT = "fa_epsyoy1_u20"
        UNDER_25_PERCENT = "fa_epsyoy1_u25"
        UNDER_30_PERCENT = "fa_epsyoy1_u30"
        OVER_5_PERCENT = "fa_epsyoy1_o5"
        OVER_10_PERCENT = "fa_epsyoy1_o10"
        OVER_15_PERCENT = "fa_epsyoy1_o15"
        OVER_20_PERCENT = "fa_epsyoy1_o20"
        OVER_25_PERCENT = "fa_epsyoy1_o25"
        OVER_30_PERCENT = "fa_epsyoy1_o30"
        CUSTOM_ELITE_ONLY = "fa_epsyoy1_frange"

    class EPSGrowthPast5YearsOption(ScreenerFilterOption, Enum):
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_eps5years_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_eps5years_pos"
        POSITIVE_LOW_0_TO_10_PERCENT = "fa_eps5years_poslow"
        HIGH_GREATER_THAN_25_PERCENT = "fa_eps5years_high"
        UNDER_5_PERCENT = "fa_eps5years_u5"
        UNDER_10_PERCENT = "fa_eps5years_u10"
        UNDER_15_PERCENT = "fa_eps5years_u15"
        UNDER_20_PERCENT = "fa_eps5years_u20"
        UNDER_25_PERCENT = "fa_eps5years_u25"
        UNDER_30_PERCENT = "fa_eps5years_u30"
        OVER_5_PERCENT = "fa_eps5years_o5"
        OVER_10_PERCENT = "fa_eps5years_o10"
        OVER_15_PERCENT = "fa_eps5years_o15"
        OVER_20_PERCENT = "fa_eps5years_o20"
        OVER_25_PERCENT = "fa_eps5years_o25"
        OVER_30_PERCENT = "fa_eps5years_o30"
        CUSTOM_ELITE_ONLY = "fa_eps5years_frange"

    class EPSGrowthNext5YearsOption(ScreenerFilterOption, Enum):
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_estltgrowth_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_estltgrowth_pos"
        POSITIVE_LOW_LESS_THAN_10_PERCENT = "fa_estltgrowth_poslow"
        HIGH_GREATER_THAN_25_PERCENT = "fa_estltgrowth_high"
        UNDER_5_PERCENT = "fa_estltgrowth_u5"
        UNDER_10_PERCENT = "fa_estltgrowth_u10"
        UNDER_15_PERCENT = "fa_estltgrowth_u15"
        UNDER_20_PERCENT = "fa_estltgrowth_u20"
        UNDER_25_PERCENT = "fa_estltgrowth_u25"
        UNDER_30_PERCENT = "fa_estltgrowth_u30"
        OVER_5_PERCENT = "fa_estltgrowth_o5"
        OVER_10_PERCENT = "fa_estltgrowth_o10"
        OVER_15_PERCENT = "fa_estltgrowth_o15"
        OVER_20_PERCENT = "fa_estltgrowth_o20"
        OVER_25_PERCENT = "fa_estltgrowth_o25"
        OVER_30_PERCENT = "fa_estltgrowth_o30"
        CUSTOM_ELITE_ONLY = "fa_estltgrowth_frange"

    class SalesGrowthPast5YearsOption(ScreenerFilterOption, Enum):
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_sales5years_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_sales5years_pos"
        POSITIVE_LOW_0_TO_10_PERCENT = "fa_sales5years_poslow"
        HIGH_GREATER_THAN_25_PERCENT = "fa_sales5years_high"
        UNDER_5_PERCENT = "fa_sales5years_u5"
        UNDER_10_PERCENT = "fa_sales5years_u10"
        UNDER_15_PERCENT = "fa_sales5years_u15"
        UNDER_20_PERCENT = "fa_sales5years_u20"
        UNDER_25_PERCENT = "fa_sales5years_u25"
        UNDER_30_PERCENT = "fa_sales5years_u30"
        OVER_5_PERCENT = "fa_sales5years_o5"
        OVER_10_PERCENT = "fa_sales5years_o10"
        OVER_15_PERCENT = "fa_sales5years_o15"
        OVER_20_PERCENT = "fa_sales5years_o20"
        OVER_25_PERCENT = "fa_sales5years_o25"
        OVER_30_PERCENT = "fa_sales5years_o30"
        CUSTOM_ELITE_ONLY = "fa_sales5years_frange"

    class EPSGrowthQtrOverQtrOption(ScreenerFilterOption, Enum):
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_epsqoq_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_epsqoq_pos"
        POSITIVE_LOW_0_TO_10_PERCENT = "fa_epsqoq_poslow"
        HIGH_GREATER_THAN_25_PERCENT = "fa_epsqoq_high"
        UNDER_5_PERCENT = "fa_epsqoq_u5"
        UNDER_10_PERCENT = "fa_epsqoq_u10"
        UNDER_15_PERCENT = "fa_epsqoq_u15"
        UNDER_20_PERCENT = "fa_epsqoq_u20"
        UNDER_25_PERCENT = "fa_epsqoq_u25"
        UNDER_30_PERCENT = "fa_epsqoq_u30"
        OVER_5_PERCENT = "fa_epsqoq_o5"
        OVER_10_PERCENT = "fa_epsqoq_o10"
        OVER_15_PERCENT = "fa_epsqoq_o15"
        OVER_20_PERCENT = "fa_epsqoq_o20"
        OVER_25_PERCENT = "fa_epsqoq_o25"
        OVER_30_PERCENT = "fa_epsqoq_o30"
        CUSTOM_ELITE_ONLY = "fa_epsqoq_frange"

    class SalesGrowthQtrOverQtrOption(ScreenerFilterOption, Enum):
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_salesqoq_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_salesqoq_pos"
        POSITIVE_LOW_0_TO_10_PERCENT = "fa_salesqoq_poslow"
        HIGH_GREATER_THAN_25_PERCENT = "fa_salesqoq_high"
        UNDER_5_PERCENT = "fa_salesqoq_u5"
        UNDER_10_PERCENT = "fa_salesqoq_u10"
        UNDER_15_PERCENT = "fa_salesqoq_u15"
        UNDER_20_PERCENT = "fa_salesqoq_u20"
        UNDER_25_PERCENT = "fa_salesqoq_u25"
        UNDER_30_PERCENT = "fa_salesqoq_u30"
        OVER_5_PERCENT = "fa_salesqoq_o5"
        OVER_10_PERCENT = "fa_salesqoq_o10"
        OVER_15_PERCENT = "fa_salesqoq_o15"
        OVER_20_PERCENT = "fa_salesqoq_o20"
        OVER_25_PERCENT = "fa_salesqoq_o25"
        OVER_30_PERCENT = "fa_salesqoq_o30"
        CUSTOM_ELITE_ONLY = "fa_salesqoq_frange"

    class EarningsAndRevenueSurpriseOption(ScreenerFilterOption, Enum):
        BOTH_POSITIVE_GREATER_THAN_0_PERCENT = "fa_epsrev_bp"
        BOTH_MET_0_PERCENT = "fa_epsrev_bm"
        BOTH_NEGATIVE_LESS_THAN_0_PERCENT = "fa_epsrev_bn"
        EPS_POSITIVE_GREATER_THAN_0_PERCENT = "fa_epsrev_ep"
        EPS_MET_0_PERCENT = "fa_epsrev_em"
        EPS_NEGATIVE_LESS_THAN_0_PERCENT = "fa_epsrev_en"
        EPS_UNDER_NEGATIVE_100_PERCENT = "fa_epsrev_eu100"
        EPS_UNDER_NEGATIVE_50_PERCENT = "fa_epsrev_eu50"
        EPS_UNDER_NEGATIVE_40_PERCENT = "fa_epsrev_eu40"
        EPS_UNDER_NEGATIVE_30_PERCENT = "fa_epsrev_eu30"
        EPS_UNDER_NEGATIVE_20_PERCENT = "fa_epsrev_eu20"
        EPS_UNDER_NEGATIVE_10_PERCENT = "fa_epsrev_eu10"
        EPS_UNDER_NEGATIVE_5_PERCENT = "fa_epsrev_eu5"
        EPS_OVER_5_PERCENT = "fa_epsrev_eo5"
        EPS_OVER_10_PERCENT = "fa_epsrev_eo10"
        EPS_OVER_20_PERCENT = "fa_epsrev_eo20"
        EPS_OVER_30_PERCENT = "fa_epsrev_eo30"
        EPS_OVER_40_PERCENT = "fa_epsrev_eo40"
        EPS_OVER_50_PERCENT = "fa_epsrev_eo50"
        EPS_OVER_60_PERCENT = "fa_epsrev_eo60"
        EPS_OVER_70_PERCENT = "fa_epsrev_eo70"
        EPS_OVER_80_PERCENT = "fa_epsrev_eo80"
        EPS_OVER_90_PERCENT = "fa_epsrev_eo90"
        EPS_OVER_100_PERCENT = "fa_epsrev_eo100"
        EPS_OVER_200_PERCENT = "fa_epsrev_eo200"
        REVENUE_POSITIVE_GREATER_THAN_0_PERCENT = "fa_epsrev_rp"
        REVENUE_MET_0_PERCENT = "fa_epsrev_rm"
        REVENUE_NEGATIVE_LESS_THAN_0_PERCENT = "fa_epsrev_rn"
        REVENUE_UNDER_NEGATIVE_100_PERCENT = "fa_epsrev_ru100"
        REVENUE_UNDER_NEGATIVE_50_PERCENT = "fa_epsrev_ru50"
        REVENUE_UNDER_NEGATIVE_40_PERCENT = "fa_epsrev_ru40"
        REVENUE_UNDER_NEGATIVE_30_PERCENT = "fa_epsrev_ru30"
        REVENUE_UNDER_NEGATIVE_20_PERCENT = "fa_epsrev_ru20"
        REVENUE_UNDER_NEGATIVE_10_PERCENT = "fa_epsrev_ru10"
        REVENUE_UNDER_NEGATIVE_5_PERCENT = "fa_epsrev_ru5"
        REVENUE_OVER_5_PERCENT = "fa_epsrev_ro5"
        REVENUE_OVER_10_PERCENT = "fa_epsrev_ro10"
        REVENUE_OVER_20_PERCENT = "fa_epsrev_ro20"
        REVENUE_OVER_30_PERCENT = "fa_epsrev_ro30"
        REVENUE_OVER_40_PERCENT = "fa_epsrev_ro40"
        REVENUE_OVER_50_PERCENT = "fa_epsrev_ro50"
        REVENUE_OVER_60_PERCENT = "fa_epsrev_ro60"
        REVENUE_OVER_70_PERCENT = "fa_epsrev_ro70"
        REVENUE_OVER_80_PERCENT = "fa_epsrev_ro80"
        REVENUE_OVER_90_PERCENT = "fa_epsrev_ro90"
        REVENUE_OVER_100_PERCENT = "fa_epsrev_ro100"
        REVENUE_OVER_200_PERCENT = "fa_epsrev_ro200"
        CUSTOM_ELITE_ONLY = "fa_epsrev_modal"

    class DividendYieldOption(ScreenerFilterOption, Enum):
        NONE_0_PERCENT = "fa_div_none"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_div_pos"
        HIGH_GREATER_THAN_5_PERCENT = "fa_div_high"
        VERY_HIGH_GREATER_THAN_10_PERCENT = "fa_div_veryhigh"
        OVER_1_PERCENT = "fa_div_o1"
        OVER_2_PERCENT = "fa_div_o2"
        OVER_3_PERCENT = "fa_div_o3"
        OVER_4_PERCENT = "fa_div_o4"
        OVER_5_PERCENT = "fa_div_o5"
        OVER_6_PERCENT = "fa_div_o6"
        OVER_7_PERCENT = "fa_div_o7"
        OVER_8_PERCENT = "fa_div_o8"
        OVER_9_PERCENT = "fa_div_o9"
        OVER_10_PERCENT = "fa_div_o10"
        CUSTOM_ELITE_ONLY = "fa_div_frange"

    class ReturnOnAssetsOption(ScreenerFilterOption, Enum):
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_roa_pos"
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_roa_neg"
        VERY_POSITIVE_GREATER_THAN_15_PERCENT = "fa_roa_verypos"
        VERY_NEGATIVE_LESS_THAN_NEGATIVE_15_PERCENT = "fa_roa_veryneg"
        UNDER_NEGATIVE_50_PERCENT = "fa_roa_u-50"
        UNDER_NEGATIVE_45_PERCENT = "fa_roa_u-45"
        UNDER_NEGATIVE_40_PERCENT = "fa_roa_u-40"
        UNDER_NEGATIVE_35_PERCENT = "fa_roa_u-35"
        UNDER_NEGATIVE_30_PERCENT = "fa_roa_u-30"
        UNDER_NEGATIVE_25_PERCENT = "fa_roa_u-25"
        UNDER_NEGATIVE_20_PERCENT = "fa_roa_u-20"
        UNDER_NEGATIVE_15_PERCENT = "fa_roa_u-15"
        UNDER_NEGATIVE_10_PERCENT = "fa_roa_u-10"
        UNDER_NEGATIVE_5_PERCENT = "fa_roa_u-5"
        OVER_5_PERCENT = "fa_roa_o5"
        OVER_10_PERCENT = "fa_roa_o10"
        OVER_15_PERCENT = "fa_roa_o15"
        OVER_20_PERCENT = "fa_roa_o20"
        OVER_25_PERCENT = "fa_roa_o25"
        OVER_30_PERCENT = "fa_roa_o30"
        OVER_35_PERCENT = "fa_roa_o35"
        OVER_40_PERCENT = "fa_roa_o40"
        OVER_45_PERCENT = "fa_roa_o45"
        OVER_50_PERCENT = "fa_roa_o50"
        CUSTOM_ELITE_ONLY = "fa_roa_frange"

    class ReturnOnEquityOption(ScreenerFilterOption, Enum):
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_roe_pos"
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_roe_neg"
        VERY_POSITIVE_GREATER_THAN_30_PERCENT = "fa_roe_verypos"
        VERY_NEGATIVE_LESS_THAN_NEGATIVE_15_PERCENT = "fa_roe_veryneg"
        UNDER_NEGATIVE_50_PERCENT = "fa_roe_u-50"
        UNDER_NEGATIVE_45_PERCENT = "fa_roe_u-45"
        UNDER_NEGATIVE_40_PERCENT = "fa_roe_u-40"
        UNDER_NEGATIVE_35_PERCENT = "fa_roe_u-35"
        UNDER_NEGATIVE_30_PERCENT = "fa_roe_u-30"
        UNDER_NEGATIVE_25_PERCENT = "fa_roe_u-25"
        UNDER_NEGATIVE_20_PERCENT = "fa_roe_u-20"
        UNDER_NEGATIVE_15_PERCENT = "fa_roe_u-15"
        UNDER_NEGATIVE_10_PERCENT = "fa_roe_u-10"
        UNDER_NEGATIVE_5_PERCENT = "fa_roe_u-5"
        OVER_5_PERCENT = "fa_roe_o5"
        OVER_10_PERCENT = "fa_roe_o10"
        OVER_15_PERCENT = "fa_roe_o15"
        OVER_20_PERCENT = "fa_roe_o20"
        OVER_25_PERCENT = "fa_roe_o25"
        OVER_30_PERCENT = "fa_roe_o30"
        OVER_35_PERCENT = "fa_roe_o35"
        OVER_40_PERCENT = "fa_roe_o40"
        OVER_45_PERCENT = "fa_roe_o45"
        OVER_50_PERCENT = "fa_roe_o50"
        CUSTOM_ELITE_ONLY = "fa_roe_frange"

    class ReturnOnInvestmentOption(ScreenerFilterOption, Enum):
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_roi_pos"
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_roi_neg"
        VERY_POSITIVE_GREATER_THAN_25_PERCENT = "fa_roi_verypos"
        VERY_NEGATIVE_LESS_THAN_NEGATIVE_10_PERCENT = "fa_roi_veryneg"
        UNDER_NEGATIVE_50_PERCENT = "fa_roi_u-50"
        UNDER_NEGATIVE_45_PERCENT = "fa_roi_u-45"
        UNDER_NEGATIVE_40_PERCENT = "fa_roi_u-40"
        UNDER_NEGATIVE_35_PERCENT = "fa_roi_u-35"
        UNDER_NEGATIVE_30_PERCENT = "fa_roi_u-30"
        UNDER_NEGATIVE_25_PERCENT = "fa_roi_u-25"
        UNDER_NEGATIVE_20_PERCENT = "fa_roi_u-20"
        UNDER_NEGATIVE_15_PERCENT = "fa_roi_u-15"
        UNDER_NEGATIVE_10_PERCENT = "fa_roi_u-10"
        UNDER_NEGATIVE_5_PERCENT = "fa_roi_u-5"
        OVER_5_PERCENT = "fa_roi_o5"
        OVER_10_PERCENT = "fa_roi_o10"
        OVER_15_PERCENT = "fa_roi_o15"
        OVER_20_PERCENT = "fa_roi_o20"
        OVER_25_PERCENT = "fa_roi_o25"
        OVER_30_PERCENT = "fa_roi_o30"
        OVER_35_PERCENT = "fa_roi_o35"
        OVER_40_PERCENT = "fa_roi_o40"
        OVER_45_PERCENT = "fa_roi_o45"
        OVER_50_PERCENT = "fa_roi_o50"
        CUSTOM_ELITE_ONLY = "fa_roi_frange"

    class CurrentRatioOption(ScreenerFilterOption, Enum):
        HIGH_GREATER_THAN_3 = "fa_curratio_high"
        LOW_LESS_THAN_1 = "fa_curratio_low"
        UNDER_1 = "fa_curratio_u1"
        UNDER_0_POINT_5 = "fa_curratio_u0.5"
        OVER_0_POINT_5 = "fa_curratio_o0.5"
        OVER_1 = "fa_curratio_o1"
        OVER_1_POINT_5 = "fa_curratio_o1.5"
        OVER_2 = "fa_curratio_o2"
        OVER_3 = "fa_curratio_o3"
        OVER_4 = "fa_curratio_o4"
        OVER_5 = "fa_curratio_o5"
        OVER_10 = "fa_curratio_o10"
        CUSTOM_ELITE_ONLY = "fa_curratio_frange"

    class QuickRatioOption(ScreenerFilterOption, Enum):
        HIGH_GREATER_THAN_3 = "fa_quickratio_high"
        LOW_LESS_THAN_0_POINT_5 = "fa_quickratio_low"
        UNDER_1 = "fa_quickratio_u1"
        UNDER_0_POINT_5 = "fa_quickratio_u0.5"
        OVER_0_POINT_5 = "fa_quickratio_o0.5"
        OVER_1 = "fa_quickratio_o1"
        OVER_1_POINT_5 = "fa_quickratio_o1.5"
        OVER_2 = "fa_quickratio_o2"
        OVER_3 = "fa_quickratio_o3"
        OVER_4 = "fa_quickratio_o4"
        OVER_5 = "fa_quickratio_o5"
        OVER_10 = "fa_quickratio_o10"
        CUSTOM_ELITE_ONLY = "fa_quickratio_frange"

    class LTDebtEquityOption(ScreenerFilterOption, Enum):
        HIGH_GREATER_THAN_0_POINT_5 = "fa_ltdebteq_high"
        LOW_LESS_THAN_0_POINT_1 = "fa_ltdebteq_low"
        UNDER_1 = "fa_ltdebteq_u1"
        UNDER_0_POINT_9 = "fa_ltdebteq_u0.9"
        UNDER_0_POINT_8 = "fa_ltdebteq_u0.8"
        UNDER_0_POINT_7 = "fa_ltdebteq_u0.7"
        UNDER_0_POINT_6 = "fa_ltdebteq_u0.6"
        UNDER_0_POINT_5 = "fa_ltdebteq_u0.5"
        UNDER_0_POINT_4 = "fa_ltdebteq_u0.4"
        UNDER_0_POINT_3 = "fa_ltdebteq_u0.3"
        UNDER_0_POINT_2 = "fa_ltdebteq_u0.2"
        UNDER_0_POINT_1 = "fa_ltdebteq_u0.1"
        OVER_0_POINT_1 = "fa_ltdebteq_o0.1"
        OVER_0_POINT_2 = "fa_ltdebteq_o0.2"
        OVER_0_POINT_3 = "fa_ltdebteq_o0.3"
        OVER_0_POINT_4 = "fa_ltdebteq_o0.4"
        OVER_0_POINT_5 = "fa_ltdebteq_o0.5"
        OVER_0_POINT_6 = "fa_ltdebteq_o0.6"
        OVER_0_POINT_7 = "fa_ltdebteq_o0.7"
        OVER_0_POINT_8 = "fa_ltdebteq_o0.8"
        OVER_0_POINT_9 = "fa_ltdebteq_o0.9"
        OVER_1 = "fa_ltdebteq_o1"
        CUSTOM_ELITE_ONLY = "fa_ltdebteq_frange"

    class DebtEquityOption(ScreenerFilterOption, Enum):
        HIGH_GREATER_THAN_0_POINT_5 = "fa_debteq_high"
        LOW_LESS_THAN_0_POINT_1 = "fa_debteq_low"
        UNDER_1 = "fa_debteq_u1"
        UNDER_0_POINT_9 = "fa_debteq_u0.9"
        UNDER_0_POINT_8 = "fa_debteq_u0.8"
        UNDER_0_POINT_7 = "fa_debteq_u0.7"
        UNDER_0_POINT_6 = "fa_debteq_u0.6"
        UNDER_0_POINT_5 = "fa_debteq_u0.5"
        UNDER_0_POINT_4 = "fa_debteq_u0.4"
        UNDER_0_POINT_3 = "fa_debteq_u0.3"
        UNDER_0_POINT_2 = "fa_debteq_u0.2"
        UNDER_0_POINT_1 = "fa_debteq_u0.1"
        OVER_0_POINT_1 = "fa_debteq_o0.1"
        OVER_0_POINT_2 = "fa_debteq_o0.2"
        OVER_0_POINT_3 = "fa_debteq_o0.3"
        OVER_0_POINT_4 = "fa_debteq_o0.4"
        OVER_0_POINT_5 = "fa_debteq_o0.5"
        OVER_0_POINT_6 = "fa_debteq_o0.6"
        OVER_0_POINT_7 = "fa_debteq_o0.7"
        OVER_0_POINT_8 = "fa_debteq_o0.8"
        OVER_0_POINT_9 = "fa_debteq_o0.9"
        OVER_1 = "fa_debteq_o1"
        CUSTOM_ELITE_ONLY = "fa_debteq_frange"

    class GrossMarginOption(ScreenerFilterOption, Enum):
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_grossmargin_pos"
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_grossmargin_neg"
        HIGH_GREATER_THAN_50_PERCENT = "fa_grossmargin_high"
        UNDER_90_PERCENT = "fa_grossmargin_u90"
        UNDER_80_PERCENT = "fa_grossmargin_u80"
        UNDER_70_PERCENT = "fa_grossmargin_u70"
        UNDER_60_PERCENT = "fa_grossmargin_u60"
        UNDER_50_PERCENT = "fa_grossmargin_u50"
        UNDER_45_PERCENT = "fa_grossmargin_u45"
        UNDER_40_PERCENT = "fa_grossmargin_u40"
        UNDER_35_PERCENT = "fa_grossmargin_u35"
        UNDER_30_PERCENT = "fa_grossmargin_u30"
        UNDER_25_PERCENT = "fa_grossmargin_u25"
        UNDER_20_PERCENT = "fa_grossmargin_u20"
        UNDER_15_PERCENT = "fa_grossmargin_u15"
        UNDER_10_PERCENT = "fa_grossmargin_u10"
        UNDER_5_PERCENT = "fa_grossmargin_u5"
        UNDER_0_PERCENT = "fa_grossmargin_u0"
        UNDER_NEGATIVE_10_PERCENT = "fa_grossmargin_u-10"
        UNDER_NEGATIVE_20_PERCENT = "fa_grossmargin_u-20"
        UNDER_NEGATIVE_30_PERCENT = "fa_grossmargin_u-30"
        UNDER_NEGATIVE_50_PERCENT = "fa_grossmargin_u-50"
        UNDER_NEGATIVE_70_PERCENT = "fa_grossmargin_u-70"
        UNDER_NEGATIVE_100_PERCENT = "fa_grossmargin_u-100"
        OVER_0_PERCENT = "fa_grossmargin_o0"
        OVER_5_PERCENT = "fa_grossmargin_o5"
        OVER_10_PERCENT = "fa_grossmargin_o10"
        OVER_15_PERCENT = "fa_grossmargin_o15"
        OVER_20_PERCENT = "fa_grossmargin_o20"
        OVER_25_PERCENT = "fa_grossmargin_o25"
        OVER_30_PERCENT = "fa_grossmargin_o30"
        OVER_35_PERCENT = "fa_grossmargin_o35"
        OVER_40_PERCENT = "fa_grossmargin_o40"
        OVER_45_PERCENT = "fa_grossmargin_o45"
        OVER_50_PERCENT = "fa_grossmargin_o50"
        OVER_60_PERCENT = "fa_grossmargin_o60"
        OVER_70_PERCENT = "fa_grossmargin_o70"
        OVER_80_PERCENT = "fa_grossmargin_o80"
        OVER_90_PERCENT = "fa_grossmargin_o90"
        CUSTOM_ELITE_ONLY = "fa_grossmargin_frange"

    class OperatingMarginOption(ScreenerFilterOption, Enum):
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_opermargin_pos"
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_opermargin_neg"
        VERY_NEGATIVE_LESS_THAN_NEGATIVE_20_PERCENT = "fa_opermargin_veryneg"
        HIGH_GREATER_THAN_25_PERCENT = "fa_opermargin_high"
        UNDER_90_PERCENT = "fa_opermargin_u90"
        UNDER_80_PERCENT = "fa_opermargin_u80"
        UNDER_70_PERCENT = "fa_opermargin_u70"
        UNDER_60_PERCENT = "fa_opermargin_u60"
        UNDER_50_PERCENT = "fa_opermargin_u50"
        UNDER_45_PERCENT = "fa_opermargin_u45"
        UNDER_40_PERCENT = "fa_opermargin_u40"
        UNDER_35_PERCENT = "fa_opermargin_u35"
        UNDER_30_PERCENT = "fa_opermargin_u30"
        UNDER_25_PERCENT = "fa_opermargin_u25"
        UNDER_20_PERCENT = "fa_opermargin_u20"
        UNDER_15_PERCENT = "fa_opermargin_u15"
        UNDER_10_PERCENT = "fa_opermargin_u10"
        UNDER_5_PERCENT = "fa_opermargin_u5"
        UNDER_0_PERCENT = "fa_opermargin_u0"
        UNDER_NEGATIVE_10_PERCENT = "fa_opermargin_u-10"
        UNDER_NEGATIVE_20_PERCENT = "fa_opermargin_u-20"
        UNDER_NEGATIVE_30_PERCENT = "fa_opermargin_u-30"
        UNDER_NEGATIVE_50_PERCENT = "fa_opermargin_u-50"
        UNDER_NEGATIVE_70_PERCENT = "fa_opermargin_u-70"
        UNDER_NEGATIVE_100_PERCENT = "fa_opermargin_u-100"
        OVER_0_PERCENT = "fa_opermargin_o0"
        OVER_5_PERCENT = "fa_opermargin_o5"
        OVER_10_PERCENT = "fa_opermargin_o10"
        OVER_15_PERCENT = "fa_opermargin_o15"
        OVER_20_PERCENT = "fa_opermargin_o20"
        OVER_25_PERCENT = "fa_opermargin_o25"
        OVER_30_PERCENT = "fa_opermargin_o30"
        OVER_35_PERCENT = "fa_opermargin_o35"
        OVER_40_PERCENT = "fa_opermargin_o40"
        OVER_45_PERCENT = "fa_opermargin_o45"
        OVER_50_PERCENT = "fa_opermargin_o50"
        OVER_60_PERCENT = "fa_opermargin_o60"
        OVER_70_PERCENT = "fa_opermargin_o70"
        OVER_80_PERCENT = "fa_opermargin_o80"
        OVER_90_PERCENT = "fa_opermargin_o90"
        CUSTOM_ELITE_ONLY = "fa_opermargin_frange"

    class NetProfitMarginOption(ScreenerFilterOption, Enum):
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_netmargin_pos"
        NEGATIVE_LESS_THAN_0_PERCENT = "fa_netmargin_neg"
        VERY_NEGATIVE_LESS_THAN_NEGATIVE_20_PERCENT = "fa_netmargin_veryneg"
        HIGH_GREATER_THAN_20_PERCENT = "fa_netmargin_high"
        UNDER_90_PERCENT = "fa_netmargin_u90"
        UNDER_80_PERCENT = "fa_netmargin_u80"
        UNDER_70_PERCENT = "fa_netmargin_u70"
        UNDER_60_PERCENT = "fa_netmargin_u60"
        UNDER_50_PERCENT = "fa_netmargin_u50"
        UNDER_45_PERCENT = "fa_netmargin_u45"
        UNDER_40_PERCENT = "fa_netmargin_u40"
        UNDER_35_PERCENT = "fa_netmargin_u35"
        UNDER_30_PERCENT = "fa_netmargin_u30"
        UNDER_25_PERCENT = "fa_netmargin_u25"
        UNDER_20_PERCENT = "fa_netmargin_u20"
        UNDER_15_PERCENT = "fa_netmargin_u15"
        UNDER_10_PERCENT = "fa_netmargin_u10"
        UNDER_5_PERCENT = "fa_netmargin_u5"
        UNDER_0_PERCENT = "fa_netmargin_u0"
        UNDER_NEGATIVE_10_PERCENT = "fa_netmargin_u-10"
        UNDER_NEGATIVE_20_PERCENT = "fa_netmargin_u-20"
        UNDER_NEGATIVE_30_PERCENT = "fa_netmargin_u-30"
        UNDER_NEGATIVE_50_PERCENT = "fa_netmargin_u-50"
        UNDER_NEGATIVE_70_PERCENT = "fa_netmargin_u-70"
        UNDER_NEGATIVE_100_PERCENT = "fa_netmargin_u-100"
        OVER_0_PERCENT = "fa_netmargin_o0"
        OVER_5_PERCENT = "fa_netmargin_o5"
        OVER_10_PERCENT = "fa_netmargin_o10"
        OVER_15_PERCENT = "fa_netmargin_o15"
        OVER_20_PERCENT = "fa_netmargin_o20"
        OVER_25_PERCENT = "fa_netmargin_o25"
        OVER_30_PERCENT = "fa_netmargin_o30"
        OVER_35_PERCENT = "fa_netmargin_o35"
        OVER_40_PERCENT = "fa_netmargin_o40"
        OVER_45_PERCENT = "fa_netmargin_o45"
        OVER_50_PERCENT = "fa_netmargin_o50"
        OVER_60_PERCENT = "fa_netmargin_o60"
        OVER_70_PERCENT = "fa_netmargin_o70"
        OVER_80_PERCENT = "fa_netmargin_o80"
        OVER_90_PERCENT = "fa_netmargin_o90"
        CUSTOM_ELITE_ONLY = "fa_netmargin_frange"

    class PayoutRatioOption(ScreenerFilterOption, Enum):
        NONE_0_PERCENT = "fa_payoutratio_none"
        POSITIVE_GREATER_THAN_0_PERCENT = "fa_payoutratio_pos"
        LOW_LESS_THAN_20_PERCENT = "fa_payoutratio_low"
        HIGH_GREATER_THAN_50_PERCENT = "fa_payoutratio_high"
        OVER_0_PERCENT = "fa_payoutratio_o0"
        OVER_10_PERCENT = "fa_payoutratio_o10"
        OVER_20_PERCENT = "fa_payoutratio_o20"
        OVER_30_PERCENT = "fa_payoutratio_o30"
        OVER_40_PERCENT = "fa_payoutratio_o40"
        OVER_50_PERCENT = "fa_payoutratio_o50"
        OVER_60_PERCENT = "fa_payoutratio_o60"
        OVER_70_PERCENT = "fa_payoutratio_o70"
        OVER_80_PERCENT = "fa_payoutratio_o80"
        OVER_90_PERCENT = "fa_payoutratio_o90"
        OVER_100_PERCENT = "fa_payoutratio_o100"
        UNDER_10_PERCENT = "fa_payoutratio_u10"
        UNDER_20_PERCENT = "fa_payoutratio_u20"
        UNDER_30_PERCENT = "fa_payoutratio_u30"
        UNDER_40_PERCENT = "fa_payoutratio_u40"
        UNDER_50_PERCENT = "fa_payoutratio_u50"
        UNDER_60_PERCENT = "fa_payoutratio_u60"
        UNDER_70_PERCENT = "fa_payoutratio_u70"
        UNDER_80_PERCENT = "fa_payoutratio_u80"
        UNDER_90_PERCENT = "fa_payoutratio_u90"
        UNDER_100_PERCENT = "fa_payoutratio_u100"
        CUSTOM_ELITE_ONLY = "fa_payoutratio_frange"

    class InsiderOwnershipOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_5_PERCENT = "sh_insiderown_low"
        HIGH_GREATER_THAN_30_PERCENT = "sh_insiderown_high"
        VERY_HIGH_GREATER_THAN_50_PERCENT = "sh_insiderown_veryhigh"
        OVER_10_PERCENT = "sh_insiderown_o10"
        OVER_20_PERCENT = "sh_insiderown_o20"
        OVER_30_PERCENT = "sh_insiderown_o30"
        OVER_40_PERCENT = "sh_insiderown_o40"
        OVER_50_PERCENT = "sh_insiderown_o50"
        OVER_60_PERCENT = "sh_insiderown_o60"
        OVER_70_PERCENT = "sh_insiderown_o70"
        OVER_80_PERCENT = "sh_insiderown_o80"
        OVER_90_PERCENT = "sh_insiderown_o90"
        CUSTOM_ELITE_ONLY = "sh_insiderown_frange"

    class InsiderTransactionsOption(ScreenerFilterOption, Enum):
        VERY_NEGATIVE_LESS_THAN_20_PERCENT = "sh_insidertrans_veryneg"
        NEGATIVE_LESS_THAN_0_PERCENT = "sh_insidertrans_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "sh_insidertrans_pos"
        VERY_POSITIVE_GREATER_THAN_20_PERCENT = "sh_insidertrans_verypos"
        UNDER_NEGATIVE_90_PERCENT = "sh_insidertrans_u-90"
        UNDER_NEGATIVE_80_PERCENT = "sh_insidertrans_u-80"
        UNDER_NEGATIVE_70_PERCENT = "sh_insidertrans_u-70"
        UNDER_NEGATIVE_60_PERCENT = "sh_insidertrans_u-60"
        UNDER_NEGATIVE_50_PERCENT = "sh_insidertrans_u-50"
        UNDER_NEGATIVE_45_PERCENT = "sh_insidertrans_u-45"
        UNDER_NEGATIVE_40_PERCENT = "sh_insidertrans_u-40"
        UNDER_NEGATIVE_35_PERCENT = "sh_insidertrans_u-35"
        UNDER_NEGATIVE_30_PERCENT = "sh_insidertrans_u-30"
        UNDER_NEGATIVE_25_PERCENT = "sh_insidertrans_u-25"
        UNDER_NEGATIVE_20_PERCENT = "sh_insidertrans_u-20"
        UNDER_NEGATIVE_15_PERCENT = "sh_insidertrans_u-15"
        UNDER_NEGATIVE_10_PERCENT = "sh_insidertrans_u-10"
        UNDER_NEGATIVE_5_PERCENT = "sh_insidertrans_u-5"
        OVER_5_PERCENT = "sh_insidertrans_o5"
        OVER_10_PERCENT = "sh_insidertrans_o10"
        OVER_15_PERCENT = "sh_insidertrans_o15"
        OVER_20_PERCENT = "sh_insidertrans_o20"
        OVER_25_PERCENT = "sh_insidertrans_o25"
        OVER_30_PERCENT = "sh_insidertrans_o30"
        OVER_35_PERCENT = "sh_insidertrans_o35"
        OVER_40_PERCENT = "sh_insidertrans_o40"
        OVER_45_PERCENT = "sh_insidertrans_o45"
        OVER_50_PERCENT = "sh_insidertrans_o50"
        OVER_60_PERCENT = "sh_insidertrans_o60"
        OVER_70_PERCENT = "sh_insidertrans_o70"
        OVER_80_PERCENT = "sh_insidertrans_o80"
        OVER_90_PERCENT = "sh_insidertrans_o90"
        CUSTOM_ELITE_ONLY = "sh_insidertrans_frange"

    class InstitutionalOwnershipOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_5_PERCENT = "sh_instown_low"
        HIGH_GREATER_THAN_90_PERCENT = "sh_instown_high"
        UNDER_90_PERCENT = "sh_instown_u90"
        UNDER_80_PERCENT = "sh_instown_u80"
        UNDER_70_PERCENT = "sh_instown_u70"
        UNDER_60_PERCENT = "sh_instown_u60"
        UNDER_50_PERCENT = "sh_instown_u50"
        UNDER_40_PERCENT = "sh_instown_u40"
        UNDER_30_PERCENT = "sh_instown_u30"
        UNDER_20_PERCENT = "sh_instown_u20"
        UNDER_10_PERCENT = "sh_instown_u10"
        OVER_10_PERCENT = "sh_instown_o10"
        OVER_20_PERCENT = "sh_instown_o20"
        OVER_30_PERCENT = "sh_instown_o30"
        OVER_40_PERCENT = "sh_instown_o40"
        OVER_50_PERCENT = "sh_instown_o50"
        OVER_60_PERCENT = "sh_instown_o60"
        OVER_70_PERCENT = "sh_instown_o70"
        OVER_80_PERCENT = "sh_instown_o80"
        OVER_90_PERCENT = "sh_instown_o90"
        CUSTOM_ELITE_ONLY = "sh_instown_frange"

    class InstitutionalTransactionsOption(ScreenerFilterOption, Enum):
        VERY_NEGATIVE_LESS_THAN_20_PERCENT = "sh_insttrans_veryneg"
        NEGATIVE_LESS_THAN_0_PERCENT = "sh_insttrans_neg"
        POSITIVE_GREATER_THAN_0_PERCENT = "sh_insttrans_pos"
        VERY_POSITIVE_GREATER_THAN_20_PERCENT = "sh_insttrans_verypos"
        UNDER_NEGATIVE_50_PERCENT = "sh_insttrans_u-50"
        UNDER_NEGATIVE_45_PERCENT = "sh_insttrans_u-45"
        UNDER_NEGATIVE_40_PERCENT = "sh_insttrans_u-40"
        UNDER_NEGATIVE_35_PERCENT = "sh_insttrans_u-35"
        UNDER_NEGATIVE_30_PERCENT = "sh_insttrans_u-30"
        UNDER_NEGATIVE_25_PERCENT = "sh_insttrans_u-25"
        UNDER_NEGATIVE_20_PERCENT = "sh_insttrans_u-20"
        UNDER_NEGATIVE_15_PERCENT = "sh_insttrans_u-15"
        UNDER_NEGATIVE_10_PERCENT = "sh_insttrans_u-10"
        UNDER_NEGATIVE_5_PERCENT = "sh_insttrans_u-5"
        OVER_5_PERCENT = "sh_insttrans_o5"
        OVER_10_PERCENT = "sh_insttrans_o10"
        OVER_15_PERCENT = "sh_insttrans_o15"
        OVER_20_PERCENT = "sh_insttrans_o20"
        OVER_25_PERCENT = "sh_insttrans_o25"
        OVER_30_PERCENT = "sh_insttrans_o30"
        OVER_35_PERCENT = "sh_insttrans_o35"
        OVER_40_PERCENT = "sh_insttrans_o40"
        OVER_45_PERCENT = "sh_insttrans_o45"
        OVER_50_PERCENT = "sh_insttrans_o50"
        CUSTOM_ELITE_ONLY = "sh_insttrans_frange"

    class FloatShortOption(ScreenerFilterOption, Enum):
        LOW_LESS_THAN_5_PERCENT = "sh_short_low"
        HIGH_GREATER_THAN_20_PERCENT = "sh_short_high"
        UNDER_5_PERCENT = "sh_short_u5"
        UNDER_10_PERCENT = "sh_short_u10"
        UNDER_15_PERCENT = "sh_short_u15"
        UNDER_20_PERCENT = "sh_short_u20"
        UNDER_25_PERCENT = "sh_short_u25"
        UNDER_30_PERCENT = "sh_short_u30"
        OVER_5_PERCENT = "sh_short_o5"
        OVER_10_PERCENT = "sh_short_o10"
        OVER_15_PERCENT = "sh_short_o15"
        OVER_20_PERCENT = "sh_short_o20"
        OVER_25_PERCENT = "sh_short_o25"
        OVER_30_PERCENT = "sh_short_o30"
        CUSTOM_ELITE_ONLY = "sh_short_frange"

    class AnalystRecomOption(ScreenerFilterOption, Enum):
        STRONG_BUY_1 = "an_recom_strongbuy"
        BUY_OR_BETTER = "an_recom_buybetter"
        BUY = "an_recom_buy"
        HOLD_OR_BETTER = "an_recom_holdbetter"
        HOLD = "an_recom_hold"
        HOLD_OR_WORSE = "an_recom_holdworse"
        SELL = "an_recom_sell"
        SELL_OR_WORSE = "an_recom_sellworse"
        STRONG_SELL_5 = "an_recom_strongsell"
        CUSTOM_ELITE_ONLY = "an_recom_modal"

    class OptionShortOption(ScreenerFilterOption, Enum):
        OPTIONABLE = "sh_opt_option"
        SHORTABLE = "sh_opt_short"
        NOT_OPTIONABLE = "sh_opt_notoption"
        NOT_SHORTABLE = "sh_opt_notshort"
        OPTIONABLE_AND_SHORTABLE = "sh_opt_optionshort"
        OPTIONABLE_AND_NOT_SHORTABLE = "sh_opt_optionnotshort"
        NOT_OPTIONABLE_AND_SHORTABLE = "sh_opt_notoptionshort"
        NOT_OPTIONABLE_AND_NOT_SHORTABLE = "sh_opt_notoptionnotshort"
        SHORT_SALE_RESTRICTED_ELITE_ONLY = "sh_opt_restricted"
        HALTED_ELITE_ONLY = "sh_opt_restricted"
        CUSTOM_ELITE_ONLY = "sh_opt_modal"

    class EarningsDateOption(ScreenerFilterOption, Enum):
        TODAY = "earningsdate_today"
        TODAY_BEFORE_MARKET_OPEN = "earningsdate_todaybefore"
        TODAY_AFTER_MARKET_CLOSE = "earningsdate_todayafter"
        TOMORROW = "earningsdate_tomorrow"
        TOMORROW_BEFORE_MARKET_OPEN = "earningsdate_tomorrowbefore"
        TOMORROW_AFTER_MARKET_CLOSE = "earningsdate_tomorrowafter"
        YESTERDAY = "earningsdate_yesterday"
        YESTERDAY_BEFORE_MARKET_OPEN = "earningsdate_yesterdaybefore"
        YESTERDAY_AFTER_MARKET_CLOSE = "earningsdate_yesterdayafter"
        NEXT_5_DAYS = "earningsdate_nextdays5"
        PREVIOUS_5_DAYS = "earningsdate_prevdays5"
        THIS_WEEK = "earningsdate_thisweek"
        NEXT_WEEK = "earningsdate_nextweek"
        PREVIOUS_WEEK = "earningsdate_prevweek"
        THIS_MONTH = "earningsdate_thismonth"
        CUSTOM_ELITE_ONLY = "earningsdate_modal"

    class PerformanceOption(ScreenerFilterOption, Enum):
        INTRADAY_ELITE_ONLY = "ta_perf_modal_intraday"
        TODAY_UP = "ta_perf_dup"
        TODAY_DOWN = "ta_perf_ddown"
        TODAY_NEGATIVE_15_PERCENT = "ta_perf_d15u"
        TODAY_NEGATIVE_10_PERCENT = "ta_perf_d10u"
        TODAY_NEGATIVE_5_PERCENT = "ta_perf_d5u"
        TODAY_5_PERCENT = "ta_perf_d5o"
        TODAY_10_PERCENT = "ta_perf_d10o"
        TODAY_15_PERCENT = "ta_perf_d15o"
        WEEK_NEGATIVE_30_PERCENT = "ta_perf_1w30u"
        WEEK_NEGATIVE_20_PERCENT = "ta_perf_1w20u"
        WEEK_NEGATIVE_10_PERCENT = "ta_perf_1w10u"
        WEEK_DOWN = "ta_perf_1wdown"
        WEEK_UP = "ta_perf_1wup"
        WEEK_10_PERCENT = "ta_perf_1w10o"
        WEEK_20_PERCENT = "ta_perf_1w20o"
        WEEK_30_PERCENT = "ta_perf_1w30o"
        MONTH_NEGATIVE_50_PERCENT = "ta_perf_4w50u"
        MONTH_NEGATIVE_30_PERCENT = "ta_perf_4w30u"
        MONTH_NEGATIVE_20_PERCENT = "ta_perf_4w20u"
        MONTH_NEGATIVE_10_PERCENT = "ta_perf_4w10u"
        MONTH_DOWN = "ta_perf_4wdown"
        MONTH_UP = "ta_perf_4wup"
        MONTH_10_PERCENT = "ta_perf_4w10o"
        MONTH_20_PERCENT = "ta_perf_4w20o"
        MONTH_30_PERCENT = "ta_perf_4w30o"
        MONTH_50_PERCENT = "ta_perf_4w50o"
        QUARTER_NEGATIVE_50_PERCENT = "ta_perf_13w50u"
        QUARTER_NEGATIVE_30_PERCENT = "ta_perf_13w30u"
        QUARTER_NEGATIVE_20_PERCENT = "ta_perf_13w20u"
        QUARTER_NEGATIVE_10_PERCENT = "ta_perf_13w10u"
        QUARTER_DOWN = "ta_perf_13wdown"
        QUARTER_UP = "ta_perf_13wup"
        QUARTER_10_PERCENT = "ta_perf_13w10o"
        QUARTER_20_PERCENT = "ta_perf_13w20o"
        QUARTER_30_PERCENT = "ta_perf_13w30o"
        QUARTER_50_PERCENT = "ta_perf_13w50o"
        HALF_NEGATIVE_75_PERCENT = "ta_perf_26w75u"
        HALF_NEGATIVE_50_PERCENT = "ta_perf_26w50u"
        HALF_NEGATIVE_30_PERCENT = "ta_perf_26w30u"
        HALF_NEGATIVE_20_PERCENT = "ta_perf_26w20u"
        HALF_NEGATIVE_10_PERCENT = "ta_perf_26w10u"
        HALF_DOWN = "ta_perf_26wdown"
        HALF_UP = "ta_perf_26wup"
        HALF_10_PERCENT = "ta_perf_26w10o"
        HALF_20_PERCENT = "ta_perf_26w20o"
        HALF_30_PERCENT = "ta_perf_26w30o"
        HALF_50_PERCENT = "ta_perf_26w50o"
        HALF_100_PERCENT = "ta_perf_26w100o"
        YEAR_NEGATIVE_75_PERCENT = "ta_perf_52w75u"
        YEAR_NEGATIVE_50_PERCENT = "ta_perf_52w50u"
        YEAR_NEGATIVE_30_PERCENT = "ta_perf_52w30u"
        YEAR_NEGATIVE_20_PERCENT = "ta_perf_52w20u"
        YEAR_NEGATIVE_10_PERCENT = "ta_perf_52w10u"
        YEAR_DOWN = "ta_perf_52wdown"
        YEAR_UP = "ta_perf_52wup"
        YEAR_10_PERCENT = "ta_perf_52w10o"
        YEAR_20_PERCENT = "ta_perf_52w20o"
        YEAR_30_PERCENT = "ta_perf_52w30o"
        YEAR_50_PERCENT = "ta_perf_52w50o"
        YEAR_100_PERCENT = "ta_perf_52w100o"
        YEAR_200_PERCENT = "ta_perf_52w200o"
        YEAR_300_PERCENT = "ta_perf_52w300o"
        YEAR_500_PERCENT = "ta_perf_52w500o"
        YTD_NEGATIVE_75_PERCENT = "ta_perf_ytd75u"
        YTD_NEGATIVE_50_PERCENT = "ta_perf_ytd50u"
        YTD_NEGATIVE_30_PERCENT = "ta_perf_ytd30u"
        YTD_NEGATIVE_20_PERCENT = "ta_perf_ytd20u"
        YTD_NEGATIVE_10_PERCENT = "ta_perf_ytd10u"
        YTD_NEGATIVE_5_PERCENT = "ta_perf_ytd5u"
        YTD_DOWN = "ta_perf_ytddown"
        YTD_UP = "ta_perf_ytdup"
        YTD_5_PERCENT = "ta_perf_ytd5o"
        YTD_10_PERCENT = "ta_perf_ytd10o"
        YTD_20_PERCENT = "ta_perf_ytd20o"
        YTD_30_PERCENT = "ta_perf_ytd30o"
        YTD_50_PERCENT = "ta_perf_ytd50o"
        YTD_100_PERCENT = "ta_perf_ytd100o"
        CUSTOM_ELITE_ONLY = "ta_perf_modal"

    class Performance2Option(ScreenerFilterOption, Enum):
        INTRADAY_ELITE_ONLY = "ta_perf2_modal_intraday"
        TODAY_UP = "ta_perf2_dup"
        TODAY_DOWN = "ta_perf2_ddown"
        TODAY_NEGATIVE_15_PERCENT = "ta_perf2_d15u"
        TODAY_NEGATIVE_10_PERCENT = "ta_perf2_d10u"
        TODAY_NEGATIVE_5_PERCENT = "ta_perf2_d5u"
        TODAY_5_PERCENT = "ta_perf2_d5o"
        TODAY_10_PERCENT = "ta_perf2_d10o"
        TODAY_15_PERCENT = "ta_perf2_d15o"
        WEEK_NEGATIVE_30_PERCENT = "ta_perf2_1w30u"
        WEEK_NEGATIVE_20_PERCENT = "ta_perf2_1w20u"
        WEEK_NEGATIVE_10_PERCENT = "ta_perf2_1w10u"
        WEEK_DOWN = "ta_perf2_1wdown"
        WEEK_UP = "ta_perf2_1wup"
        WEEK_10_PERCENT = "ta_perf2_1w10o"
        WEEK_20_PERCENT = "ta_perf2_1w20o"
        WEEK_30_PERCENT = "ta_perf2_1w30o"
        MONTH_NEGATIVE_50_PERCENT = "ta_perf2_4w50u"
        MONTH_NEGATIVE_30_PERCENT = "ta_perf2_4w30u"
        MONTH_NEGATIVE_20_PERCENT = "ta_perf2_4w20u"
        MONTH_NEGATIVE_10_PERCENT = "ta_perf2_4w10u"
        MONTH_DOWN = "ta_perf2_4wdown"
        MONTH_UP = "ta_perf2_4wup"
        MONTH_10_PERCENT = "ta_perf2_4w10o"
        MONTH_20_PERCENT = "ta_perf2_4w20o"
        MONTH_30_PERCENT = "ta_perf2_4w30o"
        MONTH_50_PERCENT = "ta_perf2_4w50o"
        QUARTER_NEGATIVE_50_PERCENT = "ta_perf2_13w50u"
        QUARTER_NEGATIVE_30_PERCENT = "ta_perf2_13w30u"
        QUARTER_NEGATIVE_20_PERCENT = "ta_perf2_13w20u"
        QUARTER_NEGATIVE_10_PERCENT = "ta_perf2_13w10u"
        QUARTER_DOWN = "ta_perf2_13wdown"
        QUARTER_UP = "ta_perf2_13wup"
        QUARTER_10_PERCENT = "ta_perf2_13w10o"
        QUARTER_20_PERCENT = "ta_perf2_13w20o"
        QUARTER_30_PERCENT = "ta_perf2_13w30o"
        QUARTER_50_PERCENT = "ta_perf2_13w50o"
        HALF_NEGATIVE_75_PERCENT = "ta_perf2_26w75u"
        HALF_NEGATIVE_50_PERCENT = "ta_perf2_26w50u"
        HALF_NEGATIVE_30_PERCENT = "ta_perf2_26w30u"
        HALF_NEGATIVE_20_PERCENT = "ta_perf2_26w20u"
        HALF_NEGATIVE_10_PERCENT = "ta_perf2_26w10u"
        HALF_DOWN = "ta_perf2_26wdown"
        HALF_UP = "ta_perf2_26wup"
        HALF_10_PERCENT = "ta_perf2_26w10o"
        HALF_20_PERCENT = "ta_perf2_26w20o"
        HALF_30_PERCENT = "ta_perf2_26w30o"
        HALF_50_PERCENT = "ta_perf2_26w50o"
        HALF_100_PERCENT = "ta_perf2_26w100o"
        YEAR_NEGATIVE_75_PERCENT = "ta_perf2_52w75u"
        YEAR_NEGATIVE_50_PERCENT = "ta_perf2_52w50u"
        YEAR_NEGATIVE_30_PERCENT = "ta_perf2_52w30u"
        YEAR_NEGATIVE_20_PERCENT = "ta_perf2_52w20u"
        YEAR_NEGATIVE_10_PERCENT = "ta_perf2_52w10u"
        YEAR_DOWN = "ta_perf2_52wdown"
        YEAR_UP = "ta_perf2_52wup"
        YEAR_10_PERCENT = "ta_perf2_52w10o"
        YEAR_20_PERCENT = "ta_perf2_52w20o"
        YEAR_30_PERCENT = "ta_perf2_52w30o"
        YEAR_50_PERCENT = "ta_perf2_52w50o"
        YEAR_100_PERCENT = "ta_perf2_52w100o"
        YEAR_200_PERCENT = "ta_perf2_52w200o"
        YEAR_300_PERCENT = "ta_perf2_52w300o"
        YEAR_500_PERCENT = "ta_perf2_52w500o"
        YTD_NEGATIVE_75_PERCENT = "ta_perf2_ytd75u"
        YTD_NEGATIVE_50_PERCENT = "ta_perf2_ytd50u"
        YTD_NEGATIVE_30_PERCENT = "ta_perf2_ytd30u"
        YTD_NEGATIVE_20_PERCENT = "ta_perf2_ytd20u"
        YTD_NEGATIVE_10_PERCENT = "ta_perf2_ytd10u"
        YTD_NEGATIVE_5_PERCENT = "ta_perf2_ytd5u"
        YTD_DOWN = "ta_perf2_ytddown"
        YTD_UP = "ta_perf2_ytdup"
        YTD_5_PERCENT = "ta_perf2_ytd5o"
        YTD_10_PERCENT = "ta_perf2_ytd10o"
        YTD_20_PERCENT = "ta_perf2_ytd20o"
        YTD_30_PERCENT = "ta_perf2_ytd30o"
        YTD_50_PERCENT = "ta_perf2_ytd50o"
        YTD_100_PERCENT = "ta_perf2_ytd100o"
        CUSTOM_ELITE_ONLY = "ta_perf2_modal"

    class VolatilityOption(ScreenerFilterOption, Enum):
        WEEK_OVER_3_PERCENT = "ta_volatility_wo3"
        WEEK_OVER_4_PERCENT = "ta_volatility_wo4"
        WEEK_OVER_5_PERCENT = "ta_volatility_wo5"
        WEEK_OVER_6_PERCENT = "ta_volatility_wo6"
        WEEK_OVER_7_PERCENT = "ta_volatility_wo7"
        WEEK_OVER_8_PERCENT = "ta_volatility_wo8"
        WEEK_OVER_9_PERCENT = "ta_volatility_wo9"
        WEEK_OVER_10_PERCENT = "ta_volatility_wo10"
        WEEK_OVER_12_PERCENT = "ta_volatility_wo12"
        WEEK_OVER_15_PERCENT = "ta_volatility_wo15"
        MONTH_OVER_2_PERCENT = "ta_volatility_mo2"
        MONTH_OVER_3_PERCENT = "ta_volatility_mo3"
        MONTH_OVER_4_PERCENT = "ta_volatility_mo4"
        MONTH_OVER_5_PERCENT = "ta_volatility_mo5"
        MONTH_OVER_6_PERCENT = "ta_volatility_mo6"
        MONTH_OVER_7_PERCENT = "ta_volatility_mo7"
        MONTH_OVER_8_PERCENT = "ta_volatility_mo8"
        MONTH_OVER_9_PERCENT = "ta_volatility_mo9"
        MONTH_OVER_10_PERCENT = "ta_volatility_mo10"
        MONTH_OVER_12_PERCENT = "ta_volatility_mo12"
        MONTH_OVER_15_PERCENT = "ta_volatility_mo15"
        CUSTOM_ELITE_ONLY = "ta_volatility_modal"

    class RSI14Option(ScreenerFilterOption, Enum):
        OVERBOUGHT_90 = "ta_rsi_ob90"
        OVERBOUGHT_80 = "ta_rsi_ob80"
        OVERBOUGHT_70 = "ta_rsi_ob70"
        OVERBOUGHT_60 = "ta_rsi_ob60"
        OVERSOLD_40 = "ta_rsi_os40"
        OVERSOLD_30 = "ta_rsi_os30"
        OVERSOLD_20 = "ta_rsi_os20"
        OVERSOLD_10 = "ta_rsi_os10"
        NOT_OVERBOUGHT_LESS_THAN_60 = "ta_rsi_nob60"
        NOT_OVERBOUGHT_LESS_THAN_50 = "ta_rsi_nob50"
        NOT_OVERSOLD_GREATER_THAN_50 = "ta_rsi_nos50"
        NOT_OVERSOLD_GREATER_THAN_40 = "ta_rsi_nos40"
        CUSTOM_ELITE_ONLY = "ta_rsi_frange"

    class GapOption(ScreenerFilterOption, Enum):
        UP = "ta_gap_u"
        UP_0_PERCENT = "ta_gap_u0"
        UP_1_PERCENT = "ta_gap_u1"
        UP_2_PERCENT = "ta_gap_u2"
        UP_3_PERCENT = "ta_gap_u3"
        UP_4_PERCENT = "ta_gap_u4"
        UP_5_PERCENT = "ta_gap_u5"
        UP_6_PERCENT = "ta_gap_u6"
        UP_7_PERCENT = "ta_gap_u7"
        UP_8_PERCENT = "ta_gap_u8"
        UP_9_PERCENT = "ta_gap_u9"
        UP_10_PERCENT = "ta_gap_u10"
        UP_15_PERCENT = "ta_gap_u15"
        UP_20_PERCENT = "ta_gap_u20"
        DOWN = "ta_gap_d"
        DOWN_0_PERCENT = "ta_gap_d0"
        DOWN_1_PERCENT = "ta_gap_d1"
        DOWN_2_PERCENT = "ta_gap_d2"
        DOWN_3_PERCENT = "ta_gap_d3"
        DOWN_4_PERCENT = "ta_gap_d4"
        DOWN_5_PERCENT = "ta_gap_d5"
        DOWN_6_PERCENT = "ta_gap_d6"
        DOWN_7_PERCENT = "ta_gap_d7"
        DOWN_8_PERCENT = "ta_gap_d8"
        DOWN_9_PERCENT = "ta_gap_d9"
        DOWN_10_PERCENT = "ta_gap_d10"
        DOWN_15_PERCENT = "ta_gap_d15"
        DOWN_20_PERCENT = "ta_gap_d20"
        CUSTOM_ELITE_ONLY = "ta_gap_frange"

    class _20DaySimpleMovingAverageOption(ScreenerFilterOption, Enum):
        PRICE_BELOW_SMA20 = "ta_sma20_pb"
        PRICE_10_PERCENT_BELOW_SMA20 = "ta_sma20_pb10"
        PRICE_20_PERCENT_BELOW_SMA20 = "ta_sma20_pb20"
        PRICE_30_PERCENT_BELOW_SMA20 = "ta_sma20_pb30"
        PRICE_40_PERCENT_BELOW_SMA20 = "ta_sma20_pb40"
        PRICE_50_PERCENT_BELOW_SMA20 = "ta_sma20_pb50"
        PRICE_ABOVE_SMA20 = "ta_sma20_pa"
        PRICE_10_PERCENT_ABOVE_SMA20 = "ta_sma20_pa10"
        PRICE_20_PERCENT_ABOVE_SMA20 = "ta_sma20_pa20"
        PRICE_30_PERCENT_ABOVE_SMA20 = "ta_sma20_pa30"
        PRICE_40_PERCENT_ABOVE_SMA20 = "ta_sma20_pa40"
        PRICE_50_PERCENT_ABOVE_SMA20 = "ta_sma20_pa50"
        PRICE_CROSSED_SMA20 = "ta_sma20_pc"
        PRICE_CROSSED_SMA20_ABOVE = "ta_sma20_pca"
        PRICE_CROSSED_SMA20_BELOW = "ta_sma20_pcb"
        SMA20_CROSSED_SMA50 = "ta_sma20_cross50"
        SMA20_CROSSED_SMA50_ABOVE = "ta_sma20_cross50a"
        SMA20_CROSSED_SMA50_BELOW = "ta_sma20_cross50b"
        SMA20_CROSSED_SMA200 = "ta_sma20_cross200"
        SMA20_CROSSED_SMA200_ABOVE = "ta_sma20_cross200a"
        SMA20_CROSSED_SMA200_BELOW = "ta_sma20_cross200b"
        SMA20_ABOVE_SMA50 = "ta_sma20_sa50"
        SMA20_BELOW_SMA50 = "ta_sma20_sb50"
        SMA20_ABOVE_SMA200 = "ta_sma20_sa200"
        SMA20_BELOW_SMA200 = "ta_sma20_sb200"
        CUSTOM_ELITE_ONLY = "ta_sma20_modal"

    class _50DaySimpleMovingAverageOption(ScreenerFilterOption, Enum):
        PRICE_BELOW_SMA50 = "ta_sma50_pb"
        PRICE_10_PERCENT_BELOW_SMA50 = "ta_sma50_pb10"
        PRICE_20_PERCENT_BELOW_SMA50 = "ta_sma50_pb20"
        PRICE_30_PERCENT_BELOW_SMA50 = "ta_sma50_pb30"
        PRICE_40_PERCENT_BELOW_SMA50 = "ta_sma50_pb40"
        PRICE_50_PERCENT_BELOW_SMA50 = "ta_sma50_pb50"
        PRICE_ABOVE_SMA50 = "ta_sma50_pa"
        PRICE_10_PERCENT_ABOVE_SMA50 = "ta_sma50_pa10"
        PRICE_20_PERCENT_ABOVE_SMA50 = "ta_sma50_pa20"
        PRICE_30_PERCENT_ABOVE_SMA50 = "ta_sma50_pa30"
        PRICE_40_PERCENT_ABOVE_SMA50 = "ta_sma50_pa40"
        PRICE_50_PERCENT_ABOVE_SMA50 = "ta_sma50_pa50"
        PRICE_CROSSED_SMA50 = "ta_sma50_pc"
        PRICE_CROSSED_SMA50_ABOVE = "ta_sma50_pca"
        PRICE_CROSSED_SMA50_BELOW = "ta_sma50_pcb"
        SMA50_CROSSED_SMA20 = "ta_sma50_cross20"
        SMA50_CROSSED_SMA20_ABOVE = "ta_sma50_cross20a"
        SMA50_CROSSED_SMA20_BELOW = "ta_sma50_cross20b"
        SMA50_CROSSED_SMA200 = "ta_sma50_cross200"
        SMA50_CROSSED_SMA200_ABOVE = "ta_sma50_cross200a"
        SMA50_CROSSED_SMA200_BELOW = "ta_sma50_cross200b"
        SMA50_ABOVE_SMA20 = "ta_sma50_sa20"
        SMA50_BELOW_SMA20 = "ta_sma50_sb20"
        SMA50_ABOVE_SMA200 = "ta_sma50_sa200"
        SMA50_BELOW_SMA200 = "ta_sma50_sb200"
        CUSTOM_ELITE_ONLY = "ta_sma50_modal"

    class _200DaySimpleMovingAverageOption(ScreenerFilterOption, Enum):
        PRICE_BELOW_SMA200 = "ta_sma200_pb"
        PRICE_10_PERCENT_BELOW_SMA200 = "ta_sma200_pb10"
        PRICE_20_PERCENT_BELOW_SMA200 = "ta_sma200_pb20"
        PRICE_30_PERCENT_BELOW_SMA200 = "ta_sma200_pb30"
        PRICE_40_PERCENT_BELOW_SMA200 = "ta_sma200_pb40"
        PRICE_50_PERCENT_BELOW_SMA200 = "ta_sma200_pb50"
        PRICE_60_PERCENT_BELOW_SMA200 = "ta_sma200_pb60"
        PRICE_70_PERCENT_BELOW_SMA200 = "ta_sma200_pb70"
        PRICE_80_PERCENT_BELOW_SMA200 = "ta_sma200_pb80"
        PRICE_90_PERCENT_BELOW_SMA200 = "ta_sma200_pb90"
        PRICE_ABOVE_SMA200 = "ta_sma200_pa"
        PRICE_10_PERCENT_ABOVE_SMA200 = "ta_sma200_pa10"
        PRICE_20_PERCENT_ABOVE_SMA200 = "ta_sma200_pa20"
        PRICE_30_PERCENT_ABOVE_SMA200 = "ta_sma200_pa30"
        PRICE_40_PERCENT_ABOVE_SMA200 = "ta_sma200_pa40"
        PRICE_50_PERCENT_ABOVE_SMA200 = "ta_sma200_pa50"
        PRICE_60_PERCENT_ABOVE_SMA200 = "ta_sma200_pa60"
        PRICE_70_PERCENT_ABOVE_SMA200 = "ta_sma200_pa70"
        PRICE_80_PERCENT_ABOVE_SMA200 = "ta_sma200_pa80"
        PRICE_90_PERCENT_ABOVE_SMA200 = "ta_sma200_pa90"
        PRICE_100_PERCENT_ABOVE_SMA200 = "ta_sma200_pa100"
        PRICE_CROSSED_SMA200 = "ta_sma200_pc"
        PRICE_CROSSED_SMA200_ABOVE = "ta_sma200_pca"
        PRICE_CROSSED_SMA200_BELOW = "ta_sma200_pcb"
        SMA200_CROSSED_SMA20 = "ta_sma200_cross20"
        SMA200_CROSSED_SMA20_ABOVE = "ta_sma200_cross20a"
        SMA200_CROSSED_SMA20_BELOW = "ta_sma200_cross20b"
        SMA200_CROSSED_SMA50 = "ta_sma200_cross50"
        SMA200_CROSSED_SMA50_ABOVE = "ta_sma200_cross50a"
        SMA200_CROSSED_SMA50_BELOW = "ta_sma200_cross50b"
        SMA200_ABOVE_SMA20 = "ta_sma200_sa20"
        SMA200_BELOW_SMA20 = "ta_sma200_sb20"
        SMA200_ABOVE_SMA50 = "ta_sma200_sa50"
        SMA200_BELOW_SMA50 = "ta_sma200_sb50"
        CUSTOM_ELITE_ONLY = "ta_sma200_modal"

    class ChangeOption(ScreenerFilterOption, Enum):
        UP = "ta_change_u"
        UP_1_PERCENT = "ta_change_u1"
        UP_2_PERCENT = "ta_change_u2"
        UP_3_PERCENT = "ta_change_u3"
        UP_4_PERCENT = "ta_change_u4"
        UP_5_PERCENT = "ta_change_u5"
        UP_6_PERCENT = "ta_change_u6"
        UP_7_PERCENT = "ta_change_u7"
        UP_8_PERCENT = "ta_change_u8"
        UP_9_PERCENT = "ta_change_u9"
        UP_10_PERCENT = "ta_change_u10"
        UP_15_PERCENT = "ta_change_u15"
        UP_20_PERCENT = "ta_change_u20"
        DOWN = "ta_change_d"
        DOWN_1_PERCENT = "ta_change_d1"
        DOWN_2_PERCENT = "ta_change_d2"
        DOWN_3_PERCENT = "ta_change_d3"
        DOWN_4_PERCENT = "ta_change_d4"
        DOWN_5_PERCENT = "ta_change_d5"
        DOWN_6_PERCENT = "ta_change_d6"
        DOWN_7_PERCENT = "ta_change_d7"
        DOWN_8_PERCENT = "ta_change_d8"
        DOWN_9_PERCENT = "ta_change_d9"
        DOWN_10_PERCENT = "ta_change_d10"
        DOWN_15_PERCENT = "ta_change_d15"
        DOWN_20_PERCENT = "ta_change_d20"
        CUSTOM_ELITE_ONLY = "ta_change_frange"

    class ChangeFromOpenOption(ScreenerFilterOption, Enum):
        UP = "ta_changeopen_u"
        UP_1_PERCENT = "ta_changeopen_u1"
        UP_2_PERCENT = "ta_changeopen_u2"
        UP_3_PERCENT = "ta_changeopen_u3"
        UP_4_PERCENT = "ta_changeopen_u4"
        UP_5_PERCENT = "ta_changeopen_u5"
        UP_6_PERCENT = "ta_changeopen_u6"
        UP_7_PERCENT = "ta_changeopen_u7"
        UP_8_PERCENT = "ta_changeopen_u8"
        UP_9_PERCENT = "ta_changeopen_u9"
        UP_10_PERCENT = "ta_changeopen_u10"
        UP_15_PERCENT = "ta_changeopen_u15"
        UP_20_PERCENT = "ta_changeopen_u20"
        DOWN = "ta_changeopen_d"
        DOWN_1_PERCENT = "ta_changeopen_d1"
        DOWN_2_PERCENT = "ta_changeopen_d2"
        DOWN_3_PERCENT = "ta_changeopen_d3"
        DOWN_4_PERCENT = "ta_changeopen_d4"
        DOWN_5_PERCENT = "ta_changeopen_d5"
        DOWN_6_PERCENT = "ta_changeopen_d6"
        DOWN_7_PERCENT = "ta_changeopen_d7"
        DOWN_8_PERCENT = "ta_changeopen_d8"
        DOWN_9_PERCENT = "ta_changeopen_d9"
        DOWN_10_PERCENT = "ta_changeopen_d10"
        DOWN_15_PERCENT = "ta_changeopen_d15"
        DOWN_20_PERCENT = "ta_changeopen_d20"
        CUSTOM_ELITE_ONLY = "ta_changeopen_frange"

    class _20DayHighLowOption(ScreenerFilterOption, Enum):
        NEW_HIGH = "ta_highlow20d_nh"
        NEW_LOW = "ta_highlow20d_nl"
        _5_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow20d_b5h"
        _10_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow20d_b10h"
        _15_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow20d_b15h"
        _20_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow20d_b20h"
        _30_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow20d_b30h"
        _40_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow20d_b40h"
        _50_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow20d_b50h"
        _0_TO_3_PERCENT_BELOW_HIGH = "ta_highlow20d_b0to3h"
        _0_TO_5_PERCENT_BELOW_HIGH = "ta_highlow20d_b0to5h"
        _0_TO_10_PERCENT_BELOW_HIGH = "ta_highlow20d_b0to10h"
        _5_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow20d_a5h"
        _10_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow20d_a10h"
        _15_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow20d_a15h"
        _20_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow20d_a20h"
        _30_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow20d_a30h"
        _40_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow20d_a40h"
        _50_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow20d_a50h"
        _0_TO_3_PERCENT_ABOVE_LOW = "ta_highlow20d_a0to3h"
        _0_TO_5_PERCENT_ABOVE_LOW = "ta_highlow20d_a0to5h"
        _0_TO_10_PERCENT_ABOVE_LOW = "ta_highlow20d_a0to10h"
        CUSTOM_ELITE_ONLY = "ta_highlow20d_modal"

    class _50DayHighLowOption(ScreenerFilterOption, Enum):
        NEW_HIGH = "ta_highlow50d_nh"
        NEW_LOW = "ta_highlow50d_nl"
        _5_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow50d_b5h"
        _10_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow50d_b10h"
        _15_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow50d_b15h"
        _20_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow50d_b20h"
        _30_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow50d_b30h"
        _40_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow50d_b40h"
        _50_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow50d_b50h"
        _0_TO_3_PERCENT_BELOW_HIGH = "ta_highlow50d_b0to3h"
        _0_TO_5_PERCENT_BELOW_HIGH = "ta_highlow50d_b0to5h"
        _0_TO_10_PERCENT_BELOW_HIGH = "ta_highlow50d_b0to10h"
        _5_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow50d_a5h"
        _10_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow50d_a10h"
        _15_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow50d_a15h"
        _20_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow50d_a20h"
        _30_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow50d_a30h"
        _40_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow50d_a40h"
        _50_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow50d_a50h"
        _0_TO_3_PERCENT_ABOVE_LOW = "ta_highlow50d_a0to3h"
        _0_TO_5_PERCENT_ABOVE_LOW = "ta_highlow50d_a0to5h"
        _0_TO_10_PERCENT_ABOVE_LOW = "ta_highlow50d_a0to10h"
        CUSTOM_ELITE_ONLY = "ta_highlow50d_modal"

    class _52WeekHighLowOption(ScreenerFilterOption, Enum):
        NEW_HIGH = "ta_highlow52w_nh"
        NEW_LOW = "ta_highlow52w_nl"
        _5_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b5h"
        _10_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b10h"
        _15_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b15h"
        _20_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b20h"
        _30_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b30h"
        _40_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b40h"
        _50_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b50h"
        _60_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b60h"
        _70_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b70h"
        _80_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b80h"
        _90_PERCENT_OR_MORE_BELOW_HIGH = "ta_highlow52w_b90h"
        _0_TO_3_PERCENT_BELOW_HIGH = "ta_highlow52w_b0to3h"
        _0_TO_5_PERCENT_BELOW_HIGH = "ta_highlow52w_b0to5h"
        _0_TO_10_PERCENT_BELOW_HIGH = "ta_highlow52w_b0to10h"
        _5_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a5h"
        _10_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a10h"
        _15_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a15h"
        _20_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a20h"
        _30_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a30h"
        _40_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a40h"
        _50_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a50h"
        _60_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a60h"
        _70_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a70h"
        _80_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a80h"
        _90_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a90h"
        _100_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a100h"
        _120_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a120h"
        _150_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a150h"
        _200_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a200h"
        _300_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a300h"
        _500_PERCENT_OR_MORE_ABOVE_LOW = "ta_highlow52w_a500h"
        _0_TO_3_PERCENT_ABOVE_LOW = "ta_highlow52w_a0to3h"
        _0_TO_5_PERCENT_ABOVE_LOW = "ta_highlow52w_a0to5h"
        _0_TO_10_PERCENT_ABOVE_LOW = "ta_highlow52w_a0to10h"
        CUSTOM_ELITE_ONLY = "ta_highlow52w_modal"

    class AllTimeHighLowOption(ScreenerFilterOption, Enum):
        NEW_HIGH = "ta_alltime_nh"
        NEW_LOW = "ta_alltime_nl"
        _5_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b5h"
        _10_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b10h"
        _15_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b15h"
        _20_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b20h"
        _30_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b30h"
        _40_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b40h"
        _50_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b50h"
        _60_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b60h"
        _70_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b70h"
        _80_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b80h"
        _90_PERCENT_OR_MORE_BELOW_HIGH = "ta_alltime_b90h"
        _0_TO_3_PERCENT_BELOW_HIGH = "ta_alltime_b0to3h"
        _0_TO_5_PERCENT_BELOW_HIGH = "ta_alltime_b0to5h"
        _0_TO_10_PERCENT_BELOW_HIGH = "ta_alltime_b0to10h"
        _5_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a5h"
        _10_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a10h"
        _15_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a15h"
        _20_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a20h"
        _30_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a30h"
        _40_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a40h"
        _50_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a50h"
        _60_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a60h"
        _70_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a70h"
        _80_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a80h"
        _90_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a90h"
        _100_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a100h"
        _120_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a120h"
        _150_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a150h"
        _200_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a200h"
        _300_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a300h"
        _500_PERCENT_OR_MORE_ABOVE_LOW = "ta_alltime_a500h"
        _0_TO_3_PERCENT_ABOVE_LOW = "ta_alltime_a0to3h"
        _0_TO_5_PERCENT_ABOVE_LOW = "ta_alltime_a0to5h"
        _0_TO_10_PERCENT_ABOVE_LOW = "ta_alltime_a0to10h"
        CUSTOM_ELITE_ONLY = "ta_alltime_modal"

    class PatternOption(ScreenerFilterOption, Enum):
        HORIZONTAL_S_R = "ta_pattern_horizontal"
        HORIZONTAL_S_R_STRONG = "ta_pattern_horizontal2"
        TL_RESISTANCE = "ta_pattern_tlresistance"
        TL_RESISTANCE_STRONG = "ta_pattern_tlresistance2"
        TL_SUPPORT = "ta_pattern_tlsupport"
        TL_SUPPORT_STRONG = "ta_pattern_tlsupport2"
        WEDGE_UP = "ta_pattern_wedgeup"
        WEDGE_UP_STRONG = "ta_pattern_wedgeup2"
        WEDGE_DOWN = "ta_pattern_wedgedown"
        WEDGE_DOWN_STRONG = "ta_pattern_wedgedown2"
        TRIANGLE_ASCENDING = "ta_pattern_wedgeresistance"
        TRIANGLE_ASCENDING_STRONG = "ta_pattern_wedgeresistance2"
        TRIANGLE_DESCENDING = "ta_pattern_wedgesupport"
        TRIANGLE_DESCENDING_STRONG = "ta_pattern_wedgesupport2"
        WEDGE = "ta_pattern_wedge"
        WEDGE_STRONG = "ta_pattern_wedge2"
        CHANNEL_UP = "ta_pattern_channelup"
        CHANNEL_UP_STRONG = "ta_pattern_channelup2"
        CHANNEL_DOWN = "ta_pattern_channeldown"
        CHANNEL_DOWN_STRONG = "ta_pattern_channeldown2"
        CHANNEL = "ta_pattern_channel"
        CHANNEL_STRONG = "ta_pattern_channel2"
        DOUBLE_TOP = "ta_pattern_doubletop"
        DOUBLE_BOTTOM = "ta_pattern_doublebottom"
        MULTIPLE_TOP = "ta_pattern_multipletop"
        MULTIPLE_BOTTOM = "ta_pattern_multiplebottom"
        HEAD_AND_SHOULDERS = "ta_pattern_headandshoulders"
        HEAD_AND_SHOULDERS_INVERSE = "ta_pattern_headandshouldersinv"
        CUSTOM_ELITE_ONLY = "ta_pattern_modal"

    class CandlestickOption(ScreenerFilterOption, Enum):
        LONG_LOWER_SHADOW = "ta_candlestick_lls"
        LONG_UPPER_SHADOW = "ta_candlestick_lus"
        HAMMER = "ta_candlestick_h"
        INVERTED_HAMMER = "ta_candlestick_ih"
        SPINNING_TOP_WHITE = "ta_candlestick_stw"
        SPINNING_TOP_BLACK = "ta_candlestick_stb"
        DOJI = "ta_candlestick_d"
        DRAGONFLY_DOJI = "ta_candlestick_dd"
        GRAVESTONE_DOJI = "ta_candlestick_gd"
        MARUBOZU_WHITE = "ta_candlestick_mw"
        MARUBOZU_BLACK = "ta_candlestick_mb"
        CUSTOM_ELITE_ONLY = "ta_candlestick_modal"

    class BetaOption(ScreenerFilterOption, Enum):
        UNDER_0 = "ta_beta_u0"
        UNDER_0_POINT_5 = "ta_beta_u0.5"
        UNDER_1 = "ta_beta_u1"
        UNDER_1_POINT_5 = "ta_beta_u1.5"
        UNDER_2 = "ta_beta_u2"
        OVER_0 = "ta_beta_o0"
        OVER_0_POINT_5 = "ta_beta_o0.5"
        OVER_1 = "ta_beta_o1"
        OVER_1_POINT_5 = "ta_beta_o1.5"
        OVER_2 = "ta_beta_o2"
        OVER_2_POINT_5 = "ta_beta_o2.5"
        OVER_3 = "ta_beta_o3"
        OVER_4 = "ta_beta_o4"
        _0_TO_0_POINT_5 = "ta_beta_0to0.5"
        _0_TO_1 = "ta_beta_0to1"
        _0_POINT_5_TO_1 = "ta_beta_0.5to1"
        _0_POINT_5_TO_1_5 = "ta_beta_0.5to1.5"
        _1_TO_1_POINT_5 = "ta_beta_1to1.5"
        _1_TO_2 = "ta_beta_1to2"
        CUSTOM_ELITE_ONLY = "ta_beta_frange"

    class AverageTrueRangeOption(ScreenerFilterOption, Enum):
        OVER_0_POINT_25 = "ta_averagetruerange_o0.25"
        OVER_0_POINT_5 = "ta_averagetruerange_o0.5"
        OVER_0_POINT_75 = "ta_averagetruerange_o0.75"
        OVER_1 = "ta_averagetruerange_o1"
        OVER_1_POINT_5 = "ta_averagetruerange_o1.5"
        OVER_2 = "ta_averagetruerange_o2"
        OVER_2_POINT_5 = "ta_averagetruerange_o2.5"
        OVER_3 = "ta_averagetruerange_o3"
        OVER_3_POINT_5 = "ta_averagetruerange_o3.5"
        OVER_4 = "ta_averagetruerange_o4"
        OVER_4_POINT_5 = "ta_averagetruerange_o4.5"
        OVER_5 = "ta_averagetruerange_o5"
        UNDER_0_POINT_25 = "ta_averagetruerange_u0.25"
        UNDER_0_POINT_5 = "ta_averagetruerange_u0.5"
        UNDER_0_POINT_75 = "ta_averagetruerange_u0.75"
        UNDER_1 = "ta_averagetruerange_u1"
        UNDER_1_POINT_5 = "ta_averagetruerange_u1.5"
        UNDER_2 = "ta_averagetruerange_u2"
        UNDER_2_POINT_5 = "ta_averagetruerange_u2.5"
        UNDER_3 = "ta_averagetruerange_u3"
        UNDER_3_POINT_5 = "ta_averagetruerange_u3.5"
        UNDER_4 = "ta_averagetruerange_u4"
        UNDER_4_POINT_5 = "ta_averagetruerange_u4.5"
        UNDER_5 = "ta_averagetruerange_u5"
        CUSTOM_ELITE_ONLY = "ta_averagetruerange_frange"

    class AverageVolumeOption(ScreenerFilterOption, Enum):
        UNDER_50K = "sh_avgvol_u50"
        UNDER_100K = "sh_avgvol_u100"
        UNDER_500K = "sh_avgvol_u500"
        UNDER_750K = "sh_avgvol_u750"
        UNDER_1M = "sh_avgvol_u1000"
        OVER_50K = "sh_avgvol_o50"
        OVER_100K = "sh_avgvol_o100"
        OVER_200K = "sh_avgvol_o200"
        OVER_300K = "sh_avgvol_o300"
        OVER_400K = "sh_avgvol_o400"
        OVER_500K = "sh_avgvol_o500"
        OVER_750K = "sh_avgvol_o750"
        OVER_1M = "sh_avgvol_o1000"
        OVER_2M = "sh_avgvol_o2000"
        _100K_TO_500K = "sh_avgvol_100to500"
        _100K_TO_1M = "sh_avgvol_100to1000"
        _500K_TO_1M = "sh_avgvol_500to1000"
        _500K_TO_10M = "sh_avgvol_500to10000"
        CUSTOM_ELITE_ONLY = "sh_avgvol_frange"

    class RelativeVolumeOption(ScreenerFilterOption, Enum):
        OVER_10 = "sh_relvol_o10"
        OVER_5 = "sh_relvol_o5"
        OVER_3 = "sh_relvol_o3"
        OVER_2 = "sh_relvol_o2"
        OVER_1_POINT_5 = "sh_relvol_o1.5"
        OVER_1 = "sh_relvol_o1"
        OVER_0_POINT_75 = "sh_relvol_o0.75"
        OVER_0_POINT_5 = "sh_relvol_o0.5"
        OVER_0_POINT_25 = "sh_relvol_o0.25"
        UNDER_2 = "sh_relvol_u2"
        UNDER_1_POINT_5 = "sh_relvol_u1.5"
        UNDER_1 = "sh_relvol_u1"
        UNDER_0_POINT_75 = "sh_relvol_u0.75"
        UNDER_0_POINT_5 = "sh_relvol_u0.5"
        UNDER_0_POINT_25 = "sh_relvol_u0.25"
        UNDER_0_POINT_1 = "sh_relvol_u0.1"
        CUSTOM_ELITE_ONLY = "sh_relvol_frange"

    class CurrentVolumeOption(ScreenerFilterOption, Enum):
        SHARES_UNDER_50K = "sh_curvol_u50"
        SHARES_UNDER_100K = "sh_curvol_u100"
        SHARES_UNDER_500K = "sh_curvol_u500"
        SHARES_UNDER_750K = "sh_curvol_u750"
        SHARES_UNDER_1M = "sh_curvol_u1000"
        SHARES_OVER_0 = "sh_curvol_o0"
        SHARES_OVER_50K = "sh_curvol_o50"
        SHARES_OVER_100K = "sh_curvol_o100"
        SHARES_OVER_200K = "sh_curvol_o200"
        SHARES_OVER_300K = "sh_curvol_o300"
        SHARES_OVER_400K = "sh_curvol_o400"
        SHARES_OVER_500K = "sh_curvol_o500"
        SHARES_OVER_750K = "sh_curvol_o750"
        SHARES_OVER_1M = "sh_curvol_o1000"
        SHARES_OVER_2M = "sh_curvol_o2000"
        SHARES_OVER_5M = "sh_curvol_o5000"
        SHARES_OVER_10M = "sh_curvol_o10000"
        SHARES_OVER_20M = "sh_curvol_o20000"
        SHARES_OVER_50_PERCENT_SHARES_FLOAT = "sh_curvol_o50sf"
        SHARES_OVER_100_PERCENT_SHARES_FLOAT = "sh_curvol_o100sf"
        USD_UNDER_USD1M = "sh_curvol_uusd1000"
        USD_UNDER_USD10M = "sh_curvol_uusd10000"
        USD_UNDER_USD100M = "sh_curvol_uusd100000"
        USD_UNDER_USD1B = "sh_curvol_uusd1000000"
        USD_OVER_USD1M = "sh_curvol_ousd1000"
        USD_OVER_USD10M = "sh_curvol_ousd10000"
        USD_OVER_USD100M = "sh_curvol_ousd100000"
        USD_OVER_USD1B = "sh_curvol_ousd1000000"
        CUSTOM_ELITE_ONLY = "sh_curvol_modal"

    class TradesOption(ScreenerFilterOption, Enum):
        ELITE_ONLY = ""

    class PriceOption(ScreenerFilterOption, Enum):
        UNDER_USD1 = "sh_price_u1"
        UNDER_USD2 = "sh_price_u2"
        UNDER_USD3 = "sh_price_u3"
        UNDER_USD4 = "sh_price_u4"
        UNDER_USD5 = "sh_price_u5"
        UNDER_USD7 = "sh_price_u7"
        UNDER_USD10 = "sh_price_u10"
        UNDER_USD15 = "sh_price_u15"
        UNDER_USD20 = "sh_price_u20"
        UNDER_USD30 = "sh_price_u30"
        UNDER_USD40 = "sh_price_u40"
        UNDER_USD50 = "sh_price_u50"
        OVER_USD1 = "sh_price_o1"
        OVER_USD2 = "sh_price_o2"
        OVER_USD3 = "sh_price_o3"
        OVER_USD4 = "sh_price_o4"
        OVER_USD5 = "sh_price_o5"
        OVER_USD7 = "sh_price_o7"
        OVER_USD10 = "sh_price_o10"
        OVER_USD15 = "sh_price_o15"
        OVER_USD20 = "sh_price_o20"
        OVER_USD30 = "sh_price_o30"
        OVER_USD40 = "sh_price_o40"
        OVER_USD50 = "sh_price_o50"
        OVER_USD60 = "sh_price_o60"
        OVER_USD70 = "sh_price_o70"
        OVER_USD80 = "sh_price_o80"
        OVER_USD90 = "sh_price_o90"
        OVER_USD100 = "sh_price_o100"
        USD1_TO_USD5 = "sh_price_1to5"
        USD1_TO_USD10 = "sh_price_1to10"
        USD1_TO_USD20 = "sh_price_1to20"
        USD5_TO_USD10 = "sh_price_5to10"
        USD5_TO_USD20 = "sh_price_5to20"
        USD5_TO_USD50 = "sh_price_5to50"
        USD10_TO_USD20 = "sh_price_10to20"
        USD10_TO_USD50 = "sh_price_10to50"
        USD20_TO_USD50 = "sh_price_20to50"
        USD50_TO_USD100 = "sh_price_50to100"
        CUSTOM_ELITE_ONLY = "sh_price_frange"

    class TargetPriceOption(ScreenerFilterOption, Enum):
        _50_PERCENT_ABOVE_PRICE = "targetprice_a50"
        _40_PERCENT_ABOVE_PRICE = "targetprice_a40"
        _30_PERCENT_ABOVE_PRICE = "targetprice_a30"
        _20_PERCENT_ABOVE_PRICE = "targetprice_a20"
        _10_PERCENT_ABOVE_PRICE = "targetprice_a10"
        _5_PERCENT_ABOVE_PRICE = "targetprice_a5"
        ABOVE_PRICE = "targetprice_above"
        BELOW_PRICE = "targetprice_below"
        _5_PERCENT_BELOW_PRICE = "targetprice_b5"
        _10_PERCENT_BELOW_PRICE = "targetprice_b10"
        _20_PERCENT_BELOW_PRICE = "targetprice_b20"
        _30_PERCENT_BELOW_PRICE = "targetprice_b30"
        _40_PERCENT_BELOW_PRICE = "targetprice_b40"
        _50_PERCENT_BELOW_PRICE = "targetprice_b50"
        CUSTOM_ELITE_ONLY = "targetprice_modal"

    class IPODateOption(ScreenerFilterOption, Enum):
        TODAY = "ipodate_today"
        YESTERDAY = "ipodate_yesterday"
        IN_THE_LAST_WEEK = "ipodate_prevweek"
        IN_THE_LAST_MONTH = "ipodate_prevmonth"
        IN_THE_LAST_QUARTER = "ipodate_prevquarter"
        IN_THE_LAST_YEAR = "ipodate_prevyear"
        IN_THE_LAST_2_YEARS = "ipodate_prev2yrs"
        IN_THE_LAST_3_YEARS = "ipodate_prev3yrs"
        IN_THE_LAST_5_YEARS = "ipodate_prev5yrs"
        MORE_THAN_A_YEAR_AGO = "ipodate_more1"
        MORE_THAN_5_YEARS_AGO = "ipodate_more5"
        MORE_THAN_10_YEARS_AGO = "ipodate_more10"
        MORE_THAN_15_YEARS_AGO = "ipodate_more15"
        MORE_THAN_20_YEARS_AGO = "ipodate_more20"
        MORE_THAN_25_YEARS_AGO = "ipodate_more25"
        CUSTOM_ELITE_ONLY = "ipodate_modal"

    class SharesOutstandingOption(ScreenerFilterOption, Enum):
        UNDER_1M = "sh_outstanding_u1"
        UNDER_5M = "sh_outstanding_u5"
        UNDER_10M = "sh_outstanding_u10"
        UNDER_20M = "sh_outstanding_u20"
        UNDER_50M = "sh_outstanding_u50"
        UNDER_100M = "sh_outstanding_u100"
        OVER_1M = "sh_outstanding_o1"
        OVER_2M = "sh_outstanding_o2"
        OVER_5M = "sh_outstanding_o5"
        OVER_10M = "sh_outstanding_o10"
        OVER_20M = "sh_outstanding_o20"
        OVER_50M = "sh_outstanding_o50"
        OVER_100M = "sh_outstanding_o100"
        OVER_200M = "sh_outstanding_o200"
        OVER_500M = "sh_outstanding_o500"
        OVER_1000M = "sh_outstanding_o1000"
        CUSTOM_ELITE_ONLY = "sh_outstanding_frange"

    class FloatOption(ScreenerFilterOption, Enum):
        UNDER_1M = "sh_float_u1"
        UNDER_5M = "sh_float_u5"
        UNDER_10M = "sh_float_u10"
        UNDER_20M = "sh_float_u20"
        UNDER_50M = "sh_float_u50"
        UNDER_100M = "sh_float_u100"
        OVER_1M = "sh_float_o1"
        OVER_2M = "sh_float_o2"
        OVER_5M = "sh_float_o5"
        OVER_10M = "sh_float_o10"
        OVER_20M = "sh_float_o20"
        OVER_50M = "sh_float_o50"
        OVER_100M = "sh_float_o100"
        OVER_200M = "sh_float_o200"
        OVER_500M = "sh_float_o500"
        OVER_1000M = "sh_float_o1000"
        UNDER_10_PERCENT = "sh_float_u10p"
        UNDER_20_PERCENT = "sh_float_u20p"
        UNDER_30_PERCENT = "sh_float_u30p"
        UNDER_40_PERCENT = "sh_float_u40p"
        UNDER_50_PERCENT = "sh_float_u50p"
        UNDER_60_PERCENT = "sh_float_u60p"
        UNDER_70_PERCENT = "sh_float_u70p"
        UNDER_80_PERCENT = "sh_float_u80p"
        UNDER_90_PERCENT = "sh_float_u90p"
        OVER_10_PERCENT = "sh_float_o10p"
        OVER_20_PERCENT = "sh_float_o20p"
        OVER_30_PERCENT = "sh_float_o30p"
        OVER_40_PERCENT = "sh_float_o40p"
        OVER_50_PERCENT = "sh_float_o50p"
        OVER_60_PERCENT = "sh_float_o60p"
        OVER_70_PERCENT = "sh_float_o70p"
        OVER_80_PERCENT = "sh_float_o80p"
        OVER_90_PERCENT = "sh_float_o90p"
        CUSTOM_ELITE_ONLY = "sh_float_modal"

    class AfterHoursCloseOption(ScreenerFilterOption, Enum):
        CUSTOM_ELITE_ONLY = "ah_close_frange"

    class AfterHoursChangeOption(ScreenerFilterOption, Enum):
        CUSTOM_ELITE_ONLY = "ah_change_frange"

    class SingleCategoryOption(ScreenerFilterOption, Enum):
        BONDS_BROAD_MARKET = "etf_category_bondsbroadmarket"
        BONDS_CONVERTIBLE = "etf_category_bondsconvertible"
        BONDS_CORPORATE = "etf_category_bondscorporate"
        BONDS_INFLATION_PROTECTED = "etf_category_bondsinflationprotected"
        BONDS_LEVERAGED_INVERSE = "etf_category_bondsleveragedinverse"
        BONDS_MORTGAGE = "etf_category_bondsmortgage"
        BONDS_MUNICIPAL = "etf_category_bondsmunicipal"
        BONDS_NON_GOVERNMENT_ASSET_BACKED_SECURITIES = "etf_category_bondsnongovernmentassetbackedsecurities"
        BONDS_TREASURY_AND_GOVERNMENT = "etf_category_bondstreasurygovernment"
        COMMODITIES_AND_METALS_AGRICULTURAL = "etf_category_commoditiesmetalsagricultural"
        COMMODITIES_AND_METALS_DIVERSIFIED_COMMODITIES = "etf_category_commoditiesmetalsdiversifiedcommodities"
        COMMODITIES_AND_METALS_ENERGY = "etf_category_commoditiesmetalsenergy"
        COMMODITIES_AND_METALS_GOLD_METALS = "etf_category_commoditiesmetalsgoldmetals"
        COMMODITIES_AND_METALS_LEVERAGED_INVERSE = "etf_category_commoditiesmetalsleveragedinverse"
        CURRENCY = "etf_category_currency"
        CURRENCY_LEVERAGED_INVERSE = "etf_category_currencyleveragedinverse"
        EQUITY_LEVERAGED_INVERSE = "etf_category_equityleveragedinverse"
        GLOBAL_OR_EXUS_EQUITIES_BROAD_REGIONAL = "etf_category_globalorexusequitiesbroadregional"
        GLOBAL_OR_EXUS_EQUITIES_COUNTRY_SPECIFIC = "etf_category_globalorexusequitiescountryspecific"
        GLOBAL_OR_EXUS_EQUITIES_DIVIDEND_AND_FUNDAMENTAL = "etf_category_globalorexusequitiesdividendfundamental"
        GLOBAL_OR_EXUS_EQUITIES_FACTOR_AND_THEMATIC = "etf_category_globalorexusequitiesfactorthematic"
        GLOBAL_OR_EXUS_EQUITIES_INDUSTRY_SECTOR = "etf_category_globalorexusequitiesindustrysector"
        GLOBAL_OR_EXUS_EQUITIES_QUANT_STRAT = "etf_category_globalorexusequitiesquantstrat"
        OTHER_ASSET_TYPES_LEVERAGED_INVERSE = "etf_category_otherassettypesleveragedinverse"
        OTHER_ASSET_TYPES_MULTI_ASSET_OTHER = "etf_category_otherassettypesmultiassetother"
        TARGET_DATE_MULTI_ASSET_LEVERAGED_INVERSE = "etf_category_targetdatemultiassetleveragedinverse"
        TARGET_DATE_MULTI_ASSET_OTHER = "etf_category_targetdatemultiassetother"
        US_EQUITIES_BROAD_MARKET_AND_SIZE = "etf_category_usequitiesbroadmarketsize"
        US_EQUITIES_DIVIDEND_AND_FUNDAMENTAL = "etf_category_usequitiesdividendfundamental"
        US_EQUITIES_FACTOR_AND_THEMATIC = "etf_category_usequitiesfactorthematic"
        US_EQUITIES_INDUSTRY_SECTOR = "etf_category_usequitiesindustrysector"
        US_EQUITIES_QUANT_STRAT = "etf_category_usequitiesquantstrat"
        US_EQUITIES_US_STYLE = "etf_category_usequitiesusstyle"
        CUSTOM_ELITE_ONLY = "etf_category_modal"

    class AssetTypeOption(ScreenerFilterOption, Enum):
        BONDS = "etf_assettype_bonds"
        CARBON_TRADING = "etf_assettype_carbontrading"
        CLOSED_END_FUNDS = "etf_assettype_closedendfunds"
        COMMODITIES_AND_METALS = "etf_assettype_commoditiesmetals"
        CRYPTOCURRENCY = "etf_assettype_cryptocurrency"
        CURRENCY = "etf_assettype_currency"
        EQUITIES_STOCKS = "etf_assettype_equitiesstocks"
        EQUITIES_STOCKS_IPO_BASED = "etf_assettype_equitiesstocksipobased"
        FREIGHT_FUTURES = "etf_assettype_freightfutures"
        HEDGE_FUND_REPLICATION = "etf_assettype_hedgefundreplication"
        MLP = "etf_assettype_mlp"
        MULTI_ASSET_CONSERVATIVE = "etf_assettype_multiassetconservative"
        MULTI_ASSET_GROWTH_AGGRESSIVE = "etf_assettype_multiassetgrowthaggressive"
        MULTI_ASSET_MODERATE = "etf_assettype_multiassetmoderate"
        MULTI_ASSET_TACTICAL_ACTIVE = "etf_assettype_multiassettacticalactive"
        PREFERRED_STOCK = "etf_assettype_preferredstock"
        PRIVATE_EQUITY = "etf_assettype_privateequity"
        SPAC = "etf_assettype_spac"
        CUSTOM_ELITE_ONLY = "etf_assettype_modal"

    class SponsorOption(ScreenerFilterOption, Enum):
        ABERDEEN = "etf_sponsor_aberdeen"
        ABSOLUTE_INVESTMENT_ADVISERS = "etf_sponsor_absoluteinvestmentadvisers"
        ACADEMY_AM = "etf_sponsor_academyam"
        ACQUIRERS_FUNDS = "etf_sponsor_acquirersfunds"
        ACRUENCE_CAPITAL = "etf_sponsor_acruencecapital"
        ACSI_FUNDS = "etf_sponsor_acsifunds"
        ACV_ETF = "etf_sponsor_acvetf"
        ADAPTIV = "etf_sponsor_adaptiv"
        ADAPTIVE_INVESTMENTS = "etf_sponsor_adaptiveinvestments"
        ADASINA_SOCIAL_CAPITAL = "etf_sponsor_adasinasocialcapital"
        ADVISOR_SHARES = "etf_sponsor_advisorshares"
        ADVISORS_ASSET_MANAGEMENT = "etf_sponsor_advisorsassetmanagement"
        ADVOCATE_CAPITAL_MANAGEMENT = "etf_sponsor_advocatecapitalmanagement"
        AGFIQ = "etf_sponsor_agfiq"
        ALEXIS_INVESTS = "etf_sponsor_alexisinvests"
        ALGER = "etf_sponsor_alger"
        ALLIANCEBERNSTEIN = "etf_sponsor_alliancebernstein"
        ALLIANZIM = "etf_sponsor_allianzim"
        ALPHA_ARCHITECT = "etf_sponsor_alphaarchitect"
        ALPHAMARK = "etf_sponsor_alphamark"
        ALPS = "etf_sponsor_alps"
        ALTRIUS_CAPITAL = "etf_sponsor_altriuscapital"
        ALTSHARES = "etf_sponsor_altshares"
        AMERICAN_BEACON = "etf_sponsor_americanbeacon"
        AMERICAN_CENTURY_INVESTMENTS = "etf_sponsor_americancenturyinvestments"
        AMPLIFY_INVESTMENTS = "etf_sponsor_amplifyinvestments"
        ANGEL_OAK = "etf_sponsor_angeloak"
        AOT_INVEST = "etf_sponsor_aotinvest"
        APPLIED_FINANCE_FUNDS = "etf_sponsor_appliedfinancefunds"
        APTUS_CAPITAL_ADVISORS = "etf_sponsor_aptuscapitaladvisors"
        ARGENT_CAPITAL_MANAGEMENT = "etf_sponsor_argentcapitalmanagement"
        ARK_FUNDS = "etf_sponsor_arkfunds"
        ARMADA_ETF_ADVISORS = "etf_sponsor_armadaetfadvisors"
        ARROWSHARES = "etf_sponsor_arrowshares"
        ASTORIA = "etf_sponsor_astoria"
        ASYMSHARES = "etf_sponsor_asymshares"
        ATAC_FUNDS = "etf_sponsor_atacfunds"
        AVANTIS_INVESTORS = "etf_sponsor_avantisinvestors"
        AXS_INVESTMENTS = "etf_sponsor_axsinvestments"
        AZTLAN = "etf_sponsor_aztlan"
        BAD_INVESTMENT = "etf_sponsor_badinvestment"
        BAHL_AND_GAYNOR = "etf_sponsor_bahlgaynor"
        BALLAST_AM = "etf_sponsor_ballastam"
        BARCLAYS = "etf_sponsor_barclays"
        BARCLAYS_IPATH = "etf_sponsor_barclaysipath"
        BEACON = "etf_sponsor_beacon"
        BEYOND_INVESTING = "etf_sponsor_beyondinvesting"
        BITWISE = "etf_sponsor_bitwise"
        BLACKROCK_ISHARES = "etf_sponsor_blackrockishares"
        BLUEPRINT_FUND_MANAGEMENT = "etf_sponsor_blueprintfundmanagement"
        BNY_MELLON = "etf_sponsor_bnymellon"
        BONDBLOXX = "etf_sponsor_bondbloxx"
        BRIDGES_CAPITAL = "etf_sponsor_bridgescapital"
        BRIDGEWAY = "etf_sponsor_bridgeway"
        BROOKSTONE = "etf_sponsor_brookstone"
        BUILD_ASSET_MANAGEMENT = "etf_sponsor_buildassetmanagement"
        BURNEY_INVESTMENT = "etf_sponsor_burneyinvestment"
        BUSHIDO_CAPITAL = "etf_sponsor_bushidocapital"
        CABANA_ETF = "etf_sponsor_cabanaetf"
        CALAMOS_INVESTMENTS = "etf_sponsor_calamosinvestments"
        CAMBIAR_INVESTORS = "etf_sponsor_cambiarinvestors"
        CAMBRIA_FUNDS = "etf_sponsor_cambriafunds"
        CAPITAL_GROUP = "etf_sponsor_capitalgroup"
        CARBON_COLLECTIVE = "etf_sponsor_carboncollective"
        CARBON_FUND_ADVISORS = "etf_sponsor_carbonfundadvisors"
        CBOE_VEST = "etf_sponsor_cboevest"
        CHANGEBRIDGE_CAPITAL = "etf_sponsor_changebridgecapital"
        CLOCKWISE_CAPITAL = "etf_sponsor_clockwisecapital"
        CLOUTY = "etf_sponsor_clouty"
        CNIC_FUNDS = "etf_sponsor_cnicfunds"
        COLUMBIA_MANAGEMENT = "etf_sponsor_columbiamanagement"
        CONDUCTOR_ETF = "etf_sponsor_conductoretf"
        CONGRESS_AMC = "etf_sponsor_congressamc"
        CONVERGENCE_INVESTMENT_PARTNERS = "etf_sponsor_convergenceinvestmentpartners"
        CONVEXITYSHARES = "etf_sponsor_convexityshares"
        CORNERCAP = "etf_sponsor_cornercap"
        COUNTERPOINT_MUTUAL_FUNDS = "etf_sponsor_counterpointmutualfunds"
        CREDIT_SUISSE = "etf_sponsor_creditsuisse"
        CROSSINGBRIDGE = "etf_sponsor_crossingbridge"
        CULTIVAR_FUNDS = "etf_sponsor_cultivarfunds"
        DAVIS_ADVISORS = "etf_sponsor_davisadvisors"
        DAY_HAGAN = "etf_sponsor_dayhagan"
        DAYS_GLOBAL_ADVISORS = "etf_sponsor_daysglobaladvisors"
        DEFIANCE_ETFS = "etf_sponsor_defianceetfs"
        DEMOCRACY_INVESTMENTS = "etf_sponsor_democracyinvestments"
        DIMENSIONAL = "etf_sponsor_dimensional"
        DIREXION_SHARES = "etf_sponsor_direxionshares"
        DISCIPLINE_FUND = "etf_sponsor_disciplinefund"
        DISTILLATE_CAPITAL = "etf_sponsor_distillatecapital"
        DOUBLELINE_FUNDS = "etf_sponsor_doublelinefunds"
        DRIVEWEALTH = "etf_sponsor_drivewealth"
        DWS = "etf_sponsor_dws"
        DYNAMIC_SHARES = "etf_sponsor_dynamicshares"
        ECOFIN = "etf_sponsor_ecofin"
        ELEMENT_FUNDS = "etf_sponsor_elementfunds"
        ELEVATE_SHARES = "etf_sponsor_elevateshares"
        ENGINE_NO_1 = "etf_sponsor_engineno1"
        ENTREPRENEURSHARES = "etf_sponsor_entrepreneurshares"
        ENVESTNET = "etf_sponsor_envestnet"
        ETF_MANAGERS_GROUP = "etf_sponsor_etfmanagersgroup"
        EUCLID_ETF = "etf_sponsor_euclidetf"
        EVOKE_ADVISORS = "etf_sponsor_evokeadvisors"
        EXCHANGE_TRADED_CONCEPTS = "etf_sponsor_exchangetradedconcepts"
        F_M_INVESTMENTS = "etf_sponsor_fminvestments"
        FAIRLEAD_STRATEGIES = "etf_sponsor_fairleadstrategies"
        FCF_ADVISORS = "etf_sponsor_fcfadvisors"
        FEDERATED_HERMES = "etf_sponsor_federatedhermes"
        FIDELITY = "etf_sponsor_fidelity"
        FIRST_MANHATTAN = "etf_sponsor_firstmanhattan"
        FIRST_PACIFIC_ADVISORS = "etf_sponsor_firstpacificadvisors"
        FIRST_TRUST = "etf_sponsor_firsttrust"
        FIS = "etf_sponsor_fis"
        FLEXSHARES_NORTHERN_TRUST = "etf_sponsor_flexsharesnortherntrust"
        FOLIOBEYOND = "etf_sponsor_foliobeyond"
        FORMIDABLE_FUNDS = "etf_sponsor_formidablefunds"
        FORMULAFOLIO_INVESTMENTS = "etf_sponsor_formulafolioinvestments"
        FRANKLIN_TEMPLETON = "etf_sponsor_franklintempleton"
        FREEDOM_DAY = "etf_sponsor_freedomday"
        FUNDX = "etf_sponsor_fundx"
        FUTURE_FUNDS = "etf_sponsor_futurefunds"
        GADSDEN = "etf_sponsor_gadsden"
        GAMCO_INVESTORS = "etf_sponsor_gamcoinvestors"
        GAVEKAL_CAPITAL = "etf_sponsor_gavekalcapital"
        GLOBAL_X = "etf_sponsor_globalx"
        GOD_BLESS = "etf_sponsor_godbless"
        GOLDMAN_SACHS = "etf_sponsor_goldmansachs"
        GOOSE_HOLLOW = "etf_sponsor_goosehollow"
        GOTHAM_ETF = "etf_sponsor_gothametf"
        GRANITESHARES = "etf_sponsor_graniteshares"
        GRAYSCALE = "etf_sponsor_grayscale"
        GRIZZLE = "etf_sponsor_grizzle"
        GURU_FOCUS = "etf_sponsor_gurufocus"
        HARBOR_FUNDS = "etf_sponsor_harborfunds"
        HARTFORD_FUNDS = "etf_sponsor_hartfordfunds"
        HASHDEX = "etf_sponsor_hashdex"
        HENNESSY_FUNDS = "etf_sponsor_hennessyfunds"
        HORIZON_KINETICS = "etf_sponsor_horizonkinetics"
        HOWARD_CAPITAL_MANAGEMENT = "etf_sponsor_howardcapitalmanagement"
        HOYA_CAPITAL = "etf_sponsor_hoyacapital"
        HUMANKIND = "etf_sponsor_humankind"
        HYPATIA_CAPITAL = "etf_sponsor_hypatiacapital"
        IMGP_GLOBAL_PARTNER = "etf_sponsor_imgpglobalpartner"
        IMPACT_SHARES = "etf_sponsor_impactshares"
        INDEX_IQ = "etf_sponsor_indexiq"
        INFRASTRUCTURE_CAPITAL_ADVISORS = "etf_sponsor_infrastructurecapitaladvisors"
        INNOVATIVE_PORTFOLIOS = "etf_sponsor_innovativeportfolios"
        INNOVATOR_MANAGEMENT = "etf_sponsor_innovatormanagement"
        INSPIRE_INVESTING = "etf_sponsor_inspireinvesting"
        INVESCO = "etf_sponsor_invesco"
        IONIC_CAPITAL_MANAGEMENT = "etf_sponsor_ioniccapitalmanagement"
        JACOB_FUNDS = "etf_sponsor_jacobfunds"
        JANUS = "etf_sponsor_janus"
        JOHN_HANCOCK_FUNDS = "etf_sponsor_johnhancockfunds"
        JPMORGAN_CHASE = "etf_sponsor_jpmorganchase"
        KAIJU_ETF_ADVISORS = "etf_sponsor_kaijuetfadvisors"
        KELLY_ETFS = "etf_sponsor_kellyetfs"
        KINGSBARN_CAPITAL = "etf_sponsor_kingsbarncapital"
        KOVITZ = "etf_sponsor_kovitz"
        KRANE_SHARES = "etf_sponsor_kraneshares"
        LAFFER_TENGLER = "etf_sponsor_laffertengler"
        LEADERSHARES = "etf_sponsor_leadershares"
        LEATHERBACK_ASSET_MANAGEMENT = "etf_sponsor_leatherbackassetmanagement"
        LEUTHOLD_GROUP = "etf_sponsor_leutholdgroup"
        LIQUID_STRATEGIES = "etf_sponsor_liquidstrategies"
        LITTLE_HARBOR_ADVISORS = "etf_sponsor_littleharboradvisors"
        LOGAN_CAPITAL = "etf_sponsor_logancapital"
        LYRICAL_AM = "etf_sponsor_lyricalam"
        MADISON_FUNDS = "etf_sponsor_madisonfunds"
        MAIN_MANAGEMENT = "etf_sponsor_mainmanagement"
        MAIRS_AND_POWER = "etf_sponsor_mairspower"
        MATTHEWS_ASIA = "etf_sponsor_matthewsasia"
        MAX_ETNS = "etf_sponsor_maxetns"
        MCELHENNY_SHEFFIELD = "etf_sponsor_mcelhennysheffield"
        MEET_KEVIN = "etf_sponsor_meetkevin"
        MERK_INVESTMENTS = "etf_sponsor_merkinvestments"
        MERLYN_AI = "etf_sponsor_merlynai"
        MICROSECTORS = "etf_sponsor_microsectors"
        MKAM_ETF = "etf_sponsor_mkametf"
        MOHR_FUNDS = "etf_sponsor_mohrfunds"
        MONARCH_FUNDS = "etf_sponsor_monarchfunds"
        MORGAN_DEMPSEY = "etf_sponsor_morgandempsey"
        MORGAN_STANLEY = "etf_sponsor_morganstanley"
        MOTLEY_FOOL_ASSET_MANAGEMENT = "etf_sponsor_motleyfoolassetmanagement"
        MUSQ = "etf_sponsor_musq"
        NATIONWIDE = "etf_sponsor_nationwide"
        NATIXIS = "etf_sponsor_natixis"
        NEOS_FUNDS = "etf_sponsor_neosfunds"
        NEUBERGER_BERMAN = "etf_sponsor_neubergerberman"
        NEWDAY = "etf_sponsor_newday"
        NUVEEN = "etf_sponsor_nuveen"
        ONEASCENT_INVESTMENTS = "etf_sponsor_oneascentinvestments"
        OPTIMIZE_ADVISORS = "etf_sponsor_optimizeadvisors"
        PACER_FINANCIAL = "etf_sponsor_pacerfinancial"
        PANAGRAM = "etf_sponsor_panagram"
        PARABLA = "etf_sponsor_parabla"
        PARALEL_ADVISORS = "etf_sponsor_paraleladvisors"
        PGIM_INVESTMENTS = "etf_sponsor_pgiminvestments"
        PIMCO = "etf_sponsor_pimco"
        PINNACLE_DYNAMIC_FUNDS = "etf_sponsor_pinnacledynamicfunds"
        PMV_CAPITAL = "etf_sponsor_pmvcapital"
        POINT_BRIDGE_CAPITAL = "etf_sponsor_pointbridgecapital"
        PRINCIPAL_FINANCIAL_SERVICES = "etf_sponsor_principalfinancialservices"
        PROCUREAM = "etf_sponsor_procuream"
        PROSHARES = "etf_sponsor_proshares"
        PUTNAM_INVESTMENTS = "etf_sponsor_putnaminvestments"
        Q3_ALL_SEASON = "etf_sponsor_q3allseason"
        QRAFT_TECHNOLOGIES = "etf_sponsor_qrafttechnologies"
        R3_GLOBAL_CAPITAL = "etf_sponsor_r3globalcapital"
        RAREVIEW_FUNDS = "etf_sponsor_rareviewfunds"
        RAYLIANT = "etf_sponsor_rayliant"
        REFLECTION_ASSET_MANAGEMENT = "etf_sponsor_reflectionassetmanagement"
        REGENTS_PARK_FUNDS = "etf_sponsor_regentsparkfunds"
        RELATIVE_SENTIMENT = "etf_sponsor_relativesentiment"
        RENAISSANCE = "etf_sponsor_renaissance"
        RETURNED_STACK = "etf_sponsor_returnedstack"
        REVERB = "etf_sponsor_reverb"
        ROBINSON_CAPITAL = "etf_sponsor_robinsoncapital"
        ROC_INVESTMENTS = "etf_sponsor_rocinvestments"
        ROUNDHILL_FINANCIAL = "etf_sponsor_roundhillfinancial"
        RUNNING_OAK = "etf_sponsor_runningoak"
        SABA_CAPITAL = "etf_sponsor_sabacapital"
        SCHWAB = "etf_sponsor_schwab"
        SEGALL_BRYANT_AND_HAMILL = "etf_sponsor_segallbryanthamill"
        SEI_INVESTMENTS_COMPANY = "etf_sponsor_seiinvestmentscompany"
        SIMPLIFY_ETF = "etf_sponsor_simplifyetf"
        SIREN_ETF = "etf_sponsor_sirenetf"
        SMARTETFS = "etf_sponsor_smartetfs"
        SOFI = "etf_sponsor_sofi"
        SONICSHARES = "etf_sponsor_sonicshares"
        SOUND_ETF = "etf_sponsor_soundetf"
        SOUNDWATCH = "etf_sponsor_soundwatch"
        SPARKLINE_CAPITAL = "etf_sponsor_sparklinecapital"
        SPEAR_INVEST = "etf_sponsor_spearinvest"
        SPFUNDS = "etf_sponsor_spfunds"
        SPINNAKER_ETF_TRUST = "etf_sponsor_spinnakeretftrust"
        SPROTT_ASSET_MANAGEMENT = "etf_sponsor_sprottassetmanagement"
        STATE_STREET_SPDR = "etf_sponsor_statestreetspdr"
        STERLING_CAPITAL = "etf_sponsor_sterlingcapital"
        STF_MANAGEMENT = "etf_sponsor_stfmanagement"
        STRATEGAS_ASSET_MANAGEMENT = "etf_sponsor_strategasassetmanagement"
        STRATEGY_SHARES = "etf_sponsor_strategyshares"
        STRIVE_ASSET_MANAGEMENT = "etf_sponsor_striveassetmanagement"
        SUBVERSIVE_ETFS = "etf_sponsor_subversiveetfs"
        SUMMIT_GLOBAL_INVESTMENTS = "etf_sponsor_summitglobalinvestments"
        SWAN_GLOBAL_INVESTMENTS = "etf_sponsor_swanglobalinvestments"
        SYNTAX = "etf_sponsor_syntax"
        T_ROWE_PRICE = "etf_sponsor_troweprice"
        TACTICAL_ADVANTAGE = "etf_sponsor_tacticaladvantage"
        TEMA = "etf_sponsor_tema"
        TEUCRIUM = "etf_sponsor_teucrium"
        TEXAS_CAPITAL = "etf_sponsor_texascapital"
        THOR_FINANCIAL_TECHNOLOGIES = "etf_sponsor_thorfinancialtechnologies"
        THRIVENT = "etf_sponsor_thrivent"
        TIMOTHY_PLAN = "etf_sponsor_timothyplan"
        TOEWS_FUNDS = "etf_sponsor_toewsfunds"
        TORTOISE_CAPITAL_ADVISORS = "etf_sponsor_tortoisecapitaladvisors"
        TOUCHSTONE_INVESTMENTS = "etf_sponsor_touchstoneinvestments"
        TRAJAN_WEALTH = "etf_sponsor_trajanwealth"
        TRUESHARES = "etf_sponsor_trueshares"
        TUTTLE_TACTICAL_MANAGEMENT = "etf_sponsor_tuttletacticalmanagement"
        U_S_GLOBAL_INVESTORS = "etf_sponsor_usglobalinvestors"
        UBS = "etf_sponsor_ubs"
        UNITED_STATES_COMMODITY_FUNDS = "etf_sponsor_unitedstatescommodityfunds"
        UNLIMITED = "etf_sponsor_unlimited"
        V_SQUARE = "etf_sponsor_vsquare"
        VALIDUS = "etf_sponsor_validus"
        VALKYRIE_FUNDS = "etf_sponsor_valkyriefunds"
        VAN_ECK_ASSOCIATES_CORPORATION = "etf_sponsor_vaneckassociatescorporation"
        VANGUARD = "etf_sponsor_vanguard"
        VEGTECH = "etf_sponsor_vegtech"
        VERIDIEN = "etf_sponsor_veridien"
        VESPER_CAPITAL_MANAGEMENT = "etf_sponsor_vespercapitalmanagement"
        VICTORYSHARES = "etf_sponsor_victoryshares"
        VIDENT = "etf_sponsor_vident"
        VIRTUS_ETF_SOLUTIONS = "etf_sponsor_virtusetfsolutions"
        VOLATILITY_SHARES = "etf_sponsor_volatilityshares"
        WAHED_INVEST = "etf_sponsor_wahedinvest"
        WBI_SHARES = "etf_sponsor_wbishares"
        WEALTH_TRUST = "etf_sponsor_wealthtrust"
        WISDOM_TREE = "etf_sponsor_wisdomtree"
        X_SQUARE_ETF = "etf_sponsor_xsquareetf"
        XFUNDS = "etf_sponsor_xfunds"
        ZACKS = "etf_sponsor_zacks"
        ZEGA_ETF = "etf_sponsor_zegaetf"
        CUSTOM_ELITE_ONLY = "etf_sponsor_modal"

    class NetExpenseRatioOption(ScreenerFilterOption, Enum):
        UNDER_0_POINT_1_PERCENT = "etf_netexpense_u01"
        UNDER_0_POINT_2_PERCENT = "etf_netexpense_u02"
        UNDER_0_POINT_3_PERCENT = "etf_netexpense_u03"
        UNDER_0_POINT_4_PERCENT = "etf_netexpense_u04"
        UNDER_0_POINT_5_PERCENT = "etf_netexpense_u05"
        UNDER_0_POINT_6_PERCENT = "etf_netexpense_u06"
        UNDER_0_POINT_7_PERCENT = "etf_netexpense_u07"
        UNDER_0_POINT_8_PERCENT = "etf_netexpense_u08"
        UNDER_0_POINT_9_PERCENT = "etf_netexpense_u09"
        UNDER_1_POINT_0_PERCENT = "etf_netexpense_u10"
        CUSTOM_ELITE_ONLY = "etf_netexpense_frange"

    class NetFundFlowsOption(ScreenerFilterOption, Enum):
        _1_MONTH_OVER_0_PERCENT = "etf_fundflows_1mo0"
        _1_MONTH_OVER_10_PERCENT = "etf_fundflows_1mo10"
        _1_MONTH_OVER_25_PERCENT = "etf_fundflows_1mo25"
        _1_MONTH_OVER_50_PERCENT = "etf_fundflows_1mo50"
        _1_MONTH_UNDER_0_PERCENT = "etf_fundflows_1mu0"
        _1_MONTH_UNDER_10_PERCENT = "etf_fundflows_1mu10"
        _1_MONTH_UNDER_25_PERCENT = "etf_fundflows_1mu25"
        _1_MONTH_UNDER_50_PERCENT = "etf_fundflows_1mu50"
        _3_MONTH_OVER_0_PERCENT = "etf_fundflows_3mo0"
        _3_MONTH_OVER_10_PERCENT = "etf_fundflows_3mo10"
        _3_MONTH_OVER_25_PERCENT = "etf_fundflows_3mo25"
        _3_MONTH_OVER_50_PERCENT = "etf_fundflows_3mo50"
        _3_MONTH_UNDER_0_PERCENT = "etf_fundflows_3mu0"
        _3_MONTH_UNDER_10_PERCENT = "etf_fundflows_3mu10"
        _3_MONTH_UNDER_25_PERCENT = "etf_fundflows_3mu25"
        _3_MONTH_UNDER_50_PERCENT = "etf_fundflows_3mu50"
        YTD_OVER_0_PERCENT = "etf_fundflows_ytdo0"
        YTD_OVER_10_PERCENT = "etf_fundflows_ytdo10"
        YTD_OVER_25_PERCENT = "etf_fundflows_ytdo25"
        YTD_OVER_50_PERCENT = "etf_fundflows_ytdo50"
        YTD_UNDER_0_PERCENT = "etf_fundflows_ytdu0"
        YTD_UNDER_10_PERCENT = "etf_fundflows_ytdu10"
        YTD_UNDER_25_PERCENT = "etf_fundflows_ytdu25"
        YTD_UNDER_50_PERCENT = "etf_fundflows_ytdu50"
        MORE_ELITE_ONLY = "etf_fundflows_more"
        CUSTOM_ELITE_ONLY = "etf_fundflows_modal"

    class AnnualizedReturnOption(ScreenerFilterOption, Enum):
        _1_YEAR_OVER_0_PERCENT = "etf_return_1yo0"
        _1_YEAR_OVER_5_PERCENT = "etf_return_1yo05"
        _1_YEAR_OVER_10_PERCENT = "etf_return_1yo10"
        _1_YEAR_OVER_25_PERCENT = "etf_return_1yo25"
        _1_YEAR_UNDER_0_PERCENT = "etf_return_1yu0"
        _1_YEAR_UNDER_5_PERCENT = "etf_return_1yu05"
        _1_YEAR_UNDER_10_PERCENT = "etf_return_1yu10"
        _1_YEAR_UNDER_25_PERCENT = "etf_return_1yu25"
        _3_YEAR_OVER_0_PERCENT = "etf_return_3yo0"
        _3_YEAR_OVER_5_PERCENT = "etf_return_3yo05"
        _3_YEAR_OVER_10_PERCENT = "etf_return_3yo10"
        _3_YEAR_OVER_25_PERCENT = "etf_return_3yo25"
        _3_YEAR_UNDER_0_PERCENT = "etf_return_3yu0"
        _3_YEAR_UNDER_5_PERCENT = "etf_return_3yu05"
        _3_YEAR_UNDER_10_PERCENT = "etf_return_3yu10"
        _3_YEAR_UNDER_25_PERCENT = "etf_return_3yu25"
        _5_YEAR_OVER_0_PERCENT = "etf_return_5yo0"
        _5_YEAR_OVER_5_PERCENT = "etf_return_5yo05"
        _5_YEAR_OVER_10_PERCENT = "etf_return_5yo10"
        _5_YEAR_OVER_25_PERCENT = "etf_return_5yo25"
        _5_YEAR_UNDER_0_PERCENT = "etf_return_5yu0"
        _5_YEAR_UNDER_5_PERCENT = "etf_return_5yu05"
        _5_YEAR_UNDER_10_PERCENT = "etf_return_5yu10"
        _5_YEAR_UNDER_25_PERCENT = "etf_return_5yu25"
        MORE_ELITE_ONLY = "etf_return_more"
        CUSTOM_ELITE_ONLY = "etf_return_modal"

    class TagsOption(ScreenerFilterOption, Enum):
        _13F = "etf_tags_13f"
        _3D_PRINTING = "etf_tags_3dprinting"
        _5G = "etf_tags_5g"
        A_I = "etf_tags_ai"
        AAPL = "etf_tags_aapl"
        AEROSPACE_DEFENSE = "etf_tags_aerospacedefense"
        AFRICA = "etf_tags_africa"
        AGGRESSIVE = "etf_tags_aggressive"
        AGRICULTURE = "etf_tags_agriculture"
        AIRCRAFT = "etf_tags_aircraft"
        AIRLINES = "etf_tags_airlines"
        ALCOHOL_TOBACCO = "etf_tags_alcoholtobacco"
        AMD = "etf_tags_amd"
        AMZN = "etf_tags_amzn"
        ARGENTINA = "etf_tags_argentina"
        ARKK = "etf_tags_arkk"
        ASIA = "etf_tags_asia"
        ASIA_EX_JAPAN = "etf_tags_asiaexjapan"
        ASIA_PACIFIC = "etf_tags_asiapacific"
        ASIA_PACIFIC_EX_JAPAN = "etf_tags_asiapacificexjapan"
        ASSET_ROTATION = "etf_tags_assetrotation"
        AUD = "etf_tags_aud"
        AUSTRALIA = "etf_tags_australia"
        AUSTRIA = "etf_tags_austria"
        AUTO_INDUSTRY = "etf_tags_autoindustry"
        AUTOMATION = "etf_tags_automation"
        AUTONOMOUS_VEHICLES = "etf_tags_autonomousvehicles"
        BABA = "etf_tags_baba"
        BANKS = "etf_tags_banks"
        BATTERIES = "etf_tags_batteries"
        BDC = "etf_tags_bdc"
        BELGIUM = "etf_tags_belgium"
        BETTING = "etf_tags_betting"
        BIG_DATA = "etf_tags_bigdata"
        BIOTECHNOLOGY = "etf_tags_biotechnology"
        BITCOIN = "etf_tags_bitcoin"
        BLOCKCHAIN = "etf_tags_blockchain"
        BLUE_CHIP = "etf_tags_bluechip"
        BONDS = "etf_tags_bonds"
        BRAZIL = "etf_tags_brazil"
        BROKERAGE = "etf_tags_brokerage"
        BUFFER = "etf_tags_buffer"
        BUYBACK = "etf_tags_buyback"
        CAD = "etf_tags_cad"
        CANADA = "etf_tags_canada"
        CANCER = "etf_tags_cancer"
        CANNABIS = "etf_tags_cannabis"
        CAPITAL_MARKETS = "etf_tags_capitalmarkets"
        CARBON_ALLOWANCES = "etf_tags_carbonallowances"
        CARBON_LOW = "etf_tags_carbonlow"
        CASH_COW = "etf_tags_cashcow"
        CASINO = "etf_tags_casino"
        CATHOLIC_VALUES = "etf_tags_catholicvalues"
        CHF = "etf_tags_chf"
        CHILE = "etf_tags_chile"
        CHINA = "etf_tags_china"
        CLEAN_ENERGY = "etf_tags_cleanenergy"
        CLIMATE_CHANGE = "etf_tags_climatechange"
        CLINICAL_TRIALS = "etf_tags_clinicaltrials"
        CLO = "etf_tags_clo"
        CLOUD_COMPUTING = "etf_tags_cloudcomputing"
        COBALT = "etf_tags_cobalt"
        COIN = "etf_tags_coin"
        COLOMBIA = "etf_tags_colombia"
        COMMODITY = "etf_tags_commodity"
        COMMUNICATION_SERVICES = "etf_tags_communicationservices"
        COMMUNITY_BANKS = "etf_tags_communitybanks"
        CONSERVATIVE = "etf_tags_conservative"
        CONSUMER = "etf_tags_consumer"
        CONSUMER_DISCRETIONARY = "etf_tags_consumerdiscretionary"
        CONSUMER_STAPLES = "etf_tags_consumerstaples"
        CONVERTIBLE_SECURITIES = "etf_tags_convertiblesecurities"
        COPPER = "etf_tags_copper"
        CORN = "etf_tags_corn"
        CORPORATE_BONDS = "etf_tags_corporatebonds"
        COVERED_CALL = "etf_tags_coveredcall"
        CRYPTO = "etf_tags_crypto"
        CRYPTO_SPOT = "etf_tags_cryptospot"
        CURRENCIES = "etf_tags_currencies"
        CURRENCY = "etf_tags_currency"
        CURRENCY_BONDS = "etf_tags_currencybonds"
        CUSTOMER = "etf_tags_customer"
        CYBER_SECURITY = "etf_tags_cybersecurity"
        DATA_CENTERS = "etf_tags_datacenters"
        DAX = "etf_tags_dax"
        DEBT = "etf_tags_debt"
        DEBT_SECURITIES = "etf_tags_debtsecurities"
        DEMOCRATS = "etf_tags_democrats"
        DENMARK = "etf_tags_denmark"
        DERIVATIVES = "etf_tags_derivatives"
        DEVELOPED = "etf_tags_developed"
        DEVELOPED_EX_JAPAN = "etf_tags_developedexjapan"
        DEVELOPED_EX_U_S = "etf_tags_developedexus"
        DIGITAL_INFRASTRUCTURE = "etf_tags_digitalinfrastructure"
        DIGITAL_PAYMENTS = "etf_tags_digitalpayments"
        DIS = "etf_tags_dis"
        DISASTER_RECOVERY = "etf_tags_disasterrecovery"
        DISRUPTIVE = "etf_tags_disruptive"
        DIVIDEND = "etf_tags_dividend"
        DIVIDEND_GROWTH = "etf_tags_dividendgrowth"
        DIVIDEND_WEIGHT = "etf_tags_dividendweight"
        DJIA = "etf_tags_djia"
        DRY_BULK = "etf_tags_drybulk"
        E_COMMERCE = "etf_tags_ecommerce"
        E_SPORTS = "etf_tags_esports"
        EAFE = "etf_tags_eafe"
        EDUCATION = "etf_tags_education"
        EGYPT = "etf_tags_egypt"
        ELECTRIC_VEHICLES = "etf_tags_electricvehicles"
        ELECTRICITY = "etf_tags_electricity"
        EMERGING = "etf_tags_emerging"
        EMERGING_EX_CHINA = "etf_tags_emergingexchina"
        ENERGY = "etf_tags_energy"
        ENERGY_MANAGEMENT = "etf_tags_energymanagement"
        ENERGY_PRODUCERS = "etf_tags_energyproducers"
        ENERGY_STORAGE = "etf_tags_energystorage"
        ENTERTAINMENT = "etf_tags_entertainment"
        ENVIRONMENTAL = "etf_tags_environmental"
        EQUAL_WEIGHT = "etf_tags_equalweight"
        EQUITY = "etf_tags_equity"
        ESG = "etf_tags_esg"
        ETFS = "etf_tags_etfs"
        ETHEREUM = "etf_tags_ethereum"
        EUR = "etf_tags_eur"
        EUROPE = "etf_tags_europe"
        EUROZONE = "etf_tags_eurozone"
        EX_ENERGY = "etf_tags_exenergy"
        EX_FINANCIAL = "etf_tags_exfinancial"
        EX_FOSSIL_FUELS = "etf_tags_exfossilfuels"
        EX_HEALTHCARE = "etf_tags_exhealthcare"
        EX_TECHNOLOGY = "etf_tags_extechnology"
        EXCHANGES = "etf_tags_exchanges"
        FACTOR_ROTATION = "etf_tags_factorrotation"
        FANG = "etf_tags_fang"
        FINANCIAL = "etf_tags_financial"
        FINLAND = "etf_tags_finland"
        FINTECH = "etf_tags_fintech"
        FIXED_INCOME = "etf_tags_fixedincome"
        FIXED_PERIOD = "etf_tags_fixedperiod"
        FLOATING_RATE = "etf_tags_floatingrate"
        FOOD = "etf_tags_food"
        FOOD_BEVERAGE = "etf_tags_foodbeverage"
        FOSSIL_FUELS = "etf_tags_fossilfuels"
        FRANCE = "etf_tags_france"
        FUNDAMENTAL = "etf_tags_fundamental"
        FUNDAMENTAL_WEIGHT = "etf_tags_fundamentalweight"
        FUTURES = "etf_tags_futures"
        GAMING = "etf_tags_gaming"
        GBP = "etf_tags_gbp"
        GENDER = "etf_tags_gender"
        GENOMICS = "etf_tags_genomics"
        GERMANY = "etf_tags_germany"
        GLD = "etf_tags_gld"
        GLOBAL = "etf_tags_global"
        GLOBAL_EX_U_S = "etf_tags_globalexus"
        GOLD = "etf_tags_gold"
        GOLD_MINERS = "etf_tags_goldminers"
        GOOGL = "etf_tags_googl"
        GOVERNMENT_BONDS = "etf_tags_governmentbonds"
        GREECE = "etf_tags_greece"
        GROWTH = "etf_tags_growth"
        HARDWARE = "etf_tags_hardware"
        HEALTHCARE = "etf_tags_healthcare"
        HEDGE_CURRENCY = "etf_tags_hedgecurrency"
        HEDGE_FUND = "etf_tags_hedgefund"
        HEDGE_INFLATION = "etf_tags_hedgeinflation"
        HEDGE_RATES = "etf_tags_hedgerates"
        HEDGE_RISK = "etf_tags_hedgerisk"
        HIGH_BETA = "etf_tags_highbeta"
        HIGH_YIELD = "etf_tags_highyield"
        HOME_CONSTRUCTION = "etf_tags_homeconstruction"
        HOME_OFFICE = "etf_tags_homeoffice"
        HONK_KONG = "etf_tags_honkkong"
        HOTEL = "etf_tags_hotel"
        HYDROGEN = "etf_tags_hydrogen"
        I_T = "etf_tags_it"
        INCOME = "etf_tags_income"
        INDIA = "etf_tags_india"
        INDONESIA = "etf_tags_indonesia"
        INDUSTRIALS = "etf_tags_industrials"
        INFLATION = "etf_tags_inflation"
        INFRASTRUCTURE = "etf_tags_infrastructure"
        INNOVATION = "etf_tags_innovation"
        INSURANCE = "etf_tags_insurance"
        INTERNATIONAL = "etf_tags_international"
        INTERNET = "etf_tags_internet"
        INTERNET_OF_THINGS = "etf_tags_internetofthings"
        INVERSE = "etf_tags_inverse"
        INVESTMENT_GRADE = "etf_tags_investmentgrade"
        IPO = "etf_tags_ipo"
        IRELAND = "etf_tags_ireland"
        ISRAEL = "etf_tags_israel"
        ITALY = "etf_tags_italy"
        JAPAN = "etf_tags_japan"
        JIM_CRAMER = "etf_tags_jimcramer"
        JPM = "etf_tags_jpm"
        JPY = "etf_tags_jpy"
        KUWAIT = "etf_tags_kuwait"
        LARGE_CAP = "etf_tags_largecap"
        LATIN_AMERICA = "etf_tags_latinamerica"
        LEADERSHIP = "etf_tags_leadership"
        LEVERAGE = "etf_tags_leverage"
        LIFESTYLE = "etf_tags_lifestyle"
        LITHIUM = "etf_tags_lithium"
        LOANS = "etf_tags_loans"
        LONG_SHORT = "etf_tags_longshort"
        LUXURY = "etf_tags_luxury"
        M_AND_A = "etf_tags_ma"
        MACHINE_LEARNING = "etf_tags_machinelearning"
        MACRO = "etf_tags_macro"
        MALAYSIA = "etf_tags_malaysia"
        MARKET_SENTIMENT = "etf_tags_marketsentiment"
        MARKETING = "etf_tags_marketing"
        MATERIALS = "etf_tags_materials"
        MBS = "etf_tags_mbs"
        MEDIA = "etf_tags_media"
        MEDICAL = "etf_tags_medical"
        MEGA_CAP = "etf_tags_megacap"
        META = "etf_tags_meta"
        METALS = "etf_tags_metals"
        METAVERSE = "etf_tags_metaverse"
        MEXICO = "etf_tags_mexico"
        MICRO_CAP = "etf_tags_microcap"
        MID_CAP = "etf_tags_midcap"
        MID_LARGE_CAP = "etf_tags_midlargecap"
        MIDSTREAM = "etf_tags_midstream"
        MILITARY = "etf_tags_military"
        MILLENNIAL = "etf_tags_millennial"
        MINERS = "etf_tags_miners"
        MLP = "etf_tags_mlp"
        MOBILE_PAYMENTS = "etf_tags_mobilepayments"
        MODERATE = "etf_tags_moderate"
        MOMENTUM = "etf_tags_momentum"
        MONOPOLIES = "etf_tags_monopolies"
        MSFT = "etf_tags_msft"
        MULTI_ASSET = "etf_tags_multiasset"
        MULTI_FACTOR = "etf_tags_multifactor"
        MULTI_SECTOR = "etf_tags_multisector"
        MUNICIPAL_BONDS = "etf_tags_municipalbonds"
        MUSIC = "etf_tags_music"
        NASDAQ_COMPOSITE = "etf_tags_nasdaqcomposite"
        NASDAQ100 = "etf_tags_nasdaq100"
        NATURAL_GAS = "etf_tags_naturalgas"
        NATURAL_RESOURCES = "etf_tags_naturalresources"
        NETHERLANDS = "etf_tags_netherlands"
        NETWORK = "etf_tags_network"
        NEW_ZEALAND = "etf_tags_newzealand"
        NEXT_GEN = "etf_tags_nextgen"
        NFLX = "etf_tags_nflx"
        NICKEL = "etf_tags_nickel"
        NIGERIA = "etf_tags_nigeria"
        NIKKEI_NEGATIVE_400 = "etf_tags_nikkei400"
        NON_ESG = "etf_tags_nonesg"
        NORTH_AMERICA = "etf_tags_northamerica"
        NORWAY = "etf_tags_norway"
        NUCLEAR_ENERGY = "etf_tags_nuclearenergy"
        NVDA = "etf_tags_nvda"
        OCEAN = "etf_tags_ocean"
        OIL = "etf_tags_oil"
        OIL_GAS_EXP_PROD = "etf_tags_oilgasexpprod"
        OIL_GAS_SERVICES = "etf_tags_oilgasservices"
        ONLINE_STORES = "etf_tags_onlinestores"
        OPTIONS = "etf_tags_options"
        PAKISTAN = "etf_tags_pakistan"
        PALLADIUM = "etf_tags_palladium"
        PATENTS = "etf_tags_patents"
        PERU = "etf_tags_peru"
        PET_CARE = "etf_tags_petcare"
        PHARMACEUTICAL = "etf_tags_pharmaceutical"
        PHILIPPINES = "etf_tags_philippines"
        PHYSICAL = "etf_tags_physical"
        PIPELINES = "etf_tags_pipelines"
        PLATINUM = "etf_tags_platinum"
        POLAND = "etf_tags_poland"
        POLITICS = "etf_tags_politics"
        PORTUGAL = "etf_tags_portugal"
        PRECIOUS_METALS = "etf_tags_preciousmetals"
        PREFERRED = "etf_tags_preferred"
        PREFERRED_SECURITIES = "etf_tags_preferredsecurities"
        PRIVATE_CREDIT = "etf_tags_privatecredit"
        PRIVATE_EQUITY = "etf_tags_privateequity"
        PUT_WRITE = "etf_tags_putwrite"
        PYPL = "etf_tags_pypl"
        QUALITY = "etf_tags_quality"
        QUANTITATIVE = "etf_tags_quantitative"
        QUANTUM_COMPUTING = "etf_tags_quantumcomputing"
        QUATAR = "etf_tags_quatar"
        R_AND_D = "etf_tags_rd"
        RARE_EARTH = "etf_tags_rareearth"
        REAL_ASSETS = "etf_tags_realassets"
        REAL_ESTATE = "etf_tags_realestate"
        REGIONAL_BANKS = "etf_tags_regionalbanks"
        REITS = "etf_tags_reits"
        RELATIVE_STRENGTH = "etf_tags_relativestrength"
        RENEWABLE_ENERGY = "etf_tags_renewableenergy"
        REPUBLICANS = "etf_tags_republicans"
        RESPONSIBLE = "etf_tags_responsible"
        RESTAURANT = "etf_tags_restaurant"
        RETAIL = "etf_tags_retail"
        RETAIL_STORES = "etf_tags_retailstores"
        REVENUE = "etf_tags_revenue"
        RISING_RATES = "etf_tags_risingrates"
        ROBOTICS = "etf_tags_robotics"
        RUSSELL_NEGATIVE_1000 = "etf_tags_russell1000"
        RUSSELL_NEGATIVE_200 = "etf_tags_russell200"
        RUSSELL_NEGATIVE_2000 = "etf_tags_russell2000"
        RUSSELL_NEGATIVE_2500 = "etf_tags_russell2500"
        RUSSELL_NEGATIVE_3000 = "etf_tags_russell3000"
        SAUDI_ARABIA = "etf_tags_saudiarabia"
        SECTOR_ROTATION = "etf_tags_sectorrotation"
        SEMICONDUCTORS = "etf_tags_semiconductors"
        SENIOR_LOANS = "etf_tags_seniorloans"
        SHARIA_COMPLIANT = "etf_tags_shariacompliant"
        SHIPPING = "etf_tags_shipping"
        SHORT = "etf_tags_short"
        SILVER = "etf_tags_silver"
        SILVER_MINERS = "etf_tags_silverminers"
        SINGAPORE = "etf_tags_singapore"
        SINGLE_ASSET = "etf_tags_singleasset"
        SLV = "etf_tags_slv"
        SMALL_CAP = "etf_tags_smallcap"
        SMALL_MID_CAP = "etf_tags_smallmidcap"
        SMART_GRID = "etf_tags_smartgrid"
        SMART_MOBILITY = "etf_tags_smartmobility"
        SOCIAL = "etf_tags_social"
        SOCIAL_MEDIA = "etf_tags_socialmedia"
        SOFTWARE = "etf_tags_software"
        SOLAR = "etf_tags_solar"
        SOUTH_AFRICA = "etf_tags_southafrica"
        SOUTH_KOREA = "etf_tags_southkorea"
        SOYBEAN = "etf_tags_soybean"
        SP100 = "etf_tags_sp100"
        SP1000 = "etf_tags_sp1000"
        SP1500 = "etf_tags_sp1500"
        SP400 = "etf_tags_sp400"
        SP500 = "etf_tags_sp500"
        SP600 = "etf_tags_sp600"
        SPAC = "etf_tags_spac"
        SPACE_EXPLORATION = "etf_tags_spaceexploration"
        SPAIN = "etf_tags_spain"
        SPIN_OFF = "etf_tags_spinoff"
        STEEL = "etf_tags_steel"
        SUGAR = "etf_tags_sugar"
        SUKUK = "etf_tags_sukuk"
        SUSTAINABILITY = "etf_tags_sustainability"
        SWEDEN = "etf_tags_sweden"
        SWITZERLAND = "etf_tags_switzerland"
        TACTICAL = "etf_tags_tactical"
        TAIWAN = "etf_tags_taiwan"
        TARGET_DRAWDOWN = "etf_tags_targetdrawdown"
        TECHNOLOGY = "etf_tags_technology"
        THAILAND = "etf_tags_thailand"
        TIMBER = "etf_tags_timber"
        TIPS = "etf_tags_tips"
        TRANSPORTATION = "etf_tags_transportation"
        TRAVEL = "etf_tags_travel"
        TREASURIES = "etf_tags_treasuries"
        TSLA = "etf_tags_tsla"
        TURKEY = "etf_tags_turkey"
        U_K = "etf_tags_uk"
        U_S = "etf_tags_us"
        UAE = "etf_tags_uae"
        UPSIDE_CAP = "etf_tags_upsidecap"
        UPSTREAM = "etf_tags_upstream"
        URANIUM = "etf_tags_uranium"
        URANIUM_MINERS = "etf_tags_uraniumminers"
        USD = "etf_tags_usd"
        USO = "etf_tags_uso"
        UTILITIES = "etf_tags_utilities"
        VALUE = "etf_tags_value"
        VARIABLE_RATE = "etf_tags_variablerate"
        VEGAN = "etf_tags_vegan"
        VIETNAM = "etf_tags_vietnam"
        VIX = "etf_tags_vix"
        VOLATILITY = "etf_tags_volatility"
        VOLATILITY_INDEX = "etf_tags_volatilityindex"
        VOLATILITY_WEIGHT = "etf_tags_volatilityweight"
        WATER = "etf_tags_water"
        WEAPONS = "etf_tags_weapons"
        WELLNESS = "etf_tags_wellness"
        WHEAT = "etf_tags_wheat"
        WIND = "etf_tags_wind"
        WOOD = "etf_tags_wood"
        XOM = "etf_tags_xom"
        YUAN = "etf_tags_yuan"
        ZERO_COUPON = "etf_tags_zerocoupon"
        CUSTOM_ELITE_ONLY = "etf_tags_modal"

    @staticmethod
    def page_number(n: int):
        """
        :param n: number you see on page (e.g. page 2)
        :return: number that appears on url when you press the link (e.g. you press 2, but url shows r=21, [(2-1) * 20] + 1
        """
        return str((n - 1) * 20 + 1)

    def __create_url__(self):
        main_url = "https://finviz.com/screener.ashx?ft=4&v=" + self.view_option.value + "&s=" + self.signal_option

        enums_ = {e.__class__.__name__: e for e in self.filter_options}.values()
        f_str = ','.join([e.value for e in enums_])
        if f_str != '':
            main_url += f'&f={f_str}'

        enums_ = {e.name: e for e in self.custom_settings_options}.values()
        c_str = ','.join([e.value for e in enums_])
        if c_str != '':
            main_url += f'&c={c_str}'

        order_str = self.order_direction.value + self.order_by.value

        # f=earningsdate_today,exch_nyse,...
        main_url += f'&o={order_str}&r='
        return main_url

    def __init__(self, main_url=None, filter_options: List[ScreenerFilterOption] = None,
                 signal_option: SignalOption = None,
                 custom_settings_options: List[CustomSettingsOption]=None,
                 view_option: ViewOption = ViewOption.OVERVIEW, pages=None,
                 order_by: OrderBy = OrderBy.TICKER, order_direction: OrderDirection = OrderDirection.ASC):

        self.filter_options = [] if filter_options is None else filter_options
        self.signal_option = '' if signal_option is None else signal_option.value
        self.custom_settings_options = [] if custom_settings_options is None else custom_settings_options
        self.view_option = view_option
        self.pages = [1] if pages is None else pages
        self.order_by = order_by
        self.order_direction = order_direction
        self.main_url = self.__create_url__() if main_url is None else main_url

        self.soups = {x: None for x in self.pages}
        self.data_frames = {x: None for x in self.pages}

        for page_number in self.pages:
            url_ = self.main_url + Screener.page_number(page_number)
            self.soups[page_number], self.data_frames[page_number] = WebScraper.get_single_table_pandas(url_)
