diff --git a/openbb_extensions/charting/openbb_charting/charting/charting_router.py b/openbb_extensions/charting/openbb_charting/charting/charting_router.py index e5d9843ba38..c846d6b33e3 100644 --- a/openbb_extensions/charting/openbb_charting/charting/charting_router.py +++ b/openbb_extensions/charting/openbb_charting/charting/charting_router.py @@ -1,7 +1,7 @@ from charting_extensions.openbb_custom.infrastructure.plotly_ta.ta_class import PlotlyTA from openbb_sdk_core.app.model.chart import ChartFormat from openbb_sdk_core.app.router import Router -from openbb_sdk_core.utils.utils import to_dataframe +from openbb_sdk_core.app.utils import basemodel_to_df router = Router(prefix="") @@ -1653,7 +1653,7 @@ def stocks_options_vsurf(**kwargs): def stocks_load(**kwargs): - data = to_dataframe( + data = basemodel_to_df( kwargs["command_output_item"], index=kwargs.get("index", "date") ) ma = kwargs.get("ma", None) @@ -1698,7 +1698,7 @@ def stocks_search(**kwargs): def _ta_ma(ma_type: str, **kwargs): - data = to_dataframe(kwargs["data"], index=kwargs.get("index", "date")) + data = basemodel_to_df(kwargs["data"], index=kwargs.get("index", "date")) window = kwargs.get("window", 50) offset = kwargs.get("offset", 0) symbol = kwargs.get("symbol", "") @@ -1753,7 +1753,7 @@ def ta_zlma(**kwargs): def ta_aroon(**kwargs): - data = to_dataframe(kwargs["data"], index=kwargs.get("index", "date")) + data = basemodel_to_df(kwargs["data"], index=kwargs.get("index", "date")) length = kwargs.get("length", 25) scalar = kwargs.get("scalar", 100) symbol = kwargs.get("symbol", "") @@ -1788,7 +1788,7 @@ def ta_recom(**kwargs): def ta_macd(**kwargs): - data = to_dataframe(kwargs["data"], index=kwargs.get("index", "date")) + data = basemodel_to_df(kwargs["data"], index=kwargs.get("index", "date")) fast = kwargs.get("fast", 12) slow = kwargs.get("slow", 26) signal = kwargs.get("signal", 9) @@ -1828,7 +1828,7 @@ def ta_ad(**kwargs): def ta_adx(**kwargs): - data = to_dataframe(kwargs["data"], index=kwargs.get("index", "date")) + data = basemodel_to_df(kwargs["data"], index=kwargs.get("index", "date")) length = kwargs.get("length", 14) scalar = kwargs.get("scalar", 100.0) drift = kwargs.get("drift", 1) @@ -1856,7 +1856,7 @@ def ta_cci(**kwargs): def ta_rsi(**kwargs): - data = to_dataframe(kwargs["data"], index=kwargs.get("index", "date")) + data = basemodel_to_df(kwargs["data"], index=kwargs.get("index", "date")) window = kwargs.get("window", 14) scalar = kwargs.get("scalar", 100.0) drift = kwargs.get("drift", 1) diff --git a/openbb_extensions/qa/openbb_qa/qa_router.py b/openbb_extensions/qa/openbb_qa/qa_router.py index 589e5d8818e..590cd2cedd3 100644 --- a/openbb_extensions/qa/openbb_qa/qa_router.py +++ b/openbb_extensions/qa/openbb_qa/qa_router.py @@ -1,6 +1,7 @@ from typing import List, Literal import numpy as np +from openbb_sdk_core.app.utils import basemodel_to_df, df_to_basemodel, get_target_column, get_target_columns import pandas as pd import pandas_ta as ta import statsmodels.api as sm @@ -15,12 +16,6 @@ from builtin_extensions.common.qa.qa_models import ( TestModel, UnitRootModel, ) -from builtin_extensions.common.utils import ( - from_dataframe, - get_target_column, - get_target_columns, - to_dataframe, -) from openbb_provider.model.abstract.data import Data from openbb_sdk_core.app.model.command_output import CommandOutput from openbb_sdk_core.app.model.results.empty import Empty @@ -56,7 +51,7 @@ def normality(data: List[Data], target: str) -> CommandOutput[NormalityModel]: Normality tests summary. See qa_models.NormalityModel for details. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) kt_statistic, kt_pvalue = stats.kurtosistest(series_target) @@ -80,7 +75,7 @@ def normality(data: List[Data], target: str) -> CommandOutput[NormalityModel]: def capm(data: List[Data], target: str) -> CommandOutput[CAPMModel]: """Capital Asset Pricing Model.""" - df = to_dataframe(data) + df = basemodel_to_df(data) df_target = get_target_columns(df, ["date", target]) df_target = df_target.set_index("date") @@ -140,7 +135,7 @@ def om( Omega ratios. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) def get_omega_ratio(df_target: pd.Series, threshold: float) -> float: @@ -178,10 +173,10 @@ def kurtosis( CommandOutput[List[Data]] Kurtosis. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) results = ta.kurtosis(close=series_target, length=window).dropna() - results = from_dataframe(results) + results = df_to_basemodel(results) return CommandOutput(results=results) @@ -251,7 +246,7 @@ def unitroot( Unit root tests summary. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) adf = stattools.adfuller(series_target, regression=fuller_reg) @@ -303,14 +298,14 @@ def sh( Sharpe ratio. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) returns = series_target.pct_change().dropna().rolling(window).sum() std = series_target.rolling(window).std() / np.sqrt(window) results = ((returns - rfr) / std).dropna() - results = from_dataframe(results) + results = df_to_basemodel(results) return CommandOutput(results=results) @@ -346,7 +341,7 @@ def so( Sortino ratio. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) returns = series_target.pct_change().dropna().rolling(window).sum() @@ -358,7 +353,7 @@ def so( if adjusted: results = result / np.sqrt(2) - results = from_dataframe(results) + results = df_to_basemodel(results) return CommandOutput(results=results) @@ -407,10 +402,10 @@ def skew( CommandOutput[List[Data]] Skewness. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) results = ta.skew(close=series_target, length=window).dropna() - results = from_dataframe(results) + results = df_to_basemodel(results) return CommandOutput(results=results) @@ -424,14 +419,14 @@ def quantile( ) -> CommandOutput[List[Data]]: """Quantile.""" - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) df_median = ta.median(close=series_target, length=window).to_frame() df_quantile = ta.quantile(series_target, length=window, q=quantile_pct).to_frame() results = pd.concat([df_median, df_quantile], axis=1).dropna() - results = from_dataframe(results) + results = df_to_basemodel(results) return CommandOutput(results=results) @@ -471,7 +466,7 @@ def summary(data: List[Data], target: str) -> CommandOutput[SummaryModel]: Summary table. """ - df = to_dataframe(data) + df = basemodel_to_df(data) series_target = get_target_column(df, target) df_stats = series_target.describe(percentiles=[0.1, 0.25, 0.5, 0.75, 0.9]) diff --git a/openbb_extensions/ta/openbb_ta/ta_router.py b/openbb_extensions/ta/openbb_ta/ta_router.py index 41fc3eedd1b..52abe645c4e 100644 --- a/openbb_extensions/ta/openbb_ta/ta_router.py +++ b/openbb_extensions/ta/openbb_ta/ta_router.py @@ -1,13 +1,8 @@ from typing import List, Literal, Optional +from openbb_sdk_core.app.utils import basemodel_to_df, df_to_basemodel, get_target_column, get_target_columns import pandas as pd from builtin_extensions.common.ta import ta_helpers -from builtin_extensions.common.utils import ( - from_dataframe, - get_target_column, - get_target_columns, - to_dataframe, -) from openbb_provider.model.abstract.data import Data from openbb_sdk_core.app.model.command_output import CommandOutput from openbb_sdk_core.app.model.export.plotly import Plotly @@ -64,13 +59,13 @@ def atr( >>> atr_data = openbb.ta.atr(data=stock_data.results) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close"]) df_atr = pd.DataFrame( df_target.ta.atr(length=length, mamode=mamode, drift=drift, offset=offset) ) - results = from_dataframe(df_target.join(df_atr, how="left"), index=True) + results = df_to_basemodel(df_target.join(df_atr, how="left"), index=True) return CommandOutput(results=results) @@ -108,7 +103,7 @@ def fib( >>> fib_data = openbb.ta.fib(data=stock_data.results, period=120) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) ( df_fib, @@ -131,7 +126,7 @@ def fib( df_fib["max_pr"] = max_pr df_fib["lvl_text"] = lvl_text - results = from_dataframe(df_fib) + results = df_to_basemodel(df_fib) return CommandOutput(results=results) @@ -172,11 +167,11 @@ def obv( >>> obv_data = openbb.ta.obv(data=stock_data.results, offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["close", "volume"]) df_obv = pd.DataFrame(df_target.ta.obv(offset=offset)) - results = from_dataframe(df_target.join(df_obv, how="left"), index=True) + results = df_to_basemodel(df_target.join(df_obv, how="left"), index=True) return CommandOutput(results=results) @@ -218,11 +213,11 @@ def fisher( >>> fisher_data = openbb.ta.fisher(data=stock_data.results, length=14, signal=1) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low"]) df_fisher = pd.DataFrame(df_target.ta.fisher(length=length, signal=signal)) - results = from_dataframe(df_target.join(df_fisher, how="left"), index=True) + results = df_to_basemodel(df_target.join(df_fisher, how="left"), index=True) return CommandOutput(results=results) @@ -266,11 +261,11 @@ def adosc( >>> adosc_data = openbb.ta.adosc(data=stock_data.results, fast=3, slow=10, offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close", "volume", "open"]) df_adosc = pd.DataFrame(df_target.ta.adosc(fast=fast, slow=slow, offset=offset)) - results = from_dataframe(df_target.join(df_adosc, how="left"), index=True) + results = df_to_basemodel(df_target.join(df_adosc, how="left"), index=True) return CommandOutput(results=results) @@ -335,13 +330,13 @@ def bbands( >>> bbands_data = openbb.ta.bbands(data=stock_data.results, column="close", length=50, std=2, mamode="sma", offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() bbands_df = pd.DataFrame( df_target.ta.bbands(length=length, std=std, mamode=mamode, offset=offset) ) - results = from_dataframe(df_target.join(bbands_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(bbands_df, how="left"), index=True) return CommandOutput(results=results) @@ -418,23 +413,13 @@ def zlma( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() zlma_df = pd.DataFrame(df_target.ta.zlma(length=length, offset=offset)).dropna() - results = from_dataframe(df_target.join(zlma_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(zlma_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _zlma_export_plotly( - data=df_target, - zlma_data=zlma_df, - zlma_column=zlma_df.columns[0], - title=f"ZLMA {str(length)} with a offset of {str(offset)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -504,22 +489,13 @@ def aroon( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close"]) aroon_df = pd.DataFrame(df_target.ta.aroon(length=length, scalar=scalar)).dropna() - results = from_dataframe(df_target.join(aroon_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(aroon_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _aroon_export_plotly( - data=df_target, - aroon_data=aroon_df, - title=f"AROON {str(length)} with a scalar of {str(scalar)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -585,23 +561,13 @@ def sma( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() sma_df = pd.DataFrame(df_target.ta.sma(length=length, offset=offset).dropna()) - results = from_dataframe(df_target.join(sma_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(sma_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _sma_export_plotly( - data=df_target, - sma_data=sma_df, - sma_column=sma_df.columns[0], - title=f"SMA {str(length)} with a offset of {str(offset)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -643,13 +609,13 @@ def demark( >>> demark_data = openbb.ta.demark(data=stock_data.results,offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() demark_df = pd.DataFrame( df_target.ta.td_seq(offset=offset, show_all=show_all, asint=asint).dropna() ) - results = from_dataframe(df_target.join(demark_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(demark_df, how="left"), index=True) return CommandOutput(results=results) @@ -690,11 +656,11 @@ def vwap( >>> vwap_data = openbb.ta.vwap(data=stock_data.results,anchor="D",offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close", "volume"]) df_vwap = pd.DataFrame(df_target.ta.vwap(anchor=anchor, offset=offset).dropna()) - results = from_dataframe(df_target.join(df_vwap, how="left"), index=True) + results = df_to_basemodel(df_target.join(df_vwap, how="left"), index=True) return CommandOutput(results=results) @@ -775,25 +741,15 @@ def macd( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() macd_df = pd.DataFrame( df_target.ta.macd(fast=fast, slow=slow, signal=signal).dropna() ) - results = from_dataframe(df_target.join(macd_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(macd_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _macd_export_plotly( - data=df_target, - macd_data=macd_df, - macd_column=macd_df.columns[0], - title=f"MACD {str(fast)}-{str(slow)}-{str(signal)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -856,23 +812,13 @@ def hma( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() hma_df = pd.DataFrame(df_target.ta.hma(length=length, offset=offset).dropna()) - results = from_dataframe(df_target.join(hma_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(hma_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _hma_export_plotly( - data=df_target, - hma_data=hma_df, - hma_column=hma_df.columns[0], - title=f"HMA {str(length)} with a offset of {str(offset)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -916,7 +862,7 @@ def donchian( >>> donchian_data = openbb.ta.donchian(data=stock_data.results,lower_length=20,upper_length=20,offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low"]) donchian_df = pd.DataFrame( df_target.ta.donchian( @@ -924,7 +870,7 @@ def donchian( ).dropna() ) - results = from_dataframe(df_target.join(donchian_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(donchian_df, how="left"), index=True) return CommandOutput(results=results) @@ -963,7 +909,7 @@ def ichimoku( drops the Chikou Span Column to prevent potential data leak """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close"]) df_ichimoku, df_span = df_target.ta.ichimoku( tenkan=conversion, @@ -976,7 +922,7 @@ def ichimoku( df_result = df_target.join(df_span.add_prefix("span_"), how="left") df_result = df_result.join(df_ichimoku, how="left") - results = from_dataframe(df_result, index=True) + results = df_to_basemodel(df_result, index=True) return CommandOutput(results=results) @@ -1014,7 +960,7 @@ def clenow( >>> clenow_data = openbb.ta.clenow(data=stock_data.results,period=90) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target) r2, coef, _ = ta_helpers.clenow_momentum(df_target, period) @@ -1028,7 +974,7 @@ def clenow( orient="index", ).transpose() - results = from_dataframe(df_clenow) + results = df_to_basemodel(df_clenow) return CommandOutput(results=results) @@ -1069,11 +1015,11 @@ def ad( >>> ad_data = openbb.ta.ad(data=stock_data.results,offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close", "volume"]) ad_df = pd.DataFrame(df_target.ta.ad(offset=offset).dropna()) - results = from_dataframe(df_target.join(ad_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(ad_df, how="left"), index=True) return CommandOutput(results=results) @@ -1139,26 +1085,15 @@ def adx( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["close", "high", "low"]) adx_df = pd.DataFrame( df_target.ta.adx(length=length, scalar=scalar, drift=drift).dropna() ) - results = from_dataframe(df_target.join(adx_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(adx_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _adx_export_plotly( - data=df_target, - column="close", - adx_data=adx_df, - adx_columns=adx_df.columns, - title=f"ADX {str(length)}-{str(scalar)}-{str(drift)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -1221,23 +1156,13 @@ def wma( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() wma_df = pd.DataFrame(df_target.ta.wma(length=length, offset=offset).dropna()) - results = from_dataframe(df_target.join(wma_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(wma_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _wma_export_plotly( - data=df_target, - wma_data=wma_df, - wma_column=wma_df.columns[0], - title=f"WMA {str(length)} with a offset of {str(offset)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -1271,11 +1196,11 @@ def cci( The CCI data. """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["close", "high", "low"]) cci_df = pd.DataFrame(df_target.ta.cci(length=length, scalar=scalar).dropna()) - results = from_dataframe(df_target.join(cci_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(cci_df, how="left"), index=True) return CommandOutput(results=results) @@ -1344,25 +1269,15 @@ def rsi( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() rsi_df = pd.DataFrame( df_target.ta.rsi(length=length, scalar=scalar, drift=drift).dropna() ) - results = from_dataframe(df_target.join(rsi_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(rsi_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _rsi_export_plotly( - data=df_target, - rsi_data=rsi_df, - rsi_column=rsi_df.columns[0], - title=f"RSI {str(length)} with a scalar of {str(scalar)} and a drift of {str(drift)}", - ), - ], - ) + return CommandOutput(results=results) @router.command(methods=["POST"]) @@ -1416,7 +1331,7 @@ def stoch( >>> stoch_data = openbb.ta.stoch(data=stock_data.results, fast_k_period=14, slow_d_period=3, slow_k_period=3) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["close", "high", "low"]) stoch_df = pd.DataFrame( df_target.ta.stoch( @@ -1426,7 +1341,7 @@ def stoch( ).dropna() ) - results = from_dataframe(df_target.join(stoch_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(stoch_df, how="left"), index=True) return CommandOutput(results=results) @@ -1483,7 +1398,7 @@ def kc( >>> kc_data = openbb.ta.kc(data=stock_data.results, length=20, scalar=20, ma_mode="ema", offset=0) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close"]) kc_df = pd.DataFrame( df_target.ta.kc( @@ -1494,7 +1409,7 @@ def kc( ).dropna() ) - results = from_dataframe(df_target.join(kc_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(kc_df, how="left"), index=True) return CommandOutput(results=results) @@ -1531,11 +1446,11 @@ def cg( >>> cg_data = openbb.ta.cg(data=stock_data.results, length=14) """ - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close"]) cg_df = pd.DataFrame(df_target.ta.cg(length=length).dropna()) - results = from_dataframe(df_target.join(cg_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(cg_df, how="left"), index=True) return CommandOutput(results=results) @@ -1610,12 +1525,12 @@ def cones( if lower_q > upper_q: lower_q, upper_q = upper_q, lower_q - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_cones = ta_helpers.calculate_cones( data=df, lower_q=lower_q, upper_q=upper_q, model=model, is_crypto=is_crypto ) - results = from_dataframe(df_cones, index=True) + results = df_to_basemodel(df_cones, index=True) return CommandOutput(results=results) @@ -1685,20 +1600,10 @@ def ema( return Plotly(content=fig.to_plotly_json()) - df = to_dataframe(data, index=index) + df = basemodel_to_df(data, index=index) df_target = get_target_column(df, target).to_frame() ema_df = pd.DataFrame(df_target.ta.ema(length=length, offset=offset).dropna()) - results = from_dataframe(df_target.join(ema_df, how="left"), index=True) + results = df_to_basemodel(df_target.join(ema_df, how="left"), index=True) - return CommandOutput( - results=results, - export_list=[ - _ema_export_plotly( - data=df_target, - ema_data=ema_df, - ema_column=ema_df.columns[0], - title=f"EMA {str(length)} with a offset of {str(offset)}", - ), - ], - ) + return CommandOutput(results=results) diff --git a/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/utils.py b/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/utils.py index 1f02aee8628..2a7fba6f547 100644 --- a/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/utils.py +++ b/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/utils.py @@ -24,3 +24,9 @@ def df_to_basemodel( # TODO: Move utils in common used in ta and qa to here + +def get_target_column(*args, **kwargs): + raise NotImplementedError + +def get_target_columns(*args, **kwargs): + raise NotImplementedError