summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-01-03 08:21:10 -0800
committerGitHub <noreply@github.com>2024-01-03 16:21:10 +0000
commit5c4ac285b03bb7f617738c148ca72c6f10c8ad5f (patch)
treeea4ab1a5893612f068932d1f6cd6888821066cb1
parent3eaf0d2ef1c28fff8ce1cb809594288fb34ae70e (diff)
hotfix/financials-field-maps: Updates A Couple FMP/Polygon Income Statement Fields (#5907)
* update income statement fields * another polygon field * ratio -> margin * black * explicit fmp fields * add reported_currency for standardized intrinio * # pylint: disable=unused-argument * another unused-argument * black.. * patch tests * polygon income: eps -> basic earnings per share * re-capture terminal portfolio menu test --------- Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/balance_sheet.py202
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/cash_flow.py155
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/income_statement.py153
-rw-r--r--openbb_platform/providers/intrinio/openbb_intrinio/models/balance_sheet.py13
-rw-r--r--openbb_platform/providers/intrinio/openbb_intrinio/models/cash_flow.py11
-rw-r--r--openbb_platform/providers/intrinio/openbb_intrinio/models/income_statement.py16
-rw-r--r--openbb_platform/providers/polygon/openbb_polygon/models/income_statement.py50
-rw-r--r--openbb_platform/providers/ultima/openbb_ultima/__init__.py37
-rw-r--r--openbb_platform/providers/yfinance/tests/test_yfinance_fetchers.py2
-rw-r--r--tests/openbb_terminal/portfolio/csv/test_portfolio_model/test_tracking_error.csv4
10 files changed, 574 insertions, 69 deletions
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/balance_sheet.py b/openbb_platform/providers/fmp/openbb_fmp/models/balance_sheet.py
index a67d1089e10..d8f40c65123 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/balance_sheet.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/balance_sheet.py
@@ -1,5 +1,5 @@
"""FMP Balance Sheet Model."""
-
+# pylint: disable=unused-argument
from datetime import (
date as dateType,
datetime,
@@ -33,7 +33,7 @@ class FMPBalanceSheetData(BalanceSheetData):
"fiscal_year": "calendarYear",
"filing_date": "fillingDate",
"accepted_date": "acceptedDate",
- "currency": "reportedCurrency",
+ "reported_currency": "reportedCurrency",
"cash_and_cash_equivalents": "cashAndCashEquivalents",
"short_term_investments": "shortTermInvestments",
"cash_and_short_term_investments": "cashAndShortTermInvestments",
@@ -69,11 +69,11 @@ class FMPBalanceSheetData(BalanceSheetData):
"common_stock": "commonStock",
"retained_earnings": "retainedEarnings",
"accumulated_other_comprehensive_income": "accumulatedOtherComprehensiveIncomeLoss",
- "other_stock_holders_equity": "otherStockholdersEquity",
- "other_total_stock_holders_equity": "othertotalStockholdersEquity",
+ "other_shareholders_equity": "otherStockholdersEquity",
+ "other_total_shareholders_equity": "othertotalStockholdersEquity",
"total_common_equity": "totalStockholdersEquity",
"total_equity_non_controlling_interests": "totalEquity",
- "total_liabilities_shareholders_equity": "totalLiabilitiesAndStockholdersEquity",
+ "total_liabilities_and_shareholders_equity": "totalLiabilitiesAndStockholdersEquity",
"minority_interest": "minorityInterest",
"total_liabilities_and_total_equity": "totalLiabilitiesAndTotalEquity",
"total_investments": "totalInvestments",
@@ -91,6 +91,198 @@ class FMPBalanceSheetData(BalanceSheetData):
default=None,
description="The date and time when the filing was accepted.",
)
+ reported_currency: Optional[str] = Field(
+ default=None,
+ description="The currency in which the balance sheet was reported.",
+ )
+ cash_and_cash_equivalents: Optional[float] = Field(
+ default=None,
+ description="Cash and cash equivalents.",
+ )
+ short_term_investments: Optional[float] = Field(
+ default=None,
+ description="Short term investments.",
+ )
+ cash_and_short_term_investments: Optional[float] = Field(
+ default=None,
+ description="Cash and short term investments.",
+ )
+ net_receivables: Optional[float] = Field(
+ default=None,
+ description="Net receivables.",
+ )
+ inventory: Optional[float] = Field(
+ default=None,
+ description="Inventory.",
+ )
+ other_current_assets: Optional[float] = Field(
+ default=None,
+ description="Other current assets.",
+ )
+ total_current_assets: Optional[float] = Field(
+ default=None,
+ description="Total current assets.",
+ )
+ plant_property_equipment_net: Optional[float] = Field(
+ default=None,
+ description="Plant property equipment net.",
+ )
+ goodwill: Optional[float] = Field(
+ default=None,
+ description="Goodwill.",
+ )
+ intangible_assets: Optional[float] = Field(
+ default=None,
+ description="Intangible assets.",
+ )
+ goodwill_and_intangible_assets: Optional[float] = Field(
+ default=None,
+ description="Goodwill and intangible assets.",
+ )
+ long_term_investments: Optional[float] = Field(
+ default=None,
+ description="Long term investments.",
+ )
+ tax_assets: Optional[float] = Field(
+ default=None,
+ description="Tax assets.",
+ )
+ other_non_current_assets: Optional[float] = Field(
+ default=None,
+ description="Other non current assets.",
+ )
+ non_current_assets: Optional[float] = Field(
+ default=None,
+ description="Total non current assets.",
+ )
+ other_assets: Optional[float] = Field(
+ default=None,
+ description="Other assets.",
+ )
+ total_assets: Optional[float] = Field(
+ default=None,
+ description="Total assets.",
+ )
+ accounts_payable: Optional[float] = Field(
+ default=None,
+ description="Accounts payable.",
+ )
+ short_term_debt: Optional[float] = Field(
+ default=None,
+ description="Short term debt.",
+ )
+ tax_payables: Optional[float] = Field(
+ default=None,
+ description="Tax payables.",
+ )
+ current_deferred_revenue: Optional[float] = Field(
+ default=None,
+ description="Current deferred revenue.",
+ )
+ other_current_liabilities: Optional[float] = Field(
+ default=None,
+ description="Other current liabilities.",
+ )
+ total_current_liabilities: Optional[float] = Field(
+ default=None,
+ description="Total current liabilities.",
+ )
+ long_term_debt: Optional[float] = Field(
+ default=None,
+ description="Long term debt.",
+ )
+ deferred_revenue_non_current: Optional[float] = Field(
+ default=None,
+ description="Non current deferred revenue.",
+ )
+ deferred_tax_liabilities_non_current: Optional[float] = Field(
+ default=None,
+ description="Deferred tax liabilities non current.",
+ )
+ other_non_current_liabilities: Optional[float] = Field(
+ default=None,
+ description="Other non current liabilities.",
+ )
+ total_non_current_liabilities: Optional[float] = Field(
+ default=None,
+ description="Total non current liabilities.",
+ )
+ other_liabilities: Optional[float] = Field(
+ default=None,
+ description="Other liabilities.",
+ )
+ capital_lease_obligations: Optional[float] = Field(
+ default=None,
+ description="Capital lease obligations.",
+ )
+ total_liabilities: Optional[float] = Field(
+ default=None,
+ description="Total liabilities.",
+ )
+ preferred_stock: Optional[float] = Field(
+ default=None,
+ description="Preferred stock.",
+ )
+ common_stock: Optional[float] = Field(
+ default=None,
+ description="Common stock.",
+ )
+ retained_earnings: Optional[float] = Field(
+ default=None,
+ description="Retained earnings.",
+ )
+ accumulated_other_comprehensive_income: Optional[float] = Field(
+ default=None,
+ description="Accumulated other comprehensive income (loss).",
+ )
+ other_shareholders_equity: Optional[float] = Field(
+ default=None,
+ description="Other shareholders equity.",
+ )
+ other_total_shareholders_equity: Optional[float] = Field(
+ default=None,
+ description="Other total shareholders equity.",
+ )
+ total_common_equity: Optional[float] = Field(
+ default=None,
+ description="Total common equity.",
+ )
+ total_equity_non_controlling_interests: Optional[float] = Field(
+ default=None,
+ description="Total equity non controlling interests.",
+ )
+ total_liabilities_and_shareholders_equity: Optional[float] = Field(
+ default=None,
+ description="Total liabilities and shareholders equity.",
+ )
+ minority_interest: Optional[float] = Field(
+ default=None,
+ description="Minority interest.",
+ )
+ total_liabilities_and_total_equity: Optional[float] = Field(
+ default=None,
+ description="Total liabilities and total equity.",
+ )
+ total_investments: Optional[float] = Field(
+ default=None,
+ description="Total investments.",
+ )
+ total_debt: Optional[float] = Field(
+ default=None,
+ description="Total debt.",
+ )
+ net_debt: Optional[float] = Field(
+ default=None,
+ description="Net debt.",
+ )
+ link: Optional[str] = Field(
+ default=None,
+ description="Link to the filing.",
+ )
+ final_link: Optional[str] = Field(
+ default=None,
+ description="Link to the filing document.",
+ )
@model_validator(mode="before")
@classmethod
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/cash_flow.py b/openbb_platform/providers/fmp/openbb_fmp/models/cash_flow.py
index e497b4aa6f8..0b72101a517 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/cash_flow.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/cash_flow.py
@@ -1,5 +1,5 @@
"""FMP Cash Flow Statement Model."""
-
+# pylint: disable=unused-argument
from datetime import (
date as dateType,
@@ -40,11 +40,11 @@ class FMPCashFlowStatementData(CashFlowStatementData):
"deferred_income_tax": "deferredIncomeTax",
"stock_based_compensation": "stockBasedCompensation",
"change_in_working_capital": "changeInWorkingCapital",
- "changes_in_account_receivables": "accountsReceivables",
- "changes_in_inventory": "inventory",
+ "change_in_account_receivables": "accountsReceivables",
+ "change_in_inventory": "inventory",
"change_in_account_payable": "accountsPayables",
- "changes_in_other_working_capital": "otherWorkingCapital",
- "changes_in_other_non_cash_items": "otherNonCashItems",
+ "change_in_other_working_capital": "otherWorkingCapital",
+ "change_in_other_non_cash_items": "otherNonCashItems",
"net_cash_from_operating_activities": "netCashProvidedByOperatingActivities",
"purchase_of_property_plant_and_equipment": "investmentsInPropertyPlantAndEquipment",
"acquisitions": "acquisitionsNet",
@@ -69,9 +69,148 @@ class FMPCashFlowStatementData(CashFlowStatementData):
"final_link": "finalLink",
}
- fiscal_year: int = Field(description="The fiscal year of the fiscal period.")
- filing_date: dateType = Field(description="The date of the filing.")
- accepted_date: datetime = Field(description="The date the filing was accepted.")
+ fiscal_year: Optional[int] = Field(
+ default=None,
+ description="The fiscal year of the fiscal period.",
+ )
+ filing_date: Optional[dateType] = Field(
+ default=None,
+ description="The date of the filing.",
+ )
+ accepted_date: Optional[datetime] = Field(
+ default=None, description="The date the filing was accepted."
+ )
+ reported_currency: Optional[str] = Field(
+ default=None,
+ description="The currency in which the cash flow statement was reported.",
+ )
+ net_income: Optional[float] = Field(
+ default=None,
+ description="Net income.",
+ )
+ depreciation_and_amortization: Optional[float] = Field(
+ default=None,
+ description="Depreciation and amortization.",
+ )
+ deferred_income_tax: Optional[float] = Field(
+ default=None,
+ description="Deferred income tax.",
+ )
+ stock_based_compensation: Optional[float] = Field(
+ default=None,
+ description="Stock-based compensation.",
+ )
+ change_in_working_capital: Optional[float] = Field(
+ default=None,
+ description="Change in working capital.",
+ )
+ change_in_account_receivables: Optional[float] = Field(
+ default=None,
+ description="Change in account receivables.",
+ )
+ change_in_inventory: Optional[float] = Field(
+ default=None,
+ description="Change in inventory.",
+ )
+ change_in_account_payable: Optional[float] = Field(
+ default=None,
+ description="Change in account payable.",
+ )
+ change_in_other_working_capital: Optional[float] = Field(
+ default=None,
+ description="Change in other working capital.",
+ )
+ change_in_other_non_cash_items: Optional[float] = Field(
+ default=None,
+ description="Change in other non-cash items.",
+ )
+ net_cash_from_operating_activities: Optional[float] = Field(
+ default=None,
+ description="Net cash from operating activities.",
+ )
+ purchase_of_property_plant_and_equipment: Optional[float] = Field(
+ default=None,
+ description="Purchase of property, plant and equipment.",
+ )
+ acquisitions: Optional[float] = Field(
+ default=None,
+ description="Acquisitions.",
+ )
+ purchase_of_investment_securities: Optional[float] = Field(
+ default=None,
+ description="Purchase of investment securities.",
+ )
+ sale_and_maturity_of_investments: Optional[float] = Field(
+ default=None,
+ description="Sale and maturity of investments.",
+ )
+ other_investing_activities: Optional[float] = Field(
+ default=None,
+ description="Other investing activities.",
+ )
+ net_cash_from_investing_activities: Optional[float] = Field(
+ default=None,
+ description="Net cash from investing activities.",
+ )
+ repayment_of_debt: Optional[float] = Field(
+ default=None,
+ description="Repayment of debt.",
+ )
+ issuance_of_common_equity: Optional[float] = Field(
+ default=None,
+ description="Issuance of common equity.",
+ )
+ repurchase_of_common_equity: Optional[float] = Field(
+ default=None,
+ description="Repurchase of common equity.",
+ )
+ payment_of_dividends: Optional[float] = Field(
+ default=None,
+ description="Payment of dividends.",
+ )
+ other_financing_activities: Optional[float] = Field(
+ default=None,
+ description="Other financing activities.",
+ )
+ net_cash_from_financing_activities: Optional[float] = Field(
+ default=None,
+ description="Net cash from financing activities.",
+ )
+ effect_of_exchange_rate_changes_on_cash: Optional[float] = Field(
+ default=None,
+ description="Effect of exchange rate changes on cash.",
+ )
+ net_change_in_cash_and_equivalents: Optional[float] = Field(
+ default=None,
+ description="Net change in cash and equivalents.",
+ )
+ cash_at_beginning_of_period: Optional[float] = Field(
+ default=None,
+ description="Cash at beginning of period.",
+ )
+ cash_at_end_of_period: Optional[float] = Field(
+ default=None,
+ description="Cash at end of period.",
+ )
+ operating_cash_flow: Optional[float] = Field(
+ default=None,
+ description="Operating cash flow.",
+ )
+ capital_expenditure: Optional[float] = Field(
+ default=None,
+ description="Capital expenditure.",
+ )
+ free_cash_flow: Optional[float] = Field(
+ default=None,
+ )
+ link: Optional[str] = Field(
+ default=None,
+ description="Link to the filing.",
+ )
+ final_link: Optional[str] = Field(
+ default=None,
+ description="Link to the filing document.",
+ )
@model_validator(mode="before")
@classmethod
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/income_statement.py b/openbb_platform/providers/fmp/openbb_fmp/models/income_statement.py
index ca015c0fb38..5eb3c7dfbfb 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/income_statement.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/income_statement.py
@@ -1,5 +1,5 @@
"""FMP Income Statement Model."""
-
+# pylint: disable=unused-argument
from datetime import (
date as dateType,
datetime,
@@ -37,7 +37,7 @@ class FMPIncomeStatementData(IncomeStatementData):
"revenue": "revenue",
"cost_of_revenue": "costOfRevenue",
"gross_profit": "grossProfit",
- "gross_profit_ratio": "grossProfitRatio",
+ "gross_profit_margin": "grossProfitRatio",
"general_and_admin_expense": "generalAndAdministrativeExpenses",
"research_and_development_expense": "researchAndDevelopmentExpenses",
"selling_and_marketing_expense": "sellingAndMarketingExpenses",
@@ -46,18 +46,18 @@ class FMPIncomeStatementData(IncomeStatementData):
"total_operating_expenses": "operatingExpenses",
"cost_and_expenses": "costAndExpenses",
"interest_income": "interestIncome",
- "interest_expense": "interestExpense",
+ "total_interest_expense": "interestExpense",
"depreciation_and_amortization": "depreciationAndAmortization",
"ebitda": "ebitda",
"ebitda_margin": "ebitdaratio",
- "operating_income": "operatingIncome",
- "operating_income_ratio": "operatingIncomeRatio",
- "total_other_income_expenses_net": "totalOtherIncomeExpensesNet",
- "income_before_tax": "incomeBeforeTax",
- "income_before_tax_ratio": "incomeBeforeTaxRatio",
+ "total_operating_income": "operatingIncome",
+ "operating_income_margin": "operatingIncomeRatio",
+ "total_other_income_expenses": "totalOtherIncomeExpensesNet",
+ "total_pre_tax_income": "incomeBeforeTax",
+ "pre_tax_income_margin": "incomeBeforeTaxRatio",
"income_tax_expense": "incomeTaxExpense",
"consolidated_net_income": "netIncome",
- "net_income_ratio": "netIncomeRatio",
+ "net_income_margin": "netIncomeRatio",
"basic_earnings_per_share": "eps",
"diluted_earnings_per_share": "epsdiluted",
"weighted_average_basic_shares_outstanding": "weightedAverageShsOut",
@@ -66,10 +66,137 @@ class FMPIncomeStatementData(IncomeStatementData):
"final_link": "finalLink",
}
- filing_date: dateType = Field(description="The date of the filing.")
- accepted_date: datetime = Field(description="The date the filing was accepted.")
- reported_currency: str = Field(
- description="The reported currency of the filing.",
+ filing_date: Optional[dateType] = Field(
+ default=None,
+ description="The date when the filing was made.",
+ )
+ accepted_date: Optional[datetime] = Field(
+ default=None,
+ description="The date and time when the filing was accepted.",
+ )
+ reported_currency: Optional[str] = Field(
+ default=None,
+ description="The currency in which the balance sheet was reported.",
+ )
+ revenue: Optional[float] = Field(
+ default=None,
+ description="Total revenue.",
+ )
+ cost_of_revenue: Optional[float] = Field(
+ default=None,
+ description="Cost of revenue.",
+ )
+ gross_profit: Optional[float] = Field(
+ default=None,
+ description="Gross profit.",
+ )
+ gross_profit_margin: Optional[float] = Field(
+ default=None,
+ description="Gross profit margin.",
+ )
+ general_and_admin_expense: Optional[float] = Field(
+ default=None,
+ description="General and administrative expenses.",
+ )
+ research_and_development_expense: Optional[float] = Field(
+ default=None,
+ description="Research and development expenses.",
+ )
+ selling_and_marketing_expense: Optional[float] = Field(
+ default=None,
+ description="Selling and marketing expenses.",
+ )
+ selling_general_and_admin_expense: Optional[float] = Field(
+ default=None,
+ description="Selling, general and administrative expenses.",
+ )
+ other_expenses: Optional[float] = Field(
+ default=None,
+ description="Other expenses.",
+ )
+ total_operating_expenses: Optional[float] = Field(
+ default=None,
+ description="Total operating expenses.",
+ )
+ cost_and_expenses: Optional[float] = Field(
+ default=None,
+ description="Cost and expenses.",
+ )
+ interest_income: Optional[float] = Field(
+ default=None,
+ description="Interest income.",
+ )
+ total_interest_expense: Optional[float] = Field(
+ default=None,
+ description="Total interest expenses.",
+ )
+ depreciation_and_amortization: Optional[float] = Field(
+ default=None,
+ description="Depreciation and amortization.",
+ )
+ ebitda: Optional[float] = Field(
+ default=None,
+ description="EBITDA.",
+ )
+ ebitda_margin: Optional[float] = Field(
+ default=None,
+ description="EBITDA margin.",
+ )
+ total_operating_income: Optional[float] = Field(
+ default=None,
+ description="Total operating income.",
+ )
+ operating_income_margin: Optional[float] = Field(
+ default=None,
+ description="Operating income margin.",
+ )
+ total_other_income_expenses: Optional[float] = Field(
+ default=None,
+ description="Total other income and expenses.",
+ )
+ total_pre_tax_income: Optional[float] = Field(
+ default=None,
+ description="Total pre-tax income.",
+ )
+ pre_tax_income_margin: Optional[float] = Field(
+ default=None,
+ description="Pre-tax income margin.",
+ )
+ income_tax_expense: Optional[float] = Field(
+ default=None,
+ description="Income tax expense.",
+ )
+ consolidated_net_income: Optional[float] = Field(
+ default=None,
+ description="Consolidated net income.",
+ )
+ net_income_margin: Optional[float] = Field(
+ default=None,
+ description="Net income margin.",
+ )
+ basic_earnings_per_share: Optional[float] = Field(
+ default=None,
+ description="Basic earnings per share.",
+ )
+ diluted_earnings_per_share: Optional[float] = Field(
+ default=None,
+ description="Diluted earnings per share.",
+ )
+ weighted_average_basic_shares_outstanding: Optional[float] = Field(
+ default=None,
+ description="Weighted average basic shares outstanding.",
+ )
+ weighted_average_diluted_shares_outstanding: Optional[float] = Field(
+ default=None,
+ description="Weighted average diluted shares outstanding.",
+ )
+ link: Optional[str] = Field(
+ default=None,
+ description="Link to the filing.",
+ )
+ final_link: Optional[str] = Field(
+ default=None,
+ description="Link to the filing document.",
)
@model_validator(mode="before")
diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/balance_sheet.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/balance_sheet.py
index 402bcaf140c..cadc8672be1 100644
--- a/openbb_platform/providers/intrinio/openbb_intrinio/models/balance_sheet.py
+++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/balance_sheet.py
@@ -1,5 +1,5 @@
"""Intrinio Balance Sheet Model."""
-
+# pylint: disable=unused-argument
import warnings
from typing import Any, Dict, List, Literal, Optional
@@ -135,7 +135,10 @@ class IntrinioBalanceSheetData(BalanceSheetData):
"total_equity_non_controlling_interests": "totalequityandnoncontrollinginterests",
"total_liabilities_shareholders_equity": "totalliabilitiesandequity",
}
-
+ reported_currency: Optional[str] = Field(
+ description="The currency in which the balance sheet is reported.",
+ default=None,
+ )
cash_and_cash_equivalents: Optional[int] = Field(
description="Cash and cash equivalents.", default=None
)
@@ -461,12 +464,15 @@ class IntrinioBalanceSheetFetcher(
) -> List[IntrinioBalanceSheetData]:
"""Return the transformed data."""
transformed_data: List[IntrinioBalanceSheetData] = []
-
+ units = []
for item in data:
sub_dict: Dict[str, Any] = {}
for sub_item in item["financials"]:
field_name = sub_item["data_tag"]["tag"]
+ unit = sub_item["data_tag"].get("unit", "")
+ if unit and "share" not in unit:
+ units.append(unit)
sub_dict[field_name] = (
float(sub_item["value"])
if sub_item["value"] and sub_item["value"] != 0
@@ -476,6 +482,7 @@ class IntrinioBalanceSheetFetcher(
sub_dict["period_ending"] = item["period_ending"]
sub_dict["fiscal_year"] = item["fiscal_year"]
sub_dict["fiscal_period"] = item["fiscal_period"]
+ sub_dict["reported_currency"] = list(set(units))[0]
# Intrinio does not return Q4 data but FY data instead
if query.period == "QTR" and item["fiscal_period"] == "FY":
diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/cash_flow.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/cash_flow.py
index 5be657439f4..73d51c409a5 100644
--- a/openbb_platform/providers/intrinio/openbb_intrinio/models/cash_flow.py
+++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/cash_flow.py
@@ -1,5 +1,5 @@
"""Intrinio Cash Flow Statement Model."""
-
+# pylint: disable=unused-argument
import warnings
from typing import Any, Dict, List, Literal, Optional
@@ -84,6 +84,10 @@ class IntrinioCashFlowStatementData(CashFlowStatementData):
"sale_of_property_plant_and_equipment": "saleofplantpropertyandequipment",
}
+ reported_currency: Optional[str] = Field(
+ description="The currency in which the balance sheet is reported.",
+ default=None,
+ )
net_income: Optional[float] = Field(
default=None, description="Consolidated Net Income."
)
@@ -293,10 +297,14 @@ class IntrinioCashFlowStatementFetcher(
) -> List[IntrinioCashFlowStatementData]:
"""Return the transformed data."""
transformed_data: List[IntrinioCashFlowStatementData] = []
+ units = []
for item in data:
sub_dict: Dict[str, Any] = {}
for sub_item in item["financials"]:
+ unit = sub_item["data_tag"].get("unit", "")
+ if unit and "share" not in unit:
+ units.append(unit)
field_name = sub_item["data_tag"]["tag"]
sub_dict[field_name] = (
float(sub_item["value"])
@@ -307,6 +315,7 @@ class IntrinioCashFlowStatementFetcher(