mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 20:42:26 +00:00
Add missing qa functions capm, beta, cusum, acf, qqplot, hist, line (#3499)
This commit is contained in:
@@ -80,9 +80,9 @@ def display_summary(data: pd.DataFrame, export: str = "") -> None:
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_hist(
|
||||
symbol: str,
|
||||
data: pd.DataFrame,
|
||||
target: str,
|
||||
symbol: str = "",
|
||||
bins: int = 15,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
@@ -90,16 +90,22 @@ def display_hist(
|
||||
|
||||
Parameters
|
||||
----------
|
||||
symbol : str
|
||||
Name of dataset
|
||||
data : pd.DataFrame
|
||||
Dataframe to look at
|
||||
target : str
|
||||
Data column to get histogram of the dataframe
|
||||
symbol : str
|
||||
Name of dataset
|
||||
bins : int
|
||||
Number of bins in histogram
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (1 axis is expected in the list), by default None
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> df = openbb.stocks.load("AAPL")
|
||||
>>> openbb.qa.hist(data=df, target="Adj Close")
|
||||
"""
|
||||
data = data[target]
|
||||
|
||||
@@ -171,6 +177,12 @@ def display_cdf(
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (1 axis is expected in the list), by default None
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> df = openbb.stocks.load("AAPL")
|
||||
>>> openbb.qa.cdf(data=df, target="Adj Close")
|
||||
"""
|
||||
data = data[target]
|
||||
start = data.index[0]
|
||||
@@ -276,6 +288,12 @@ def display_bw(
|
||||
Flag to indicate yearly accumulation
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (1 axis is expected in the list), by default None
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> df = openbb.stocks.load("AAPL")
|
||||
>>> openbb.qa.bw(data=df, target="Adj Close")
|
||||
"""
|
||||
data = data[target]
|
||||
start = data.index[0]
|
||||
@@ -372,6 +390,12 @@ def display_acf(
|
||||
Max number of lags to look at
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (4 axes are expected in the list), by default None
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> df = openbb.stocks.load("AAPL")
|
||||
>>> openbb.qa.acf(data=df, target="Adj Close")
|
||||
"""
|
||||
data = data[target]
|
||||
start = data.index[0]
|
||||
@@ -453,6 +477,12 @@ def display_qqplot(
|
||||
Stock ticker
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (1 axis is expected in the list), by default None
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> df = openbb.stocks.load("AAPL")
|
||||
>>> openbb.qa.qqplot(data=df, target="Adj Close")
|
||||
"""
|
||||
# Statsmodels has a UserWarning for marker kwarg-- which we don't use
|
||||
warnings.filterwarnings(category=UserWarning, action="ignore")
|
||||
@@ -511,6 +541,12 @@ def display_cusum(
|
||||
Drift parameter
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (2 axes are expected in the list), by default None
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> df = openbb.stocks.load("AAPL")
|
||||
>>> openbb.qa.cusum(data=df, target="Adj Close")
|
||||
"""
|
||||
target_series = data[target].values
|
||||
|
||||
@@ -926,6 +962,12 @@ def display_line(
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (1 axis is expected in the list), by default None
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> df = openbb.stocks.load("AAPL")
|
||||
>>> openbb.qa.line(data=df["Adj Close"])
|
||||
"""
|
||||
# This plot has 1 axis
|
||||
if external_axes is None:
|
||||
|
||||
@@ -46,6 +46,12 @@ qa.sortino,openbb_terminal.common.quantitative_analysis.qa_model.get_sortino,ope
|
||||
qa.summary,openbb_terminal.common.quantitative_analysis.qa_model.get_summary,openbb_terminal.common.quantitative_analysis.qa_view.display_summary
|
||||
qa.unitroot,openbb_terminal.common.quantitative_analysis.qa_model.get_unitroot,openbb_terminal.common.quantitative_analysis.qa_view.display_unitroot
|
||||
qa.var,openbb_terminal.common.quantitative_analysis.qa_model.get_var,openbb_terminal.common.quantitative_analysis.qa_view.display_var
|
||||
qa.cusum,openbb_terminal.common.quantitative_analysis.qa_view.display_cusum,
|
||||
qa.acf,openbb_terminal.common.quantitative_analysis.qa_view.display_acf,
|
||||
qa.qqplot,openbb_terminal.common.quantitative_analysis.qa_view.display_qqplot,
|
||||
qa.cdf,openbb_terminal.common.quantitative_analysis.qa_view.display_cdf,
|
||||
qa.hist,openbb_terminal.common.quantitative_analysis.qa_view.display_hist,
|
||||
qa.line,openbb_terminal.common.quantitative_analysis.qa_view.display_line,
|
||||
qa.kurtosis,openbb_terminal.common.quantitative_analysis.rolling_model.get_kurtosis,openbb_terminal.common.quantitative_analysis.rolling_view.display_kurtosis
|
||||
qa.quantile,openbb_terminal.common.quantitative_analysis.rolling_model.get_quantile,openbb_terminal.common.quantitative_analysis.rolling_view.display_quantile
|
||||
qa.rolling,openbb_terminal.common.quantitative_analysis.rolling_model.get_rolling_avg,openbb_terminal.common.quantitative_analysis.rolling_view.display_mean_std
|
||||
@@ -463,16 +469,17 @@ stocks.options.screen.check_presets,openbb_terminal.stocks.options.screen.syncre
|
||||
stocks.options.grhist,openbb_terminal.stocks.options.screen.syncretism_model.get_historical_greeks,openbb_terminal.stocks.options.screen.syncretism_view.view_historical_greeks
|
||||
stocks.options.screen.screener_output,openbb_terminal.stocks.options.screen.syncretism_model.get_screener_output,openbb_terminal.stocks.options.screen.syncretism_view.view_screener_output
|
||||
stocks.options.hist_tr,openbb_terminal.stocks.options.tradier_model.get_historical_options,openbb_terminal.stocks.options.tradier_view.display_historical
|
||||
stocks.options.chains,openbb_terminal.stocks.options.options_sdk_helper.get_full_option_chain
|
||||
stocks.options.chains,openbb_terminal.stocks.options.options_sdk_helper.get_full_option_chain,
|
||||
stocks.options.last_price,openbb_terminal.stocks.options.tradier_model.last_price,
|
||||
stocks.options.expirations,openbb_terminal.stocks.options.options_sdk_helper.get_option_expirations
|
||||
stocks.options.expirations,openbb_terminal.stocks.options.options_sdk_helper.get_option_expirations,
|
||||
stocks.options.process_chains,openbb_terminal.stocks.options.tradier_model.process_chains,
|
||||
stocks.options.generate_data,openbb_terminal.stocks.options.yfinance_model.generate_data,
|
||||
stocks.options.dte,openbb_terminal.stocks.options.yfinance_model.get_dte,
|
||||
stocks.options.vsurf,openbb_terminal.stocks.options.yfinance_model.get_iv_surface,openbb_terminal.stocks.options.yfinance_view.display_vol_surface
|
||||
stocks.qa.capm_information,openbb_terminal.stocks.quantitative_analysis.factors_model.capm_information,
|
||||
stocks.qa.capm,openbb_terminal.stocks.quantitative_analysis.factors_model.capm_information,
|
||||
stocks.qa.fama_raw,openbb_terminal.stocks.quantitative_analysis.factors_model.get_fama_raw,
|
||||
stocks.qa.historical_5,openbb_terminal.stocks.quantitative_analysis.factors_model.get_historical_5,
|
||||
stocks.qa.beta,openbb_terminal.stocks.quantitative_analysis.beta_model.beta_model,openbb_terminal.stocks.quantitative_analysis.beta_view.beta_view
|
||||
stocks.screener.screener_data,openbb_terminal.stocks.screener.finviz_model.get_screener_data,openbb_terminal.stocks.screener.finviz_view.screener
|
||||
stocks.screener.historical,openbb_terminal.stocks.screener.yahoofinance_model.historical,openbb_terminal.stocks.screener.yahoofinance_view.historical
|
||||
stocks.sia.filter_stocks,openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.filter_stocks,
|
||||
@@ -547,4 +554,4 @@ keys.shroom,openbb_terminal.keys_model.set_shroom_key,
|
||||
futures.search,openbb_terminal.futures.yfinance_model.get_search_futures,
|
||||
futures.historical,openbb_terminal.futures.yfinance_model.get_historical_futures,openbb_terminal.futures.yfinance_view.display_historical
|
||||
futures.curve,openbb_terminal.futures.yfinance_model.get_curve_futures,openbb_terminal.futures.yfinance_view.display_curve
|
||||
economy.get_groups,openbb_terminal.economy.finviz_model.get_groups
|
||||
economy.get_groups,openbb_terminal.economy.finviz_model.get_groups,
|
||||
|
||||
|
Can't render this file because it has a wrong number of fields in line 466.
|
@@ -48,7 +48,7 @@ def beta_view(
|
||||
return
|
||||
raise e
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
_, ax = plt.subplots()
|
||||
ax.scatter(rr, sr) # plot returns
|
||||
ax.plot(ax.get_xlim(), [x * beta + alpha for x in ax.get_xlim()]) # plot lin reg
|
||||
ax.set(
|
||||
@@ -58,7 +58,6 @@ def beta_view(
|
||||
)
|
||||
beta_text = f"Raw Beta={round(beta, 2)}\nAlpha={round(alpha, 2)}"
|
||||
ax.text(0.9, 0.1, beta_text, horizontalalignment="right", transform=ax.transAxes)
|
||||
fig.show()
|
||||
console.print()
|
||||
|
||||
df = pd.DataFrame({"sr": sr, "rr": rr})
|
||||
|
||||
@@ -25,12 +25,12 @@ def test_display_summary():
|
||||
|
||||
@pytest.mark.parametrize("df_use, external", [(df, None), (df2, None), (df, [1, 2])])
|
||||
def test_display_hist(df_use, external):
|
||||
qa_view.display_hist("Data", df_use, "col2", 2, external)
|
||||
qa_view.display_hist(df_use, "col2", "Data", 2, external)
|
||||
|
||||
|
||||
def test_display_hist_fail():
|
||||
with pytest.raises(Exception):
|
||||
qa_view.display_hist("Data", df, "col1", 2, [MagicMock()])
|
||||
qa_view.display_hist(df, "col1", "Data", 2, [MagicMock()])
|
||||
|
||||
|
||||
@pytest.mark.parametrize("external", [None, [1, 2]])
|
||||
|
||||
Reference in New Issue
Block a user