from datetime import date
from itertools import chain
from typing import TypedDict
from strenum import StrEnum
[docs]class LineItemType(TypedDict):
name: str
aliases: set[str]
dataitemid: int
spgi_name: str
[docs]class HistoryMetadata(TypedDict):
currency: str
symbol: str
exchange_name: str
instrument_type: str
first_trade_date: date
[docs]class IdentificationTriple(TypedDict):
trading_item_id: int
security_id: int
company_id: int
[docs]class BusinessRelationshipType(StrEnum):
supplier = "supplier"
customer = "customer"
distributor = "distributor"
franchisor = "franchisor"
franchisee = "franchisee"
landlord = "landlord"
tenant = "tenant"
licensor = "licensor"
licensee = "licensee"
creditor = "creditor"
borrower = "borrower"
lessor = "lessor"
lessee = "lessee"
strategic_alliance = "strategic_alliance"
investor_relations_firm = "investor_relations_firm"
investor_relations_client = "investor_relations_client"
transfer_agent = "transfer_agent"
transfer_agent_client = "transfer_agent_client"
vendor = "vendor"
client_services = "client_services"
[docs]class YearAndQuarter(TypedDict):
year: int
quarter: int
[docs]class LatestAnnualPeriod(TypedDict):
latest_year: int
[docs]class LatestQuarterlyPeriod(TypedDict):
latest_quarter: int
latest_year: int
[docs]class CurrentPeriod(TypedDict):
current_year: int
current_quarter: int
current_month: int
current_date: str
[docs]class LatestPeriods(TypedDict):
annual: LatestAnnualPeriod
quarterly: LatestQuarterlyPeriod
now: CurrentPeriod
# all of these values must be lower case keys
LINE_ITEMS: list[LineItemType] = [
{
"name": "revenue",
"aliases": {"normal_revenue", "regular_revenue"},
"dataitemid": 112,
"spgi_name": "Revenue",
},
{
"name": "finance_division_revenue",
"aliases": set(),
"dataitemid": 52,
"spgi_name": "Finance Div. Revenue",
},
{
"name": "insurance_division_revenue",
"aliases": set(),
"dataitemid": 70,
"spgi_name": "Insurance Div. Revenue",
},
{
"name": "revenue_from_sale_of_assets",
"aliases": set(),
"dataitemid": 104,
"spgi_name": "Gain(Loss) on Sale Of Assets (Rev)",
},
{
"name": "revenue_from_sale_of_investments",
"aliases": set(),
"dataitemid": 106,
"spgi_name": "Gain(Loss) on Sale Of Invest. (Rev)",
},
{
"name": "revenue_from_interest_and_investment_income",
"aliases": set(),
"dataitemid": 110,
"spgi_name": "Interest And Invest. Income (Rev)",
},
{"name": "other_revenue", "aliases": set(), "dataitemid": 90, "spgi_name": "Other Revenue"},
{
"name": "total_other_revenue",
"aliases": set(),
"dataitemid": 357,
"spgi_name": "Other Revenue, Total",
},
{
"name": "fees_and_other_income",
"aliases": set(),
"dataitemid": 168,
"spgi_name": "Fees and Other Income",
},
{"name": "total_revenue", "aliases": set(), "dataitemid": 28, "spgi_name": "Total Revenue"},
{
"name": "cost_of_goods_sold",
"aliases": {"cogs"},
"dataitemid": 34,
"spgi_name": "Cost Of Goods Sold",
},
{
"name": "finance_division_operating_expense",
"aliases": {"operating_expense_finance_division"},
"dataitemid": 51,
"spgi_name": "Finance Div. Operating Exp.",
},
{
"name": "insurance_division_operating_expense",
"aliases": {"operating_expense_insurance_division"},
"dataitemid": 69,
"spgi_name": "Insurance Div. Operating Exp.",
},
{
"name": "finance_division_interest_expense",
"aliases": {"interest_expense_finance_division"},
"dataitemid": 50,
"spgi_name": "Interest Expense - Finance Division",
},
{
"name": "cost_of_revenue",
"aliases": {"cor"},
"dataitemid": 1,
"spgi_name": "Cost Of Revenue",
},
{"name": "gross_profit", "aliases": set(), "dataitemid": 10, "spgi_name": "Gross Profit"},
{
"name": "selling_general_and_admin_expense",
"aliases": {
"selling_general_and_admin_cost",
"selling_general_and_admin",
"sg_and_a",
"sga",
},
"dataitemid": 102,
"spgi_name": "Selling General & Admin Exp.",
},
{
"name": "exploration_and_drilling_costs",
"aliases": {
"exploration_and_drilling_expense",
},
"dataitemid": 49,
"spgi_name": "Exploration/Drilling Costs",
},
{
"name": "provision_for_bad_debts",
"aliases": {
"provision_for_bad_debt",
},
"dataitemid": 95,
"spgi_name": "Provision for Bad Debts",
},
{
"name": "pre_opening_costs",
"aliases": {
"pre_opening_expense",
},
"dataitemid": 96,
"spgi_name": "Pre-Opening Costs",
},
{
"name": "total_selling_general_and_admin_expense",
"aliases": {
"total_selling_general_and_admin_cost",
"total_selling_general_and_admin",
"total_sga",
},
"dataitemid": 23,
"spgi_name": "SG&A Exp., Total",
},
{
"name": "research_and_development_expense",
"aliases": {
"research_and_development_cost",
"r_and_d_expense",
"r_and_d_cost",
"rnd_expense",
"rnd_cost",
},
"dataitemid": 100,
"spgi_name": "R & D Exp.",
},
{
"name": "depreciation_and_amortization",
"aliases": {
"d_and_a",
"dna",
},
"dataitemid": 41,
"spgi_name": "Depreciation & Amort.",
},
{
"name": "amortization_of_goodwill_and_intangibles",
"aliases": set(),
"dataitemid": 31,
"spgi_name": "Amort. of Goodwill and Intangibles",
},
{
"name": "impairment_of_oil_gas_and_mineral_properties",
"aliases": {
"impairment_of_oil_and_gas",
"impairment_o_and_g",
},
"dataitemid": 71,
"spgi_name": "Impair. of Oil, Gas & Mineral Prop.",
},
{
"name": "total_depreciation_and_amortization",
"aliases": {
"total_d_and_a",
"total_dna",
},
"dataitemid": 2,
"spgi_name": "Depreciation & Amort., Total",
},
{
"name": "other_operating_expense",
"aliases": set(),
"dataitemid": 260,
"spgi_name": "Other Operating Expense/(Income)",
},
{
"name": "total_other_operating_expense",
"aliases": set(),
"dataitemid": 380,
"spgi_name": "Other Operating Exp., Total",
},
{
"name": "total_operating_expense",
"aliases": {
"operating_expense",
},
"dataitemid": 373,
"spgi_name": "Total Operating Expenses",
},
{
"name": "operating_income",
"aliases": set(),
"dataitemid": 21,
"spgi_name": "Operating Income",
},
{
"name": "interest_expense",
"aliases": set(),
"dataitemid": 82,
"spgi_name": "Interest Expense",
},
{
"name": "interest_and_investment_income",
"aliases": set(),
"dataitemid": 65,
"spgi_name": "Interest and Invest. Income",
},
{
"name": "net_interest_expense",
"aliases": set(),
"dataitemid": 368,
"spgi_name": "Net Interest Exp.",
},
{
"name": "income_from_affiliates",
"aliases": set(),
"dataitemid": 47,
"spgi_name": "Income / (Loss) from Affiliates",
},
{
"name": "currency_exchange_gains",
"aliases": set(),
"dataitemid": 38,
"spgi_name": "Currency Exchange Gains (Loss)",
},
{
"name": "other_non_operating_income",
"aliases": set(),
"dataitemid": 85,
"spgi_name": "Other Non-Operating Inc. (Exp.)",
},
{
"name": "total_other_non_operating_income",
"aliases": set(),
"dataitemid": 371,
"spgi_name": "Other Non-Operating Exp., Total",
},
{
"name": "ebt_excluding_unusual_items",
"aliases": {
"earnings_before_taxes_excluding_unusual_items",
},
"dataitemid": 4,
"spgi_name": "EBT Excl Unusual Items",
},
{
"name": "restructuring_charges",
"aliases": set(),
"dataitemid": 98,
"spgi_name": "Restructuring Charges",
},
{
"name": "merger_charges",
"aliases": set(),
"dataitemid": 80,
"spgi_name": "Merger & Related Restruct. Charges",
},
{
"name": "merger_and_restructuring_charges",
"aliases": set(),
"dataitemid": 363,
"spgi_name": "Merger & Restruct. Charges",
},
{
"name": "impairment_of_goodwill",
"aliases": set(),
"dataitemid": 209,
"spgi_name": "Impairment of Goodwill",
},
{
"name": "gain_from_sale_of_assets",
"aliases": set(),
"dataitemid": 62,
"spgi_name": "Gain (Loss) On Sale Of Invest.",
},
{
"name": "gain_from_sale_of_investments",
"aliases": set(),
"dataitemid": 56,
"spgi_name": "Gain (Loss) On Sale Of Assets",
},
{"name": "asset_writedown", "aliases": set(), "dataitemid": 32, "spgi_name": "Asset Writedown"},
{
"name": "in_process_research_and_development_expense",
"aliases": {
"in_process_research_and_development_cost",
"in_process_r_and_d_expense",
"in_process_r_and_d_cost",
"in_process_rnd_expense",
"in_process_rnd_cost",
},
"dataitemid": 72,
"spgi_name": "In Process R & D Exp.",
},
{
"name": "insurance_settlements",
"aliases": set(),
"dataitemid": 73,
"spgi_name": "Insurance Settlements",
},
{
"name": "legal_settlements",
"aliases": set(),
"dataitemid": 77,
"spgi_name": "Legal Settlements",
},
{
"name": "other_unusual_items",
"aliases": set(),
"dataitemid": 87,
"spgi_name": "Other Unusual Items",
},
{
"name": "total_other_unusual_items",
"aliases": set(),
"dataitemid": 374,
"spgi_name": "Other Unusual Items, Total",
},
{
"name": "total_unusual_items",
"aliases": {
"unusual_items",
},
"dataitemid": 19,
"spgi_name": "Total Unusual Items",
},
{
"name": "ebt_including_unusual_items",
"aliases": {
"earnings_before_taxes_including_unusual_items",
},
"dataitemid": 139,
"spgi_name": "EBT Incl. Unusual Items",
},
{
"name": "income_tax_expense",
"aliases": {
"income_taxes",
"income_tax",
},
"dataitemid": 75,
"spgi_name": "Income Tax Expense",
},
{
"name": "earnings_from_continued_operations",
"aliases": {
"continued_operations_earnings",
},
"dataitemid": 7,
"spgi_name": "Earnings from Cont. Ops.",
},
{
"name": "earnings_from_discontinued_operations",
"aliases": {
"discontinued_operations_earnings",
},
"dataitemid": 40,
"spgi_name": "Earnings of Discontinued Ops.",
},
{
"name": "extraordinary_item_and_accounting_change",
"aliases": set(),
"dataitemid": 42,
"spgi_name": "Extraord. Item & Account. Change",
},
{
"name": "net_income_to_company",
"aliases": set(),
"dataitemid": 41571,
"spgi_name": "Net Income to Company",
},
{
"name": "minority_interest_in_earnings",
"aliases": {
"net_income_to_minority_interest",
},
"dataitemid": 83,
"spgi_name": "Minority Int. in Earnings",
},
{"name": "net_income", "aliases": set(), "dataitemid": 15, "spgi_name": "Net Income"},
{
"name": "premium_on_redemption_of_preferred_stock",
"aliases": set(),
"dataitemid": 279,
"spgi_name": "Premium on Redemption of Pref. Stock",
},
{
"name": "preferred_stock_dividend",
"aliases": set(),
"dataitemid": 280,
"spgi_name": "Preferred Stock Dividend",
},
{
"name": "other_preferred_stock_adjustments",
"aliases": set(),
"dataitemid": 281,
"spgi_name": "Other Pref. Stock Adjustments",
},
{
"name": "other_adjustments_to_net_income",
"aliases": set(),
"dataitemid": 259,
"spgi_name": "Other Adjustments to Net Income",
},
{
"name": "preferred_dividends_and_other_adjustments",
"aliases": set(),
"dataitemid": 97,
"spgi_name": "Pref. Dividends and Other Adj.",
},
{
"name": "net_income_allocable_to_general_partner",
"aliases": set(),
"dataitemid": 249,
"spgi_name": "Net Income Allocable to General Partner",
},
{
"name": "net_income_to_common_shareholders_including_extra_items",
"aliases": set(),
"dataitemid": 16,
"spgi_name": "NI to Common Incl. Extra Items",
},
{
"name": "net_income_to_common_shareholders_excluding_extra_items",
"aliases": set(),
"dataitemid": 379,
"spgi_name": "NI to Common Excl. Extra Items",
},
{
"name": "cash_and_equivalents",
"aliases": {
"cash",
"cash_and_cash_equivalents",
},
"dataitemid": 1096,
"spgi_name": "Cash And Equivalents",
},
{
"name": "short_term_investments",
"aliases": set(),
"dataitemid": 1069,
"spgi_name": "Short Term Investments",
},
{
"name": "trading_asset_securities",
"aliases": set(),
"dataitemid": 1244,
"spgi_name": "Trading Asset Securities",
},
{
"name": "total_cash_and_short_term_investments",
"aliases": {
"cash_and_short_term_investments",
},
"dataitemid": 1002,
"spgi_name": "Total Cash & ST Investments",
},
{
"name": "accounts_receivable",
"aliases": {
"short_term_accounts_receivable",
"current_accounts_receivable",
},
"dataitemid": 1021,
"spgi_name": "Accounts Receivable",
},
{
"name": "other_receivables",
"aliases": {
"short_term_other_receivables",
"current_other_receivables",
},
"dataitemid": 1206,
"spgi_name": "Other Receivables",
},
{
"name": "notes_receivable",
"aliases": {
"short_term_notes_receivable",
"current_notes_receivable",
},
"dataitemid": 1048,
"spgi_name": "Notes Receivable",
},
{
"name": "total_receivables",
"aliases": {
"short_term_total_receivables",
"current_total_receivables",
"total_receivable",
"short_term_total_receivable",
"current_total_receivable",
},
"dataitemid": 1001,
"spgi_name": "Total Receivables",
},
{
"name": "inventory",
"aliases": {
"inventories",
},
"dataitemid": 1043,
"spgi_name": "Inventory",
},
{
"name": "prepaid_expense",
"aliases": {
"prepaid_expenses",
},
"dataitemid": 1212,
"spgi_name": "Prepaid Exp.",
},
{
"name": "finance_division_loans_and_leases_short_term",
"aliases": {
"finance_division_short_term_loans_and_leases",
"short_term_finance_division_loans_and_leases",
"short_term_loans_and_leases_of_the_finance_division",
},
"dataitemid": 1032,
"spgi_name": "Finance Div. Loans and Leases, ST",
},
{
"name": "finance_division_other_current_assets",
"aliases": {
"finance_division_other_short_term_assets",
"other_current_assets_of_the_finance_division",
"other_short_term_assets_of_the_finance_division",
},
"dataitemid": 1029,
"spgi_name": "Finance Div. Other Curr. Assets",
},
{
"name": "loans_held_for_sale",
"aliases": set(),
"dataitemid": 1185,
"spgi_name": "Loans Held For Sale",
},
{
"name": "deferred_tax_asset_current_portion",
"aliases": {
"current_deferred_tax_asset",
"short_term_deferred_tax_asset",
},
"dataitemid": 1117,
"spgi_name": "Deferred Tax Assets, Curr.",
},
{
"name": "restricted_cash",
"aliases": set(),
"dataitemid": 1104,
"spgi_name": "Restricted Cash",
},
{
"name": "other_current_assets",
"aliases": set(),
"dataitemid": 1055,
"spgi_name": "Other Current Assets",
},
{
"name": "total_current_assets",
"aliases": {
"current_assets",
"total_short_term_assets",
"short_term_assets",
},
"dataitemid": 1008,
"spgi_name": "Total Current Assets",
},
{
"name": "gross_property_plant_and_equipment",
"aliases": {
"gppe",
"gross_ppe",
},
"dataitemid": 1169,
"spgi_name": "Gross Property, Plant & Equipment",
},
{
"name": "accumulated_depreciation",
"aliases": set(),
"dataitemid": 1075,
"spgi_name": "Accumulated Depreciation",
},
{
"name": "net_property_plant_and_equipment",
"aliases": {
"property_plant_and_equipment",
"nppe",
"ppe",
"net_ppe",
},
"dataitemid": 1004,
"spgi_name": "Net Property, Plant & Equipment",
},
{
"name": "long_term_investments",
"aliases": {
"non_current_investments",
},
"dataitemid": 1054,
"spgi_name": "Long-term Investments",
},
{"name": "goodwill", "aliases": set(), "dataitemid": 1171, "spgi_name": "Goodwill"},
{
"name": "other_intangibles",
"aliases": set(),
"dataitemid": 1040,
"spgi_name": "Other Intangibles",
},
{
"name": "finance_division_loans_and_leases_long_term",
"aliases": {
"finance_division_long_term_loans_and_leases",
"long_term_finance_division_loans_and_leases",
"long_term_loans_and_leases_of_the_finance_division",
},
"dataitemid": 1033,
"spgi_name": "Finance Div. Loans and Leases, LT",
},
{
"name": "finance_division_other_non_current_assets",
"aliases": {
"finance_division_other_long_term_assets",
"other_non_current_assets_of_the_finance_division",
"other_long_term_assets_of_the_finance_division",
},
"dataitemid": 1034,
"spgi_name": "Finance Div. Other LT Assets",
},
{
"name": "long_term_accounts_receivable",
"aliases": {
"non_current_accounts_receivable",
},
"dataitemid": 1088,
"spgi_name": "Accounts Receivable Long-Term",
},
{
"name": "long_term_loans_receivable",
"aliases": {
"non_current_loans_receivable",
"loans_receivable",
},
"dataitemid": 1050,
"spgi_name": "Loans Receivable Long-Term",
},
{
"name": "long_term_deferred_tax_assets",
"aliases": {
"non_current_deferred_tax_assets",
},
"dataitemid": 1026,
"spgi_name": "Deferred Tax Assets, LT",
},
{
"name": "long_term_deferred_charges",
"aliases": {
"non_current_deferred_charges",
},
"dataitemid": 1025,
"spgi_name": "Deferred Charges, LT",
},
{
"name": "other_long_term_assets",
"aliases": {
"long_term_other_assets",
"other_non_current_assets",
"non_current_other_assets",
},
"dataitemid": 1060,
"spgi_name": "Other Long-Term Assets",
},
{
"name": "total_assets",
"aliases": {
"assets",
},
"dataitemid": 1007,
"spgi_name": "Total Assets",
},
{
"name": "accounts_payable",
"aliases": set(),
"dataitemid": 1018,
"spgi_name": "Accounts Payable",
},
{
"name": "accrued_expenses",
"aliases": set(),
"dataitemid": 1016,
"spgi_name": "Accrued Expenses",
},
{
"name": "short_term_borrowings",
"aliases": {
"current_borrowings",
"short_term_borrowing",
"current_borrowing",
},
"dataitemid": 1046,
"spgi_name": "Short-term Borrowings",
},
{
"name": "current_portion_of_long_term_debt",
"aliases": {
"current_portion_of_non_current_debt",
"current_portion_of_lt_debt",
},
"dataitemid": 1297,
"spgi_name": "Current Portion of Long Term Debt",
},
{
"name": "current_portion_of_capital_leases",
"aliases": {
"current_portion_of_capitalized_leases",
"current_portion_of_cap_leases",
"current_portion_of_leases",
},
"dataitemid": 1090,
"spgi_name": "Curr. Port. of Cap. Leases",
},
{
"name": "current_portion_of_long_term_debt_and_capital_leases",
"aliases": {
"current_portion_of_lt_debt_and_cap_leases",
"current_portion_of_long_term_debt_and_capitalized_leases",
"current_portion_of_non_current_debt_and_capital_leases",
"current_portion_of_non_current_debt_and_capitalized_leases",
"total_current_portion_of_long_term_debt_and_capital_leases",
"total_current_portion_of_lt_debt_and_cap_leases",
"total_current_portion_of_long_term_debt_and_capitalized_leases",
"total_current_portion_of_non_current_debt_and_capital_leases",
"total_current_portion_of_non_current_debt_and_capitalized_leases",
},
"dataitemid": 1279,
"spgi_name": "Curr. Port. of LT Debt/Cap. Leases",
},
{
"name": "finance_division_debt_current_portion",
"aliases": set(),
"dataitemid": 1030,
"spgi_name": "Finance Div. Debt Current",
},
{
"name": "finance_division_other_current_liabilities",
"aliases": set(),
"dataitemid": 1031,
"spgi_name": "Finance Div. Other Curr. Liab.",
},
{
"name": "current_income_taxes_payable",
"aliases": {
"current_portion_of_income_taxes_payable",
},
"dataitemid": 1094,
"spgi_name": "Curr. Income Taxes Payable",
},
{
"name": "current_unearned_revenue",
"aliases": {
"current_portion_of_unearned_revenue",
},
"dataitemid": 1074,
"spgi_name": "Unearned Revenue, Current",
},
{
"name": "current_deferred_tax_liability",
"aliases": set(),
"dataitemid": 1119,
"spgi_name": "Def. Tax Liability, Curr.",
},
{
"name": "other_current_liability",
"aliases": {
"other_current_liabilities",
},
"dataitemid": 1057,
"spgi_name": "Other Current Liabilities",
},
{
"name": "total_current_liabilities",
"aliases": {
"current_liabilities",
},
"dataitemid": 1009,
"spgi_name": "Total Current Liabilities",
},
{
"name": "long_term_debt",
"aliases": {
"non_current_debt",
},
"dataitemid": 1049,
"spgi_name": "Long-Term Debt",
},
{
"name": "capital_leases",
"aliases": {
"long_term_leases",
"capitalized_leases",
},
"dataitemid": 1183,
"spgi_name": "Capital Leases",
},
{
"name": "finance_division_debt_non_current_portion",
"aliases": {
"finance_division_debt_long_term_portion",
"finance_division_non_current_debt",
"finance_division_long_term_debt",
},
"dataitemid": 1035,
"spgi_name": "Finance Div. Debt Non-Curr.",
},
{
"name": "finance_division_other_non_current_liabilities",
"aliases": {
"finance_division_other_long_term_liabilities",
},
"dataitemid": 1036,
"spgi_name": "Finance Div. Other Non-Curr. Liab.",
},
{
"name": "non_current_unearned_revenue",
"aliases": {
"long_term_unearned_revenue",
},
"dataitemid": 1256,
"spgi_name": "Unearned Revenue, Non-Current",
},
{
"name": "pension_and_other_post_retirement_benefit",
"aliases": set(),
"dataitemid": 1213,
"spgi_name": "Pension & Other Post-Retire. Benefits",
},
{
"name": "non_current_deferred_tax_liability",
"aliases": set(),
"dataitemid": 1027,
"spgi_name": "Def. Tax Liability, Non-Curr.",
},
{
"name": "other_non_current_liabilities",
"aliases": {
"non_current_other_liabilities",
"other_long_term_liabilities",
"long_term_other_liabilities",
},
"dataitemid": 1062,
"spgi_name": "Other Non-Current Liabilities",
},
{
"name": "total_liabilities",
"aliases": {
"liabilities",
},
"dataitemid": 1276,
"spgi_name": "Total Liabilities",
},
{
"name": "preferred_stock_redeemable",
"aliases": {
"redeemable_preferred_stock",
},
"dataitemid": 1217,
"spgi_name": "Pref. Stock, Redeemable",
},
{
"name": "preferred_stock_non_redeemable",
"aliases": {
"non_redeemable_preferred_stock",
},
"dataitemid": 1216,
"spgi_name": "Pref. Stock, Non-Redeem.",
},
{
"name": "preferred_stock_convertible",
"aliases": {
"convertible_preferred_stock",
},
"dataitemid": 1214,
"spgi_name": "Pref. Stock, Convertible",
},
{
"name": "preferred_stock_other",
"aliases": {
"other_preferred_stock",
},
"dataitemid": 1065,
"spgi_name": "Pref. Stock, Other",
},
{
"name": "preferred_stock_additional_paid_in_capital",
"aliases": {
"additional_paid_in_capital_preferred_stock",
},
"dataitemid": 1085,
"spgi_name": "Additional Paid In Capital - Preferred Stock",
},
{
"name": "preferred_stock_equity_adjustment",
"aliases": {
"equity_adjustment_preferred_stock",
},
"dataitemid": 1215,
"spgi_name": "Equity Adjustment - Preferred Stock",
},
{
"name": "treasury_stock_preferred_stock_convertible",
"aliases": {
"treasury_preferred_stock_convertible",
"treasury_stock_convertible_preferred_stock",
"treasury_convertible_preferred_stock",
},
"dataitemid": 1249,
"spgi_name": "Treasury Stock : Preferred Stock Convertible",
},
{
"name": "treasury_stock_preferred_stock_non_redeemable",
"aliases": {
"treasury_preferred_stock_non_redeemable",
"treasury_stock_non_redeemable_preferred_stock",
"treasury_non_redeemable_preferred_stock",
},
"dataitemid": 1250,
"spgi_name": "Treasury Stock : Preferred Stock Non Redeemable",
},
{
"name": "treasury_stock_preferred_stock_redeemable",
"aliases": {
"treasury_preferred_stock_redeemable",
"treasury_stock_redeemable_preferred_stock",
"treasury_redeemable_preferred_stock",
},
"dataitemid": 1251,
"spgi_name": "Treasury Stock : Preferred Stock Redeemable",
},
{
"name": "total_preferred_equity",
"aliases": {
"total_preferred_stock",
"preferred_equity",
"preferred_stock",
},
"dataitemid": 1005,
"spgi_name": "Total Pref. Equity",
},
{"name": "common_stock", "aliases": set(), "dataitemid": 1103, "spgi_name": "Common Stock"},
{
"name": "additional_paid_in_capital",
"aliases": set(),
"dataitemid": 1084,
"spgi_name": "Additional Paid In Capital",
},
{
"name": "retained_earnings",
"aliases": set(),
"dataitemid": 1222,
"spgi_name": "Retained Earnings",
},
{"name": "treasury_stock", "aliases": set(), "dataitemid": 1248, "spgi_name": "Treasury Stock"},
{
"name": "other_equity",
"aliases": set(),
"dataitemid": 1028,
"spgi_name": "Comprehensive Inc. and Other",
},
{
"name": "total_common_equity",
"aliases": {
"common_equity",
},
"dataitemid": 1006,
"spgi_name": "Total Common Equity",
},
{
"name": "total_equity",
"aliases": {
"equity",
"total_shareholders_equity",
"shareholders_equity",
},
"dataitemid": 1275,
"spgi_name": "Total Equity",
},
{
"name": "total_liabilities_and_equity",
"aliases": {
"liabilities_and_equity",
},
"dataitemid": 1013,
"spgi_name": "Total Liabilities And Equity",
},
{
"name": "common_shares_outstanding",
"aliases": set(),
"dataitemid": 1100,
"spgi_name": "Common Shares Outstanding",
},
{
"name": "adjustments_to_cash_flow_net_income",
"aliases": set(),
"dataitemid": 21523,
"spgi_name": "Adjustments to Cash Flow Net Income",
},
{
"name": "other_amortization",
"aliases": set(),
"dataitemid": 2014,
"spgi_name": "Other Amortization",
},
{
"name": "total_other_non_cash_items",
"aliases": set(),
"dataitemid": 2179,
"spgi_name": "Other Non-Cash Items, Total",
},
{
"name": "net_decrease_in_loans_originated_and_sold",
"aliases": set(),
"dataitemid": 2033,
"spgi_name": "Net (Increase)/Decrease in Loans Orig/Sold",
},
{
"name": "provision_for_credit_losses",
"aliases": set(),
"dataitemid": 2112,
"spgi_name": "Provision for Credit Losses",
},
{
"name": "loss_on_equity_investments",
"aliases": set(),
"dataitemid": 2086,
"spgi_name": "(Income) Loss on Equity Invest.",
},
{
"name": "stock_based_compensation",
"aliases": set(),
"dataitemid": 2127,
"spgi_name": "Stock-Based Compensation",
},
{
"name": "tax_benefit_from_stock_options",
"aliases": set(),
"dataitemid": 2135,
"spgi_name": "Tax Benefit from Stock Options",
},
{
"name": "net_cash_from_discontinued_operation",
"aliases": {
"cash_from_discontinued_operation",
},
"dataitemid": 2081,
"spgi_name": "Net Cash From Discontinued Ops.",
},
{
"name": "other_operating_activities",
"aliases": set(),
"dataitemid": 2047,
"spgi_name": "Other Operating Activities",
},
{
"name": "change_in_trading_asset_securities",
"aliases": set(),
"dataitemid": 2134,
"spgi_name": "Change in Trad. Asset Securities",
},
{
"name": "change_in_accounts_receivable",
"aliases": set(),
"dataitemid": 2018,
"spgi_name": "Change In Accounts Receivable",
},
{
"name": "change_in_inventories",
"aliases": set(),
"dataitemid": 2099,
"spgi_name": "Change In Inventories",
},
{
"name": "change_in_accounts_payable",
"aliases": set(),
"dataitemid": 2017,
"spgi_name": "Change in Acc. Payable",
},
{
"name": "change_in_unearned_revenue",
"aliases": set(),
"dataitemid": 2139,
"spgi_name": "Change in Unearned Rev.",
},
{
"name": "change_in_income_taxes",
"aliases": set(),
"dataitemid": 2101,
"spgi_name": "Change in Inc. Taxes",
},
{
"name": "change_in_deferred_taxes",
"aliases": set(),
"dataitemid": 2084,
"spgi_name": "Change in Def. Taxes",
},
{
"name": "change_in_other_net_operating_assets",
"aliases": set(),
"dataitemid": 2045,
"spgi_name": "Change in Other Net Operating Assets",
},
{
"name": "change_in_net_operating_assets",
"aliases": set(),
"dataitemid": 2010,
"spgi_name": "Change in Net Operating Assets ",
},
{
"name": "cash_from_operations",
"aliases": {
"cash_from_operating_activities",
"cash_flow_from_operations",
},
"dataitemid": 2006,
"spgi_name": "Cash from Ops.",
},
{
"name": "capital_expenditure",
"aliases": {
"capital_expenditures",
"capex",
},
"dataitemid": 2021,
"spgi_name": "Capital Expenditure",
},
{
"name": "sale_of_property_plant_and_equipment",
"aliases": {
"sale_of_ppe",
},
"dataitemid": 2042,
"spgi_name": "Sale of Property, Plant, and Equipment",
},
{
"name": "cash_acquisitions",
"aliases": set(),
"dataitemid": 2057,
"spgi_name": "Cash Acquisitions",
},
{"name": "divestitures", "aliases": set(), "dataitemid": 2077, "spgi_name": "Divestitures"},
{
"name": "sale_of_real_estate",
"aliases": {
"sale_of_real_properties",
"sale_of_real_estate_properties",
},
"dataitemid": 2040,
"spgi_name": "Sale (Purchase) of Real Estate properties",
},
{
"name": "sale_of_intangible_assets",
"aliases": {
"sale_of_intangible_asset",
"sale_of_intangibles",
},
"dataitemid": 2029,
"spgi_name": "Sale (Purchase) of Intangible assets",
},
{
"name": "net_cash_from_investments",
"aliases": set(),
"dataitemid": 2027,
"spgi_name": "Net Cash from Investments",
},
{
"name": "net_decrease_in_investment_loans_originated_and_sold",
"aliases": set(),
"dataitemid": 2032,
"spgi_name": "Net (Increase)/Decrease in Loans Orig/Sold",
},
{
"name": "other_investing_activities",
"aliases": set(),
"dataitemid": 2051,
"spgi_name": "Other Investing Activities",
},
{
"name": "total_other_investing_activities",
"aliases": set(),
"dataitemid": 2177,
"spgi_name": "Other Investing Activities, Total",
},
{
"name": "cash_from_investing",
"aliases": {
"cash_from_investing_activities",
"cashflow_from_investing",
"cashflow_from_investing_activities",
},
"dataitemid": 2005,
"spgi_name": "Cash from Investing",
},
{
"name": "short_term_debt_issued",
"aliases": {
"current_debt_issued",
},
"dataitemid": 2043,
"spgi_name": "Short Term Debt Issued",
},
{
"name": "long_term_debt_issued",
"aliases": {
"non_current_debt_issued",
},
"dataitemid": 2034,
"spgi_name": "Long-Term Debt Issued",
},
{
"name": "total_debt_issued",
"aliases": set(),
"dataitemid": 2161,
"spgi_name": "Total Debt Issued",
},
{
"name": "short_term_debt_repaid",
"aliases": {
"current_debt_repaid",
},
"dataitemid": 2044,
"spgi_name": "Short Term Debt Repaid",
},
{
"name": "long_term_debt_repaid",
"aliases": {
"non_current_debt_repaid",
},
"dataitemid": 2036,
"spgi_name": "Long-Term Debt Repaid",
},
{
"name": "total_debt_repaid",
"aliases": set(),
"dataitemid": 2166,
"spgi_name": "Total Debt Repaid",
},
{
"name": "issuance_of_common_stock",
"aliases": set(),
"dataitemid": 2169,
"spgi_name": "Issuance of Common Stock",
},
{
"name": "repurchase_of_common_stock",
"aliases": set(),
"dataitemid": 2164,
"spgi_name": "Repurchase of Common Stock",
},
{
"name": "issuance_of_preferred_stock",
"aliases": set(),
"dataitemid": 2181,
"spgi_name": "Issuance of Preferred Stock",
},
{
"name": "repurchase_of_preferred_stock",
"aliases": set(),
"dataitemid": 2172,
"spgi_name": "Repurchase of Preferred Stock",
},
{
"name": "common_dividends_paid",
"aliases": set(),
"dataitemid": 2074,
"spgi_name": "Common Dividends Paid",
},
{
"name": "preferred_dividends_paid",
"aliases": set(),
"dataitemid": 2116,
"spgi_name": "Pref. Dividends Paid",
},
{
"name": "total_dividends_paid",
"aliases": {
"dividends_paid",
},
"dataitemid": 2022,
"spgi_name": "Total Dividends Paid",
},
{
"name": "special_dividends_paid",
"aliases": set(),
"dataitemid": 2041,
"spgi_name": "Special Dividend Paid",
},
{
"name": "other_financing_activities",
"aliases": set(),
"dataitemid": 2050,
"spgi_name": "Other Financing Activities",
},
{
"name": "cash_from_financing",
"aliases": {
"cash_from_financing_activities",
"cashflow_from_financing",
"cashflow_from_financing_activities",
},
"dataitemid": 2004,
"spgi_name": "Cash from Financing",
},
{
"name": "foreign_exchange_rate_adjustments",
"aliases": {
"fx_adjustments",
"foreign_exchange_adjustments",
},
"dataitemid": 2144,
"spgi_name": "Foreign Exchange Rate Adj.",
},
{
"name": "miscellaneous_cash_flow_adjustments",
"aliases": {
"misc_cash_flow_adj",
},
"dataitemid": 2149,
"spgi_name": "Misc. Cash Flow Adj.",
},
{
"name": "net_change_in_cash",
"aliases": {
"change_in_cash",
},
"dataitemid": 2093,
"spgi_name": "Net Change in Cash",
},
{
"name": "depreciation",
"aliases": set(),
"dataitemid": 2143,
"spgi_name": "Depreciation (From Notes)",
},
{
"name": "depreciation_of_rental_assets",
"aliases": set(),
"dataitemid": 42409,
"spgi_name": "Depreciation of Rental Assets",
},
{
"name": "sale_proceeds_from_rental_assets",
"aliases": set(),
"dataitemid": 42411,
"spgi_name": "Sale Proceeds from Rental Assets",
},
{
"name": "basic_eps",
"aliases": {
"basic_earning_per_share",
"basic_eps_including_extra_items",
"basic_earning_per_share_including_extra_items",
},
"dataitemid": 9,
"spgi_name": "Basic EPS",
},
{
"name": "basic_eps_excluding_extra_items",
"aliases": {
"basic_earning_per_share_excluding_extra_items",
},
"dataitemid": 3064,
"spgi_name": "Basic EPS Excl. Extra Items",
},
{
"name": "basic_eps_from_accounting_change",
"aliases": {
"basic_earning_per_share_from_accounting_change",
},
"dataitemid": 145,
"spgi_name": "Basic EPS - Accounting Change",
},
{
"name": "basic_eps_from_extraordinary_items",
"aliases": {
"basic_earning_per_share_from_extraordinary_items",
},
"dataitemid": 146,
"spgi_name": "Basic EPS - Extraordinary Items",
},
{
"name": "basic_eps_from_accounting_change_and_extraordinary_items",
"aliases": {
"basic_earning_per_share_from_accounting_change_and_extraordinary_items",
},
"dataitemid": 45,
"spgi_name": "Basic EPS - Extraordinary Items & Accounting Change",
},
{
"name": "weighted_average_basic_shares_outstanding",
"aliases": set(),
"dataitemid": 3217,
"spgi_name": "Weighted Avg. Basic Shares Out.",
},
{
"name": "diluted_eps",
"aliases": {
"diluted_earning_per_share",
"diluted_eps_including_extra_items",
"diluted_earning_per_share_including_extra_items",
},
"dataitemid": 8,
"spgi_name": "Diluted EPS",
},
{
"name": "diluted_eps_excluding_extra_items",
"aliases": {
"diluted_earning_per_share_excluding_extra_items",
},
"dataitemid": 142,
"spgi_name": "Diluted EPS Excl. Extra Items",
},
{
"name": "weighted_average_diluted_shares_outstanding",
"aliases": set(),
"dataitemid": 342,
"spgi_name": "Weighted Avg. Diluted Shares Out.",
},
{
"name": "normalized_basic_eps",
"aliases": {
"normalized_basic_earning_per_share",
},
"dataitemid": 4379,
"spgi_name": "Normalized Basic EPS",
},
{
"name": "normalized_diluted_eps",
"aliases": {
"normalized_diluted_earning_per_share",
},
"dataitemid": 4380,
"spgi_name": "Normalized Diluted EPS",
},
{
"name": "dividends_per_share",
"aliases": set(),
"dataitemid": 3058,
"spgi_name": "Dividends per share",
},
{
"name": "distributable_cash_per_share",
"aliases": set(),
"dataitemid": 23317,
"spgi_name": "Distributable Cash per Share",
},
{
"name": "diluted_eps_from_accounting_change_and_extraordinary_items",
"aliases": {
"diluted_earning_per_share_from_accounting_change_and_extraordinary_items",
},
"dataitemid": 44,
"spgi_name": "Diluted EPS - Extraordinary Items & Accounting Change",
},
{
"name": "diluted_eps_from_accounting_change",
"aliases": {
"diluted_earning_per_share_from_accounting_change",
},
"dataitemid": 141,
"spgi_name": "Diluted EPS - Accounting Change",
},
{
"name": "diluted_eps_from_extraordinary_items",
"aliases": {
"diluted_earning_per_share_from_extraordinary_items",
},
"dataitemid": 144,
"spgi_name": "Diluted EPS - Extraordinary Items",
},
{
"name": "diluted_eps_from_discontinued_operations",
"aliases": {
"diluted_earning_per_share_from_discontinued_operations",
},
"dataitemid": 143,
"spgi_name": "Diluted EPS - Discontinued Operations",
},
{
"name": "funds_from_operations",
"aliases": {
"ffo",
},
"dataitemid": 3074,
"spgi_name": "FFO",
},
{
"name": "ebitda",
"aliases": {
"earnings_before_interest_taxes_depreciation_and_amortization",
},
"dataitemid": 4051,
"spgi_name": "EBITDA",
},
{
"name": "ebita",
"aliases": {
"earnings_before_interest_taxes_and_amortization",
},
"dataitemid": 100689,
"spgi_name": "EBITA",
},
{
"name": "ebit",
"aliases": {
"earnings_before_interest_and_taxes",
},
"dataitemid": 400,
"spgi_name": "EBIT",
},
{
"name": "ebitdar",
"aliases": {
"earnings_before_interest_taxes_depreciation_amortization_and_rental_expense",
},
"dataitemid": 21674,
"spgi_name": "EBITDAR",
},
{"name": "net_debt", "aliases": set(), "dataitemid": 4364, "spgi_name": "Net Debt"},
{
"name": "effective_tax_rate",
"aliases": {
"tax_rate",
},
"dataitemid": 4376,
"spgi_name": "Effective Tax Rate %",
},
{"name": "current_ratio", "aliases": set(), "dataitemid": 4030, "spgi_name": "Current Ratio"},
{"name": "quick_ratio", "aliases": set(), "dataitemid": 4121, "spgi_name": "Quick Ratio"},
{
"name": "total_debt_to_capital",
"aliases": set(),
"dataitemid": 43907,
"spgi_name": "Total Debt to Capital (%)",
},
{
"name": "net_working_capital",
"aliases": set(),
"dataitemid": 1311,
"spgi_name": "Net Working Capital",
},
{
"name": "working_capital",
"aliases": set(),
"dataitemid": 4165,
"spgi_name": "Working Capital",
},
{
"name": "change_in_net_working_capital",
"aliases": set(),
"dataitemid": 4421,
"spgi_name": "Change In Net Working Capital",
},
{
"name": "total_debt",
"aliases": set(),
"dataitemid": 4173,
"spgi_name": "Total Debt",
},
{
"name": "total_debt_to_equity_ratio",
"aliases": {
"debt_ratio",
"total_debt_ratio",
"total_debt_to_total_equity",
"total_debt_to_equity",
},
"dataitemid": 4034,
"spgi_name": "Total Debt/Equity",
},
]
LINE_ITEMS_TO_DATA_ITEM_ID = {
line_item["name"]: line_item["dataitemid"] for line_item in LINE_ITEMS
}
LINE_ITEM_NAMES_AND_ALIASES = list(
chain(*[[line_item["name"]] + list(line_item["aliases"]) for line_item in LINE_ITEMS])
)
LINE_ITEM_SYNONYMS = {
alias: line_item["dataitemid"] for line_item in LINE_ITEMS for alias in line_item["aliases"]
}
FINANCIAL_STATEMENTS: dict[str, int] = {
"income_statement": 1,
"balance_sheet": 2,
"cash_flow": 3,
}
FINANCIAL_STATEMENTS_SYNONYMS: dict[str, int] = {
"is": 1,
"bs": 2,
"cf": 3,
"income_stmt": 1,
"cashflow": 3,
}