Files
AI-Stock-Trader/WebServer/AIPython/python/lib/python3.11/site-packages/yfinance/const.py
T

720 lines
35 KiB
Python

_QUERY1_URL_ = 'https://query1.finance.yahoo.com'
_BASE_URL_ = 'https://query2.finance.yahoo.com'
_ROOT_URL_ = 'https://finance.yahoo.com'
_SENTINEL_ = object()
fundamentals_keys = {
'financials': ["TaxEffectOfUnusualItems", "TaxRateForCalcs", "NormalizedEBITDA", "NormalizedDilutedEPS",
"NormalizedBasicEPS", "TotalUnusualItems", "TotalUnusualItemsExcludingGoodwill",
"NetIncomeFromContinuingOperationNetMinorityInterest", "ReconciledDepreciation",
"ReconciledCostOfRevenue", "EBITDA", "EBIT", "NetInterestIncome", "InterestExpense",
"InterestIncome", "ContinuingAndDiscontinuedDilutedEPS", "ContinuingAndDiscontinuedBasicEPS",
"NormalizedIncome", "NetIncomeFromContinuingAndDiscontinuedOperation", "TotalExpenses",
"RentExpenseSupplemental", "ReportedNormalizedDilutedEPS", "ReportedNormalizedBasicEPS",
"TotalOperatingIncomeAsReported", "DividendPerShare", "DilutedAverageShares", "BasicAverageShares",
"DilutedEPS", "DilutedEPSOtherGainsLosses", "TaxLossCarryforwardDilutedEPS",
"DilutedAccountingChange", "DilutedExtraordinary", "DilutedDiscontinuousOperations",
"DilutedContinuousOperations", "BasicEPS", "BasicEPSOtherGainsLosses", "TaxLossCarryforwardBasicEPS",
"BasicAccountingChange", "BasicExtraordinary", "BasicDiscontinuousOperations",
"BasicContinuousOperations", "DilutedNIAvailtoComStockholders", "AverageDilutionEarnings",
"NetIncomeCommonStockholders", "OtherunderPreferredStockDividend", "PreferredStockDividends",
"NetIncome", "MinorityInterests", "NetIncomeIncludingNoncontrollingInterests",
"NetIncomeFromTaxLossCarryforward", "NetIncomeExtraordinary", "NetIncomeDiscontinuousOperations",
"NetIncomeContinuousOperations", "EarningsFromEquityInterestNetOfTax", "TaxProvision",
"PretaxIncome", "OtherIncomeExpense", "OtherNonOperatingIncomeExpenses", "SpecialIncomeCharges",
"GainOnSaleOfPPE", "GainOnSaleOfBusiness", "OtherSpecialCharges", "WriteOff",
"ImpairmentOfCapitalAssets", "RestructuringAndMergernAcquisition", "SecuritiesAmortization",
"EarningsFromEquityInterest", "GainOnSaleOfSecurity", "NetNonOperatingInterestIncomeExpense",
"TotalOtherFinanceCost", "InterestExpenseNonOperating", "InterestIncomeNonOperating",
"OperatingIncome", "OperatingExpense", "OtherOperatingExpenses", "OtherTaxes",
"ProvisionForDoubtfulAccounts", "DepreciationAmortizationDepletionIncomeStatement",
"DepletionIncomeStatement", "DepreciationAndAmortizationInIncomeStatement", "Amortization",
"AmortizationOfIntangiblesIncomeStatement", "DepreciationIncomeStatement", "ResearchAndDevelopment",
"SellingGeneralAndAdministration", "SellingAndMarketingExpense", "GeneralAndAdministrativeExpense",
"OtherGandA", "InsuranceAndClaims", "RentAndLandingFees", "SalariesAndWages", "GrossProfit",
"CostOfRevenue", "TotalRevenue", "ExciseTaxes", "OperatingRevenue", "LossAdjustmentExpense",
"NetPolicyholderBenefitsAndClaims", "PolicyholderBenefitsGross", "PolicyholderBenefitsCeded",
"OccupancyAndEquipment", "ProfessionalExpenseAndContractServicesExpense", "OtherNonInterestExpense"],
'balance-sheet': ["TreasurySharesNumber", "PreferredSharesNumber", "OrdinarySharesNumber", "ShareIssued", "NetDebt",
"TotalDebt", "TangibleBookValue", "InvestedCapital", "WorkingCapital", "NetTangibleAssets",
"CapitalLeaseObligations", "CommonStockEquity", "PreferredStockEquity", "TotalCapitalization",
"TotalEquityGrossMinorityInterest", "MinorityInterest", "StockholdersEquity",
"OtherEquityInterest", "GainsLossesNotAffectingRetainedEarnings", "OtherEquityAdjustments",
"FixedAssetsRevaluationReserve", "ForeignCurrencyTranslationAdjustments",
"MinimumPensionLiabilities", "UnrealizedGainLoss", "TreasuryStock", "RetainedEarnings",
"AdditionalPaidInCapital", "CapitalStock", "OtherCapitalStock", "CommonStock", "PreferredStock",
"TotalPartnershipCapital", "GeneralPartnershipCapital", "LimitedPartnershipCapital",
"TotalLiabilitiesNetMinorityInterest", "TotalNonCurrentLiabilitiesNetMinorityInterest",
"OtherNonCurrentLiabilities", "LiabilitiesHeldforSaleNonCurrent", "RestrictedCommonStock",
"PreferredSecuritiesOutsideStockEquity", "DerivativeProductLiabilities", "EmployeeBenefits",
"NonCurrentPensionAndOtherPostretirementBenefitPlans", "NonCurrentAccruedExpenses",
"DuetoRelatedPartiesNonCurrent", "TradeandOtherPayablesNonCurrent",
"NonCurrentDeferredLiabilities", "NonCurrentDeferredRevenue",
"NonCurrentDeferredTaxesLiabilities", "LongTermDebtAndCapitalLeaseObligation",
"LongTermCapitalLeaseObligation", "LongTermDebt", "LongTermProvisions", "CurrentLiabilities",
"OtherCurrentLiabilities", "CurrentDeferredLiabilities", "CurrentDeferredRevenue",
"CurrentDeferredTaxesLiabilities", "CurrentDebtAndCapitalLeaseObligation",
"CurrentCapitalLeaseObligation", "CurrentDebt", "OtherCurrentBorrowings", "LineOfCredit",
"CommercialPaper", "CurrentNotesPayable", "PensionandOtherPostRetirementBenefitPlansCurrent",
"CurrentProvisions", "PayablesAndAccruedExpenses", "CurrentAccruedExpenses", "InterestPayable",
"Payables", "OtherPayable", "DuetoRelatedPartiesCurrent", "DividendsPayable", "TotalTaxPayable",
"IncomeTaxPayable", "AccountsPayable", "TotalAssets", "TotalNonCurrentAssets",
"OtherNonCurrentAssets", "DefinedPensionBenefit", "NonCurrentPrepaidAssets",
"NonCurrentDeferredAssets", "NonCurrentDeferredTaxesAssets", "DuefromRelatedPartiesNonCurrent",
"NonCurrentNoteReceivables", "NonCurrentAccountsReceivable", "FinancialAssets",
"InvestmentsAndAdvances", "OtherInvestments", "InvestmentinFinancialAssets",
"HeldToMaturitySecurities", "AvailableForSaleSecurities",
"FinancialAssetsDesignatedasFairValueThroughProfitorLossTotal", "TradingSecurities",
"LongTermEquityInvestment", "InvestmentsinJointVenturesatCost",
"InvestmentsInOtherVenturesUnderEquityMethod", "InvestmentsinAssociatesatCost",
"InvestmentsinSubsidiariesatCost", "InvestmentProperties", "GoodwillAndOtherIntangibleAssets",
"OtherIntangibleAssets", "Goodwill", "NetPPE", "AccumulatedDepreciation", "GrossPPE", "Leases",
"ConstructionInProgress", "OtherProperties", "MachineryFurnitureEquipment",
"BuildingsAndImprovements", "LandAndImprovements", "Properties", "CurrentAssets",
"OtherCurrentAssets", "HedgingAssetsCurrent", "AssetsHeldForSaleCurrent", "CurrentDeferredAssets",
"CurrentDeferredTaxesAssets", "RestrictedCash", "PrepaidAssets", "Inventory",
"InventoriesAdjustmentsAllowances", "OtherInventories", "FinishedGoods", "WorkInProcess",
"RawMaterials", "Receivables", "ReceivablesAdjustmentsAllowances", "OtherReceivables",
"DuefromRelatedPartiesCurrent", "TaxesReceivable", "AccruedInterestReceivable", "NotesReceivable",
"LoansReceivable", "AccountsReceivable", "AllowanceForDoubtfulAccountsReceivable",
"GrossAccountsReceivable", "CashCashEquivalentsAndShortTermInvestments",
"OtherShortTermInvestments", "CashAndCashEquivalents", "CashEquivalents", "CashFinancial",
"CashCashEquivalentsAndFederalFundsSold"],
'cash-flow': ["ForeignSales", "DomesticSales", "AdjustedGeographySegmentData", "FreeCashFlow",
"RepurchaseOfCapitalStock", "RepaymentOfDebt", "IssuanceOfDebt", "IssuanceOfCapitalStock",
"CapitalExpenditure", "InterestPaidSupplementalData", "IncomeTaxPaidSupplementalData",
"EndCashPosition", "OtherCashAdjustmentOutsideChangeinCash", "BeginningCashPosition",
"EffectOfExchangeRateChanges", "ChangesInCash", "OtherCashAdjustmentInsideChangeinCash",
"CashFlowFromDiscontinuedOperation", "FinancingCashFlow", "CashFromDiscontinuedFinancingActivities",
"CashFlowFromContinuingFinancingActivities", "NetOtherFinancingCharges", "InterestPaidCFF",
"ProceedsFromStockOptionExercised", "CashDividendsPaid", "PreferredStockDividendPaid",
"CommonStockDividendPaid", "NetPreferredStockIssuance", "PreferredStockPayments",
"PreferredStockIssuance", "NetCommonStockIssuance", "CommonStockPayments", "CommonStockIssuance",
"NetIssuancePaymentsOfDebt", "NetShortTermDebtIssuance", "ShortTermDebtPayments",
"ShortTermDebtIssuance", "NetLongTermDebtIssuance", "LongTermDebtPayments", "LongTermDebtIssuance",
"InvestingCashFlow", "CashFromDiscontinuedInvestingActivities",
"CashFlowFromContinuingInvestingActivities", "NetOtherInvestingChanges", "InterestReceivedCFI",
"DividendsReceivedCFI", "NetInvestmentPurchaseAndSale", "SaleOfInvestment", "PurchaseOfInvestment",
"NetInvestmentPropertiesPurchaseAndSale", "SaleOfInvestmentProperties",
"PurchaseOfInvestmentProperties", "NetBusinessPurchaseAndSale", "SaleOfBusiness",
"PurchaseOfBusiness", "NetIntangiblesPurchaseAndSale", "SaleOfIntangibles", "PurchaseOfIntangibles",
"NetPPEPurchaseAndSale", "SaleOfPPE", "PurchaseOfPPE", "CapitalExpenditureReported",
"OperatingCashFlow", "CashFromDiscontinuedOperatingActivities",
"CashFlowFromContinuingOperatingActivities", "TaxesRefundPaid", "InterestReceivedCFO",
"InterestPaidCFO", "DividendReceivedCFO", "DividendPaidCFO", "ChangeInWorkingCapital",
"ChangeInOtherWorkingCapital", "ChangeInOtherCurrentLiabilities", "ChangeInOtherCurrentAssets",
"ChangeInPayablesAndAccruedExpense", "ChangeInAccruedExpense", "ChangeInInterestPayable",
"ChangeInPayable", "ChangeInDividendPayable", "ChangeInAccountPayable", "ChangeInTaxPayable",
"ChangeInIncomeTaxPayable", "ChangeInPrepaidAssets", "ChangeInInventory", "ChangeInReceivables",
"ChangesInAccountReceivables", "OtherNonCashItems", "ExcessTaxBenefitFromStockBasedCompensation",
"StockBasedCompensation", "UnrealizedGainLossOnInvestmentSecurities", "ProvisionandWriteOffofAssets",
"AssetImpairmentCharge", "AmortizationOfSecurities", "DeferredTax", "DeferredIncomeTax",
"DepreciationAmortizationDepletion", "Depletion", "DepreciationAndAmortization",
"AmortizationCashFlow", "AmortizationOfIntangibles", "Depreciation", "OperatingGainsLosses",
"PensionAndEmployeeBenefitExpense", "EarningsLossesFromEquityInvestments",
"GainLossOnInvestmentSecurities", "NetForeignCurrencyExchangeGainLoss", "GainLossOnSaleOfPPE",
"GainLossOnSaleOfBusiness", "NetIncomeFromContinuingOperations",
"CashFlowsfromusedinOperatingActivitiesDirect", "TaxesRefundPaidDirect", "InterestReceivedDirect",
"InterestPaidDirect", "DividendsReceivedDirect", "DividendsPaidDirect", "ClassesofCashPayments",
"OtherCashPaymentsfromOperatingActivities", "PaymentsonBehalfofEmployees",
"PaymentstoSuppliersforGoodsandServices", "ClassesofCashReceiptsfromOperatingActivities",
"OtherCashReceiptsfromOperatingActivities", "ReceiptsfromGovernmentGrants", "ReceiptsfromCustomers"]}
_PRICE_COLNAMES_ = ['Open', 'High', 'Low', 'Close', 'Adj Close']
quote_summary_valid_modules = (
"summaryProfile", # contains general information about the company
"summaryDetail", # prices + volume + market cap + etc
"assetProfile", # summaryProfile + company officers
"fundProfile",
"price", # current prices
"quoteType", # quoteType
"esgScores", # Environmental, social, and governance (ESG) scores, sustainability and ethical performance of companies
"incomeStatementHistory",
"incomeStatementHistoryQuarterly",
"balanceSheetHistory",
"balanceSheetHistoryQuarterly",
"cashFlowStatementHistory",
"cashFlowStatementHistoryQuarterly",
"defaultKeyStatistics", # KPIs (PE, enterprise value, EPS, EBITA, and more)
"financialData", # Financial KPIs (revenue, gross margins, operating cash flow, free cash flow, and more)
"calendarEvents", # future earnings date
"secFilings", # SEC filings, such as 10K and 10Q reports
"upgradeDowngradeHistory", # upgrades and downgrades that analysts have given a company's stock
"institutionOwnership", # institutional ownership, holders and shares outstanding
"fundOwnership", # mutual fund ownership, holders and shares outstanding
"majorDirectHolders",
"majorHoldersBreakdown",
"insiderTransactions", # insider transactions, such as the number of shares bought and sold by company executives
"insiderHolders", # insider holders, such as the number of shares held by company executives
"netSharePurchaseActivity", # net share purchase activity, such as the number of shares bought and sold by company executives
"earnings", # earnings history
"earningsHistory",
"earningsTrend", # earnings trend
"industryTrend",
"indexTrend",
"sectorTrend",
"recommendationTrend",
"futuresChain",
)
# map last updated as of 2025.12.19
SECTOR_INDUSTY_MAPPING = {
'Basic Materials': {'Specialty Chemicals',
'Gold',
'Building Materials',
'Copper',
'Steel',
'Agricultural Inputs',
'Chemicals',
'Other Industrial Metals & Mining',
'Lumber & Wood Production',
'Aluminum',
'Other Precious Metals & Mining',
'Coking Coal',
'Paper & Paper Products',
'Silver'},
'Communication Services': {'Advertising Agencies',
'Broadcasting',
'Electronic Gaming & Multimedia',
'Entertainment',
'Internet Content & Information',
'Publishing',
'Telecom Services'},
'Consumer Cyclical': {'Apparel Manufacturing',
'Apparel Retail',
'Auto & Truck Dealerships',
'Auto Manufacturers',
'Auto Parts',
'Department Stores',
'Footwear & Accessories',
'Furnishings, Fixtures & Appliances',
'Gambling',
'Home Improvement Retail',
'Internet Retail',
'Leisure',
'Lodging',
'Luxury Goods',
'Packaging & Containers',
'Personal Services',
'Recreational Vehicles',
'Residential Construction',
'Resorts & Casinos',
'Restaurants',
'Specialty Retail',
'Textile Manufacturing',
'Travel Services'},
'Consumer Defensive': {'Beverages—Brewers',
'Beverages—Non-Alcoholic',
'Beverages—Wineries & Distilleries',
'Confectioners',
'Discount Stores',
'Education & Training Services',
'Farm Products',
'Food Distribution',
'Grocery Stores',
'Household & Personal Products',
'Packaged Foods',
'Tobacco'},
'Energy': {'Oil & Gas Drilling',
'Oil & Gas E&P',
'Oil & Gas Equipment & Services',
'Oil & Gas Integrated',
'Oil & Gas Midstream',
'Oil & Gas Refining & Marketing',
'Thermal Coal',
'Uranium'},
'Financial Services': {'Asset Management',
'Banks—Diversified',
'Banks—Regional',
'Capital Markets',
'Credit Services',
'Financial Conglomerates',
'Financial Data & Stock Exchanges',
'Insurance Brokers',
'Insurance—Diversified',
'Insurance—Life',
'Insurance—Property & Casualty',
'Insurance—Reinsurance',
'Insurance—Specialty',
'Mortgage Finance',
'Shell Companies'},
'Healthcare': {'Biotechnology',
'Diagnostics & Research',
'Drug Manufacturers—General',
'Drug Manufacturers—Specialty & Generic',
'Health Information Services',
'Healthcare Plans',
'Medical Care Facilities',
'Medical Devices',
'Medical Instruments & Supplies',
'Medical Distribution',
'Pharmaceutical Retailers'},
'Industrials': {'Aerospace & Defense',
'Airlines',
'Airports & Air Services',
'Building Products & Equipment',
'Business Equipment & Supplies',
'Conglomerates',
'Consulting Services',
'Electrical Equipment & Parts',
'Engineering & Construction',
'Farm & Heavy Construction Machinery',
'Industrial Distribution',
'Infrastructure Operations',
'Integrated Freight & Logistics',
'Marine Shipping',
'Metal Fabrication',
'Pollution & Treatment Controls',
'Railroads',
'Rental & Leasing Services',
'Security & Protection Services',
'Specialty Business Services',
'Specialty Industrial Machinery',
'Staffing & Employment Services',
'Tools & Accessories',
'Trucking',
'Waste Management'},
'Real Estate': {'Real Estate—Development',
'Real Estate Services',
'Real Estate—Diversified',
'REIT—Healthcare Facilities',
'REIT—Hotel & Motel',
'REIT—Industrial',
'REIT—Office',
'REIT—Residential',
'REIT—Retail',
'REIT—Mortgage',
'REIT—Specialty',
'REIT—Diversified'},
'Technology': {'Communication Equipment',
'Computer Hardware',
'Consumer Electronics',
'Electronic Components',
'Electronics & Computer Distribution',
'Information Technology Services',
'Scientific & Technical Instruments',
'Semiconductor Equipment & Materials',
'Semiconductors',
'Software—Application',
'Software—Infrastructure',
'Solar'},
'Utilities': {'Utilities—Diversified',
'Utilities—Independent Power Producers',
'Utilities—Regulated Electric',
'Utilities—Regulated Gas',
'Utilities—Regulated Water',
'Utilities—Renewable'},
}
SECTOR_INDUSTY_MAPPING_LC = {}
for k in SECTOR_INDUSTY_MAPPING.keys():
k2 = k.lower().replace('& ', '').replace('- ', '').replace(', ', ' ').replace(' ', '-')
SECTOR_INDUSTY_MAPPING_LC[k2] = []
for v in SECTOR_INDUSTY_MAPPING[k]:
v2 = v.lower().replace('& ', '').replace('- ', '').replace(', ', ' ').replace(' ', '-')
SECTOR_INDUSTY_MAPPING_LC[k2].append(v2)
# _MIC_TO_YAHOO_SUFFIX maps Market Identifier Codes (MIC) to Yahoo Finance market suffixes.
# c.f. :
# https://help.yahoo.com/kb/finance-for-web/SLN2310.html;_ylt=AwrJKiCZFo9g3Y8AsDWPAwx.;_ylu=Y29sbwMEcG9zAzEEdnRpZAMEc2VjA3Ny?locale=en_US
# https://www.iso20022.org/market-identifier-codes
_MIC_TO_YAHOO_SUFFIX = {
'XCBT': 'CBT', 'XCME': 'CME', 'IFUS': 'NYB', 'CECS': 'CMX', 'XNYM': 'NYM', 'XNYS': '', 'XNAS': '', # United States
'XBUE': 'BA', # Argentina
'XVIE': 'VI', # Austria
'XASX': 'AX', 'XAUS': 'XA', # Australia
'XBRU': 'BR', # Belgium
'BVMF': 'SA', # Brazil
'CNSX': 'CN', 'NEOE': 'NE', 'XTSE': 'TO', 'XTSX': 'V', # Canada
'XSGO': 'SN', # Chile
'XSHG': 'SS', 'XSHE': 'SZ', # China
'XBOG': 'CL', # Colombia
'XPRA': 'PR', # Czech Republic
'XCSE': 'CO', # Denmark
'XCAI': 'CA', # Egypt
'XTAL': 'TL', # Estonia
'CEUX': 'XD', 'XEUR': 'NX', # Europe (Cboe Europe, Euronext)
'XHEL': 'HE', # Finland
'XPAR': 'PA', # France
'XBER': 'BE', 'XBMS': 'BM', 'XDUS': 'DU', 'XFRA': 'F', 'XHAM': 'HM', 'XHAN': 'HA', 'XMUN': 'MU', 'XSTU': 'SG', 'XETR': 'DE', # Germany
'XATH': 'AT', # Greece
'XHKG': 'HK', # Hong Kong
'XBUD': 'BD', # Hungary
'XICE': 'IC', # Iceland
'XBOM': 'BO', 'XNSE': 'NS', # India
'XIDX': 'JK', # Indonesia
'XDUB': 'IR', # Ireland
'XTAE': 'TA', # Israel
'MTAA': 'MI', 'EUTL': 'TI', # Italy
'XTKS': 'T', # Japan
'XKFE': 'KW', # Kuwait
'XRIS': 'RG', # Latvia
'XVIL': 'VS', # Lithuania
'XKLS': 'KL', # Malaysia
'XMEX': 'MX', # Mexico
'XAMS': 'AS', # Netherlands
'XNZE': 'NZ', # New Zealand
'XOSL': 'OL', # Norway
'XPHS': 'PS', # Philippines
'XWAR': 'WA', # Poland
'XLIS': 'LS', # Portugal
'XQAT': 'QA', # Qatar
'XBSE': 'RO', # Romania
'XSES': 'SI', # Singapore
'XJSE': 'JO', # South Africa
'XKRX': 'KS', 'KQKS': 'KQ', # South Korea
'BMEX': 'MC', # Spain
'XSAU': 'SR', # Saudi Arabia
'XSTO': 'ST', # Sweden
'XSWX': 'SW', # Switzerland
'ROCO': 'TWO', 'XTAI': 'TW', # Taiwan
'XBKK': 'BK', # Thailand
'XIST': 'IS', # Turkey
'XDFM': 'AE', # UAE
'AQXE': 'AQ', 'XCHI': 'XC', 'XLON': 'L', 'ILSE': 'IL', # United Kingdom
'XCAR': 'CR', # Venezuela
'XSTC': 'VN' # Vietnam
}
def merge_two_level_dicts(dict1, dict2):
result = dict1.copy()
for key, value in dict2.items():
if key in result:
# If both are sets, merge them
if isinstance(value, set) and isinstance(result[key], set):
result[key] = result[key] | value
# If both are dicts, merge their contents
elif isinstance(value, dict) and isinstance(result[key], dict):
result[key] = {
k: (result[key].get(k, set()) | v if isinstance(v, set)
else v) if k in result[key]
else v
for k, v in value.items()
}
else:
result[key] = value
return result
EQUITY_SCREENER_EQ_MAP = {
"exchange": {
'ar': {'BUE'},
'at': {'VIE'},
'au': {'ASX'},
'be': {'BRU'},
'br': {'SAO'},
'ca': {'CNQ', 'NEO', 'TOR', 'VAN'},
'ch': {'EBS'},
'cl': {'SGO'},
'cn': {'SHH', 'SHZ'},
'co': {'BVC'},
'cz': {'PRA'},
'de': {'BER', 'DUS', 'FRA', 'HAM', 'GER', 'MUN', 'STU'},
'dk': {'CPH'},
'ee': {'TAL'},
'eg': {'CAI'},
'es': {'MCE'},
'fi': {'HEL'},
'fr': {'PAR'},
'gb': {'AQS', 'IOB', 'LSE'},
'gr': {'ATH'},
'hk': {'HKG'},
'hu': {'BUD'},
'id': {'JKT'},
'ie': {'ISE'},
'il': {'TLV'},
'in': {'BSE', 'NSI'},
'is': {'ICE'},
'it': {'MIL'},
'jp': {'FKA', 'JPX', 'SAP'},
'kr': {'KOE', 'KSC'},
'kw': {'KUW'},
'lk': {},
'lt': {'LIT'},
'lv': {'RIS'},
'mx': {'MEX'},
'my': {'KLS'},
'nl': {'AMS'},
'no': {'OSL'},
'nz': {'NZE'},
'pe': {},
'ph': {'PHP', 'PHS'},
'pk': {},
'pl': {'WSE'},
'pt': {'LIS'},
'qa': {'DOH'},
'ro': {'BVB'},
'ru': {},
'sa': {'SAU'},
'se': {'STO'},
'sg': {'SES'},
'sr': {},
'sw': {'EBS'},
'th': {'SET'},
'tr': {'IST'},
'tw': {'TAI', 'TWO'},
'us': {'ASE', 'BTS', 'CXI', 'NCM', 'NGM', 'NMS', 'NYQ', 'OEM', 'OQB', 'OQX', 'PCX', 'PNK', 'YHD'},
've': {'CCS'},
'vn': {},
'za': {'JNB'}
},
"sector": {
"Basic Materials", "Industrials", "Communication Services", "Healthcare",
"Real Estate", "Technology", "Energy", "Utilities", "Financial Services",
"Consumer Defensive", "Consumer Cyclical"
},
"industry": SECTOR_INDUSTY_MAPPING,
"peer_group": {
"US Fund Equity Energy",
"US CE Convertibles",
"EAA CE UK Large-Cap Equity",
"EAA CE Other",
"US Fund Financial",
"India CE Multi-Cap",
"US Fund Foreign Large Blend",
"US Fund Consumer Cyclical",
"EAA Fund Global Equity Income",
"China Fund Sector Equity Financial and Real Estate",
"US Fund Equity Precious Metals",
"EAA Fund RMB Bond - Onshore",
"China Fund QDII Greater China Equity",
"US Fund Large Growth",
"EAA Fund Germany Equity",
"EAA Fund Hong Kong Equity",
"EAA CE UK Small-Cap Equity",
"US Fund Natural Resources",
"US CE Preferred Stock",
"India Fund Sector - Financial Services",
"US Fund Diversified Emerging Mkts",
"EAA Fund South Africa & Namibia Equity",
"China Fund QDII Sector Equity",
"EAA CE Sector Equity Biotechnology",
"EAA Fund Switzerland Equity",
"US Fund Large Value",
"EAA Fund Asia ex-Japan Equity",
"US Fund Health",
"US Fund China Region",
"EAA Fund Emerging Europe ex-Russia Equity",
"EAA Fund Sector Equity Industrial Materials",
"EAA Fund Japan Large-Cap Equity",
"EAA Fund EUR Corporate Bond",
"US Fund Technology",
"EAA CE Global Large-Cap Blend Equity",
"Mexico Fund Mexico Equity",
"US Fund Trading--Leveraged Equity",
"EAA Fund Sector Equity Consumer Goods & Services",
"US Fund Large Blend",
"EAA Fund Global Flex-Cap Equity",
"EAA Fund EUR Aggressive Allocation - Global",
"EAA Fund China Equity",
"EAA Fund Global Large-Cap Growth Equity",
"US CE Options-based",
"EAA Fund Sector Equity Financial Services",
"EAA Fund Europe Large-Cap Blend Equity",
"EAA Fund China Equity - A Shares",
"EAA Fund USD Corporate Bond",
"EAA Fund Eurozone Large-Cap Equity",
"China Fund Aggressive Allocation Fund",
"EAA Fund Sector Equity Technology",
"EAA Fund Global Emerging Markets Equity",
"EAA Fund EUR Moderate Allocation - Global",
"EAA Fund Other Bond",
"EAA Fund Denmark Equity",
"EAA Fund US Large-Cap Blend Equity",
"India Fund Large-Cap",
"Paper & Forestry",
"Containers & Packaging",
"US Fund Miscellaneous Region",
"Energy Services",
"EAA Fund Other Equity",
"Homebuilders",
"Construction Materials",
"China Fund Equity Funds",
"Steel",
"Consumer Durables",
"EAA Fund Global Large-Cap Blend Equity",
"Transportation Infrastructure",
"Precious Metals",
"Building Products",
"Traders & Distributors",
"Electrical Equipment",
"Auto Components",
"Construction & Engineering",
"Aerospace & Defense",
"Refiners & Pipelines",
"Diversified Metals",
"Textiles & Apparel",
"Industrial Conglomerates",
"Household Products",
"Commercial Services",
"Food Retailers",
"Semiconductors",
"Media",
"Automobiles",
"Consumer Services",
"Technology Hardware",
"Transportation",
"Telecommunication Services",
"Oil & Gas Producers",
"Machinery",
"Retailing",
"Healthcare",
"Chemicals",
"Food Products",
"Diversified Financials",
"Real Estate",
"Insurance",
"Utilities",
"Pharmaceuticals",
"Software & Services",
"Banks"
}
}
EQUITY_SCREENER_EQ_MAP['region'] = EQUITY_SCREENER_EQ_MAP['exchange'].keys()
ordered_keys = ['region'] + [k for k in EQUITY_SCREENER_EQ_MAP.keys() if k != 'region']
EQUITY_SCREENER_EQ_MAP = {k:EQUITY_SCREENER_EQ_MAP[k] for k in ordered_keys}
FUND_SCREENER_EQ_MAP = {
"exchange": {
'us': {'NAS'}
}
}
COMMON_SCREENER_FIELDS = {
"price":{
"eodprice",
"intradaypricechange",
"intradayprice"
},
"eq_fields": {
"exchange"},
}
FUND_SCREENER_FIELDS = {
"eq_fields": {
"categoryname",
"performanceratingoverall",
"initialinvestment",
"annualreturnnavy1categoryrank",
"riskratingoverall"}
}
FUND_SCREENER_FIELDS = merge_two_level_dicts(FUND_SCREENER_FIELDS, COMMON_SCREENER_FIELDS)
EQUITY_SCREENER_FIELDS = {
"eq_fields": {
"region",
"sector",
"peer_group",
"industry"},
"price":{
"lastclosemarketcap.lasttwelvemonths",
"percentchange",
"lastclose52weekhigh.lasttwelvemonths",
"fiftytwowkpercentchange",
"lastclose52weeklow.lasttwelvemonths",
"intradaymarketcap"},
"trading":{
"beta",
"avgdailyvol3m",
"pctheldinsider",
"pctheldinst",
"dayvolume",
"eodvolume"},
"short_interest":{
"short_percentage_of_shares_outstanding.value",
"short_interest.value",
"short_percentage_of_float.value",
"days_to_cover_short.value",
"short_interest_percentage_change.value"},
"valuation":{
"bookvalueshare.lasttwelvemonths",
"lastclosemarketcaptotalrevenue.lasttwelvemonths",
"lastclosetevtotalrevenue.lasttwelvemonths",
"pricebookratio.quarterly",
"peratio.lasttwelvemonths",
"lastclosepricetangiblebookvalue.lasttwelvemonths",
"lastclosepriceearnings.lasttwelvemonths",
"pegratio_5y"},
"profitability":{
"consecutive_years_of_dividend_growth_count",
"returnonassets.lasttwelvemonths",
"returnonequity.lasttwelvemonths",
"forward_dividend_per_share",
"forward_dividend_yield",
"returnontotalcapital.lasttwelvemonths"},
"leverage":{
"lastclosetevebit.lasttwelvemonths",
"netdebtebitda.lasttwelvemonths",
"totaldebtequity.lasttwelvemonths",
"ltdebtequity.lasttwelvemonths",
"ebitinterestexpense.lasttwelvemonths",
"ebitdainterestexpense.lasttwelvemonths",
"lastclosetevebitda.lasttwelvemonths",
"totaldebtebitda.lasttwelvemonths"},
"liquidity":{
"quickratio.lasttwelvemonths",
"altmanzscoreusingtheaveragestockinformationforaperiod.lasttwelvemonths",
"currentratio.lasttwelvemonths",
"operatingcashflowtocurrentliabilities.lasttwelvemonths"},
"income_statement":{
"totalrevenues.lasttwelvemonths",
"netincomemargin.lasttwelvemonths",
"grossprofit.lasttwelvemonths",
"ebitda1yrgrowth.lasttwelvemonths",
"dilutedepscontinuingoperations.lasttwelvemonths",
"quarterlyrevenuegrowth.quarterly",
"epsgrowth.lasttwelvemonths",
"netincomeis.lasttwelvemonths",
"ebitda.lasttwelvemonths",
"dilutedeps1yrgrowth.lasttwelvemonths",
"totalrevenues1yrgrowth.lasttwelvemonths",
"operatingincome.lasttwelvemonths",
"netincome1yrgrowth.lasttwelvemonths",
"grossprofitmargin.lasttwelvemonths",
"ebitdamargin.lasttwelvemonths",
"ebit.lasttwelvemonths",
"basicepscontinuingoperations.lasttwelvemonths",
"netepsbasic.lasttwelvemonths"
"netepsdiluted.lasttwelvemonths"},
"balance_sheet":{
"totalassets.lasttwelvemonths",
"totalcommonsharesoutstanding.lasttwelvemonths",
"totaldebt.lasttwelvemonths",
"totalequity.lasttwelvemonths",
"totalcurrentassets.lasttwelvemonths",
"totalcashandshortterminvestments.lasttwelvemonths",
"totalcommonequity.lasttwelvemonths",
"totalcurrentliabilities.lasttwelvemonths",
"totalsharesoutstanding"},
"cash_flow":{
"forward_dividend_yield",
"leveredfreecashflow.lasttwelvemonths",
"capitalexpenditure.lasttwelvemonths",
"cashfromoperations.lasttwelvemonths",
"leveredfreecashflow1yrgrowth.lasttwelvemonths",
"unleveredfreecashflow.lasttwelvemonths",
"cashfromoperations1yrgrowth.lasttwelvemonths"},
"esg":{
"esg_score",
"environmental_score",
"governance_score",
"social_score",
"highest_controversy"}
}
EQUITY_SCREENER_FIELDS = merge_two_level_dicts(EQUITY_SCREENER_FIELDS, COMMON_SCREENER_FIELDS)
USER_AGENTS = [
# Chrome
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
# Firefox
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 14.7; rv:135.0) Gecko/20100101 Firefox/135.0",
"Mozilla/5.0 (X11; Linux i686; rv:135.0) Gecko/20100101 Firefox/135.0",
# Safari
"Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15",
# Edge
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/131.0.2903.86"
]