Add missing qa functions capm, beta, cusum, acf, qqplot, hist, line (#3499)

This commit is contained in:
montezdesousa
2022-11-21 15:49:18 +00:00
committed by GitHub
parent 976d5dfccc
commit 18d1ce0df5
4 changed files with 59 additions and 11 deletions

View File

@@ -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:

View File

@@ -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.

View File

@@ -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})

View File

@@ -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]])