mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 20:42:26 +00:00
Friday night bugs (#2557)
* bug 2548 to fix stocks/gov/topbuys * lets not print the df * stocks/gov/lasttrades help #2547 * #2531 earnings issue * Add a check in contracts that the amounts are more than 0 * Fxiix tests * #2516 * #2516 * #2511 * Break up the estimates into 3 different options * #2532 * mypy fix * pylint fix
This commit is contained in:
@@ -49,7 +49,12 @@ def display_crypto_rates(
|
||||
if df.empty:
|
||||
console.print("\nError in loanscan request\n")
|
||||
else:
|
||||
df = df[symbols.upper().split(",")].loc[platforms.lower().split(",")]
|
||||
valid_platforms = [
|
||||
platform
|
||||
for platform in platforms.lower().split(",")
|
||||
if platform in df.index
|
||||
]
|
||||
df = df[symbols.upper().split(",")].loc[valid_platforms]
|
||||
df = df.sort_values(df.columns[0], ascending=False, na_position="last")
|
||||
|
||||
if not external_axes:
|
||||
@@ -98,8 +103,8 @@ def display_crypto_rates(
|
||||
if not external_axes:
|
||||
cfg.theme.visualize_output()
|
||||
|
||||
df = df.fillna("N/A")
|
||||
df = df.applymap(lambda x: str(round(100 * x, 2)) + "%" if x != "N/A" else x)
|
||||
df = df.fillna("-")
|
||||
df = df.applymap(lambda x: str(round(100 * x, 2)) + "%" if x != "-" else x)
|
||||
|
||||
print_rich_table(
|
||||
df.head(limit),
|
||||
|
||||
@@ -129,13 +129,15 @@ def price_target_from_analysts(
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def estimates(symbol: str, export: str = ""):
|
||||
def estimates(symbol: str, estimate: str, export: str = ""):
|
||||
"""Display analysts' estimates for a given ticker. [Source: Business Insider]
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Ticker to get analysts' estimates
|
||||
estimate: str
|
||||
Type of estimate to get
|
||||
export : str
|
||||
Export dataframe data to csv,json,xlsx file
|
||||
"""
|
||||
@@ -145,42 +147,48 @@ def estimates(symbol: str, export: str = ""):
|
||||
df_quarter_revenues,
|
||||
) = business_insider_model.get_estimates(symbol)
|
||||
|
||||
print_rich_table(
|
||||
df_year_estimates,
|
||||
headers=list(df_year_estimates.columns),
|
||||
show_index=True,
|
||||
title="Annual Earnings Estimates",
|
||||
)
|
||||
if estimate == "annualearnings":
|
||||
|
||||
print_rich_table(
|
||||
df_quarter_earnings,
|
||||
headers=list(df_quarter_earnings.columns),
|
||||
show_index=True,
|
||||
title="Quarterly Earnings Estimates",
|
||||
)
|
||||
print_rich_table(
|
||||
df_year_estimates,
|
||||
headers=list(df_year_estimates.columns),
|
||||
show_index=True,
|
||||
title="Annual Earnings Estimates",
|
||||
)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pt_year",
|
||||
df_year_estimates,
|
||||
)
|
||||
|
||||
print_rich_table(
|
||||
df_quarter_revenues,
|
||||
headers=list(df_quarter_revenues.columns),
|
||||
show_index=True,
|
||||
title="Quarterly Revenue Estimates",
|
||||
)
|
||||
elif estimate == "quarterearnings":
|
||||
print_rich_table(
|
||||
df_quarter_earnings,
|
||||
headers=list(df_quarter_earnings.columns),
|
||||
show_index=True,
|
||||
title="Quarterly Earnings Estimates",
|
||||
)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pt_qtr_earnings",
|
||||
df_quarter_earnings,
|
||||
)
|
||||
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pt_year",
|
||||
df_year_estimates,
|
||||
)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pt_qtr_earnings",
|
||||
df_quarter_earnings,
|
||||
)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pt_qtr_revenues",
|
||||
df_quarter_revenues,
|
||||
)
|
||||
elif estimate == "annualrevenue":
|
||||
print_rich_table(
|
||||
df_quarter_revenues,
|
||||
headers=list(df_quarter_revenues.columns),
|
||||
show_index=True,
|
||||
title="Quarterly Revenue Estimates",
|
||||
)
|
||||
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pt_qtr_revenues",
|
||||
df_quarter_revenues,
|
||||
)
|
||||
else:
|
||||
console.print("[red]Invalid estimate type[/red]")
|
||||
|
||||
@@ -48,6 +48,7 @@ class DueDiligenceController(StockBaseController):
|
||||
"arktrades",
|
||||
]
|
||||
PATH = "/stocks/dd/"
|
||||
ESTIMATE_CHOICES = ["annualrevenue", "annualearnings", "quarterearnings"]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -69,6 +70,7 @@ class DueDiligenceController(StockBaseController):
|
||||
choices: dict = {c: {} for c in self.controller_choices}
|
||||
choices["load"]["-i"] = {c: {} for c in stocks_helper.INTERVALS}
|
||||
choices["load"]["-s"] = {c: {} for c in stocks_helper.SOURCES}
|
||||
choices["est"]["-e"] = {c: {} for c in self.ESTIMATE_CHOICES}
|
||||
self.completer = NestedCompleter.from_nested_dict(choices)
|
||||
|
||||
def print_help(self):
|
||||
@@ -161,13 +163,21 @@ class DueDiligenceController(StockBaseController):
|
||||
description="""Yearly estimates and quarter earnings/revenues.
|
||||
[Source: Business Insider]""",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-e",
|
||||
"--estimate",
|
||||
help="Estimates to get",
|
||||
dest="estimate",
|
||||
choices=self.ESTIMATE_CHOICES,
|
||||
default="annualearnings",
|
||||
)
|
||||
ns_parser = self.parse_known_args_and_warn(
|
||||
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
business_insider_view.estimates(
|
||||
symbol=self.ticker,
|
||||
estimate=ns_parser.estimate,
|
||||
export=ns_parser.export,
|
||||
)
|
||||
|
||||
|
||||
@@ -80,6 +80,8 @@ class FundamentalAnalysisController(StockBaseController):
|
||||
|
||||
PATH = "/stocks/fa/"
|
||||
|
||||
SHRS_CHOICES = ["major", "institutional", "mutualfund"]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
ticker: str,
|
||||
@@ -113,6 +115,7 @@ class FundamentalAnalysisController(StockBaseController):
|
||||
choices["cash"]["-p"] = {
|
||||
c: {} for c in stocks_helper.CASH_PLOT[self.default_cash]
|
||||
}
|
||||
choices["shrs"] = {c: {} for c in self.SHRS_CHOICES}
|
||||
self.completer = NestedCompleter.from_nested_dict(choices)
|
||||
|
||||
def print_help(self):
|
||||
@@ -573,13 +576,24 @@ class FundamentalAnalysisController(StockBaseController):
|
||||
description="""Print Major, institutional and mutualfunds shareholders.
|
||||
[Source: Yahoo Finance]""",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--holder",
|
||||
choices=self.SHRS_CHOICES,
|
||||
default="institutional",
|
||||
help="Table of holders to get",
|
||||
dest="holder",
|
||||
)
|
||||
|
||||
if other_args and "--holder" not in other_args[0][0]:
|
||||
other_args.insert(0, "--holder")
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(
|
||||
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
|
||||
)
|
||||
if not self.suffix:
|
||||
if ns_parser:
|
||||
yahoo_finance_view.display_shareholders(
|
||||
self.ticker, export=ns_parser.export
|
||||
self.ticker, holder=ns_parser.holder, export=ns_parser.export
|
||||
)
|
||||
else:
|
||||
console.print("Only US tickers are recognized.", "\n")
|
||||
@@ -857,6 +871,7 @@ class FundamentalAnalysisController(StockBaseController):
|
||||
ratios=ns_parser.ratios,
|
||||
plot=ns_parser.plot,
|
||||
export=ns_parser.export,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -955,6 +970,7 @@ class FundamentalAnalysisController(StockBaseController):
|
||||
ratios=ns_parser.ratios,
|
||||
plot=ns_parser.plot,
|
||||
export=ns_parser.export,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1059,6 +1075,7 @@ class FundamentalAnalysisController(StockBaseController):
|
||||
ratios=ns_parser.ratios,
|
||||
plot=ns_parser.plot,
|
||||
export=ns_parser.export,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
|
||||
@@ -68,22 +68,20 @@ def get_info(symbol: str) -> pd.DataFrame:
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_shareholders(symbol: str) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]:
|
||||
def get_shareholders(symbol: str, holder: str = "institutional") -> pd.DataFrame:
|
||||
"""Get shareholders from yahoo
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Stock ticker symbol
|
||||
holder : str
|
||||
Which holder to get table for
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame
|
||||
Major holders
|
||||
pd.DataFrame
|
||||
Institutional holders
|
||||
pd.DataFrame
|
||||
Mutual Fund holders
|
||||
"""
|
||||
stock = yf.Ticker(symbol)
|
||||
|
||||
@@ -123,7 +121,13 @@ def get_shareholders(symbol: str) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFr
|
||||
lambda x: str(f"{100 * x:.2f}") + " %"
|
||||
)
|
||||
|
||||
return df_major_holders, df_institutional_shareholders, df_mutualfund_shareholders
|
||||
if holder == "major":
|
||||
return df_major_holders
|
||||
if holder == "institutional":
|
||||
return df_institutional_shareholders
|
||||
if holder == "mutualfund":
|
||||
return df_mutualfund_shareholders
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
|
||||
@@ -89,54 +89,34 @@ def display_info(symbol: str, export: str = ""):
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_shareholders(symbol: str, export: str = ""):
|
||||
def display_shareholders(symbol: str, holder: str = "institutional", export: str = ""):
|
||||
"""Yahoo Finance ticker shareholders
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Fundamental analysis ticker symbol
|
||||
holder: str
|
||||
Shareholder table to get. Can be major/institutional/mutualfund
|
||||
export: str
|
||||
Format to export data
|
||||
"""
|
||||
(
|
||||
df_major_holders,
|
||||
df_institutional_shareholders,
|
||||
df_mutualfund_shareholders,
|
||||
) = yahoo_finance_model.get_shareholders(symbol)
|
||||
df_major_holders.columns = ["", ""]
|
||||
dfs = [df_major_holders, df_institutional_shareholders, df_mutualfund_shareholders]
|
||||
titles = ["Major Holders", "Institutional Holders", "Mutual Fund Holders"]
|
||||
console.print()
|
||||
|
||||
for df, title in zip(dfs, titles):
|
||||
if "Date Reported" in df.columns:
|
||||
df["Date Reported"] = df["Date Reported"].apply(
|
||||
lambda x: x.strftime("%Y-%m-%d")
|
||||
)
|
||||
print_rich_table(
|
||||
df,
|
||||
headers=list(df.columns),
|
||||
show_index=False,
|
||||
title=f"{symbol.upper()} {title}",
|
||||
df = yahoo_finance_model.get_shareholders(symbol, holder)
|
||||
if holder == "major":
|
||||
df.columns = ["", ""]
|
||||
if "Date Reported" in df.columns:
|
||||
df["Date Reported"] = df["Date Reported"].apply(
|
||||
lambda x: x.strftime("%Y-%m-%d")
|
||||
)
|
||||
title = f"{holder.title()} Holders"
|
||||
print_rich_table(
|
||||
df,
|
||||
headers=list(df.columns),
|
||||
show_index=False,
|
||||
title=f"{symbol.upper()} {title}",
|
||||
)
|
||||
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"major_holders",
|
||||
df_major_holders,
|
||||
)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"institutional_holders",
|
||||
df_institutional_shareholders,
|
||||
)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"mutualfunds_holders",
|
||||
df_major_holders,
|
||||
export, os.path.dirname(os.path.abspath(__file__)), f"{holder}_holders", df
|
||||
)
|
||||
|
||||
|
||||
@@ -399,7 +379,7 @@ def display_mktcap(
|
||||
def display_fundamentals(
|
||||
symbol: str,
|
||||
statement: str,
|
||||
limit: int = 120,
|
||||
limit: int = 12,
|
||||
ratios: bool = False,
|
||||
plot: list = None,
|
||||
export: str = "",
|
||||
@@ -493,7 +473,6 @@ def display_fundamentals(
|
||||
fundamentals.index = fundamentals.index.to_series().apply(
|
||||
lambda x: x.replace("_", " ").title()
|
||||
)
|
||||
|
||||
# Readable numbers
|
||||
fundamentals = fundamentals.applymap(lambda_long_number_format).fillna("-")
|
||||
print_rich_table(
|
||||
@@ -521,10 +500,10 @@ def display_earnings(symbol: str, limit: int, export: str):
|
||||
|
||||
"""
|
||||
earnings = yahoo_finance_model.get_earnings_history(symbol)
|
||||
if not earnings:
|
||||
if earnings.empty:
|
||||
console.print("")
|
||||
return
|
||||
earnings = earnings.drop(columns={"Symbol", "Company"})
|
||||
earnings = earnings.drop(columns={"Symbol", "Company"}).fillna("-")
|
||||
print_rich_table(
|
||||
earnings.head(limit),
|
||||
headers=earnings.columns,
|
||||
|
||||
@@ -98,7 +98,7 @@ class GovController(StockBaseController):
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="lasttrades",
|
||||
description="Last government trading trading. [Source: www.quiverquant.com]",
|
||||
description="Last government trades. [Source: www.quiverquant.com]",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-g",
|
||||
|
||||
@@ -183,7 +183,7 @@ def get_government_buys(
|
||||
DataFrame of top government buy trading
|
||||
"""
|
||||
df_gov = get_government_trading(gov_type)
|
||||
|
||||
print(df_gov)
|
||||
if df_gov.empty:
|
||||
return pd.DataFrame()
|
||||
|
||||
@@ -192,7 +192,8 @@ def get_government_buys(
|
||||
|
||||
df_gov["TransactionDate"] = pd.to_datetime(df_gov["TransactionDate"])
|
||||
|
||||
df_gov = df_gov[df_gov["TransactionDate"] > start_date].dropna()
|
||||
df_gov = df_gov[df_gov["TransactionDate"] > start_date].dropna(axis=1)
|
||||
|
||||
# Catch bug where error shown for purchase of >5,000,000
|
||||
df_gov["Range"] = df_gov["Range"].apply(
|
||||
lambda x: "$5,000,001-$5,000,001" if x == ">$5,000,000" else x
|
||||
|
||||
@@ -425,7 +425,7 @@ def display_contracts(
|
||||
title=f"Government Contracts for {symbol.upper()}",
|
||||
)
|
||||
|
||||
else:
|
||||
if df_contracts.Amount.abs().sum() != 0:
|
||||
|
||||
# This plot has 1 axis
|
||||
if not external_axes:
|
||||
@@ -446,6 +446,8 @@ def display_contracts(
|
||||
if not external_axes:
|
||||
theme.visualize_output()
|
||||
|
||||
if df_contracts.Amount.abs().sum() == 0:
|
||||
console.print("Contracts found, but they are all equal to $0.00.\n")
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "contracts", df_contracts
|
||||
)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
BTC ETH USDT USDC
|
||||
ledn 5.25% N/A N/A 8.0%
|
||||
ledn 5.25% - - 8.0%
|
||||
youhodler 4.91% 5.65% 13.07% 12.73%
|
||||
blockfi 3.2% 4.5% N/A 8.6%
|
||||
blockfi 3.2% 4.5% - 8.6%
|
||||
swissborg 0.6% 5.0% 8.0% 8.0%
|
||||
|
||||
@@ -61,4 +61,6 @@ def test_price_target_from_analysts_plt(capsys, interval, mocker, start):
|
||||
@pytest.mark.vcr
|
||||
@pytest.mark.record_stdout
|
||||
def test_estimates():
|
||||
business_insider_view.estimates(symbol="TSLA", export=None)
|
||||
business_insider_view.estimates(
|
||||
symbol="TSLA", estimate="annualearnings", export=None
|
||||
)
|
||||
|
||||
@@ -263,6 +263,7 @@ def test_call_func_expect_queue(expected_queue, queue, func):
|
||||
[],
|
||||
{
|
||||
"symbol": "TSLA",
|
||||
"estimate": "annualearnings",
|
||||
"export": "",
|
||||
},
|
||||
),
|
||||
|
||||
@@ -27,17 +27,3 @@ Capital Expenditure 7,557 7,377 8,031 7,712 2,000
|
||||
Selling, General & Admin. Exp. 5,342 6,809 7,023 6,906 5,686
|
||||
Shareholder’s Equity 44,873 63,057 85,777 96,491 -
|
||||
Total Assets 79,406 101,864 129,230 129,102 -
|
||||
Previous Quarter Current Quarter Next Quarter Current Year Next Year
|
||||
QUARTER EARNINGS ESTIMATES
|
||||
Date ending 03/31/22 ending 06/30/22 ending 09/30/22 ending 12/31/22 ending 12/31/23
|
||||
No. of Analysts 31 27 26 38 37
|
||||
Average Estimate 2.258 USD 2.198 USD 3.175 USD 12.183 USD 16.115 USD
|
||||
Year Ago 0.930 USD 1.450 USD 1.860 USD 6.780 USD 12.183 USD
|
||||
Publish Date 4/20/2022 7/27/2022 10/26/2022 - -
|
||||
Previous Quarter Current Quarter Next Quarter Current Year Next Year
|
||||
QUARTER REVENUES ESTIMATES
|
||||
Date ending 03/31/22 ending 06/30/22 ending 09/30/22 ending 12/31/22 ending 12/31/23
|
||||
No. of Analysts 16 14 13 27 26
|
||||
Average Estimate 17,869 USD 18,200 USD 22,867 USD 86,858 USD 116,788 USD
|
||||
Year Ago 10,389 USD 11,958 USD 13,757 USD 53,823 USD 86,858 USD
|
||||
Publish Date 4/20/2022 7/27/2022 10/26/2022 - -
|
||||
|
||||
@@ -356,6 +356,7 @@ def test_call_func_expect_queue(expected_queue, queue, func):
|
||||
ratios=False,
|
||||
plot=None,
|
||||
export="csv",
|
||||
limit=5,
|
||||
),
|
||||
),
|
||||
(
|
||||
@@ -408,6 +409,7 @@ def test_call_func_expect_queue(expected_queue, queue, func):
|
||||
ratios=False,
|
||||
plot=None,
|
||||
export="csv",
|
||||
limit=5,
|
||||
),
|
||||
),
|
||||
(
|
||||
@@ -460,6 +462,7 @@ def test_call_func_expect_queue(expected_queue, queue, func):
|
||||
ratios=False,
|
||||
plot=None,
|
||||
export="csv",
|
||||
limit=5,
|
||||
),
|
||||
),
|
||||
(
|
||||
|
||||
@@ -39,10 +39,8 @@ def test_call_func(func, recorder):
|
||||
|
||||
@pytest.mark.vcr
|
||||
def test_get_shareholders(recorder):
|
||||
major_df, institutional_df, mutual_df = yahoo_finance_model.get_shareholders(
|
||||
symbol="AAPL"
|
||||
)
|
||||
result_list = [major_df, institutional_df, mutual_df]
|
||||
df = yahoo_finance_model.get_shareholders(symbol="AAPL", holder="major")
|
||||
result_list = [df]
|
||||
|
||||
recorder.capture_list(result_list)
|
||||
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
|
||||
|
||||
0 0.13% Percentage of Shares Held by All Insider
|
||||
1 76.34% Percentage of Shares Held by Institutions
|
||||
2 76.44% Percentage of Float Held by Institutions
|
||||
3 2406 Number of Institutions Holding Shares
|
||||
Holder Shares Date Reported Stake Value
|
||||
0 Vanguard Group, Inc. (The) 128.605 M 2022-03-30 8.30 % 11.598 B
|
||||
1 Blackrock Inc. 96.512 M 2022-03-30 6.23 % 8.703 B
|
||||
@@ -15,14 +9,3 @@
|
||||
7 GQG Partners LLC 29.967 M 2022-03-30 1.93 % 2.702 B
|
||||
8 Geode Capital Management, LLC 28.199 M 2022-03-30 1.82 % 2.543 B
|
||||
9 JP Morgan Chase & Company 25.222 M 2022-03-30 1.63 % 2.275 B
|
||||
Holder Shares Date Reported Stake Value
|
||||
0 Vanguard Total Stock Market Index Fund 44.724 M 2022-03-30 2.89 % 4.033 B
|
||||
1 American Balanced Fund 40.320 M 2022-03-30 2.60 % 3.636 B
|
||||
2 Vanguard 500 Index Fund 33.916 M 2022-03-30 2.19 % 3.059 B
|
||||
3 Income Fund of America Inc 30.785 M 2022-04-29 1.99 % 2.776 B
|
||||
4 Investment Company Of America 30.471 M 2022-03-30 1.97 % 2.748 B
|
||||
5 Fundamental Investors Inc 26.294 M 2022-03-30 1.70 % 2.371 B
|
||||
6 Capital Income Builder, Inc. 25.245 M 2022-04-29 1.63 % 2.277 B
|
||||
7 SPDR S&P 500 ETF Trust 16.812 M 2022-06-29 1.08 % 1.516 B
|
||||
8 Fidelity 500 Index Fund 16.340 M 2022-05-30 1.05 % 1.474 B
|
||||
9 Capital World Growth and Income Fund 14.947 M 2022-03-30 0.96 % 1.348 B
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
ReportDate TransactionDate ... House Range
|
||||
0 2022-08-08 2022-08-03 ... Representatives $15,001-$50,000
|
||||
1 2022-08-08 2022-08-03 ... Representatives $15,001-$50,000
|
||||
2 2022-08-08 2022-07-27 ... Representatives $1,001-$15,000
|
||||
3 2022-08-07 2022-07-29 ... Representatives $1,001-$15,000
|
||||
4 2022-08-05 2022-08-04 ... Representatives $1,001-$15,000
|
||||
.. ... ... ... ... ...
|
||||
995 2021-10-15 2021-09-30 ... Senate $1,001 - $15,000
|
||||
996 2021-10-15 2021-09-30 ... Senate $1,001 - $15,000
|
||||
997 2021-10-15 2021-09-30 ... Senate $1,001 - $15,000
|
||||
998 2021-10-04 2021-09-28 ... Senate $1,001 - $15,000
|
||||
999 2021-10-04 2021-09-28 ... Senate $15,001 - $50,000
|
||||
|
||||
[1000 rows x 8 columns]
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
Empty DataFrame
|
||||
Columns: []
|
||||
Index: []
|
||||
No MOCK_TEXT trading data found
|
||||
|
||||
|
||||
161
website/content/terminal/stocks/dd/est/_index.md
vendored
161
website/content/terminal/stocks/dd/est/_index.md
vendored
@@ -1,105 +1,78 @@
|
||||
```
|
||||
usage: est [-h] [--export {csv,json,xlsx}]
|
||||
usage: est [-e {annualrevenue,annualearnings,quarterearnings}] [-h] [--export EXPORT]
|
||||
```
|
||||
|
||||
Yearly estimates and quarter earnings/revenues. [Source: Business Insider]
|
||||
|
||||
```
|
||||
optional arguments:
|
||||
options:
|
||||
-e {annualrevenue,annualearnings,quarterearnings}, --estimate {annualrevenue,annualearnings,quarterearnings}
|
||||
Estimates to get
|
||||
-h, --help show this help message
|
||||
--export {csv,json,xlsx}
|
||||
Export raw data into csv, json, xlsx
|
||||
--export EXPORT Export raw data into csv, json, xlsx
|
||||
|
||||
For more information and examples, use 'about est' to access the related guide.
|
||||
```
|
||||
|
||||
Example:
|
||||
```
|
||||
2022 Feb 16, 04:28 (✨) /stocks/dd/ $ est
|
||||
Annual Earnings Estimates
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
|
||||
┃ ┃ 2022 ┃ 2023 ┃ 2024 ┃ 2025 ┃ 2026 ┃
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
|
||||
│ Revenue │ 198,840 │ 227,368 │ 258,184 │ 304,349 │ 329,924 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Dividend │ - │ - │ 2.57 │ 3.16 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Dividend Yield (in %) │ 0.79 % │ 0.79 % │ 0.86 % │ 1.05 % │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EPS │ 9.38 │ 10.79 │ 12.56 │ 15.45 │ 18.44 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ P/E Ratio │ 31.96 │ 27.79 │ 23.87 │ 19.40 │ 16.26 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EBIT │ 84,138 │ 96,475 │ 113,177 │ - │ 147,282 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EBITDA │ 99,584 │ 115,199 │ 132,683 │ 104,977 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Profit │ - │ - │ - │ 96,935 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Profit Adjusted │ 70,912 │ 80,815 │ 93,717 │ 96,935 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Pre-Tax Profit │ - │ - │ - │ 113,454 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Profit (Adjusted) │ - │ - │ - │ - │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EPS (Non-GAAP) ex. SOE │ 9.38 │ 10.79 │ 12.56 │ 15.45 │ 18.44 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EPS (GAAP) │ - │ - │ - │ 17.40 │ 18.27 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Gross Income │ 136,567 │ 155,747 │ 179,297 │ 191,558 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow from Investing │ -21,317 │ -29,939 │ -34,696 │ -36,887 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow from Operations │ 91,127 │ 107,754 │ 122,969 │ 123,564 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow from Financing │ -49,957 │ -49,910 │ -54,405 │ -57,207 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow per Share │ 11.46 │ 14.30 │ 16.69 │ - │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Free Cash Flow │ 64,929 │ 76,285 │ 88,074 │ 114,306 │ 136,804 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Free Cash Flow per Share │ 8.48 │ 10.04 │ 11.82 │ 11.77 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Book Value per Share │ 24.31 │ 29.34 │ 36.58 │ - │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Debt │ - │ - │ - │ -173,383 │ -228,921 │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Research & Development Exp. │ 23,771 │ 26,576 │ 29,532 │ 32,650 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Capital Expenditure │ - │ - │ - │ 36,887 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Selling, General & Admin. Exp. │ 28,218 │ 31,017 │ 32,224 │ - │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Shareholder’s Equity │ 175,057 │ 214,492 │ 253,332 │ 243,941 │ - │
|
||||
├────────────────────────────────┼─────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Total Assets │ 368,815 │ 418,601 │ 427,972 │ 400,662 │ - │
|
||||
└────────────────────────────────┴─────────┴─────────┴─────────┴──────────┴──────────┘
|
||||
2022 Sep 16, 23:24 (🦋) /stocks/dd/ $ est -e annualearnings
|
||||
|
||||
Quarterly Earnings Estimates
|
||||
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
|
||||
┃ ┃ Previous Quarter ┃ Current Quarter ┃ Next Quarter ┃ Current Year ┃ Next Year ┃
|
||||
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
|
||||
│ Date │ - │ - │ ending 06/29/22 │ ending 06/29/22 │ ending 06/29/23 │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ No. of Analysts │ - │ - │ - │ - │ - │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ Average Estimate │ - │ - │ - │ - │ - │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ Year Ago │ - │ - │ - │ - │ - │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ Publish Date │ - │ - │ - │ - │ - │
|
||||
└──────────────────┴──────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┘
|
||||
|
||||
Quarterly Revenue Estimates
|
||||
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
|
||||
┃ ┃ Previous Quarter ┃ Current Quarter ┃ Next Quarter ┃ Current Year ┃ Next Year ┃
|
||||
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
|
||||
│ Date │ - │ - │ ending 06/29/22 │ ending 06/29/22 │ ending 06/29/23 │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ No. of Analysts │ - │ - │ - │ - │ - │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ Average Estimate │ - │ - │ - │ - │ - │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ Year Ago │ - │ - │ - │ - │ - │
|
||||
├──────────────────┼──────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
|
||||
│ Publish Date │ - │ - │ - │ - │ - │
|
||||
└──────────────────┴──────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┘
|
||||
```
|
||||
Annual Earnings Estimates
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
|
||||
┃ ┃ 2022 ┃ 2023 ┃ 2024 ┃ 2025 ┃ 2026 ┃
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
|
||||
│ Revenue │ 392,623 │ 410,909 │ 430,738 │ 454,433 │ 510,220 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Dividend │ 0.91 │ 0.98 │ 1.05 │ 0.99 │ 0.93 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Dividend Yield (in %) │ 0.60 % │ 0.64 % │ 0.69 % │ 0.65 % │ 0.61 % │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EPS │ 6.09 │ 6.45 │ 6.86 │ 7.24 │ 7.58 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ P/E Ratio │ 24.91 │ 23.52 │ 22.13 │ 20.97 │ 20.03 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EBIT │ 118,989 │ 121,191 │ 125,432 │ 128,497 │ 146,245 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EBITDA │ 130,785 │ 132,990 │ 138,897 │ 149,228 │ 158,983 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Profit │ 99,530 │ 101,720 │ 105,647 │ 108,662 │ 124,217 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Profit Adjusted │ 100,429 │ 103,715 │ 108,643 │ 117,760 │ 132,601 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Pre-Tax Profit │ 118,535 │ 121,213 │ 126,453 │ 131,656 │ 156,001 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Profit (Adjusted) │ 118,256 │ 121,673 │ 129,059 │ 133,883 │ 146,138 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EPS (Non-GAAP) ex. SOE │ 6.06 │ 6.46 │ 6.95 │ 7.36 │ 8.09 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ EPS (GAAP) │ 6.09 │ 6.45 │ 6.86 │ 7.24 │ 7.58 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Gross Income │ 169,560 │ 176,873 │ 185,487 │ 200,666 │ 221,723 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow from Investing │ -19,306 │ -8,376 │ -13,356 │ -10,998 │ -11,108 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow from Operations │ 123,476 │ 123,734 │ 134,248 │ 143,306 │ 150,627 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow from Financing │ -108,858 │ -90,388 │ -78,773 │ -14,759 │ -15,262 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Cash Flow per Share │ 7.16 │ 7.58 │ 8.58 │ 9.09 │ - │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Free Cash Flow │ 111,277 │ 109,160 │ 114,479 │ 120,309 │ 139,519 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Free Cash Flow per Share │ 6.70 │ 6.85 │ 7.44 │ 7.87 │ 8.52 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Book Value per Share │ 3.55 │ 4.39 │ 5.52 │ 7.90 │ - │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Net Debt │ -56,230 │ -81,452 │ -41,666 │ -174,398 │ -493,690 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Research & Development Exp. │ 26,214 │ 28,913 │ 31,890 │ 38,822 │ 40,837 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Capital Expenditure │ 10,282 │ 11,518 │ 12,409 │ 14,097 │ 11,108 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Selling, General & Admin. Exp. │ 24,911 │ 27,190 │ 28,831 │ 31,789 │ 34,641 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Shareholder’s Equity │ 58,270 │ 74,745 │ 100,755 │ 187,040 │ 472,170 │
|
||||
├────────────────────────────────┼──────────┼─────────┼─────────┼──────────┼──────────┤
|
||||
│ Total Assets │ 343,493 │ 369,736 │ 419,940 │ 529,449 │ 811,911 │
|
||||
└────────────────────────────────┴──────────┴─────────┴─────────┴──────────┴──────────┘
|
||||
```
|
||||
Reference in New Issue
Block a user