diff --git a/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py b/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py index 0566bfe9d1b5..850c18af5aee 100644 --- a/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py +++ b/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py @@ -240,6 +240,8 @@ def onchain(self): `lt_chart`: Prints table showing Trades on Decentralized Exchanges aggregated by DEX or Month\n `prices`: Get token historical prices with volume and market cap, and average price. [Source: Ethplorer]\n `prices_chart`: Display token historical prices with volume and market cap, and average price.\n + `query`: Get query data\n + `query_chart`: Display query results from shroom\n `query_graph`: Helper methods for querying graphql api. [Source: https://bitquery.io/]\n `th`: Get info about token historical transactions. [Source: Ethplorer]\n `th_chart`: Display info about token history. [Source: Ethplorer]\n diff --git a/openbb_terminal/core/sdk/models/crypto_sdk_model.py b/openbb_terminal/core/sdk/models/crypto_sdk_model.py index b25092e17f2b..5dcd4460b22e 100644 --- a/openbb_terminal/core/sdk/models/crypto_sdk_model.py +++ b/openbb_terminal/core/sdk/models/crypto_sdk_model.py @@ -429,6 +429,8 @@ class CryptoOnChain(Category): `lt_chart`: Prints table showing Trades on Decentralized Exchanges aggregated by DEX or Month\n `prices`: Get token historical prices with volume and market cap, and average price. [Source: Ethplorer]\n `prices_chart`: Display token historical prices with volume and market cap, and average price.\n + `query`: Get query data\n + `query_chart`: Display query results from shroom\n `query_graph`: Helper methods for querying graphql api. [Source: https://bitquery.io/]\n `th`: Get info about token historical transactions. [Source: Ethplorer]\n `th_chart`: Display info about token history. [Source: Ethplorer]\n @@ -497,6 +499,8 @@ def __init__(self): self.prices_chart = ( lib.crypto_onchain_ethplorer_view.display_token_historical_prices ) + self.query = lib.crypto_onchain_shroom_model.get_query_data + self.query_chart = lib.crypto_onchain_shroom_view.display_query self.query_graph = lib.crypto_onchain_bitquery_model.query_graph self.th = lib.crypto_onchain_ethplorer_model.get_token_history self.th_chart = lib.crypto_onchain_ethplorer_view.display_token_history diff --git a/openbb_terminal/core/sdk/models/forecast_sdk_model.py b/openbb_terminal/core/sdk/models/forecast_sdk_model.py index dacbfa927a35..be6fbc3e4f0d 100644 --- a/openbb_terminal/core/sdk/models/forecast_sdk_model.py +++ b/openbb_terminal/core/sdk/models/forecast_sdk_model.py @@ -78,6 +78,7 @@ def __init__(self): if not lib.FORECASTING_TOOLKIT_ENABLED: # pylint: disable=C0415 + from openbb_terminal.rich_config import console console.print(lib.FORECASTING_TOOLKIT_WARNING) diff --git a/openbb_terminal/core/sdk/models/portfolio_sdk_model.py b/openbb_terminal/core/sdk/models/portfolio_sdk_model.py index 14457d671fdf..bc4558a9aea6 100644 --- a/openbb_terminal/core/sdk/models/portfolio_sdk_model.py +++ b/openbb_terminal/core/sdk/models/portfolio_sdk_model.py @@ -178,6 +178,7 @@ def __init__(self): if not lib.OPTIMIZATION_TOOLKIT_ENABLED: # pylint: disable=C0415 + from openbb_terminal.rich_config import console console.print(lib.OPTIMIZATION_TOOLKIT_WARNING) diff --git a/openbb_terminal/core/sdk/sdk_helpers.py b/openbb_terminal/core/sdk/sdk_helpers.py index d286d4421355..8587c6a81177 100644 --- a/openbb_terminal/core/sdk/sdk_helpers.py +++ b/openbb_terminal/core/sdk/sdk_helpers.py @@ -1,4 +1,5 @@ """OpenBB Terminal SDK Helpers.""" + import json from inspect import signature from logging import Logger, getLogger @@ -19,25 +20,31 @@ SETTINGS_ENV_FILE.parent.mkdir(parents=True, exist_ok=True) + if ( not FORECASTING_TOOLKIT_ENABLED and not get_current_system().DISABLE_FORECASTING_WARNING ): set_system_variable("DISABLE_FORECASTING_WARNING", True) + console.print(FORECASTING_TOOLKIT_WARNING) + if ( not OPTIMIZATION_TOOLKIT_ENABLED and not get_current_system().DISABLE_OPTIMIZATION_WARNING ): set_system_variable("DISABLE_OPTIMIZATION_WARNING", True) + console.print(OPTIMIZATION_TOOLKIT_WARNING) def clean_attr_desc(attr: Optional[Any] = None) -> Optional[str]: """Clean the attribute description.""" + if attr.__doc__ is None: return None + return ( attr.__doc__.splitlines()[1].lstrip() if not attr.__doc__.splitlines()[0] @@ -49,6 +56,7 @@ def clean_attr_desc(attr: Optional[Any] = None) -> Optional[str]: def class_repr(cls_dict: Dict[str, Any]) -> list: """Return the representation of the class.""" + return [ f" {k}: {clean_attr_desc(v)}\n" for k, v in cls_dict.items() @@ -59,7 +67,9 @@ def class_repr(cls_dict: Dict[str, Any]) -> list: class Operation: def __init__(self, name: str, trail: str, func: Callable) -> None: self._trail = trail + self._method = func + self._name = name for attr in [ @@ -71,50 +81,65 @@ def __init__(self, name: str, trail: str, func: Callable) -> None: "__module__", ]: setattr(self.__class__, attr, getattr(func, attr)) + setattr(self, attr, getattr(func, attr)) self.__signature__ = signature(func) + self.__class__.__signature__ = signature(func) def __call__(self, *args: Any, **kwargs: Any) -> Any: method = self._method # We make a copy of the kwargs to avoid modifying the original + log_kwargs = kwargs.copy() + log_kwargs["chart"] = "chart" in self._name operation_logger = OperationLogger( trail=self._trail, method_chosen=method, args=args, kwargs=log_kwargs ) + operation_logger.log_before_call() + method_result = method(*args, **kwargs) + operation_logger.log_after_call(method_result=method_result) return method_result def about(self): # pylint: disable=C0415 + import webbrowser trail = "/".join(self._trail.split(".")).replace("_chart", "") + url = f"https://docs.openbb.co/sdk/reference/{trail}" + webbrowser.open(url) class Category: + """The base class that all categories must inherit from.""" _location_path: str = "" def __init__(self, *args, **kwargs): """Initialize the class""" + super().__init__(*args, **kwargs) def __repr__(self): """Return the representation of the class.""" + repr_docs = [] + if submodules := class_repr(self.__class__.__dict__): repr_docs += ["\nSubmodules:\n"] + submodules + if attributes := class_repr(self.__dict__): repr_docs += ["\nAttributes:\n"] + attributes @@ -122,9 +147,13 @@ def __repr__(self): def __getattribute__(self, name: str): """We override the __getattribute__ method and wrap all callable + attributes with a wrapper that logs the call and the result. + """ + attr = super().__getattribute__(name) + if isinstance(attr, Operation) or name.startswith("__"): return attr @@ -132,18 +161,24 @@ def __getattribute__(self, name: str): if callable(attr) and not isinstance(attr, Operation): # We set the attribute to the wrapped function so that we don't + # have to wrap it when called again. + setattr(self, name, Operation(name=name, trail=trail, func=attr)) + return getattr(self, name) return attr def about(self): # pylint: disable=C0415 + import webbrowser trail = "/".join(self._location_path.split(".")) + url = f"https://docs.openbb.co/sdk/reference/{trail}" + webbrowser.open(url) @@ -159,9 +194,13 @@ def __init__( logger: Optional[Logger] = None, ) -> None: self.__trail = trail + self.__method_chosen = method_chosen + self.__logger = logger or getLogger(self.__method_chosen.__module__) + self.__args = args + self.__kwargs = kwargs def log_before_call( @@ -169,7 +208,9 @@ def log_before_call( ): if self.__check_logging_conditions(): logger = self.__logger + self.__log_start(logger=logger, method_chosen=self.__method_chosen) + self.__log_method_info( logger=logger, trail=self.__trail, @@ -194,15 +235,19 @@ def __log_method_info( kwargs: Any, ): merged_args = self.__merge_function_args(method_chosen, args, kwargs) + merged_args = self.__remove_key_and_log_state( method_chosen.__module__, merged_args ) logging_info: Dict[str, Any] = {} + logging_info["INPUT"] = { key: str(value)[:100] for key, value in merged_args.items() } + logging_info["VIRTUAL_PATH"] = trail + logging_info["CHART"] = kwargs.get("chart", False) logger.info( @@ -213,64 +258,106 @@ def __log_method_info( @staticmethod def __merge_function_args(func: Callable, args: tuple, kwargs: dict) -> dict: """ + Merge user input args and kwargs with signature defaults into a dictionary. + + Parameters + ---------- + + func : Callable + Function to get the args from + args : tuple + Positional args + kwargs : dict + Keyword args + + Returns + ---------- + dict + Merged user args and signature defaults + """ + import inspect # pylint: disable=C0415 sig = inspect.signature(func) + sig_args = { param.name: param.default for param in sig.parameters.values() if param.default is not inspect.Parameter.empty } + # merge args with sig_args + sig_args.update(dict(zip(sig.parameters, args))) + # add kwargs elements to sig_args + sig_args.update(kwargs) + return sig_args @staticmethod def __remove_key_and_log_state(func_module: str, function_args: dict) -> dict: """ + Remove API key from the function args and log state of keys. + + Parameters + ---------- + func_module : str + Module of the function + function_args : dict + Function args + + Returns + ---------- + dict + Function args with API key removed + """ if func_module == "openbb_terminal.keys_model": # pylint: disable=C0415 + from openbb_terminal.core.log.generation.settings_logger import ( log_credentials, ) # remove key if defined + function_args.pop("key", None) + log_credentials() + return function_args def log_after_call( @@ -279,15 +366,18 @@ def log_after_call( ): if self.__check_logging_conditions(): logger = self.__logger + self.__log_exception_if_any( logger=logger, method_result=method_result, method_chosen=self.__method_chosen, ) + self.__log_end( logger=logger, method_chosen=self.__method_chosen, ) + OperationLogger.last_method = { f"{self.__method_chosen.__module__}.{self.__method_chosen.__name__}": { "args": str(self.__args)[:100], @@ -326,41 +416,75 @@ def __check_last_method(self) -> bool: "kwargs": str(self.__kwargs)[:100], } } + return OperationLogger.last_method == current_method def get_sdk_imports_text() -> str: """Return the text for the SDK imports.""" + sdk_imports = """\"\"\"OpenBB Terminal SDK.\"\"\" + # ######### THIS FILE IS AUTO GENERATED - ANY CHANGES WILL BE VOID ######### # + # flake8: noqa + # pylint: disable=unused-import,wrong-import-order + # pylint: disable=C0302,W0611,R0902,R0903,C0412,C0301,not-callable + import logging + + import openbb_terminal.config_terminal as cfg + from openbb_terminal import helper_funcs as helper # noqa: F401 + from openbb_terminal.core.plots.plotly_helper import theme # noqa: F401 + + from openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model import Coin + from openbb_terminal.dashboards.dashboards_controller import DashboardsController + from openbb_terminal.helper_classes import TerminalStyle # noqa: F401 + from openbb_terminal.reports import widget_helpers as widgets # noqa: F401 + from openbb_terminal.reports.reports_controller import ReportController + + import openbb_terminal.core.sdk.sdk_init as lib + from openbb_terminal.core.sdk import ( + controllers as ctrl, + models as model, + ) + from openbb_terminal.core.session.current_system import get_current_system + from openbb_terminal.core.session.current_user import is_local + from openbb_terminal.terminal_helper import is_auth_enabled + + cfg.setup_config_terminal(is_sdk=True) + + logger = logging.getLogger(__name__) + cfg.theme.applyMPLstyle() + \r\r\r + """ + return "\r".join(sdk_imports.splitlines()) diff --git a/openbb_terminal/core/sdk/sdk_init.py b/openbb_terminal/core/sdk/sdk_init.py index 088a991feb70..2fff36da3312 100644 --- a/openbb_terminal/core/sdk/sdk_init.py +++ b/openbb_terminal/core/sdk/sdk_init.py @@ -1,47 +1,78 @@ # flake8: noqa pylint: disable=R0402,C0412,unused-import + # noqa: F401 # Session + from openbb_terminal.core.session import sdk_session + # Alternative + import openbb_terminal.alternative.hackernews_model as alt_hackernews_model + import openbb_terminal.alternative.hackernews_view as alt_hackernews_view + import openbb_terminal.alternative.oss.github_model as alt_oss_github_model + import openbb_terminal.alternative.oss.github_view as alt_oss_github_view + import openbb_terminal.alternative.oss.runa_model as alt_oss_runa_model + import openbb_terminal.alternative.oss.runa_view as alt_oss_runa_view + import openbb_terminal.alternative.realestate.landRegistry_model as alt_realestate_landRegistry_model + # Crypto Helpers + import openbb_terminal.cryptocurrency.cryptocurrency_helpers as crypto_helpers + # ETF + import openbb_terminal.etf.discovery.wsj_model as etf_disc_wsj_model + import openbb_terminal.etf.discovery.wsj_view as etf_disc_wsj_view + # Forex Helpers + import openbb_terminal.forex.forex_helper as forex_helper + import openbb_terminal.forex.oanda.oanda_model as forex_oanda_model + import openbb_terminal.forex.oanda.oanda_view as forex_oanda_view + # Keys + import openbb_terminal.keys_model as keys_model + import openbb_terminal.stocks.options.hedge.hedge_model as stocks_options_hedge_model + import openbb_terminal.stocks.options.hedge.hedge_view as stocks_options_hedge_view + import openbb_terminal.stocks.quantitative_analysis.beta_model as stocks_qa_beta_model + import openbb_terminal.stocks.quantitative_analysis.beta_view as stocks_qa_beta_view + # Stocks - Quantitative Analysis + import openbb_terminal.stocks.quantitative_analysis.factors_model as stocks_qa_factors_model + import openbb_terminal.stocks.quantitative_analysis.factors_view as stocks_qa_factors_view + from openbb_terminal.alternative.covid import ( covid_model as alt_covid_model, covid_view as alt_covid_view, ) + # Common + from openbb_terminal.common import ( common_model, feedparser_model as common_feedparser_model, @@ -52,7 +83,9 @@ newsapi_view as common_newsapi_view, ) + # Common Behavioural Analysis + from openbb_terminal.common.behavioural_analysis import ( finbrain_model as stocks_ba_finbrain_model, finbrain_view as stocks_ba_finbrain_view, @@ -66,7 +99,9 @@ twitter_view as stocks_ba_twitter_view, ) + # Common Quantitative Analysis + from openbb_terminal.common.quantitative_analysis import ( qa_model as common_qa_model, qa_view as common_qa_view, @@ -74,7 +109,9 @@ rolling_view as common_qa_rolling_view, ) + # Common Technical Analysis + from openbb_terminal.common.technical_analysis import ( custom_indicators_model as common_ta_custom_indicators_model, custom_indicators_view as common_ta_custom_indicators_view, @@ -89,12 +126,15 @@ volume_model as common_ta_volume_model, volume_view as common_ta_volume_view, ) + from openbb_terminal.cryptocurrency import ( crypto_models, pyth_model as crypto_pyth_model, ) + # Cryptocurrency Defi + from openbb_terminal.cryptocurrency.defi import ( coindix_model as crypto_defi_coindix_model, coindix_view as crypto_defi_coindix_view, @@ -114,7 +154,9 @@ terramoney_fcd_view as crypto_defi_terramoney_fcd_view, ) + # Cryptocurrency Discovery + from openbb_terminal.cryptocurrency.discovery import ( coinmarketcap_model as crypto_disc_coinmarketcap_model, coinmarketcap_view as crypto_disc_coinmarketcap_view, @@ -127,7 +169,9 @@ sdk_helpers as crypto_disc_sdk_helpers, ) + # Cryptocurrency Due Diligence + from openbb_terminal.cryptocurrency.due_diligence import ( binance_model as crypto_dd_binance_model, binance_view as crypto_dd_binance_view, @@ -152,7 +196,9 @@ sdk_helper as crypto_dd_sdk_helper, ) + # Cryptocurrency NFT + from openbb_terminal.cryptocurrency.nft import ( nftpricefloor_model as crypto_nft_pricefloor_model, nftpricefloor_view as crypto_nft_pricefloor_view, @@ -160,7 +206,9 @@ opensea_view as crypto_nft_opensea_view, ) + # Cryptocurrency Onchain + from openbb_terminal.cryptocurrency.onchain import ( bitquery_model as crypto_onchain_bitquery_model, bitquery_view as crypto_onchain_bitquery_view, @@ -172,9 +220,13 @@ ethplorer_view as crypto_onchain_ethplorer_view, whale_alert_model as crypto_onchain_whale_alert_model, whale_alert_view as crypto_onchain_whale_alert_view, + shroom_model as crypto_onchain_shroom_model, + shroom_view as crypto_onchain_shroom_view, ) + # Cryptocurrency Overview + from openbb_terminal.cryptocurrency.overview import ( blockchaincenter_model as crypto_ov_blockchaincenter_model, blockchaincenter_view as crypto_ov_blockchaincenter_view, @@ -197,13 +249,17 @@ withdrawalfees_view as crypto_ov_withdrawalfees_view, ) + # Cryptocurrency Tools + from openbb_terminal.cryptocurrency.tools import ( tools_model as crypto_tools_model, tools_view as crypto_tools_view, ) + # Econometrics + from openbb_terminal.econometrics import ( econometrics_model, econometrics_view, @@ -211,7 +267,9 @@ regression_view as econometrics_regression_view, ) + # Fixedincome + from openbb_terminal.fixedincome import ( fred_model as fixedincome_fred_model, ecb_model as fixedincome_ecb_model, @@ -221,6 +279,7 @@ # Economy + from openbb_terminal.economy import ( alphavantage_model as economy_alphavantage_model, alphavantage_view as economy_alphavantage_view, @@ -240,7 +299,9 @@ oecd_view as economy_oecd_view, ) + # ETF's + from openbb_terminal.etf import ( financedatabase_model as etf_financedatabase_model, financedatabase_view as etf_financedatabase_view, @@ -250,7 +311,9 @@ fmp_view as etf_fmp_view, ) + # Forex + from openbb_terminal.forex import ( av_model as forex_av_model, av_view as forex_av_view, @@ -259,20 +322,26 @@ sdk_helpers as forex_sdk_helpers, ) + # Funds + from openbb_terminal.mutual_funds import ( mstarpy_model as funds_mstarpy_model, mstarpy_view as funds_mstarpy_view, ) + # Futures + from openbb_terminal.futures import ( yfinance_model as futures_yfinance_model, yfinance_view as futures_yfinance_view, sdk_helper as futures_sdk_model, ) + # Stocks Helpers + from openbb_terminal.stocks import ( cboe_model as stocks_cboe_model, cboe_view as stocks_cboe_view, @@ -281,13 +350,17 @@ stocks_view, ) + # Stocks -Behavioral Analysis + from openbb_terminal.stocks.behavioural_analysis import ( finnhub_model as stocks_ba_finnhub_model, finnhub_view as stocks_ba_finnhub_view, ) + # Stocks - Comparison Analysis + from openbb_terminal.stocks.comparison_analysis import ( finbrain_model as stocks_ca_finbrain_model, finbrain_view as stocks_ca_finbrain_view, @@ -301,7 +374,9 @@ yahoo_finance_view as stocks_ca_yahoo_finance_view, ) + # Stocks - Dark Pool Shorts + from openbb_terminal.stocks.dark_pool_shorts import ( finra_model as stocks_dps_finra_model, finra_view as stocks_dps_finra_view, @@ -318,7 +393,9 @@ yahoofinance_model as stocks_dps_yahoofinance_model, ) + # Stocks - Fundamental Discovery + from openbb_terminal.stocks.discovery import ( ark_model as stocks_disc_ark_model, finnhub_model as stocks_disc_finnhub_model, @@ -329,7 +406,9 @@ yahoofinance_model as stocks_disc_yahoofinance_model, ) + # Stocks - Fundamental Analysis + from openbb_terminal.stocks.fundamental_analysis import ( av_model as stocks_fa_av_model, av_view as stocks_fa_av_view, @@ -357,13 +436,17 @@ yahoo_finance_view as stocks_fa_yahoo_finance_view, ) + # Government + from openbb_terminal.stocks.government import ( quiverquant_model as stocks_gov_quiverquant_model, quiverquant_view as stocks_gov_quiverquant_view, ) + # Stocks - Insider Trading + from openbb_terminal.stocks.insider import ( businessinsider_model as stocks_insider_businessinsider_model, businessinsider_view as stocks_insider_businessinsider_view, @@ -374,7 +457,9 @@ sdk_helper as stocks_insider_sdk_helper, ) + # Stocks - Options + from openbb_terminal.stocks.options import ( alphaquery_model as stocks_options_alphaquery_model, alphaquery_view as stocks_options_alphaquery_view, @@ -394,18 +479,23 @@ yfinance_model as stocks_options_yfinance_model, yfinance_view as stocks_options_yfinance_view, ) + from openbb_terminal.stocks.options.screen import ( syncretism_model as stocks_options_screen_syncretism_model, syncretism_view as stocks_options_screen_syncretism_view, ) + # Stocks - Screener + from openbb_terminal.stocks.screener import ( finviz_model as stocks_screener_finviz_model, finviz_view as stocks_screener_finviz_view, ) + # Stocks - Technical Analysis + from openbb_terminal.stocks.technical_analysis import ( finbrain_model as stocks_ta_finbrain_model, finbrain_view as stocks_ta_finbrain_view, @@ -415,22 +505,29 @@ tradingview_view as stocks_ta_tradingview_view, ) + # Stocks - Trading Hours + from openbb_terminal.stocks.tradinghours import ( bursa_model as stocks_th_bursa_model, bursa_view as stocks_th_bursa_view, ) + # Forecast Extras + try: import darts # pyright: reportMissingImports=false # If you just import darts this will pass during pip install, this creates + # Failures later on, also importing utils ensures that darts is installed correctly + from darts import utils FORECASTING_TOOLKIT_ENABLED = True + from openbb_terminal.forecast import ( anom_model as forecast_anom_model, anom_view as forecast_anom_view, @@ -474,15 +571,19 @@ trans_view as forecast_trans_view, whisper_model as forecast_whisper_model, ) + except ImportError: FORECASTING_TOOLKIT_ENABLED = False # Portfolio + from openbb_terminal.portfolio import portfolio_model, portfolio_view + try: # pylint: disable=W0611 # noqa: F401 # pyright: reportMissingImports=false + from openbb_terminal.portfolio.portfolio_optimization import ( excel_model as portfolio_optimization_excel_model, optimizer_model as portfolio_optimization_optimizer_model, @@ -492,9 +593,11 @@ ) OPTIMIZATION_TOOLKIT_ENABLED = True + except ModuleNotFoundError: OPTIMIZATION_TOOLKIT_ENABLED = False + FORECASTING_TOOLKIT_WARNING = ( "[yellow]" "Forecasting Toolkit is disabled. " @@ -503,6 +606,7 @@ "\n" "[/yellow]" ) + OPTIMIZATION_TOOLKIT_WARNING = ( "[yellow]" "Portfolio Optimization Toolkit is disabled. " diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index 3f36f6facc10..d1eeeba203e8 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -119,6 +119,7 @@ crypto.onchain.hr,crypto_dd_glassnode_model.get_hashrate,crypto_dd_glassnode_vie crypto.onchain.info,crypto_onchain_ethplorer_model.get_token_info,crypto_onchain_ethplorer_view.display_token_info crypto.onchain.lt,crypto_onchain_bitquery_model.get_dex_trades_by_exchange,crypto_onchain_bitquery_view.display_dex_trades crypto.onchain.prices,crypto_onchain_ethplorer_model.get_token_historical_price,crypto_onchain_ethplorer_view.display_token_historical_prices +crypto.onchain.query,crypto_onchain_shroom_model.get_query_data,crypto_onchain_shroom_view.display_query crypto.onchain.query_graph,crypto_onchain_bitquery_model.query_graph, crypto.onchain.th,crypto_onchain_ethplorer_model.get_token_history,crypto_onchain_ethplorer_view.display_token_history crypto.onchain.token_decimals,crypto_onchain_ethplorer_model.get_token_decimals, diff --git a/openbb_terminal/core/sdk/trailmap.py b/openbb_terminal/core/sdk/trailmap.py index 9ac83c9f6784..663c105276b2 100644 --- a/openbb_terminal/core/sdk/trailmap.py +++ b/openbb_terminal/core/sdk/trailmap.py @@ -19,15 +19,22 @@ def get_signature_parameters( function: Callable[..., Any], globalns: Dict[str, Any] ) -> Dict[str, inspect.Parameter]: signature = inspect.signature(function) + params = {} + cache: dict[str, Any] = {} + for name, parameter in signature.parameters.items(): annotation = parameter.annotation + if annotation is parameter.empty: params[name] = parameter + continue + if annotation is None: params[name] = parameter.replace(annotation=type(None)) + continue if isinstance(annotation, ForwardRef): @@ -44,47 +51,66 @@ def get_signature_parameters( class FuncAttr: def __init__(self) -> None: self.short_doc: Optional[str] = None + self.long_doc: Optional[str] = None + self.func_def: Optional[str] = None + self.path: Optional[str] = None + self.lineon: Optional[int] = None + self.full_path: Optional[str] = None + self.func_unwrapped: Optional[FunctionType] = None + self.func_wrapped: Optional[FunctionType] = None + self.params: Dict[str, inspect.Parameter] = {} def get_func_attrs(self, func: str) -> None: module_path, function_name = func.rsplit(".", 1) + func_attr = getattr(getattr(lib, module_path), function_name) + self.func_wrapped = func_attr add_lineon = 0 + if hasattr(func_attr, "__wrapped__"): while hasattr(func_attr, "__wrapped__"): func_attr = func_attr.__wrapped__ + add_lineon += 1 self.func_unwrapped = func_attr + self.lineon = inspect.getsourcelines(func_attr)[1] + add_lineon self.long_doc = func_attr.__doc__ + self.short_doc = clean_attr_desc(func_attr) for k, p in get_signature_parameters(func_attr, func_attr.__globals__).items(): self.params[k] = p self.path = inspect.getfile(func_attr) + full_path = ( inspect.getfile(func_attr).replace("\\", "/").split("openbb_terminal/")[1] ) + self.full_path = f"openbb_terminal/{full_path}" def get_definition( self, location_path: list, class_attr: str, view: bool = False ) -> str: """Creates the function definition to be used in SDK docs.""" + funcspec = self.params + definition = "" + for arg, param in funcspec.items(): annotation = ( ( @@ -101,50 +127,71 @@ def get_definition( ) default = "" + if param.default is not param.empty: arg_default = ( param.default if param.default is not inspect.Parameter.empty else "None" ) + default = ( f" = {arg_default}" if not isinstance(arg_default, str) else f' = "{arg_default}"' ) + definition += f"{arg}: {annotation}{default}, " definition = definition.rstrip(", ") trail = ".".join([t for t in location_path if t != ""]) + sdk_name = class_attr if not view else f"{class_attr}_chart" trail = trail.replace("root.", "") + sdk_path = f"{f'openbb.{trail}' if trail else 'openbb'}.{sdk_name}" return f"{sdk_path}({definition })" # pylint: disable=R0903 + + class Trailmap: def __init__(self, trailmap: str, model: str, view: Optional[str] = None): self.trailmap: str = trailmap + tmap = trailmap.split(".") + if len(tmap) == 1: tmap = ["root", tmap[0]] + self.class_attr: str = tmap.pop(-1) + self.location_path = tmap + self.model = model + self.view = view if view else None + self.view_name = "_chart" + self.model_func: Optional[str] = f"lib.{model}" if model else None + self.view_func: Optional[str] = f"lib.{view}" if view else None + self.func_attrs: Dict[str, FuncAttr] = {} + self.func_attrs["model"] = FuncAttr() + self.func_attrs["view"] = FuncAttr() + for k, cls in self.func_attrs.items(): if getattr(self, f"{k}_func"): cls.get_func_attrs(getattr(self, f"{k}")) + cls.func_def = cls.get_definition( tmap, self.class_attr, view=k == "view" ) @@ -155,10 +202,14 @@ def get_trailmaps(sort: bool = False) -> List[Trailmap]: def load_csv(path: Optional[Path] = None) -> Dict[str, Dict[str, str]]: path = path or MAP_PATH + df = pd.read_csv(path, keep_default_na=False) + df = df.set_index("trail") + if sort: df = df.sort_index() + df.to_csv(path, index=True) return df.to_dict(orient="index") @@ -167,21 +218,27 @@ def print_error(error: str) -> None: console.print( f"[bold red]{error} is disabled and will not be included in the SDK.[/bold red]" ) + console.print( "[bold red]`poetry install -E all` to install all toolkits.[/bold red]" ) def load(): map_dict = load_csv(path=MAP_PATH) + if lib.FORECASTING_TOOLKIT_ENABLED: map_forecasting_dict = load_csv(path=MAP_FORECASTING_PATH) + map_dict.update(map_forecasting_dict) + else: print_error("Forecasting") if lib.OPTIMIZATION_TOOLKIT_ENABLED: map_optimization_dict = load_csv(path=MAP_OPTIMIZATION_PATH) + map_dict.update(map_optimization_dict) + else: print_error("Optimization") @@ -193,7 +250,9 @@ def load(): for trail, attrs in map_dict.items(): model, view = attrs["model"], attrs["view"] + trail_map = Trailmap(trail, model, view) + trailmaps.append(trail_map) return trailmaps diff --git a/openbb_terminal/cryptocurrency/onchain/onchain_controller.py b/openbb_terminal/cryptocurrency/onchain/onchain_controller.py index 66986be6699e..9b3fea3f691d 100644 --- a/openbb_terminal/cryptocurrency/onchain/onchain_controller.py +++ b/openbb_terminal/cryptocurrency/onchain/onchain_controller.py @@ -22,7 +22,6 @@ ethgasstation_view, ethplorer_model, ethplorer_view, - shroom_model, shroom_view, whale_alert_model, whale_alert_view, @@ -82,9 +81,7 @@ class OnchainController(BaseController): "btccp", "btcct", "btcblockdata", - "dt", - "ds", - "tvl", + "query", ] PATH = "/crypto/onchain/" @@ -101,9 +98,6 @@ def __init__(self, queue: Optional[List[str]] = None): choices: dict = self.choices_default choices["hr"].update({c: {} for c in GLASSNODE_SUPPORTED_HASHRATE_ASSETS}) - choices["ds"].update( - {c: None for c in shroom_model.DAPP_STATS_PLATFORM_CHOICES} - ) self.completer = NestedCompleter.from_nested_dict(choices) @@ -122,9 +116,7 @@ def print_help(self): mt.add_cmd("ueat") mt.add_cmd("ttcp") mt.add_cmd("baas") - mt.add_cmd("dt") - mt.add_cmd("ds") - mt.add_cmd("tvl") + mt.add_cmd("query") mt.add_raw("\n") mt.add_param("_address", self.address or "") mt.add_param("_type", self.address_type or "") @@ -142,136 +134,40 @@ def print_help(self): console.print(text=mt.menu_text, menu="Cryptocurrency - Onchain") @log_start_end(log=logger) - def call_tvl(self, other_args: List[str]): - """Process tvl command""" + def call_query(self, other_args: List[str]): + """Process query command""" parser = argparse.ArgumentParser( add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="tvl", + prog="query", description=""" - Total value locked (TVL) metric - Ethereum ERC20 + Make any flipsidecrypto query [Source:https://docs.flipsidecrypto.com/] - useraddress OR addressname must be provided """, ) parser.add_argument( - "-u", - "--useraddress", - dest="useraddress", + "-q", + "--query", + dest="query", type=str, - help="User address we'd like to take a balance reading of against the contract", - ) - - parser.add_argument( - "-a", - "--addressname", - dest="addressname", - type=str, - help="Address name corresponding to the user address", - ) - - parser.add_argument( - "-s", - "--symbol", - dest="symbol", - type=str, - help="Contract symbol", - default="USDC", - ) - - parser.add_argument( - "-i", - "--interval", - dest="interval", - type=int, - help="Interval in months", - default=12, + nargs="+", + required=not any(["-h" in other_args, "--help" in other_args]), + help="Query to make", ) if other_args and other_args[0][0] != "-": - other_args.insert(0, "-u") + other_args.insert(0, "-q") ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES, limit=10 ) if ns_parser: - shroom_view.display_total_value_locked( - user_address=ns_parser.useraddress, - address_name=ns_parser.addressname, - interval=ns_parser.interval, - symbol=ns_parser.symbol, + shroom_view.display_query( + query=" ".join(ns_parser.query), export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) - def call_ds(self, other_args: List[str]): - """Process ds command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="ds", - description=""" - Get daily transactions for certain symbols in ethereum blockchain - [Source: https://sdk.flipsidecrypto.xyz/shroomdk] - """, - ) - - parser.add_argument( - "-p", - "--platform", - dest="platform", - type=str, - help="Ethereum platform to check fees/number of users over time", - default="curve", - choices=shroom_model.DAPP_STATS_PLATFORM_CHOICES, - ) - - if other_args and other_args[0][0] != "-": - other_args.insert(0, "-p") - - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES, raw=True, limit=10 - ) - - if ns_parser: - shroom_view.display_dapp_stats( - raw=ns_parser.raw, limit=ns_parser.limit, - platform=ns_parser.platform, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) - def call_dt(self, other_args: List[str]): - """Process dt command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="dt", - description=""" - Get daily transactions for certain symbols in ethereum blockchain - [Source: https://sdk.flipsidecrypto.xyz/shroomdk] - """, - ) - - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES - ) - - if ns_parser: - shroom_view.display_daily_transactions( - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, ) @log_start_end(log=logger) diff --git a/openbb_terminal/cryptocurrency/onchain/shroom_model.py b/openbb_terminal/cryptocurrency/onchain/shroom_model.py index cd9a8390125f..5de9d366aa15 100644 --- a/openbb_terminal/cryptocurrency/onchain/shroom_model.py +++ b/openbb_terminal/cryptocurrency/onchain/shroom_model.py @@ -77,6 +77,30 @@ def get_shroom_data(sql: str): return data +@log_start_end(log=logger) +@check_api_key(["API_SHROOM_KEY"]) +def get_query_data(sql: str) -> pd.DataFrame: + """Get query data + + Parameters + ---------- + sql : str + SQL query + + Returns + ------- + pd.DataFrame + DataFrame with query data + """ + data = get_shroom_data(sql) + + if data and data["results"] and data["columnLabels"]: + df = pd.DataFrame(data["results"], columns=data["columnLabels"]) + return df + + return pd.DataFrame() + + @log_start_end(log=logger) @check_api_key(["API_SHROOM_KEY"]) def get_dapp_stats( @@ -99,8 +123,8 @@ def get_dapp_stats( sum(t.fee_usd) as fee, count(distinct(s.from_address)) as n_users, count(distinct(s.amount_usd)) as volume - from ethereum.dex_swaps s - join ethereum.transactions t + from ethereum.core.ez_dex_swaps s + join ethereum.core.fact_transactions t on s.tx_id = t.tx_id where platform = '{platform}' group by date @@ -147,7 +171,7 @@ def get_daily_transactions(symbols: List[str]) -> pd.DataFrame: select date_trunc('day', block_timestamp) as timeframe, {extra_sql} - from ethereum.udm_events + from ethereum.core.udm_events where block_timestamp >= '2020-06-01' -- and amount0_usd > '0' @@ -212,7 +236,7 @@ def get_total_value_locked( symbol, amount_usd/1000000 as amount_usd FROM - ethereum.erc20_balances + ethereum.core.erc20_balances WHERE {extra_sql} symbol = '{symbol}' AND diff --git a/openbb_terminal/cryptocurrency/onchain/shroom_view.py b/openbb_terminal/cryptocurrency/onchain/shroom_view.py index 0f87e1a6ed50..4e4a7a4b5df1 100644 --- a/openbb_terminal/cryptocurrency/onchain/shroom_view.py +++ b/openbb_terminal/cryptocurrency/onchain/shroom_view.py @@ -9,6 +9,7 @@ from openbb_terminal.cryptocurrency.onchain.shroom_model import ( get_daily_transactions, get_dapp_stats, + get_query_data, get_total_value_locked, ) from openbb_terminal.decorators import check_api_key, log_start_end @@ -18,6 +19,39 @@ logger = logging.getLogger(__name__) +@log_start_end(log=logger) +@check_api_key(["API_SHROOM_KEY"]) +def display_query( + query: str, + sheet_name: Optional[str] = None, + limit: int = 10, + export: str = "", +): + """Display query results from shroom + [Source: https://sdk.flipsidecrypto.xyz/shroomdk] + + Parameters + ---------- + query : str + Query string + raw : bool + Show raw data + limit : int + Limit of rows + export : str + Export dataframe data to csv,json,xlsx file + """ + df = get_query_data(query) + if df.empty: + console.print("[red]No data found.[/red]") + elif not df.empty: + print_rich_table(df, limit=limit) + + export_data( + export, os.path.dirname(os.path.abspath(__file__)), "query", df, sheet_name + ) + + @log_start_end(log=logger) @check_api_key(["API_SHROOM_KEY"]) def display_daily_transactions( diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml index 45bd62fb070b..bfbd3a9e388f 100644 --- a/openbb_terminal/miscellaneous/i18n/en.yml +++ b/openbb_terminal/miscellaneous/i18n/en.yml @@ -543,9 +543,7 @@ en: crypto/onchain/ueat: unique ethereum addresses which made a transaction crypto/onchain/ttcp: top traded crypto pairs on given decentralized exchange crypto/onchain/baas: bid, ask prices, average spread for given crypto pair - crypto/onchain/dt: daily transactions of eth tokens - crypto/onchain/ds: stats of eth platform (daily users; fees) - crypto/onchain/tvl: total value locked of ERC20 tokens + crypto/onchain/query: flipsidecrypto query crypto/onchain/_address: Ethereum address crypto/onchain/_type: Address type crypto/onchain/_ethereum_: Ethereum diff --git a/openbb_terminal/miscellaneous/sources/openbb_default.json b/openbb_terminal/miscellaneous/sources/openbb_default.json index 131d9e15894f..640172042dee 100644 --- a/openbb_terminal/miscellaneous/sources/openbb_default.json +++ b/openbb_terminal/miscellaneous/sources/openbb_default.json @@ -1,23 +1,11 @@ { "stocks": { - "search": [ - "FinanceDatabase" - ], - "quote": [ - "FinancialModelingPrep" - ], - "tob": [ - "CBOE" - ], + "search": ["FinanceDatabase"], + "quote": ["FinancialModelingPrep"], + "tob": ["CBOE"], "candle": [], - "codes": [ - "Polygon" - ], - "news": [ - "Feedparser", - "NewsApi", - "Ultima" - ], + "codes": ["Polygon"], + "news": ["Feedparser", "NewsApi", "Ultima"], "load": [ "YahooFinance", "AlphaVantage", @@ -27,85 +15,37 @@ "DataBento" ], "th": { - "open": [ - "Bursa" - ], - "closed": [ - "Bursa" - ], - "all": [ - "Bursa" - ], - "exchange": [ - "Bursa" - ], - "holidays": [ - "PandasMarketCalendars" - ], - "symbol": [ - "FinanceDatabase" - ] + "open": ["Bursa"], + "closed": ["Bursa"], + "all": ["Bursa"], + "exchange": ["Bursa"], + "holidays": ["PandasMarketCalendars"], + "symbol": ["FinanceDatabase"] }, "options": { - "unu": [ - "FDScanner" - ], + "unu": ["FDScanner"], "calc": [], "screen": { - "view": [ - "Syncretism" - ], + "view": ["Syncretism"], "set": [], - "scr": [ - "Syncretism" - ] + "scr": ["Syncretism"] }, - "load": [ - "YahooFinance", - "Tradier", - "Nasdaq", - "Intrinio" - ], - "pcr": [ - "AlphaQuery" - ], - "info": [ - "Barchart" - ], - "hist": [ - "ChartExchange", - "Tradier", - "Intrinio" - ], - "vsurf": [ - "YahooFinance" - ], - "grhist": [ - "Syncretism", - "Intrinio" - ], - "plot": [ - "YahooFinance" - ], - "parity": [ - "YahooFinance" - ], - "binom": [ - "YahooFinance" - ], - "greeks": [ - "YahooFinance" - ], - "eodchain": [ - "Intrinio" - ], + "load": ["YahooFinance", "Tradier", "Nasdaq", "Intrinio"], + "pcr": ["AlphaQuery"], + "info": ["Barchart"], + "hist": ["ChartExchange", "Tradier", "Intrinio"], + "vsurf": ["YahooFinance"], + "grhist": ["Syncretism", "Intrinio"], + "plot": ["YahooFinance"], + "parity": ["YahooFinance"], + "binom": ["YahooFinance"], + "greeks": ["YahooFinance"], + "eodchain": ["Intrinio"], "pricing": { "add": [], "rmv": [], "show": [], - "rnval": [ - "YahooFinance" - ] + "rnval": ["YahooFinance"] }, "hedge": { "list": [], @@ -113,9 +53,7 @@ "add": [], "rmv": [], "sop": [], - "plot": [ - "YahooFinance" - ] + "plot": ["YahooFinance"] } }, "disc": { @@ -173,360 +111,131 @@ ] }, "sia": { - "select": [ - "YahooFinance" - ], + "select": ["YahooFinance"], "clear": [], - "industry": [ - "FinanceDatabase" - ], - "sector": [ - "FinanceDatabase" - ], - "country": [ - "FinanceDatabase" - ], - "mktcap": [ - "FinanceDatabase" - ], - "exchange": [ - "FinanceDatabase" - ], - "period": [ - "StockAnalysis" - ], - "cps": [ - "FinanceDatabase" - ], - "cpic": [ - "FinanceDatabase" - ], - "cpis": [ - "FinanceDatabase" - ], - "cpcs": [ - "FinanceDatabase" - ], - "cpci": [ - "FinanceDatabase" - ], - "metric": [ - "YahooFinance" - ], - "vis": [ - "StockAnalysis" - ] + "industry": ["FinanceDatabase"], + "sector": ["FinanceDatabase"], + "country": ["FinanceDatabase"], + "mktcap": ["FinanceDatabase"], + "exchange": ["FinanceDatabase"], + "period": ["StockAnalysis"], + "cps": ["FinanceDatabase"], + "cpic": ["FinanceDatabase"], + "cpis": ["FinanceDatabase"], + "cpcs": ["FinanceDatabase"], + "cpci": ["FinanceDatabase"], + "metric": ["YahooFinance"], + "vis": ["StockAnalysis"] }, "dps": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ], - "shorted": [ - "YahooFinance" - ], - "ctb": [ - "InteractiveBrokers", - "Stocksera" - ], - "hsi": [ - "Shortinterest" - ], - "prom": [ - "FINRA" - ], - "pos": [ - "Stockgrid" - ], - "sidtc": [ - "Stockgrid" - ], - "dpotc": [ - "FINRA" - ], - "ftd": [ - "SEC" - ], - "spos": [ - "Stockgrid" - ], - "psi": [ - "Stockgrid", - "Quandl" - ] + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], + "shorted": ["YahooFinance"], + "ctb": ["InteractiveBrokers", "Stocksera"], + "hsi": ["Shortinterest"], + "prom": ["FINRA"], + "pos": ["Stockgrid"], + "sidtc": ["Stockgrid"], + "dpotc": ["FINRA"], + "ftd": ["SEC"], + "spos": ["Stockgrid"], + "psi": ["Stockgrid", "Quandl"] }, "scr": { "view": [], "set": [], - "historical": [ - "YahooFinance" - ], - "overview": [ - "Finviz" - ], - "valuation": [ - "Finviz" - ], - "financial": [ - "Finviz" - ], - "ownership": [ - "Finviz" - ], - "performance": [ - "Finviz" - ], - "technical": [ - "Finviz" - ], - "arktrades": [ - "Cathiesark" - ] + "historical": ["YahooFinance"], + "overview": ["Finviz"], + "valuation": ["Finviz"], + "financial": ["Finviz"], + "ownership": ["Finviz"], + "performance": ["Finviz"], + "technical": ["Finviz"], + "arktrades": ["Cathiesark"] }, "ins": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ], + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], "view": [], "set": [], - "filter": [ - "OpenInsider" - ], - "lcb": [ - "OpenInsider" - ], - "lpsb": [ - "OpenInsider" - ], - "lit": [ - "OpenInsider" - ], - "lip": [ - "OpenInsider" - ], - "blip": [ - "OpenInsider" - ], - "blop": [ - "OpenInsider" - ], - "blcp": [ - "OpenInsider" - ], - "lis": [ - "OpenInsider" - ], - "blis": [ - "OpenInsider" - ], - "blos": [ - "OpenInsider" - ], - "blcs": [ - "OpenInsider" - ], - "topt": [ - "OpenInsider" - ], - "toppw": [ - "OpenInsider" - ], - "toppm": [ - "OpenInsider" - ], - "tipt": [ - "OpenInsider" - ], - "tippw": [ - "OpenInsider" - ], - "tippm": [ - "OpenInsider" - ], - "tist": [ - "OpenInsider" - ], - "tispw": [ - "OpenInsider" - ], - "tispm": [ - "OpenInsider" - ], - "stats": [ - "OpenInsider" - ], - "act": [ - "BusinessInsider" - ], - "lins": [ - "Finviz" - ] + "filter": ["OpenInsider"], + "lcb": ["OpenInsider"], + "lpsb": ["OpenInsider"], + "lit": ["OpenInsider"], + "lip": ["OpenInsider"], + "blip": ["OpenInsider"], + "blop": ["OpenInsider"], + "blcp": ["OpenInsider"], + "lis": ["OpenInsider"], + "blis": ["OpenInsider"], + "blos": ["OpenInsider"], + "blcs": ["OpenInsider"], + "topt": ["OpenInsider"], + "toppw": ["OpenInsider"], + "toppm": ["OpenInsider"], + "tipt": ["OpenInsider"], + "tippw": ["OpenInsider"], + "tippm": ["OpenInsider"], + "tist": ["OpenInsider"], + "tispw": ["OpenInsider"], + "tispm": ["OpenInsider"], + "stats": ["OpenInsider"], + "act": ["BusinessInsider"], + "lins": ["Finviz"] }, "gov": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ], - "lasttrades": [ - "QuiverQuant" - ], - "topbuys": [ - "QuiverQuant" - ], - "topsells": [ - "QuiverQuant" - ], - "lastcontracts": [ - "QuiverQuant" - ], - "qtrcontracts": [ - "QuiverQuant" - ], - "toplobbying": [ - "QuiverQuant" - ], - "gtrades": [ - "QuiverQuant" - ], - "contracts": [ - "QuiverQuant" - ], - "histcont": [ - "QuiverQuant" - ], - "lobbying": [ - "QuiverQuant" - ] + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], + "lasttrades": ["QuiverQuant"], + "topbuys": ["QuiverQuant"], + "topsells": ["QuiverQuant"], + "lastcontracts": ["QuiverQuant"], + "qtrcontracts": ["QuiverQuant"], + "toplobbying": ["QuiverQuant"], + "gtrades": ["QuiverQuant"], + "contracts": ["QuiverQuant"], + "histcont": ["QuiverQuant"], + "lobbying": ["QuiverQuant"] }, "ba": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ], - "headlines": [ - "FinBrain" - ], - "snews": [ - "Finnhub" - ], - "wsb": [ - "Reddit" - ], - "spacc": [ - "Reddit" - ], - "redditsent": [ - "Reddit" - ], - "popular": [ - "Reddit" - ], - "getdd": [ - "Reddit" - ], - "trending": [ - "Stocktwits" - ], - "stalker": [ - "Stocktwits" - ], - "bullbear": [ - "Stocktwits" - ], - "messages": [ - "Stocktwits" - ], - "infer": [ - "Twitter" - ], - "sentiment": [ - "Twitter" - ], - "mentions": [ - "Google" - ], - "regions": [ - "Google" - ], - "interest": [ - "Google" - ], - "queries": [ - "Google" - ], - "rise": [ - "Google" - ] + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], + "headlines": ["FinBrain"], + "snews": ["Finnhub"], + "wsb": ["Reddit"], + "spacc": ["Reddit"], + "redditsent": ["Reddit"], + "popular": ["Reddit"], + "getdd": ["Reddit"], + "trending": ["Stocktwits"], + "stalker": ["Stocktwits"], + "bullbear": ["Stocktwits"], + "messages": ["Stocktwits"], + "infer": ["Twitter"], + "sentiment": ["Twitter"], + "mentions": ["Google"], + "regions": ["Google"], + "interest": ["Google"], + "queries": ["Google"], + "rise": ["Google"] }, "ca": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ], - "tsne": [ - "YahooFinance" - ], - "get": [ - "Finviz", - "Polygon", - "Finnhub" - ], + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], + "tsne": ["YahooFinance"], + "get": ["Finviz", "Polygon", "Finnhub"], "set": [], "add": [], "rmv": [], - "historical": [ - "YahooFinance" - ], - "hcorr": [ - "YahooFinance" - ], - "volume": [ - "YahooFinance" - ], - "income": [ - "MarketWatch" - ], - "balance": [ - "MarketWatch" - ], - "cashflow": [ - "MarketWatch" - ], - "sentiment": [ - "FinBrain" - ], - "scorr": [ - "FinBrain" - ], - "overview": [ - "Finviz" - ], - "valuation": [ - "Finviz" - ], - "financial": [ - "Finviz" - ], - "ownership": [ - "Finviz" - ], - "performance": [ - "Finviz" - ], - "technical": [ - "Finviz" - ] + "historical": ["YahooFinance"], + "hcorr": ["YahooFinance"], + "volume": ["YahooFinance"], + "income": ["MarketWatch"], + "balance": ["MarketWatch"], + "cashflow": ["MarketWatch"], + "sentiment": ["FinBrain"], + "scorr": ["FinBrain"], + "overview": ["Finviz"], + "valuation": ["Finviz"], + "financial": ["Finviz"], + "ownership": ["Finviz"], + "performance": ["Finviz"], + "technical": ["Finviz"] }, "fa": { "load": [ @@ -651,760 +360,277 @@ ] }, "bt": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ], - "whatif": [ - "YahooFinance" - ] + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], + "whatif": ["YahooFinance"] }, "ta": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ], - "recom": [ - "TradingView" - ], - "summary": [ - "FinBrain" - ], - "tv": [ - "TradingView" - ] + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], + "recom": ["TradingView"], + "summary": ["FinBrain"], + "tv": ["TradingView"] }, "qa": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon", - "EODHD" - ] + "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"] } }, "crypto": { - "price": [ - "Pyth" - ], - "load": [ - "YahooFinance", - "CoinGecko", - "CCXT" - ], - "find": [ - "CoinGecko", - "CoinPaprika", - "Binance", - "Coinbase", - "YahooFinance" - ], - "headlines": [ - "FinBrain" - ], - "prt": [ - "CoinGecko" - ], + "price": ["Pyth"], + "load": ["YahooFinance", "CoinGecko", "CCXT"], + "find": ["CoinGecko", "CoinPaprika", "Binance", "Coinbase", "YahooFinance"], + "headlines": ["FinBrain"], + "prt": ["CoinGecko"], "disc": { - "top": [ - "CoinGecko", - "CoinMarketCap" - ], - "trending": [ - "CoinGecko" - ], - "gainers": [ - "CoinGecko" - ], - "losers": [ - "CoinGecko" - ], - "search": [ - "CoinPaprika" - ], - "nft": [ - "DappRadar" - ], - "games": [ - "DappRadar" - ], - "dapps": [ - "DappRadar" - ], - "dex": [ - "DappRadar" - ] + "top": ["CoinGecko", "CoinMarketCap"], + "trending": ["CoinGecko"], + "gainers": ["CoinGecko"], + "losers": ["CoinGecko"], + "search": ["CoinPaprika"], + "nft": ["DappRadar"], + "games": ["DappRadar"], + "dapps": ["DappRadar"], + "dex": ["DappRadar"] }, "ov": { - "global": [ - "CoinGecko", - "CoinPaprika" - ], - "defi": [ - "CoinGecko" - ], - "stables": [ - "CoinGecko" - ], - "exchanges": [ - "CoinGecko", - "CoinPaprika" - ], - "exrates": [ - "CoinGecko" - ], - "indexes": [ - "CoinGecko" - ], - "derivatives": [ - "CoinGecko" - ], - "categories": [ - "CoinGecko" - ], - "hold": [ - "CoinGecko" - ], - "hm": [ - "CoinGecko" - ], - "info": [ - "CoinPaprika" - ], - "markets": [ - "CoinPaprika" - ], - "exmarkets": [ - "CoinPaprika" - ], - "platforms": [ - "CoinPaprika" - ], - "contracts": [ - "CoinPaprika" - ], - "pairs": [ - "Coinbase" - ], - "news": [ - "CryptoPanic" - ], - "wf": [ - "WithdrawalFees" - ], - "ewf": [ - "WithdrawalFees" - ], - "wfpe": [ - "WithdrawalFees" - ], - "altindex": [ - "BlockchainCenter" - ], - "btcrb": [ - "BlockchainCenter" - ], - "ch": [ - "Rekt" - ], - "cr": [ - "LoanScan" - ], - "fun": [ - "TokenTerminal" - ] + "global": ["CoinGecko", "CoinPaprika"], + "defi": ["CoinGecko"], + "stables": ["CoinGecko"], + "exchanges": ["CoinGecko", "CoinPaprika"], + "exrates": ["CoinGecko"], + "indexes": ["CoinGecko"], + "derivatives": ["CoinGecko"], + "categories": ["CoinGecko"], + "hold": ["CoinGecko"], + "hm": ["CoinGecko"], + "info": ["CoinPaprika"], + "markets": ["CoinPaprika"], + "exmarkets": ["CoinPaprika"], + "platforms": ["CoinPaprika"], + "contracts": ["CoinPaprika"], + "pairs": ["Coinbase"], + "news": ["CryptoPanic"], + "wf": ["WithdrawalFees"], + "ewf": ["WithdrawalFees"], + "wfpe": ["WithdrawalFees"], + "altindex": ["BlockchainCenter"], + "btcrb": ["BlockchainCenter"], + "ch": ["Rekt"], + "cr": ["LoanScan"], + "fun": ["TokenTerminal"] }, "onchain": { - "hr": [ - "Glassnode" - ], - "btccp": [ - "Blockchain" - ], - "btcct": [ - "Blockchain" - ], - "btcblockdata": [ - "Blockchain" - ], - "gwei": [ - "ETHGasStations" - ], - "whales": [ - "WhaleAlert" - ], - "lt": [ - "BitQuery" - ], - "dvcp": [ - "BitQuery" - ], - "tv": [ - "BitQuery" - ], - "ueat": [ - "BitQuery" - ], - "ttcp": [ - "BitQuery" - ], - "baas": [ - "BitQuery" - ], - "dt": [ - "Shroom" - ], - "ds": [ - "Shroom" - ], - "tvl": [ - "Shroom" - ], - "address": [ - "Ethplorer" - ], - "top": [ - "Ethplorer" - ], - "balance": [ - "Ethplorer" - ], - "hist": [ - "Ethplorer" - ], - "info": [ - "Ethplorer" - ], - "holders": [ - "Ethplorer" - ], - "th": [ - "Ethplorer" - ], - "prices": [ - "Ethplorer" - ], - "tx": [ - "Ethplorer" - ] + "hr": ["Glassnode"], + "btccp": ["Blockchain"], + "btcct": ["Blockchain"], + "btcblockdata": ["Blockchain"], + "gwei": ["ETHGasStations"], + "whales": ["WhaleAlert"], + "lt": ["BitQuery"], + "dvcp": ["BitQuery"], + "tv": ["BitQuery"], + "ueat": ["BitQuery"], + "ttcp": ["BitQuery"], + "baas": ["BitQuery"], + "query": ["Shroom"], + "address": ["Ethplorer"], + "top": ["Ethplorer"], + "balance": ["Ethplorer"], + "hist": ["Ethplorer"], + "info": ["Ethplorer"], + "holders": ["Ethplorer"], + "th": ["Ethplorer"], + "prices": ["Ethplorer"], + "tx": ["Ethplorer"] }, "defi": { - "newsletter": [ - "Substack" - ], - "vaults": [ - "Coindix" - ], - "tokens": [ - "TheGraph" - ], - "stats": [ - "TheGraph" - ], - "pairs": [ - "TheGraph" - ], - "pools": [ - "TheGraph" - ], - "swaps": [ - "TheGraph" - ], - "ldapps": [ - "DeFiLlama" - ], - "gdapps": [ - "DeFiLlama" - ], - "stvl": [ - "DeFiLlama" - ], - "dtvl": [ - "DeFiLlama" - ], - "sinfo": [ - "TerraFCD" - ], - "validators": [ - "TerraFCD" - ], - "gacc": [ - "TerraFCD" - ], - "sreturn": [ - "TerraFCD" - ], - "lcsc": [ - "Smartstake" - ], - "anchor": [ - "CryptoSaurio" - ] + "newsletter": ["Substack"], + "vaults": ["Coindix"], + "tokens": ["TheGraph"], + "stats": ["TheGraph"], + "pairs": ["TheGraph"], + "pools": ["TheGraph"], + "swaps": ["TheGraph"], + "ldapps": ["DeFiLlama"], + "gdapps": ["DeFiLlama"], + "stvl": ["DeFiLlama"], + "dtvl": ["DeFiLlama"], + "sinfo": ["TerraFCD"], + "validators": ["TerraFCD"], + "gacc": ["TerraFCD"], + "sreturn": ["TerraFCD"], + "lcsc": ["Smartstake"], + "anchor": ["CryptoSaurio"] }, "tools": { "aprtoapy": [], "il": [] }, "nft": { - "stats": [ - "OpenSea" - ], - "fp": [ - "NFTPriceFloor" - ], - "collections": [ - "NFTPriceFloor" - ] + "stats": ["OpenSea"], + "fp": ["NFTPriceFloor"], + "collections": ["NFTPriceFloor"] }, "dd": { - "load": [ - "YahooFinance", - "CoinGecko", - "CCXT" - ], - "info": [ - "CoinGecko" - ], - "ath": [ - "CoinGecko" - ], - "atl": [ - "CoinGecko" - ], - "web": [ - "CoinGecko" - ], - "bc": [ - "CoinGecko" - ], - "pi": [ - "Messari" - ], - "gov": [ - "Messari" - ], - "basic": [ - "CoinPaprika" - ], - "stats": [ - "Coinbase" - ], - "desc": [ - "TokenTerminal" - ], - "market": [ - "CoinGecko" - ], - "mkt": [ - "CoinPaprika" - ], - "ex": [ - "CoinPaprika" - ], - "balance": [ - "Binance" - ], - "oi": [ - "Coinglass" - ], - "fundrate": [ - "Coinglass" - ], - "liquidations": [ - "Coinglass" - ], - "eb": [ - "Coinglass" - ], - "trades": [ - "CCXT" - ], - "ob": [ - "CCXT" - ], - "active": [ - "Glassnode" - ], - "nonzero": [ - "Glassnode" - ], - "change": [ - "Glassnode" - ], - "ps": [ - "CoinPaprika" - ], - "mcapdom": [ - "Messari" - ], - "mt": [ - "Messari" - ], - "funot": [ - "TokenTerminal" - ], - "team": [ - "Messari" - ], - "inv": [ - "Messari" - ], - "tk": [ - "Messari" - ], - "fr": [ - "Messari" - ], - "rm": [ - "Messari" - ], - "events": [ - "CoinPaprika" - ], - "news": [ - "CryptoPanic" - ], - "links": [ - "Messari" - ], - "twitter": [ - "CoinPaprika" - ], - "social": [ - "CoinGecko" - ], - "score": [ - "CoinGecko" - ], - "dev": [ - "CoinGecko" - ], - "gh": [ - "Santiment" - ] + "load": ["YahooFinance", "CoinGecko", "CCXT"], + "info": ["CoinGecko"], + "ath": ["CoinGecko"], + "atl": ["CoinGecko"], + "web": ["CoinGecko"], + "bc": ["CoinGecko"], + "pi": ["Messari"], + "gov": ["Messari"], + "basic": ["CoinPaprika"], + "stats": ["Coinbase"], + "desc": ["TokenTerminal"], + "market": ["CoinGecko"], + "mkt": ["CoinPaprika"], + "ex": ["CoinPaprika"], + "balance": ["Binance"], + "oi": ["Coinglass"], + "fundrate": ["Coinglass"], + "liquidations": ["Coinglass"], + "eb": ["Coinglass"], + "trades": ["CCXT"], + "ob": ["CCXT"], + "active": ["Glassnode"], + "nonzero": ["Glassnode"], + "change": ["Glassnode"], + "ps": ["CoinPaprika"], + "mcapdom": ["Messari"], + "mt": ["Messari"], + "funot": ["TokenTerminal"], + "team": ["Messari"], + "inv": ["Messari"], + "tk": ["Messari"], + "fr": ["Messari"], + "rm": ["Messari"], + "events": ["CoinPaprika"], + "news": ["CryptoPanic"], + "links": ["Messari"], + "twitter": ["CoinPaprika"], + "social": ["CoinGecko"], + "score": ["CoinGecko"], + "dev": ["CoinGecko"], + "gh": ["Santiment"] }, "ta": { - "load": [ - "YahooFinance", - "CoinGecko", - "CCXT" - ], - "tv": [ - "TradingView" - ] + "load": ["YahooFinance", "CoinGecko", "CCXT"], + "tv": ["TradingView"] }, "qa": { - "load": [ - "YahooFinance", - "CoinGecko", - "CCXT" - ] + "load": ["YahooFinance", "CoinGecko", "CCXT"] } }, "etf": { - "search": [ - "FinanceDatabase", - "StockAnalysis" - ], - "load": [ - "YahooFinance" - ], + "search": ["FinanceDatabase", "StockAnalysis"], + "load": ["YahooFinance"], "disc": { - "gainers": [ - "WallStreetJournal" - ], - "decliners": [ - "WallStreetJournal" - ], - "active": [ - "WallStreetJournal" - ] + "gainers": ["WallStreetJournal"], + "decliners": ["WallStreetJournal"], + "active": ["WallStreetJournal"] }, - "overview": [ - "StockAnalysis" - ], - "holdings": [ - "StockAnalysis" - ], - "weights": [ - "FinancialModelingPrep" - ], - "news": [ - "NewsApi" - ], - "compare": [ - "StockAnalysis" - ] + "overview": ["StockAnalysis"], + "holdings": ["StockAnalysis"], + "weights": ["FinancialModelingPrep"], + "news": ["NewsApi"], + "compare": ["StockAnalysis"] }, "economy": { - "overview": [ - "WallStreetJournal" - ], - "futures": [ - "WallStreetJournal", - "Finviz" - ], - "map": [ - "Finviz" - ], - "bigmac": [ - "Nasdaq" - ], - "events": [ - "Nasdaq" - ], - "edebt": [ - "Wikipedia" - ], - "rtps": [ - "AlphaVantage" - ], - "valuation": [ - "Finviz" - ], - "performance": [ - "Finviz" - ], - "gdp": [ - "OECD" - ], - "rgdp": [ - "OECD" - ], - "fgdp": [ - "OECD" - ], - "debt": [ - "OECD" - ], - "cpi": [ - "FRED" - ], - "ccpi": [ - "OECD" - ], - "balance": [ - "OECD" - ], - "revenue": [ - "OECD" - ], - "spending": [ - "OECD" - ], - "trust": [ - "OECD" - ], - "treasury": [ - "EconDB" - ], - "fred": [ - "FRED" - ], - "index": [ - "YahooFinance" - ] + "overview": ["WallStreetJournal"], + "futures": ["WallStreetJournal", "Finviz"], + "map": ["Finviz"], + "bigmac": ["Nasdaq"], + "events": ["Nasdaq"], + "edebt": ["Wikipedia"], + "rtps": ["AlphaVantage"], + "valuation": ["Finviz"], + "performance": ["Finviz"], + "gdp": ["OECD"], + "rgdp": ["OECD"], + "fgdp": ["OECD"], + "debt": ["OECD"], + "cpi": ["FRED"], + "ccpi": ["OECD"], + "balance": ["OECD"], + "revenue": ["OECD"], + "spending": ["OECD"], + "trust": ["OECD"], + "treasury": ["EconDB"], + "fred": ["FRED"], + "index": ["YahooFinance"] }, "forex": { - "load": [ - "YahooFinance", - "AlphaVantage", - "Polygon" - ], - "quote": [ - "YahooFinance", - "AlphaVantage" - ], - "fwd": [ - "FXEmpire" - ] + "load": ["YahooFinance", "AlphaVantage", "Polygon"], + "quote": ["YahooFinance", "AlphaVantage"], + "fwd": ["FXEmpire"] }, "funds": { - "country": [ - "MorningStar" - ], - "search": [ - "MorningStar" - ], - "load": [ - "MorningStar" - ], - "info": [ - "MorningStar" - ], - "plot": [ - "MorningStar" - ], - "sector": [ - "MorningStar" - ], - "carbon": [ - "MorningStar" - ], - "exclusion": [ - "MorningStar" - ], - "holdings": [ - "MorningStar" - ], - "alswe": [ - "Avanza" - ], - "infoswe": [ - "Avanza" - ] + "country": ["MorningStar"], + "search": ["MorningStar"], + "load": ["MorningStar"], + "info": ["MorningStar"], + "plot": ["MorningStar"], + "sector": ["MorningStar"], + "carbon": ["MorningStar"], + "exclusion": ["MorningStar"], + "holdings": ["MorningStar"], + "alswe": ["Avanza"], + "infoswe": ["Avanza"] }, "futures": { - "search": [ - "YahooFinance" - ], - "historical": [ - "YahooFinance", - "DataBento" - ], - "curve": [ - "YahooFinance" - ] + "search": ["YahooFinance"], + "historical": ["YahooFinance", "DataBento"], + "curve": ["YahooFinance"] }, "fixedincome": { - "estr": [ - "FRED", - "ECB" - ], - "sofr": [ - "FRED" - ], - "sonia": [ - "FRED" - ], - "ameribor": [ - "FRED" - ], - "fed": [ - "FRED" - ], - "iorb": [ - "FRED" - ], - "projection": [ - "FRED" - ], - "dwpcr": [ - "FRED" - ], - "ecb": [ - "FRED" - ], - "treasury": [ - "OECD" - ], - "usrates": [ - "FRED" - ], - "ycrv": [ - "FRED" - ], - "ecbycrv": [ - "ECB" - ], - "icebofa": [ - "FRED" - ], - "moody": [ - "FRED" - ], - "spot": [ - "FRED" - ], - "cp": [ - "FRED" - ], - "hqm": [ - "FRED" - ], - "icespread": [ - "FRED" - ], - "tmc": [ - "FRED" - ], - "ffrmc": [ - "FRED" - ], - "tbffr": [ - "FRED" - ] + "estr": ["FRED", "ECB"], + "sofr": ["FRED"], + "sonia": ["FRED"], + "ameribor": ["FRED"], + "fed": ["FRED"], + "iorb": ["FRED"], + "projection": ["FRED"], + "dwpcr": ["FRED"], + "ecb": ["FRED"], + "treasury": ["OECD"], + "usrates": ["FRED"], + "ycrv": ["FRED"], + "ecbycrv": ["ECB"], + "icebofa": ["FRED"], + "moody": ["FRED"], + "spot": ["FRED"], + "cp": ["FRED"], + "hqm": ["FRED"], + "icespread": ["FRED"], + "tmc": ["FRED"], + "ffrmc": ["FRED"], + "tbffr": ["FRED"] }, "portfolio": { "po": { - "maxsharpe": [ - "YahooFinance" - ], - "minrisk": [ - "YahooFinance" - ], - "maxutil": [ - "YahooFinance" - ], - "maxret": [ - "YahooFinance" - ], - "maxdiv": [ - "YahooFinance" - ], - "maxdecorr": [ - "YahooFinance" - ], - "blacklitterman": [ - "FinancialModelingPrep" - ], - "ef": [ - "YahooFinance" - ], - "riskparity": [ - "YahooFinance" - ], - "relriskparity": [ - "YahooFinance" - ], - "hrp": [ - "YahooFinance" - ], - "herc": [ - "YahooFinance" - ], - "nco": [ - "YahooFinance" - ], - "equal": [ - "YahooFinance" - ], - "mktcap": [ - "FinancialModelingPrep" - ] + "maxsharpe": ["YahooFinance"], + "minrisk": ["YahooFinance"], + "maxutil": ["YahooFinance"], + "maxret": ["YahooFinance"], + "maxdiv": ["YahooFinance"], + "maxdecorr": ["YahooFinance"], + "blacklitterman": ["FinancialModelingPrep"], + "ef": ["YahooFinance"], + "riskparity": ["YahooFinance"], + "relriskparity": ["YahooFinance"], + "hrp": ["YahooFinance"], + "herc": ["YahooFinance"], + "nco": ["YahooFinance"], + "equal": ["YahooFinance"], + "mktcap": ["FinancialModelingPrep"] } }, "alternative": { "oss": { - "rossidx": [ - "RunaCapital" - ], - "rs": [ - "GitHub" - ], - "sh": [ - "GitHub" - ], - "tr": [ - "GitHub" - ] + "rossidx": ["RunaCapital"], + "rs": ["GitHub"], + "sh": ["GitHub"], + "tr": ["GitHub"] }, - "hn": [ - "HackerNews" - ] + "hn": ["HackerNews"] } } diff --git a/openbb_terminal/reports/templates/economy.ipynb b/openbb_terminal/reports/templates/economy.ipynb index 5850a04baa88..7a7de2e7e874 100644 --- a/openbb_terminal/reports/templates/economy.ipynb +++ b/openbb_terminal/reports/templates/economy.ipynb @@ -1,771 +1,771 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "70ba2c8a", - "metadata": {}, - "source": [ - "## Notebook setup\n" - ] + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "70ba2c8a", + "metadata": {}, + "source": [ + "## Notebook setup\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "driven-billion", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import io\n", + "import warnings\n", + "import datetime\n", + "import numpy as np\n", + "import pandas as pd\n", + "import base64\n", + "import pytz\n", + "\n", + "from IPython.display import HTML\n", + "\n", + "import openbb_terminal.config_terminal as cfg\n", + "from openbb_terminal.helper_funcs import get_user_timezone\n", + "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n", + "from openbb_terminal import OpenBBFigure, theme\n", + "from openbb_terminal.helper_classes import TerminalStyle\n", + "\n", + "\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4494cd3e", + "metadata": {}, + "outputs": [], + "source": [ + "# Suppressing sdk logs\n", + "from openbb_terminal.core.session.current_system import set_system_variable\n", + "\n", + "set_system_variable(\"LOGGING_SUPPRESS\", True)\n", + "\n", + "# Import the OpenBB SDK\n", + "from openbb_terminal.sdk import openbb, widgets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9feebc8", + "metadata": {}, + "outputs": [], + "source": [ + "from openbb_terminal.core.session.current_user import get_current_user\n", + "\n", + "user = get_current_user()\n", + "\n", + "cfg.theme = TerminalStyle(\n", + " user.preferences.MPL_STYLE,\n", + " user.preferences.PMF_STYLE,\n", + " user.preferences.RICH_STYLE,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e6e39973", + "metadata": {}, + "outputs": [], + "source": [ + "stylesheet = widgets.html_report_stylesheet()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "daef64ec", + "metadata": { + "tags": [ + "parameters" + ] + }, + "outputs": [], + "source": [ + "# Parameters that will be replaced when calling this notebook\n", + "# Do not leave parameters blank as notebook will not run otherwise\n", + "report_name = \"economy_report\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1be26dae-cafe-4a22-80aa-eff296fc1a9b", + "metadata": {}, + "outputs": [], + "source": [ + "author = \"OpenBB\"\n", + "report_title = f\"Economy report\"\n", + "user_time_zone = pytz.timezone(get_user_timezone())\n", + "report_date = pd.Timestamp.now(tz=user_time_zone).strftime(\"%d %B, %Y\")\n", + "report_time = pd.Timestamp.now(tz=user_time_zone).strftime(\"%H:%M\")\n", + "report_timezone = pd.Timestamp.now(tz=user_time_zone).tzinfo\n", + "report_title, report_date, report_time, report_timezone" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9363f19a", + "metadata": {}, + "source": [ + "## Data\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "0b9ec3f9", + "metadata": {}, + "source": [ + "Summary\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e3b15d6f-dc9e-4f97-aa07-37d949a4e4bb", + "metadata": {}, + "outputs": [], + "source": [ + "overview = openbb.economy.overview()\n", + "overview.set_index(list(overview.columns[0]), inplace=True)\n", + "overview = OpenBBFigure.to_table(overview, print_index=True, width=600)\n", + "\n", + "futures = openbb.economy.futures()\n", + "futures.set_index(list(futures.columns[0]), inplace=True)\n", + "futures[\"%Chg\"] = futures[\"%Chg\"].apply(lambda x: float(f\"{x:.2f}\"))\n", + "futures_fig = OpenBBFigure.to_table(futures, print_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "351d0451", + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " news = openbb.news(\"economy\")\n", + " news.columns = news.columns.str.title()\n", + " news = news.rename(\n", + " columns={\"Date\": \"Published\", \"Description\": \"Title\", \"Url\": \"Link\"}\n", + " )\n", + " news[\"Title\"] = news.apply(\n", + " lambda x: f'{x[\"Title\"]}', axis=1\n", + " )\n", + " news = news[[\"Title\", \"Published\"]]\n", + " news[\"Published\"] = pd.to_datetime(news[\"Published\"]).dt.strftime(\"%Y-%m-%d %H:%M\")\n", + " news = news.set_index(\"Published\")\n", + "except:\n", + " news = pd.DataFrame()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64729474", + "metadata": {}, + "outputs": [], + "source": [ + "rtps_data = openbb.economy.rtps()\n", + "subplots = OpenBBFigure.create_subplots(1, 2, horizontal_spacing=0.15)\n", + "openbb.economy.rtps_chart(external_axes=True).to_subplot(subplots, 1, 1)\n", + "\n", + "chg = futures[\"%Chg\"]\n", + "colors = [theme.up_color if x > 0 else theme.down_color for x in list(chg.values)]\n", + "subplots.add_bar(\n", + " y=chg.index,\n", + " x=chg.values,\n", + " orientation=\"h\",\n", + " marker_color=colors,\n", + " showlegend=False,\n", + " row=1,\n", + " col=2,\n", + ")\n", + "subplots.update_xaxes(title_text=\"Performance (%)\", row=1, col=1)\n", + "subplots.update_xaxes(title_text=\"Change %\", row=1, col=2)\n", + "subplots.update_layout(margin=dict(l=0, r=0, t=0, b=0), yaxis=dict(side=\"left\"))\n", + "chart_0 = subplots.to_html()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "7315ac99", + "metadata": {}, + "source": [ + "Events\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a02c6166", + "metadata": {}, + "outputs": [], + "source": [ + "events_1 = openbb.economy.events(\n", + " countries=\"United States\",\n", + " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", + ")\n", + "if not events_1.empty:\n", + " events_1 = OpenBBFigure.to_table(\n", + " events_1.set_index(\"Date\"), print_index=True, height=200\n", + " )\n", + "\n", + "events_2 = openbb.economy.events(\n", + " countries=[\n", + " \"Germany\",\n", + " \"Spain\",\n", + " \"Italy\",\n", + " \"United Kingdom\",\n", + " \"France\",\n", + " \"Portugal\",\n", + " \"Greece\",\n", + " ],\n", + " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", + ")\n", + "if not events_2.empty:\n", + " events_2 = OpenBBFigure.to_table(events_2.set_index(\"Date\"), print_index=True)\n", + "\n", + "events_3 = openbb.economy.events(\n", + " countries=\"China\",\n", + " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", + ")\n", + "if not events_3.empty:\n", + " events_3 = OpenBBFigure.to_table(events_3.set_index(\"Date\"), print_index=True)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f1863bd0", + "metadata": {}, + "source": [ + "Yields\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8e332ca6", + "metadata": {}, + "outputs": [], + "source": [ + "ycrv = openbb.fixedincome.ycrv(return_date=True)\n", + "\n", + "if (isinstance(ycrv, pd.DataFrame) and not ycrv.empty) or (\n", + " not isinstance(ycrv, pd.DataFrame) and ycrv\n", + "):\n", + " ycrv_data_1, _ = ycrv\n", + " ycrv_country_1 = \"United states\"\n", + "\n", + " ycrv_chart_1 = openbb.fixedincome.ycrv_chart(external_axes=True)\n", + "\n", + " if ycrv_chart_1:\n", + " ycrv_chart_1 = ycrv_chart_1.to_html()\n", + "\n", + " if not ycrv_data_1.empty:\n", + " ycrv_data_1.drop([\"Maturity\"], axis=1, inplace=True)\n", + " ycrv_data_1.index = [\n", + " \"1M\",\n", + " \"3M\",\n", + " \"6M\",\n", + " \"1Y\",\n", + " \"2Y\",\n", + " \"3Y\",\n", + " \"5Y\",\n", + " \"7Y\",\n", + " \"10Y\",\n", + " \"20Y\",\n", + " \"30Y\",\n", + " ]\n", + "else:\n", + " ycrv = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31fb0f86", + "metadata": {}, + "outputs": [], + "source": [ + "openbb.economy.treasury_maturities()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c4f987af", + "metadata": {}, + "outputs": [], + "source": [ + "subplots = OpenBBFigure.create_subplots(\n", + " 2,\n", + " 2,\n", + " vertical_spacing=0.15,\n", + " subplot_titles=(\"UST 2y-10y\", \"UST 10y-30y\", \"Nominal vs TIPS\"),\n", + " specs=[[{}, {}], [{\"colspan\": 2}, None]],\n", + ")\n", + "openbb.economy.treasury_chart(\n", + " instruments=[\"nominal\"],\n", + " maturities=[\"2y\", \"10y\"],\n", + " frequency=\"daily\",\n", + " start_date=\"2020-01-01\",\n", + " external_axes=True,\n", + ").to_subplot(subplots, 1, 1)\n", + "\n", + "openbb.economy.treasury_chart(\n", + " instruments=[\"nominal\"],\n", + " maturities=[\"10y\", \"30y\"],\n", + " frequency=\"daily\",\n", + " start_date=\"2020-01-01\",\n", + " external_axes=True,\n", + ").to_subplot(subplots, 1, 2)\n", + "\n", + "openbb.economy.treasury_chart(\n", + " instruments=[\"nominal\", \"inflation\"],\n", + " maturities=[\"10y\"],\n", + " frequency=\"daily\",\n", + " start_date=\"2020-01-01\",\n", + " external_axes=True,\n", + ").to_subplot(subplots, 2, 1)\n", + "\n", + "ust = subplots.to_html()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "7a3c421f", + "metadata": {}, + "source": [ + "Equity Market\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12c98e06", + "metadata": {}, + "outputs": [], + "source": [ + "valuation = OpenBBFigure.to_table(openbb.economy.valuation(), print_index=False)\n", + "performance = OpenBBFigure.to_table(openbb.economy.performance(), print_index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "42f5570d", + "metadata": {}, + "outputs": [], + "source": [ + "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", + "data = openbb.economy.index(\n", + " indices=[\"sp500\", \"dow_djus\", \"nasdaq100\", \"russell3000\", \"cboe_vix\"],\n", + " start_date=\"2000-03-09\",\n", + ")\n", + "\n", + "data = data.pct_change().dropna()\n", + "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", + "for col in data.columns:\n", + " fig.add_scatter(\n", + " x=data.index,\n", + " y=data[col] * 100,\n", + " name=col,\n", + " )\n", + "\n", + "eqty_0 = fig.to_html()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "286a82d7", + "metadata": {}, + "outputs": [], + "source": [ + "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", + "data = openbb.economy.index(\n", + " indices=[\"ftse100\", \"de_dax40\", \"fr_cac40\", \"it_mib40\", \"es_ibex35\"],\n", + " start_date=\"2000-01-01\",\n", + ")\n", + "\n", + "data = data.pct_change().dropna()\n", + "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", + "for col in data.columns:\n", + " fig.add_scatter(\n", + " x=data.index,\n", + " y=data[col] * 100,\n", + " name=col,\n", + " )\n", + "\n", + "eqty_1 = fig.to_html()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e825e8ed", + "metadata": {}, + "outputs": [], + "source": [ + "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", + "data = openbb.economy.index(\n", + " indices=[\"jp_n225\", \"cn_csi300\", \"hk_china\", \"au_asx50\"], start_date=\"2014-01-01\"\n", + ")\n", + "\n", + "data = data.pct_change().dropna()\n", + "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", + "for col in data.columns:\n", + " fig.add_scatter(\n", + " x=data.index,\n", + " y=data[col] * 100,\n", + " name=col,\n", + " )\n", + "\n", + "eqty_2 = fig.to_html()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8eb1327b", + "metadata": {}, + "outputs": [], + "source": [ + "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", + "data = openbb.economy.index(\n", + " indices=[\"in_nse50\", \"br_bvsp\", \"za_jo\", \"mx_ipc\", \"ru_moex\"],\n", + " start_date=\"2013-01-01\",\n", + ")\n", + "\n", + "data = data.pct_change().dropna()\n", + "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", + "for col in data.columns:\n", + " fig.add_scatter(\n", + " x=data.index,\n", + " y=data[col] * 100,\n", + " name=col,\n", + " )\n", + "\n", + "eqty_3 = fig.to_html()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "02630bd6", + "metadata": {}, + "outputs": [], + "source": [ + "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", + "data = openbb.economy.index(indices=[\"arca_xoi\", \"arca_pse\"], start_date=\"2000-01-01\")\n", + "\n", + "data = data.pct_change().dropna()\n", + "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", + "for col in data.columns:\n", + " fig.add_scatter(\n", + " x=data.index,\n", + " y=data[col] * 100,\n", + " name=col,\n", + " )\n", + "\n", + "eqty_4 = fig.to_html()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a4c8963", + "metadata": {}, + "outputs": [], + "source": [ + "bigmac_res = openbb.economy.bigmac()\n", + "\n", + "if (isinstance(bigmac_res, pd.DataFrame) and not bigmac_res.empty) or (\n", + " not isinstance(bigmac_res, pd.DataFrame) and bigmac_res\n", + "):\n", + " bigmac = openbb.economy.bigmac_chart(\n", + " country_codes=[\n", + " \"USA\",\n", + " \"CAN\",\n", + " \"ARG\",\n", + " \"PRT\",\n", + " \"NLD\",\n", + " \"FRA\",\n", + " \"UAE\",\n", + " \"LKA\",\n", + " \"VNM\",\n", + " \"RUS\",\n", + " \"SWE\",\n", + " \"GBR\",\n", + " ],\n", + " external_axes=True,\n", + " )\n", + " if bigmac:\n", + " bigmac.set_title(\"\")\n", + " bigmac = bigmac.to_html()\n", + "\n", + "else:\n", + " bigmac_res = pd.DataFrame()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1947a06c", + "metadata": {}, + "outputs": [], + "source": [ + "subplots = OpenBBFigure.create_subplots(1, 1, specs=[[{\"secondary_y\": True}]])\n", + "\n", + "openbb.economy.macro_chart(\n", + " parameters=[\"CONF\", \"IP\"], start_date=\"2010-01-01\", external_axes=True\n", + ").to_subplot(subplots, 1, 1, secondary_y=False)\n", + "subplots.update_yaxes(title_text=\"Confidence and IP\", secondary_y=False)\n", + "\n", + "\n", + "df, df_dict, _ = openbb.economy.macro(parameters=[\"CPI\"], start_date=\"2010-01-01\")\n", + "cpi_chg = df.pct_change(1) * 100\n", + "subplots.add_scatter(\n", + " x=cpi_chg.index,\n", + " y=cpi_chg.T.values[0],\n", + " name=\"CPI (% change)\",\n", + " mode=\"lines\",\n", + " line=dict(color=\"red\", dash=\"dash\"),\n", + " secondary_y=True,\n", + " yaxis=\"y2\",\n", + ")\n", + "subplots.update_yaxes(\n", + " title_text=\"CPI (% change)\",\n", + " secondary_y=True,\n", + " range=[-2, 2],\n", + " side=\"left\",\n", + " overlaying=\"y\",\n", + ")\n", + "subplots.horizontal_legend()\n", + "\n", + "macro_0 = subplots.to_html()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "971e4c51", + "metadata": {}, + "outputs": [], + "source": [ + "fred = openbb.economy.fred(series_ids=[\"T10Y3M\"], start_date=\"1980-01-01\")\n", + "\n", + "if (isinstance(fred, pd.DataFrame) and not fred.empty) or (\n", + " not isinstance(fred, pd.DataFrame) and fred\n", + "):\n", + " df, df_dict = fred\n", + "\n", + " fig = OpenBBFigure.create_subplots(1, 1, specs=[[{\"secondary_y\": True}]])\n", + " fig.add_scatter(\n", + " x=df.index,\n", + " y=df[\"T10Y3M\"],\n", + " name=df_dict[\"T10Y3M\"][\"title\"],\n", + " line=dict(color=\"red\", dash=\"dash\"),\n", + " secondary_y=False,\n", + " )\n", + " openbb.economy.fred_chart(\n", + " series_ids=[\"A191RP1A027NBEA\"],\n", + " start_date=\"1980-01-01\",\n", + " external_axes=True,\n", + " ).to_subplot(fig, 1, 1, secondary_y=True)\n", + " fig.update_yaxes(secondary_y=True, side=\"left\", overlaying=\"y\")\n", + " fig.set_title(\"\")\n", + " fig.horizontal_legend()\n", + "\n", + " fred_0 = fig.to_html()\n", + "else:\n", + " fred = None" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ac501a32-124d-4d21-aae1-a8d147bb1071", + "metadata": {}, + "source": [ + "## Render the report template to a file\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "abfe37e4-ea38-42c3-8fb5-7cceb233fb12", + "metadata": {}, + "outputs": [], + "source": [ + "body = f\"\"\"\n", + "\n", + "\n", + "\"\"\"\n", + "\n", + "\n", + "img = (\n", + " str(REPOSITORY_DIRECTORY)\n", + " + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n", + ")\n", + "floppy_disk_img = (\n", + " str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n", + ")\n", + "body += widgets.header(\n", + " img,\n", + " floppy_disk_img,\n", + " author,\n", + " report_date,\n", + " report_time,\n", + " report_timezone,\n", + " f\"ECONOMY REPORT: Leverage multiple sources to create custom reports.\",\n", + ")\n", + "\n", + "body += widgets.tablinks(\n", + " [\n", + " \"SUMMARY\",\n", + " \"Events\",\n", + " \"Yields\",\n", + " \"Equity Market\",\n", + " \"Macro Data\",\n", + " ]\n", + ")\n", + "\n", + "# Summary\n", + "htmlcode = widgets.row(\n", + " [widgets.h(3, \"Global markets (source: WSJ)\") + overview.to_html()]\n", + ")\n", + "\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Commodities (source: WSJ)\") + futures_fig.to_html()]\n", + " + [\n", + " widgets.h(3, \"Real-time sector performance (source: Alphavantage)\")\n", + " + rtps_data.to_html().replace(\"table\", 'table style=\"display:inline\"')\n", + " ]\n", + ")\n", + "htmlcode += widgets.row([chart_0])\n", + "\n", + "if not news.empty:\n", + " htmlcode += widgets.row(\n", + " [\n", + " widgets.h(3, \"Top news on 'economy' keyword (source: Feedparser)\")\n", + " + news.to_html(escape=False)\n", + " ]\n", + " )\n", + "\n", + "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n", + "\n", + "# Events\n", + "htmlcode = widgets.row([widgets.h(3, \"Economic calendars (source: investing.com)\")])\n", + "htmlcode += widgets.row([widgets.h(3, \"United States\") + events_1.to_html()])\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Select European Countries\") + events_2.to_html()]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"China\") + events_3.to_html()])\n", + "body += widgets.add_tab(\"Events\", htmlcode)\n", + "\n", + "# Yields\n", + "htmlcode = widgets.row([widgets.h(3, \"US treasuries (source: EconDB)\") + ust])\n", + "\n", + "if ycrv:\n", + " htmlcode += widgets.row(\n", + " [\n", + " widgets.h(3, f\"{ycrv_country_1} yield curve (source: FRED)\")\n", + " + (ycrv_chart_1 or \"\")\n", + " ]\n", + " )\n", + " htmlcode += widgets.row([widgets.h(3, \"\") + ycrv_data_1.to_html()])\n", + "\n", + "body += widgets.add_tab(\"Yields\", htmlcode)\n", + "\n", + "# Equity market\n", + "htmlcode = widgets.row(\n", + " [widgets.h(3, \"Valuation (source: Finviz)\") + valuation.to_html()]\n", + ")\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Performance (source: Finviz)\") + valuation.to_html()]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"US markets (source: YahooFinance)\") + eqty_0])\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"European markets (source: YahooFinance)\") + eqty_1]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"APAC markets (source: YahooFinance)\") + eqty_2])\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Emerging markets (source: YahooFinance)\") + eqty_3]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"ARCA (source: YahooFinance)\") + eqty_4])\n", + "body += widgets.add_tab(\"Equity Market\", htmlcode)\n", + "\n", + "# Macro\n", + "htmlcode = \"\"\n", + "if not bigmac_res.empty:\n", + " htmlcode += widgets.row(\n", + " [widgets.h(3, \"Bigmac index (source: Nasdaq)\") + (bigmac or \"\")]\n", + " )\n", + "htmlcode += widgets.row([widgets.h(3, \"Leading indicators (source: EconDB)\") + macro_0])\n", + "if fred:\n", + " htmlcode += widgets.row(\n", + " [widgets.h(3, \"Recession indicator (source: FRED)\") + fred_0]\n", + " )\n", + "body += widgets.add_tab(\"Macro Data\", htmlcode)\n", + "\n", + "body += widgets.tab_clickable_and_save_evt()\n", + "report = widgets.html_report(title=report_name, stylesheet=stylesheet, body=body)\n", + "\n", + "# to save the results\n", + "with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n", + " fh.write(report)" + ] + } + ], + "metadata": { + "celltoolbar": "Tags", + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.9" + }, + "vscode": { + "interpreter": { + "hash": "381a209f752e9104bff95ec5e80679ea2e476866b80e4326f1ee6b7658af6049" + } + } }, - { - "cell_type": "code", - "execution_count": null, - "id": "driven-billion", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import io\n", - "import warnings\n", - "import datetime\n", - "import numpy as np\n", - "import pandas as pd\n", - "import base64\n", - "import pytz\n", - "\n", - "from IPython.display import HTML\n", - "\n", - "import openbb_terminal.config_terminal as cfg\n", - "from openbb_terminal.helper_funcs import get_user_timezone\n", - "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n", - "from openbb_terminal import OpenBBFigure, theme\n", - "from openbb_terminal.helper_classes import TerminalStyle\n", - "\n", - "\n", - "warnings.filterwarnings(\"ignore\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4494cd3e", - "metadata": {}, - "outputs": [], - "source": [ - "# Suppressing sdk logs\n", - "from openbb_terminal.core.session.current_system import set_system_variable\n", - "\n", - "set_system_variable(\"LOGGING_SUPPRESS\", True)\n", - "\n", - "# Import the OpenBB SDK\n", - "from openbb_terminal.sdk import openbb, widgets" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f9feebc8", - "metadata": {}, - "outputs": [], - "source": [ - "from openbb_terminal.core.session.current_user import get_current_user\n", - "\n", - "user = get_current_user()\n", - "\n", - "cfg.theme = TerminalStyle(\n", - " user.preferences.MPL_STYLE,\n", - " user.preferences.PMF_STYLE,\n", - " user.preferences.RICH_STYLE,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e6e39973", - "metadata": {}, - "outputs": [], - "source": [ - "stylesheet = widgets.html_report_stylesheet()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "daef64ec", - "metadata": { - "tags": [ - "parameters" - ] - }, - "outputs": [], - "source": [ - "# Parameters that will be replaced when calling this notebook\n", - "# Do not leave parameters blank as notebook will not run otherwise\n", - "report_name = \"economy_report\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1be26dae-cafe-4a22-80aa-eff296fc1a9b", - "metadata": {}, - "outputs": [], - "source": [ - "author = \"OpenBB\"\n", - "report_title = f\"Economy report\"\n", - "user_time_zone = pytz.timezone(get_user_timezone())\n", - "report_date = pd.Timestamp.now(tz=user_time_zone).strftime(\"%d %B, %Y\")\n", - "report_time = pd.Timestamp.now(tz=user_time_zone).strftime(\"%H:%M\")\n", - "report_timezone = pd.Timestamp.now(tz=user_time_zone).tzinfo\n", - "report_title, report_date, report_time, report_timezone" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "9363f19a", - "metadata": {}, - "source": [ - "## Data\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "0b9ec3f9", - "metadata": {}, - "source": [ - "Summary\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e3b15d6f-dc9e-4f97-aa07-37d949a4e4bb", - "metadata": {}, - "outputs": [], - "source": [ - "overview = openbb.economy.overview()\n", - "overview.set_index(list(overview.columns[0]), inplace=True)\n", - "overview = OpenBBFigure.to_table(overview, print_index=True, width=600)\n", - "\n", - "futures = openbb.economy.futures()\n", - "futures.set_index(list(futures.columns[0]), inplace=True)\n", - "futures[\"%Chg\"] = futures[\"%Chg\"].apply(lambda x: float(f\"{x:.2f}\"))\n", - "futures_fig = OpenBBFigure.to_table(futures, print_index=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "351d0451", - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " news = openbb.news(\"economy\")\n", - " news.columns = news.columns.str.title()\n", - " news = news.rename(\n", - " columns={\"Date\": \"Published\", \"Description\": \"Title\", \"Url\": \"Link\"}\n", - " )\n", - " news[\"Title\"] = news.apply(\n", - " lambda x: f'{x[\"Title\"]}', axis=1\n", - " )\n", - " news = news[[\"Title\", \"Published\"]]\n", - " news[\"Published\"] = pd.to_datetime(news[\"Published\"]).dt.strftime(\"%Y-%m-%d %H:%M\")\n", - " news = news.set_index(\"Published\")\n", - "except:\n", - " news = pd.DataFrame()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "64729474", - "metadata": {}, - "outputs": [], - "source": [ - "rtps_data = openbb.economy.rtps()\n", - "subplots = OpenBBFigure.create_subplots(1, 2, horizontal_spacing=0.15)\n", - "openbb.economy.rtps_chart(external_axes=True).to_subplot(subplots, 1, 1)\n", - "\n", - "chg = futures[\"%Chg\"]\n", - "colors = [theme.up_color if x > 0 else theme.down_color for x in list(chg.values)]\n", - "subplots.add_bar(\n", - " y=chg.index,\n", - " x=chg.values,\n", - " orientation=\"h\",\n", - " marker_color=colors,\n", - " showlegend=False,\n", - " row=1,\n", - " col=2,\n", - ")\n", - "subplots.update_xaxes(title_text=\"Performance (%)\", row=1, col=1)\n", - "subplots.update_xaxes(title_text=\"Change %\", row=1, col=2)\n", - "subplots.update_layout(margin=dict(l=0, r=0, t=0, b=0), yaxis=dict(side=\"left\"))\n", - "chart_0 = subplots.to_html()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7315ac99", - "metadata": {}, - "source": [ - "Events\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a02c6166", - "metadata": {}, - "outputs": [], - "source": [ - "events_1 = openbb.economy.events(\n", - " countries=\"United States\",\n", - " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", - ")\n", - "if not events_1.empty:\n", - " events_1 = OpenBBFigure.to_table(\n", - " events_1.set_index(\"Date\"), print_index=True, height=200\n", - " )\n", - "\n", - "events_2 = openbb.economy.events(\n", - " countries=[\n", - " \"Germany\",\n", - " \"Spain\",\n", - " \"Italy\",\n", - " \"United Kingdom\",\n", - " \"France\",\n", - " \"Portugal\",\n", - " \"Greece\",\n", - " ],\n", - " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", - ")\n", - "if not events_2.empty:\n", - " events_2 = OpenBBFigure.to_table(events_2.set_index(\"Date\"), print_index=True)\n", - "\n", - "events_3 = openbb.economy.events(\n", - " countries=\"China\",\n", - " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", - ")\n", - "if not events_3.empty:\n", - " events_3 = OpenBBFigure.to_table(events_3.set_index(\"Date\"), print_index=True)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f1863bd0", - "metadata": {}, - "source": [ - "Yields\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8e332ca6", - "metadata": {}, - "outputs": [], - "source": [ - "ycrv = openbb.fixedincome.ycrv(return_date=True)\n", - "\n", - "if (isinstance(ycrv, pd.DataFrame) and not ycrv.empty) or (\n", - " not isinstance(ycrv, pd.DataFrame) and ycrv\n", - "):\n", - " ycrv_data_1, _ = ycrv\n", - " ycrv_country_1 = \"United states\"\n", - "\n", - " ycrv_chart_1 = openbb.fixedincome.ycrv_chart(external_axes=True)\n", - "\n", - " if ycrv_chart_1:\n", - " ycrv_chart_1 = ycrv_chart_1.to_html()\n", - "\n", - " if not ycrv_data_1.empty:\n", - " ycrv_data_1.drop([\"Maturity\"], axis=1, inplace=True)\n", - " ycrv_data_1.index = [\n", - " \"1M\",\n", - " \"3M\",\n", - " \"6M\",\n", - " \"1Y\",\n", - " \"2Y\",\n", - " \"3Y\",\n", - " \"5Y\",\n", - " \"7Y\",\n", - " \"10Y\",\n", - " \"20Y\",\n", - " \"30Y\",\n", - " ]\n", - "else:\n", - " ycrv = None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "31fb0f86", - "metadata": {}, - "outputs": [], - "source": [ - "openbb.economy.treasury_maturities()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c4f987af", - "metadata": {}, - "outputs": [], - "source": [ - "subplots = OpenBBFigure.create_subplots(\n", - " 2,\n", - " 2,\n", - " vertical_spacing=0.15,\n", - " subplot_titles=(\"UST 2y-10y\", \"UST 10y-30y\", \"Nominal vs TIPS\"),\n", - " specs=[[{}, {}], [{\"colspan\": 2}, None]],\n", - ")\n", - "openbb.economy.treasury_chart(\n", - " instruments=[\"nominal\"],\n", - " maturities=[\"2y\", \"10y\"],\n", - " frequency=\"daily\",\n", - " start_date=\"2020-01-01\",\n", - " external_axes=True,\n", - ").to_subplot(subplots, 1, 1)\n", - "\n", - "openbb.economy.treasury_chart(\n", - " instruments=[\"nominal\"],\n", - " maturities=[\"10y\", \"30y\"],\n", - " frequency=\"daily\",\n", - " start_date=\"2020-01-01\",\n", - " external_axes=True,\n", - ").to_subplot(subplots, 1, 2)\n", - "\n", - "openbb.economy.treasury_chart(\n", - " instruments=[\"nominal\", \"inflation\"],\n", - " maturities=[\"10y\"],\n", - " frequency=\"daily\",\n", - " start_date=\"2020-01-01\",\n", - " external_axes=True,\n", - ").to_subplot(subplots, 2, 1)\n", - "\n", - "ust = subplots.to_html()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7a3c421f", - "metadata": {}, - "source": [ - "Equity Market\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "12c98e06", - "metadata": {}, - "outputs": [], - "source": [ - "valuation = OpenBBFigure.to_table(openbb.economy.valuation(), print_index=False)\n", - "performance = OpenBBFigure.to_table(openbb.economy.performance(), print_index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "42f5570d", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"sp500\", \"dow_djus\", \"nasdaq100\", \"russell3000\", \"cboe_vix\"],\n", - " start_date=\"2000-03-09\",\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_0 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "286a82d7", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"ftse100\", \"de_dax40\", \"fr_cac40\", \"it_mib40\", \"es_ibex35\"],\n", - " start_date=\"2000-01-01\",\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_1 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e825e8ed", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"jp_n225\", \"cn_csi300\", \"hk_china\", \"au_asx50\"], start_date=\"2014-01-01\"\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_2 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8eb1327b", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"in_nse50\", \"br_bvsp\", \"za_jo\", \"mx_ipc\", \"ru_moex\"],\n", - " start_date=\"2013-01-01\",\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_3 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "02630bd6", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(indices=[\"arca_xoi\", \"arca_pse\"], start_date=\"2000-01-01\")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_4 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5a4c8963", - "metadata": {}, - "outputs": [], - "source": [ - "bigmac_res = openbb.economy.bigmac()\n", - "\n", - "if (isinstance(bigmac_res, pd.DataFrame) and not bigmac_res.empty) or (\n", - " not isinstance(bigmac_res, pd.DataFrame) and bigmac_res\n", - "):\n", - " bigmac = openbb.economy.bigmac_chart(\n", - " country_codes=[\n", - " \"USA\",\n", - " \"CAN\",\n", - " \"ARG\",\n", - " \"PRT\",\n", - " \"NLD\",\n", - " \"FRA\",\n", - " \"UAE\",\n", - " \"LKA\",\n", - " \"VNM\",\n", - " \"RUS\",\n", - " \"SWE\",\n", - " \"GBR\",\n", - " ],\n", - " external_axes=True,\n", - " )\n", - " if bigmac:\n", - " bigmac.set_title(\"\")\n", - " bigmac = bigmac.to_html()\n", - "\n", - "else:\n", - " bigmac_res = pd.DataFrame()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1947a06c", - "metadata": {}, - "outputs": [], - "source": [ - "subplots = OpenBBFigure.create_subplots(1, 1, specs=[[{\"secondary_y\": True}]])\n", - "\n", - "openbb.economy.macro_chart(\n", - " parameters=[\"CONF\", \"IP\"], start_date=\"2010-01-01\", external_axes=True\n", - ").to_subplot(subplots, 1, 1, secondary_y=False)\n", - "subplots.update_yaxes(title_text=\"Confidence and IP\", secondary_y=False)\n", - "\n", - "\n", - "df, df_dict, _ = openbb.economy.macro(parameters=[\"CPI\"], start_date=\"2010-01-01\")\n", - "cpi_chg = df.pct_change(1) * 100\n", - "subplots.add_scatter(\n", - " x=cpi_chg.index,\n", - " y=cpi_chg.T.values[0],\n", - " name=\"CPI (% change)\",\n", - " mode=\"lines\",\n", - " line=dict(color=\"red\", dash=\"dash\"),\n", - " secondary_y=True,\n", - " yaxis=\"y2\",\n", - ")\n", - "subplots.update_yaxes(\n", - " title_text=\"CPI (% change)\",\n", - " secondary_y=True,\n", - " range=[-2, 2],\n", - " side=\"left\",\n", - " overlaying=\"y\",\n", - ")\n", - "subplots.horizontal_legend()\n", - "\n", - "macro_0 = subplots.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "971e4c51", - "metadata": {}, - "outputs": [], - "source": [ - "fred = openbb.economy.fred(series_ids=[\"T10Y3M\"], start_date=\"1980-01-01\")\n", - "\n", - "if (isinstance(fred, pd.DataFrame) and not fred.empty) or (\n", - " not isinstance(fred, pd.DataFrame) and fred\n", - "):\n", - " df, df_dict = fred\n", - "\n", - " fig = OpenBBFigure.create_subplots(1, 1, specs=[[{\"secondary_y\": True}]])\n", - " fig.add_scatter(\n", - " x=df.index,\n", - " y=df[\"T10Y3M\"],\n", - " name=df_dict[\"T10Y3M\"][\"title\"],\n", - " line=dict(color=\"red\", dash=\"dash\"),\n", - " secondary_y=False,\n", - " )\n", - " openbb.economy.fred_chart(\n", - " series_ids=[\"A191RP1A027NBEA\"],\n", - " start_date=\"1980-01-01\",\n", - " external_axes=True,\n", - " ).to_subplot(fig, 1, 1, secondary_y=True)\n", - " fig.update_yaxes(secondary_y=True, side=\"left\", overlaying=\"y\")\n", - " fig.set_title(\"\")\n", - " fig.horizontal_legend()\n", - "\n", - " fred_0 = fig.to_html()\n", - "else:\n", - " fred = None" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "ac501a32-124d-4d21-aae1-a8d147bb1071", - "metadata": {}, - "source": [ - "## Render the report template to a file\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abfe37e4-ea38-42c3-8fb5-7cceb233fb12", - "metadata": {}, - "outputs": [], - "source": [ - "body = f\"\"\"\n", - "\n", - "\n", - "\"\"\"\n", - "\n", - "\n", - "img = (\n", - " str(REPOSITORY_DIRECTORY)\n", - " + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n", - ")\n", - "floppy_disk_img = (\n", - " str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n", - ")\n", - "body += widgets.header(\n", - " img,\n", - " floppy_disk_img,\n", - " author,\n", - " report_date,\n", - " report_time,\n", - " report_timezone,\n", - " f\"ECONOMY REPORT: Leverage multiple sources to create custom reports.\",\n", - ")\n", - "\n", - "body += widgets.tablinks(\n", - " [\n", - " \"SUMMARY\",\n", - " \"Events\",\n", - " \"Yields\",\n", - " \"Equity Market\",\n", - " \"Macro Data\",\n", - " ]\n", - ")\n", - "\n", - "# Summary\n", - "htmlcode = widgets.row(\n", - " [widgets.h(3, \"Global markets (source: WSJ)\") + overview.to_html()]\n", - ")\n", - "\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Commodities (source: WSJ)\") + futures_fig.to_html()]\n", - " + [\n", - " widgets.h(3, \"Real-time sector performance (source: Alphavantage)\")\n", - " + rtps_data.to_html().replace(\"table\", 'table style=\"display:inline\"')\n", - " ]\n", - ")\n", - "htmlcode += widgets.row([chart_0])\n", - "\n", - "if not news.empty:\n", - " htmlcode += widgets.row(\n", - " [\n", - " widgets.h(3, \"Top news on 'economy' keyword (source: Feedparser)\")\n", - " + news.to_html(escape=False)\n", - " ]\n", - " )\n", - "\n", - "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n", - "\n", - "# Events\n", - "htmlcode = widgets.row([widgets.h(3, \"Economic calendars (source: investing.com)\")])\n", - "htmlcode += widgets.row([widgets.h(3, \"United States\") + events_1.to_html()])\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Select European Countries\") + events_2.to_html()]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"China\") + events_3.to_html()])\n", - "body += widgets.add_tab(\"Events\", htmlcode)\n", - "\n", - "# Yields\n", - "htmlcode = widgets.row([widgets.h(3, \"US treasuries (source: EconDB)\") + ust])\n", - "\n", - "if ycrv:\n", - " htmlcode += widgets.row(\n", - " [\n", - " widgets.h(3, f\"{ycrv_country_1} yield curve (source: FRED)\")\n", - " + (ycrv_chart_1 or \"\")\n", - " ]\n", - " )\n", - " htmlcode += widgets.row([widgets.h(3, \"\") + ycrv_data_1.to_html()])\n", - "\n", - "body += widgets.add_tab(\"Yields\", htmlcode)\n", - "\n", - "# Equity market\n", - "htmlcode = widgets.row(\n", - " [widgets.h(3, \"Valuation (source: Finviz)\") + valuation.to_html()]\n", - ")\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Performance (source: Finviz)\") + valuation.to_html()]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"US markets (source: YahooFinance)\") + eqty_0])\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"European markets (source: YahooFinance)\") + eqty_1]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"APAC markets (source: YahooFinance)\") + eqty_2])\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Emerging markets (source: YahooFinance)\") + eqty_3]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"ARCA (source: YahooFinance)\") + eqty_4])\n", - "body += widgets.add_tab(\"Equity Market\", htmlcode)\n", - "\n", - "# Macro\n", - "htmlcode = \"\"\n", - "if not bigmac_res.empty:\n", - " htmlcode += widgets.row(\n", - " [widgets.h(3, \"Bigmac index (source: Nasdaq)\") + (bigmac or \"\")]\n", - " )\n", - "htmlcode += widgets.row([widgets.h(3, \"Leading indicators (source: EconDB)\") + macro_0])\n", - "if fred:\n", - " htmlcode += widgets.row(\n", - " [widgets.h(3, \"Recession indicator (source: FRED)\") + fred_0]\n", - " )\n", - "body += widgets.add_tab(\"Macro Data\", htmlcode)\n", - "\n", - "body += widgets.tab_clickable_and_save_evt()\n", - "report = widgets.html_report(title=report_name, stylesheet=stylesheet, body=body)\n", - "\n", - "# to save the results\n", - "with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n", - " fh.write(report)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.9" - }, - "vscode": { - "interpreter": { - "hash": "381a209f752e9104bff95ec5e80679ea2e476866b80e4326f1ee6b7658af6049" - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py index dc4a271f7461..c074ac350e07 100644 --- a/openbb_terminal/sdk.py +++ b/openbb_terminal/sdk.py @@ -36,7 +36,7 @@ class OpenBBSDK: Attributes: `login`: Login and load user info.\n `logout`: Logout and clear session.\n - `news`: Get news for a given term and source. [Source: Feedparser]\n + `news`: Get news for a given term and source. [Source: Ultima Insights News Monitor]\n `whoami`: Display user info.\n """ diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[USDC].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[USDC].yaml deleted file mode 100644 index ac447df525e9..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[USDC].yaml +++ /dev/null @@ -1,264 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n select\n date_trunc(''day'', block_timestamp) as timeframe,\n sum(case - when symbol = ''U'' then amount_usd end) as U,sum(case when symbol = ''S'' then - amount_usd end) as S,sum(case when symbol = ''D'' then amount_usd end) as D,sum(case - when symbol = ''C'' then amount_usd end) as C\n from ethereum.udm_events\n where\n block_timestamp - >= ''2020-06-01''\n -- and amount0_usd > ''0''\n group by 1\n order - by timeframe desc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '472' - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNNbBMSUm2MDQxSrZISzNPMU5LTjUyMDY1N042 - STVPNVHSUUpOTM5ITVGySkvMKU6tBQAhooQXRAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:14:44 GMT - etag: - - W/"44-q5TDVqI2cmbhDDLiGzKLvyQ4VxQ" - fly-request-id: - - 01GF0P7HDTDF3AYV3HM4R978WB-cdg - keep-alive: - - timeout=5 - ratelimit-limit: - - '10000' - ratelimit-remaining: - - '9992' - ratelimit-reset: - - '84813' - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-e09ddc8142c8ff7d3fce203573c4e7e4?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKi5JLCktVrJSKirNy8vMS1eqBQAqTkzLFAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:14:45 GMT - etag: - - W/"14-gfn4m/4htgMx1Nnl9+2EBDZ+o8g" - fly-request-id: - - 01GF0P7HPPFFA2SW6Q8PE4P0CQ-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-e09ddc8142c8ff7d3fce203573c4e7e4?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6pWKkotLs0pKVayio5WMjIwMtI1sNA1sFAwMLACIz0DAwMlnbzSnBw0IlYHSb05 - ierNSFRvSqJ6ExLVG5Oo3ohE9YakqDfXNSZVvQFp5htZkqiepPRgrmtEUnow1zUiKT2Y6xqRlB7M - dY1ISg/mukYkpQdzXSOS0oO5rhGJ8WtEYvwakhi/hiTGryER8QsAAAD//0KUD+a6hiTGryGJ8WtI - Yvwakhi/hiTGryGJ8WtIYvwakBi/pJXn5roGJMavAYnxa0Bi/BqQGL8GJMavAYnxa0BS/JrpGpMU - v2a6pJXPZrpGJOVfMxLLZzMSy2czEstnMxLLZzMSy2czEstnMxLLZzNd0spnM13SymczXdLKZzNd - 0spnMxLLZzNd0spnM13SymczXdLKZzNd0spnM13SymczXdLKZzNd0spnMxLb22Ykls9muqSVz2a6 - pJVvpiS2V01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01J - LA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NdUlrr5rq - ktZeNdUlrb1qqktae9WUxPLchMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy - 2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZ - hMTy2YTE8tmExPLZhMTy2YTE8tmExPLZmMT2tjGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkx - ieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ - 5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluRGJ5acRieWnEYnlpxGJ5acRieWnEYnl - pxGJ5acRieWnEYnlpxGJ5acRieWnEYnlpxGJ5acRieWnEYnlpxGJ5acRieWnEYnlpxGJ5acRieUn - aMkEKfPpRiSWn0Yklp9GJJafRiSWn0Yklp9GJJafRiSWn4YktocNSWwPG5LYHjYksTw3JLE8NySx - PDcksTw3JLE8N8RangMAAAD//8rBuV7IkMTy3JDE8tyQxPLckMTy3JDE8tyQxPLckMTy3JDE8tyQ - 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 - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:14:55 GMT - etag: - - W/"9af7-WUxr4dUWiUQwMLKR+X8sug9PBVE" - fly-request-id: - - 01GF0P7VNPKXV4SB42QKE3PC7K-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[symbols0].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[symbols0].yaml deleted file mode 100644 index 4e77ac87d5fd..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[symbols0].yaml +++ /dev/null @@ -1,858 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n select\n date_trunc(''day'', block_timestamp) as timeframe,\n sum(case - when symbol = ''DAI'' then amount_usd end) as DAI,sum(case when symbol = ''USDT'' - then amount_usd end) as USDT,sum(case when symbol = ''BUSD'' then amount_usd - end) as BUSD,sum(case when symbol = ''USDC'' then amount_usd end) as USDC\n from ethereum.udm_events\n where\n block_timestamp - >= ''2020-06-01''\n -- and amount0_usd > ''0''\n group by 1\n order - by timeframe desc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '494' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNNjdLtjRLS00yNDY0SzFINDI0NklONk5LTDZI - S06xNFPSUUpOTM5ITVGyKikqTa0FAMwg9V1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"43-f3m9ZGaa4MiJolas/MEhJEbgGNM" - fly-request-id: - - 01GF0TQ8M18R7H6CAGSGB701HV-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-c76c96feb1316d0a2134cc3fac0fcd96?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"118b7-6J6yPO9XYWSI8/cM9Xmd0wXzXXM" - fly-request-id: - - 01GF0TQ8RR7QQH3DT6517WVBC7-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats.yaml deleted file mode 100644 index 10eecedf41df..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats.yaml +++ /dev/null @@ -1,184 +0,0 @@ -interactions: -- request: - body: '{"sql": "select\n date_trunc(''week'', s.block_timestamp) as date,\n sum(t.fee_usd) - as fee,\n count(distinct(s.from_address)) as n_users,\n count(distinct(s.amount_usd)) - as volume\n from ethereum.dex_swaps s\n join ethereum.transactions t\n on - s.tx_id = t.tx_id\n where platform = ''curve''\n group by date\n order - by date asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '388' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdO1TEuxSEwxTrZMtTQ2TEwyMzM0tjC2MDNMTUtM - s7AwN1DSUUpOTM5ITVGySkvMKU6tBQAfnID9RAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:15 GMT - etag: - - W/"44-icLlpJusNrO2+YzTyfb2yGjlgZA" - fly-request-id: - - 01GF0TQ981WAH8WZEHRT3ZKWB4-lhr - keep-alive: - - timeout=5 - ratelimit-limit: - - '10000' - ratelimit-remaining: - - '9977' - ratelimit-reset: - - '80102' - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-9fd8ad3c9e931ab661383861efaf8870?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKi5JLCktVrJSKirNy8vMS1eqBQAqTkzLFAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:15 GMT - etag: - - W/"14-gfn4m/4htgMx1Nnl9+2EBDZ+o8g" - fly-request-id: - - 01GF0TQ9HMM1QSYTWSKRRQHFBD-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-9fd8ad3c9e931ab661383861efaf8870?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - ZeZlFmekpijVAgB++H8Q2AoAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:25 GMT - etag: - - W/"ad8-sf5LVDKFh712tzShzGXcp7mL3EI" - fly-request-id: - - 01GF0TQKFSRXA7ZRQ6D05KBFG8-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats[uniswap-v3].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats[uniswap-v3].yaml deleted file mode 100644 index 38092dca6137..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats[uniswap-v3].yaml +++ /dev/null @@ -1,136 +0,0 @@ -interactions: -- request: - body: '{"sql": "select\n date_trunc(''week'', s.block_timestamp) as date,\n sum(t.fee_usd) - as fee,\n count(distinct(s.from_address)) as n_users,\n count(distinct(s.amount_usd)) - as volume\n from ethereum.dex_swaps s\n join ethereum.transactions t\n on - s.tx_id = t.tx_id\n where platform = ''uniswap-v3''\n group by date\n order - by date asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '393' - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNSzY2NjA3TDE2Nk1ONLOwSEs1MTQzT0pONk80 - TjEyNVDSUUpOTM5ITVGyKikqTa0FAFcJBi1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:22:18 GMT - etag: - - W/"43-YXSdVSomTVod7CBsfttMVpizbvI" - fly-request-id: - - 01GF0PNCBM4RXG8AD34ATNTAXS-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-fc33071d335ca688fe4167bcc7a3d250?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:22:18 GMT - etag: - - W/"b4f-KgwzwsKNMhsr7nBbQ37PwRZfLQ8" - fly-request-id: - - 01GF0PNCGTNX1NPF2A1VWBAYBS-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].yaml deleted file mode 100644 index 0bb195d757a2..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].yaml +++ /dev/null @@ -1,106 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n SELECT\n date_trunc(''day'', balance_date) as metric_date,\n symbol,\n amount_usd/1000000 - as amount_usd\n FROM\n ethereum.erc20_balances\n WHERE\n user_address - = ''0x0000000000000000000000000000000000000000'' and\n symbol = ''USDC'' - AND\n balance_date >= getdate() - interval ''1 month''\n ORDER BY\n metric_date - asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '414' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdM1NzNMNTE1Nk41tTA0STa1SLUwSUoxTDYxTjRI - S0wzNlfSUUpOTM5ITVGyKikqTa0FAAtAnM1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"43-ChAWkttvmcKq7c9L9ujpGopGlsY" - fly-request-id: - - 01GF0TQ80W41K9Y0C5GFZMVEB2-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-761e4533e5814c58e84bd1c43a0faf37?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKkotLs0pKVayio7VUUrOzynNzfNJTErNAYko+bqGBHk6x7s4hrgq6SgFR/o6 - +fso6Sg5+vqH+oXEhwa7KME1hVQWpIL1pCSWpCrpKBWXFGXmpSvpKOWV5ialFoEUFpckFpWkpjiW - KFkpGRkYGekaGugaGoQYGloZG1kZm+kZGBhEKekopeal4FRkAVNUkJie6gcx2cpQRwnEDc6sSlWy - MjQAAZD9iSWlxUpWSmmZeZnFGakpSrUAu0TkMu0AAAA= - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"ed-fhfNu3Lmjm2FyGdzfm0tVbLc5Fk" - fly-request-id: - - 01GF0TQ8EDKNH5DB71B9A6TB41-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_daily_transactions.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_daily_transactions.yaml deleted file mode 100644 index d5666505feb2..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_daily_transactions.yaml +++ /dev/null @@ -1,858 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n select\n date_trunc(''day'', block_timestamp) as timeframe,\n sum(case - when symbol = ''DAI'' then amount_usd end) as DAI,sum(case when symbol = ''USDT'' - then amount_usd end) as USDT,sum(case when symbol = ''BUSD'' then amount_usd - end) as BUSD,sum(case when symbol = ''USDC'' then amount_usd end) as USDC\n from ethereum.udm_events\n where\n block_timestamp - >= ''2020-06-01''\n -- and amount0_usd > ''0''\n group by 1\n order - by timeframe desc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '494' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNNjdLtjRLS00yNDY0SzFINDI0NklONk5LTDZI - S06xNFPSUUpOTM5ITVGyKikqTa0FAMwg9V1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:35 GMT - etag: - - W/"43-f3m9ZGaa4MiJolas/MEhJEbgGNM" - fly-request-id: - - 01GF0TP2DPR60W86T6TTQT75NB-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-c76c96feb1316d0a2134cc3fac0fcd96?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - wJaVlBYrWSmlZeZlFmekpijVAgD9iAELtxgBAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:35 GMT - etag: - - W/"118b7-6J6yPO9XYWSI8/cM9Xmd0wXzXXM" - fly-request-id: - - 01GF0TP2KHAT73YC7592NKYGYG-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_dapp_stats.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_dapp_stats.yaml deleted file mode 100644 index 318d64ddaa97..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_dapp_stats.yaml +++ /dev/null @@ -1,132 +0,0 @@ -interactions: -- request: - body: '{"sql": "select\n date_trunc(''week'', s.block_timestamp) as date,\n sum(t.fee_usd) - as fee,\n count(distinct(s.from_address)) as n_users,\n count(distinct(s.amount_usd)) - as volume\n from ethereum.dex_swaps s\n join ethereum.transactions t\n on - s.tx_id = t.tx_id\n where platform = ''uniswap-v3''\n group by date\n order - by date asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '393' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNSzY2NjA3TDE2Nk1ONLOwSEs1MTQzT0pONk80 - TjEyNVDSUUpOTM5ITVGyKikqTa0FAFcJBi1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"43-YXSdVSomTVod7CBsfttMVpizbvI" - fly-request-id: - - 01GF0TP32HHZQSJT8ZQ89A38KA-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-fc33071d335ca688fe4167bcc7a3d250?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - 2LKS0mIlK6W0zLzM4ozUFKVaADfuoyhPCwAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"b4f-FL9M7yKwoZj9rMPMgI6HmQKZvD4" - fly-request-id: - - 01GF0TP37CDWJ7SKX1KNYFXFGV-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_total_value_locked.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_total_value_locked.yaml deleted file mode 100644 index 2e07fe1efe8b..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_total_value_locked.yaml +++ /dev/null @@ -1,159 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n SELECT\n date_trunc(''day'', balance_date) as metric_date,\n symbol,\n amount_usd/1000000 - as amount_usd\n FROM\n ethereum.erc20_balances\n WHERE\n user_address - = ''0x0000000000000000000000000000000000000000'' and\n symbol = ''USDC'' - AND\n balance_date >= getdate() - interval ''1 month''\n ORDER BY\n metric_date - asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '414' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdM1NzNMNTE1Nk41tTA0STa1SLUwSUoxTDYxTjRI - S0wzNlfSUUpOTM5ITVGySkvMKU6tBQCItla1RAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"44-s2PPX6EWKS6gFs7IgeKrrq0b9Rc" - fly-request-id: - - 01GF0TP3FVTJTTSM519PV4FVF9-cdg - keep-alive: - - timeout=5 - ratelimit-limit: - - '10000' - ratelimit-remaining: - - '9978' - ratelimit-reset: - - '80141' - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-761e4533e5814c58e84bd1c43a0faf37?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKi5JLCktVrJSKirNy8vMS1eqBQAqTkzLFAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"14-gfn4m/4htgMx1Nnl9+2EBDZ+o8g" - fly-request-id: - - 01GF0TP3QGBX48JR6MK2Z6NCSB-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-761e4533e5814c58e84bd1c43a0faf37?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKkotLs0pKVayio7VUUrOzynNzfNJTErNAYko+bqGBHk6x7s4hrgq6SgFR/o6 - +fso6Sg5+vqH+oXEhwa7KME1hVQWpIL1pCSWpCrpKBWXFGXmpSvpKOWV5ialFoEUFpckFpWkpjiW - KFkpGRkYGekaGugaGoQYGloZG1kZm+kZGBhEKekopeal4FRkAVNUkJie6gcx2cpQRwnEDc6sSlWy - MjQAAZD9iSWlxUpWSmmZeZnFGakpSrUAu0TkMu0AAAA= - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:47 GMT - etag: - - W/"ed-fhfNu3Lmjm2FyGdzfm0tVbLc5Fk" - fly-request-id: - - 01GF0TPDQ1AEJBQYFPXF7599EH-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_daily_transactions[symbols0].csv b/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_daily_transactions[symbols0].csv deleted file mode 100644 index dabf5e79b0f8..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_daily_transactions[symbols0].csv +++ /dev/null @@ -1,796 +0,0 @@ -timeframe,DAI,USDT,BUSD,USDC -2022-08-08,696549.068261015,6883865.44947931,,60100842.9594408 -2022-08-07,55478227.0129458,142436767.74422,,391540772.566818 -2022-08-06,921149847.244623,234519469.130976,,2092821123.01755 -2022-08-05,1295899973.512,659450660.951105,,3255484885.3575 -2022-08-04,7709800798.75701,2547802927.26371,,9358731330.11925 -2022-08-03,11012564986.4206,2767309767.73299,,12443706934.9529 -2022-08-02,12811759128.9201,3016713400.96395,,15487985470.7385 -2022-08-01,8823228328.3265,3468668913.695,,15670761717.5337 -2022-07-31,3039224195.19408,1436666560.11098,,7970185422.99008 -2022-07-30,3218039634.22373,1769738140.45459,,8195611210.94511 -2022-07-29,10575816270.1378,3205585054.06391,,14973362401.8052 -2022-07-28,5536447093.80861,3981715344.23448,,13953930153.851 -2022-07-27,4490236804.71598,3619419502.19643,,12397757851.5011 -2022-07-26,3244173561.19432,3797482287.98411,,10143878333.8585 -2022-07-25,3113569214.52379,3361635360.53148,,13147446117.0178 -2022-07-24,3579767475.67209,1456223853.00139,,7547498794.7169 -2022-07-23,12807432327.2269,1813132393.89947,,11511115564.9638 -2022-07-22,5072528779.04504,3871243165.94748,643641564.095963,12417203085.8068 -2022-07-21,5160686207.445,3813592261.22715,629157800.88735,13441864275.8206 -2022-07-20,9717683256.14005,4002955570.27921,1159049726.29704,20700537880.2768 -2022-07-19,5028402602.2445,4520514344.82047,525139593.840689,11045993696.4138 -2022-07-18,3227854510.94078,3994251360.96276,1193617649.52338,14178611224.0926 -2022-07-17,3436900479.50879,1790283787.53514,119986173.042141,6546987180.27934 -2022-07-16,1367635576.61295,2310931520.4203,128367792.999903,6367839361.06222 -2022-07-15,6758703321.83494,3610116334.14735,1322948962.52974,12618815344.6228 -2022-07-14,3006422823.36289,3289585590.31125,779665624.965346,10067727046.0183 -2022-07-13,3828489501.89532,3441423598.11136,585989943.665163,11334267570.4135 -2022-07-12,5083016900.78775,3363215320.57461,650768267.552713,12083259728.2855 -2022-07-11,6179304657.16556,2702712865.24188,1190443390.04913,13832735855.4197 -2022-07-10,5817102886.20893,1562671635.16181,109718345.216767,9233911113.98243 -2022-07-09,6029183188.82781,1326079808.0162,374827662.435708,9289241423.42353 -2022-07-08,3140674637.60343,3051410272.97657,488023520.430931,12457455624.8892 -2022-07-07,4196965354.71779,3706753832.68082,324274105.762342,11660826607.961 -2022-07-06,1374097270.63586,3655739645.55223,881835035.181127,10471313891.7528 -2022-07-05,6605457225.24037,3649182338.60526,280777216.940619,12458441996.9406 -2022-07-04,707168953.473921,417674810.939526,,1952817046.31055 -2022-07-03,,,, -2022-07-02,,,, -2022-07-01,,,, -2022-06-30,1943331295.8726,3160748166.19171,407483541.586193,6335179865.76898 -2022-06-29,4276192947.74726,4908104803.16038,847482758.154662,11858825915.6453 -2022-06-28,3094460678.8048,4319204111.34131,369289925.144288,9236689759.39326 -2022-06-27,2103560037.04045,3491502036.9742,385540443.629008,9154390420.15228 -2022-06-26,2300567584.85319,1658959798.85294,38228888.6321954,4558202076.37419 -2022-06-25,593867740.448034,1813989631.79779,291656865.566147,4207203361.2455 -2022-06-24,4753161601.29779,4888195572.23085,826853256.79178,12650816377.4945 -2022-06-23,4246939693.59827,4446188209.6336,1121077566.22768,11953930556.8142 -2022-06-22,1794817137.95205,5878056633.08216,1047653504.23131,10566689798.1941 -2022-06-21,3884784399.50408,6014500754.79117,1998316474.46779,11486733320.4321 -2022-06-20,3566123655.85468,9846691038.94227,764161484.90086,14865437109.5512 -2022-06-19,5380981503.61972,4379789876.43933,1260765933.08897,13975674101.2024 -2022-06-18,13376842600.1513,5670229681.70557,1192438003.23676,20488876955.6774 -2022-06-17,6119178680.5633,7059320543.84916,1769980045.58102,16986451274.163 -2022-06-16,4133408366.55031,8483863946.17641,1565833008.75848,15232973574.3018 -2022-06-15,5971959435.91127,11165023314.4898,3664459045.0298,29901401007.063 -2022-06-14,6693921646.50561,13525502740.3682,2370233945.35995,25343802071.893 -2022-06-13,10018934996.8789,14023446633.2144,3074027418.54999,38795371326.3182 -2022-06-12,5800205671.51764,3147880373.35771,577674536.796713,11497726609.6843 -2022-06-11,3140008691.54716,2742285603.01457,521527298.979933,7758183839.01235 -2022-06-10,1973815746.69573,3461369655.63198,555330021.662104,9175067520.95453 -2022-06-09,1554053061.57067,3235744595.77186,688149004.368769,8748831367.42219 -2022-06-08,211816480.688644,400378203.61287,117945520.303798,1101517682.65645 -2022-06-07,1435072648.64027,3364232565.74628,945013956.772079,4519970357.01152 -2022-06-06,1338719658.99798,3922670451.07235,971516282.030056,8918231579.47426 -2022-06-01,888148054.649171,2959197893.48107,545887687.526495,3542252698.90311 -2022-05-31,2298533560.31296,4848497906.55551,1231867687.11145,9587333779.70882 -2022-05-30,2521317115.21217,4214301821.01666,270984650.133637,13164808120.1363 -2022-05-29,257060342.660975,1201238699.99477,405770044.214284,2956031197.90368 -2022-05-28,1540246253.43324,1649405746.88301,438215981.232171,5453519789.57636 -2022-05-27,2647426053.33231,4768781363.59888,1251863348.37132,12972962474.9062 -2022-05-26,3286814237.67256,4611309937.39176,1483163809.99215,13245924414.7761 -2022-05-25,2140083455.9664,3470931834.13929,763992787.675034,12000434302.2047 -2022-05-24,2447041956.34332,3550709622.57756,217477762.768763,12443108065.9403 -2022-05-23,1649148702.77621,4283492288.381,805261360.917192,15588160816.5909 -2022-05-22,474181769.218894,1642768175.9701,671207937.177331,4845608919.26185 -2022-05-21,2454371668.60647,2260537568.71962,106308160.275547,6353393376.90221 -2022-05-20,5153129183.34468,5497383684.93384,137623152.047554,15106230879.8623 -2022-05-19,3070875419.24793,5327644193.47946,1505207636.04842,15638581862.0495 -2022-05-18,1111568627.736,4932217657.13416,939217729.15354,13225891112.849 -2022-05-17,212595621.370361,2581842869.75419,619376321.805174,2823479166.24682 -2022-05-16,1796681804.70777,6552907795.22871,2172199434.90015,16963268300.8597 -2022-05-15,3350184438.35331,2562112623.86598,297227817.867724,7854442349.34194 -2022-05-14,2059634281.54843,5426201756.56766,1593359718.50934,9108139399.06968 -2022-05-13,3137006905.76305,15156952655.2297,3868227850.34876,22929125962.172 -2022-05-12,10380621707.8624,33074227409.5953,4381966221.15216,43313952766.4695 -2022-05-11,8425296578.94272,21653846507.8059,4220754350.45912,31754652067.1365 -2022-05-10,3152253623.27522,13174824159.035,1190967797.04976,19959647510.2447 -2022-05-09,7157020478.40014,11289794813.6343,362052159.227394,24392870887.7522 -2022-05-08,6188328452.3321,6374559840.30725,811524488.514459,13240337983.1733 -2022-05-07,2018241548.70062,4268839439.25356,5114198279.3733,7194891783.2165 -2022-05-06,2933993127.07536,5995456155.59712,7181894166.98528,11144837420.3437 -2022-05-05,1766419730.08363,5474314671.37787,1164557696.86172,10554878076.9091 -2022-05-04,1654960398.23165,4493247009.16862,256188701.817401,10315094180.0796 -2022-05-03,269117.924174702,1843388.15213565,7840.100081066,5095231.11649359 -2022-05-02,12345.835604028,734000.305790821,543.611518765,1339773.69391452 -2022-05-01,,738387.788112833,,1079891.90458082 -2022-04-30,2297287288.84115,1879231670.87253,266311362.852483,5550110741.15987 -2022-04-29,1425065442.83286,4412693479.19355,1638809702.11955,8480560331.17216 -2022-04-28,1832128920.3195,5168160421.92276,437795129.967195,9319454399.88714 -2022-04-27,1083136121.84367,4078118848.8177,471442187.528315,6755003502.26006 -2022-04-26,1730157012.66095,5147119909.73921,686493198.107569,9177718246.98773 -2022-04-25,1502716188.65882,6307029359.92487,1101370208.3563,10776100473.9138 -2022-04-24,504983851.364299,2614028927.40107,272126922.702619,2704804459.50499 -2022-04-23,732531331.16035,2287189608.92392,53865126.017983,2594419040.73229 -2022-04-22,1271614733.44788,4983570476.04154,1920233889.34913,7222304459.91232 -2022-04-21,1061828735.60931,4988965011.16136,660363259.449558,7806652158.75309 -2022-04-20,1260064818.1416,4968883359.16947,1226787768.58256,10864462432.5095 -2022-04-19,699147895.495671,4182871249.45185,543627511.054257,7451118249.33172 -2022-04-18,,,,247474.972244322 -2022-04-17,2525384439.42036,2256571970.70283,9127718.11056824,5773794938.91803 -2022-04-16,446980068.369895,1805676410.34198,45331980.5027842,2503640930.25771 -2022-04-15,756773208.811889,3560115546.62495,171871440.316572,5557393360.56746 -2022-04-14,1323064919.54724,4029984871.72464,554592135.14439,7970572046.91305 -2022-04-13,1093087106.92093,4453802245.02984,887125136.67463,9515267387.48911 -2022-04-12,919100771.423777,5636647365.21301,1005343002.30889,9841270039.01335 -2022-04-11,2330779030.62203,6447003974.38265,701580193.773654,13145284071.7204 -2022-04-10,494380136.836548,2159928892.65247,268486868.532888,3061980829.98823 -2022-04-09,1485391618.05424,2298570633.45637,975418025.038012,3742089428.62799 -2022-04-08,1458342053.64275,4944539736.40174,332723847.751848,9646964191.82418 -2022-04-07,2186054541.98661,4407107743.86765,512462880.969004,8337803230.06056 -2022-04-06,2242227426.2128,7110724912.40087,866909860.814656,10350191234.7265 -2022-04-05,776395720.056537,4227360102.1638,798670747.153973,8757186760.97851 -2022-04-04,657482760.326543,3940632908.66443,301044103.693711,10268131401.4625 -2022-04-03,794959386.750565,1999469241.15043,208415588.538409,3262752151.76399 -2022-04-02,1253099707.72246,3006915436.24096,264936007.87314,5008468782.99416 -2022-04-01,1183454016.06363,5101736237.8389,1282538578.88821,9121705348.1619 -2022-03-31,2041533201.23621,5483419085.36223,430428728.536005,9537733672.9404 -2022-03-30,1209561384.73793,5324918126.13003,380605879.799079,9838326795.60175 -2022-03-29,2780699059.3809,5520691093.85118,252952005.32329,13105109704.0727 -2022-03-28,3185929977.55501,5800714919.86182,534833567.217266,11419532251.9388 -2022-03-27,893219593.88714,2649369308.30323,150762317.429929,3675967991.67686 -2022-03-26,975398939.265387,3415320365.35633,107407250.911986,4247804207.17423 -2022-03-25,2196399673.65963,7096510054.00182,945080242.938084,16945813154.3133 -2022-03-24,1714469575.53544,7786460758.26989,392734498.481742,10208039788.3524 -2022-03-23,1009173224.68805,5797161255.23752,371638197.958114,8834596016.01829 -2022-03-22,1604359744.23523,5171347560.80018,347076232.31309,11109120696.6518 -2022-03-21,1313543517.5575,4222215302.24796,344959437.414191,8952500779.20518 -2022-03-20,982488028.387372,2963725371.4261,132990038.427497,4644204689.56119 -2022-03-19,824714193.195814,3896795728.83525,369298420.720443,4860532803.91548 -2022-03-18,941097284.810001,5317622439.52913,530640664.506847,7691783239.02078 -2022-03-17,1951278573.23,4850513208.40084,551466668.800974,8586747106.57608 -2022-03-16,839024639.388055,4327282649.00866,655608883.517386,7176136174.89306 -2022-03-15,774452601.582944,4064564564.81502,452979024.690389,6013732188.05423 -2022-03-14,1118002682.73903,4833263247.5189,265338170.847161,9869477603.58913 -2022-03-13,658595260.035506,3302510031.04919,38414657.7728439,4183631568.6218 -2022-03-12,617331623.161178,2922575217.82031,292361099.592461,3785289402.59484 -2022-03-11,1011170499.14037,4806856244.7615,420352449.124927,8654437713.93054 -2022-03-10,776029363.026199,5291280973.51463,581434066.256173,8171944329.18353 -2022-03-09,949912383.783688,4110422035.10851,1306946061.96168,8199541168.54771 -2022-03-08,1416644372.45681,5662608895.66869,820957088.98157,10234033608.4291 -2022-03-07,1441997394.44318,5390417951.50365,2131759463.0168,10055406909.7088 -2022-03-06,1525258047.43718,3136431764.4943,1252469981.9229,5406646400.47898 -2022-03-05,3385809396.22287,2738038826.69268,86741755.52311,4366841872.57058 -2022-03-04,2267224268.11517,6226338862.2743,1179926721.35147,12095418010.828 -2022-03-03,1242209506.75247,6646867476.48019,712637499.146776,8779584166.28788 -2022-03-02,1830024211.48,5125372801.00284,1747455448.26715,10662402262.1459 -2022-03-01,1498339650.00006,7340903278.92353,563878255.12322,11165178417.5234 -2022-02-28,883978298.956209,7457031553.5785,1188636636.1285,7356978307.92457 -2022-02-27,577995815.161149,2803276640.50604,80412220.4439756,5337027341.10388 -2022-02-26,897693047.974731,2649592852.16859,92827570.5432283,4012825831.21491 -2022-02-25,2347908627.03195,6088954264.64337,2071308553.66297,11202301030.282 -2022-02-24,5999057860.36481,9286139266.19335,1824772931.84852,15116075447.2569 -2022-02-23,1028942021.47663,3819523650.36269,714049407.047257,6618646836.43473 -2022-02-22,1007152423.96478,6232871041.75661,987681840.543408,6587153662.44109 -2022-02-21,5799628217.33986,4834181499.87164,162602623.897236,8529056960.74527 -2022-02-20,1851868626.62865,2708079745.82876,186223128.017507,4581071768.57085 -2022-02-19,1213472147.4464,2309959713.19159,403355926.396557,3541931043.03986 -2022-02-18,1059384693.82179,5281039306.28912,1926050019.87344,6551727024.51967 -2022-02-17,1585283385.65774,4792696256.97161,918925130.158167,7874297385.62819 -2022-02-16,1289530609.20884,4506257642.77722,677032719.849259,5926819598.9408 -2022-02-15,1336363500.05729,4604377014.45188,991308429.223694,6525512252.3959 -2022-02-14,907690378.496442,4794608198.58783,361544535.739274,5692921839.47896 -2022-02-13,262367586.625162,2005443204.71265,23709153.6299159,2818628598.51361 -2022-02-12,839816606.417976,2789001049.025,697360867.570067,4298111633.74082 -2022-02-11,1730338300.77367,5339998860.46147,1755337443.63247,8428830077.68777 -2022-02-10,2056134933.66019,5571772730.40293,906125349.334113,8279997790.66682 -2022-02-09,811964733.303901,5316485660.37998,1400794834.39801,6696892518.38427 -2022-02-08,1324708356.40283,5569192125.99831,1845163403.58322,6520027585.5525 -2022-02-07,1442340545.8801,5814387507.20965,933171978.880003,8819268267.77265 -2022-02-06,775439669.294986,2035891840.33818,1688421536.87848,3578435445.37817 -2022-02-05,1109348869.92294,3201417644.68224,401404392.717797,5408170588.14839 -2022-02-04,874151128.976837,4299253599.72676,1080538633.41425,7007744584.87233 -2022-02-03,1077422699.17617,4334707884.03263,1470279437.24283,8029864416.1599 -2022-02-02,1911343294.54559,3509714999.79701,1117247493.16284,7260424317.7277 -2022-02-01,3311589265.14221,3507072438.75676,1836929542.58139,7756567339.42388 -2022-01-31,1223427509.49714,2461736879.92775,384262211.82383,3844603921.04435 -2022-01-30,1366175835.43257,3074019513.32745,218410399.086163,4221211356.74585 -2022-01-29,1601586119.87427,5250024145.23691,276910753.428953,6509061520.28036 -2022-01-28,4233083100.06128,11886069414.9858,2007045931.3014,15454033014.6702 -2022-01-27,3342705611.12887,8981581734.90539,1172791257.19952,11977455874.7442 -2022-01-26,2008843744.8935,6990838615.41941,1273280609.05598,11374228146.6445 -2022-01-25,2420251285.57853,6614269725.38099,705822107.172759,9334508090.23838 -2022-01-24,4124686672.31619,9373966317.14864,2362639166.00378,13855733788.0132 -2022-01-23,1184062707.98453,4760584574.9774,1263713468.48308,6522726897.20582 -2022-01-22,8082698021.01535,16379170734.4037,1130659149.82741,15937761228.191 -2022-01-21,6197204719.46752,8636070785.96914,1647618578.42518,18170843347.6328 -2022-01-20,1647072461.2352,6020502522.49607,1084544689.05451,8227730004.92812 -2022-01-19,1252365335.38158,5608842172.14709,775783847.153321,6821787944.99068 -2022-01-18,826247471.677817,5485515094.84823,577542789.832961,7231057952.5223 -2022-01-17,1388748418.05264,4524768232.95435,1160424731.84981,4676597476.70682 -2022-01-16,824511068.081144,2775300900.42247,82265161.1975697,3414934957.10682 -2022-01-15,976106787.906216,2885300002.03772,469651568.153699,3294998384.07307 -2022-01-14,2424339381.77256,4906848810.70173,684634026.535567,5684306678.01546 -2022-01-13,639453195.689038,4332752341.76715,322555202.315328,5842110670.42403 -2022-01-12,892045568.414802,6167630869.3242,487322457.999294,6697319755.80447 -2022-01-11,1056676048.61738,5620376772.21142,236192325.892109,5408054335.66305 -2022-01-10,1834782733.54601,5695817664.70711,384602589.492454,7937149173.9772 -2022-01-09,623569807.444202,3004179652.12067,780729905.900621,4477297398.5248 -2022-01-08,1374379394.75475,3620017259.08317,521441316.196113,5718286997.89884 -2022-01-07,2305795865.85812,10666594283.9532,940251247.150867,9639955144.04818 -2022-01-06,2088020555.25947,7870613173.07686,758308795.965044,8631037899.17863 -2022-01-05,1552440578.25139,7388018874.63421,1786789113.3403,8235313252.62371 -2022-01-04,1071335781.90278,5816327965.77174,1706203147.22099,6615407475.64949 -2022-01-03,711335694.380754,4732588106.32982,483094851.851051,4843149507.24098 -2022-01-02,1693101468.83744,3235590269.16563,306161156.092777,3118169693.43783 -2022-01-01,2064625236.46146,3827393327.63698,271114736.677353,8499235253.95334 -2021-12-31,2622829038.7964,5410208847.54358,1374776972.00226,8380671206.93344 -2021-12-30,7643748261.90107,7911540571.63773,733247893.887632,5970964801.78717 -2021-12-29,14248808194.2524,8744923096.38935,1706271184.72741,7180347377.67822 -2021-12-28,18591133538.0301,7084805627.05361,972658720.540426,7069697323.1318 -2021-12-27,8282922998.50193,5469192782.89576,628461036.314241,5426145704.99443 -2021-12-26,8562255017.5826,4163503232.68208,299992221.835625,3505548308.97337 -2021-12-25,2486520652.18038,4024461887.1005,934539616.792877,4766988315.01832 -2021-12-24,6499614904.42077,7977028672.22039,744316628.545004,7665671167.35802 -2021-12-23,21240810158.2149,9534402786.85765,622573783.400751,7954372446.29784 -2021-12-22,18673391781.0352,6772027649.09396,1066936750.87296,8335101541.9538 -2021-12-21,16284404238.6331,6017050132.55236,958361802.12612,8225286209.86266 -2021-12-20,11525822166.4095,6753882788.74133,1235247443.088,7103917209.76178 -2021-12-19,16016728315.4321,3304128497.35365,1545197938.52241,4885633599.13049 -2021-12-18,13943523692.6574,4092094462.36238,162144272.819658,6027710197.97488 -2021-12-17,24561106271.1019,5518157353.52649,1945816076.94263,8116695011.69308 -2021-12-16,16691550151.8463,7257937769.69625,1131333407.16399,8104676150.82448 -2021-12-15,24127435008.5916,7078678718.41478,920537311.018007,9612938808.00617 -2021-12-14,8463753394.23345,6161815063.69662,926023682.983387,7759529398.38571 -2021-12-13,39108110080.5329,7148006122.69172,643190234.129226,8944891636.47055 -2021-12-12,3580957879.84041,3225588359.30744,481912031.902114,4275827864.66957 -2021-12-11,11220578573.5706,3588241205.16729,407689875.840604,7079935813.66577 -2021-12-10,24489844038.5915,10375573332.5131,1562587179.53559,9569320030.73991 -2021-12-09,11192817341.0104,10889505223.4856,857748679.076964,8974724851.83023 -2021-12-08,9140631115.79411,6474345880.43993,1367384252.66395,7130719024.53687 -2021-12-07,6500826337.94671,7870847845.3267,1627549089.91082,7541939545.64719 -2021-12-06,9855565078.31874,11569275689.2187,4001062346.26661,12178867527.7093 -2021-12-05,1561510739.45309,6423204229.94424,1007616735.57657,9783651100.19811 -2021-12-04,5721891704.2736,13428977763.8095,1567846736.7747,14853780842.0171 -2021-12-03,1663363404.72675,8253509089.53377,1869267773.73425,8817139730.21949 -2021-12-02,1463618860.75532,8952853200.74415,1165556346.46115,7517328272.16139 -2021-12-01,1611312733.42124,9245033427.48347,1217192494.79788,7710214734.49977 -2021-11-30,1428631501.57531,10073059480.9198,2978951089.95691,9954105983.76776 -2021-11-29,1084722279.15998,5761966664.57151,1036908285.42466,6810703040.99944 -2021-11-28,3503921471.10068,4195097275.41338,646153283.486517,5097268613.43394 -2021-11-27,940030907.018831,4137936304.87196,528524535.172914,5224003624.83418 -2021-11-26,3592130921.95384,8571185936.05124,1359389002.83161,10885406626.0251 -2021-11-25,1437696045.95757,7060085922.82059,640264407.182259,6510954226.67345 -2021-11-24,1230660811.73408,7380848994.07616,834443908.062377,9200089800.04704 -2021-11-23,1587039110.12495,6590774731.01438,2518960125.8051,7609750724.0803 -2021-11-22,2049400759.41127,9000164529.96667,1291957234.60057,9197973533.78178 -2021-11-21,1722603765.41912,5221519001.95317,2090876141.5552,4981953674.7722 -2021-11-20,4597440686.02264,3830214914.21817,633998054.667352,6860092261.67561 -2021-11-19,1793898819.8447,6982470462.38052,2499334671.28648,9428338154.05625 -2021-11-18,3463930296.37064,8386037060.67099,1347638580.12242,12040452605.3755 -2021-11-17,3076376592.50062,8806606105.46844,2047216523.84092,8130648388.90892 -2021-11-16,2773695527.86625,10136333628.5685,1138655550.07759,11706107362.7211 -2021-11-15,2606637391.78781,7251571700.74001,871500008.174801,7699148510.51636 -2021-11-14,1485807386.61687,3465562789.33849,440362584.954425,4219247067.5226 -2021-11-13,1077166383.57652,4449203447.36717,736720811.357436,5412203417.90204 -2021-11-12,1963782055.33326,8420256805.96551,1699667427.99891,10182939449.7088 -2021-11-11,2023869262.34353,6277913935.10233,1299221355.99193,7823529204.68095 -2021-11-10,2834349277.8481,8482920265.37794,1636144111.2293,10490910506.1739 -2021-11-09,1917677080.38991,15099704265.4807,2378151863.02354,7912338034.98751 -2021-11-08,2615981811.52202,10332275281.7979,2560379855.79395,8676333965.07962 -2021-11-07,2104281402.85984,4383937069.79282,651752027.925388,4031717259.183 -2021-11-06,934501906.722915,4716982608.34576,1679463414.97037,4514573773.51104 -2021-11-05,2911330595.64593,8482693181.0652,615486490.937985,6281098836.3795 -2021-11-04,3677797110.61158,10811222147.8808,1927959219.41668,8319116556.08652 -2021-11-03,2793773704.1579,6969928518.96325,620225977.326198,7305802415.52228 -2021-11-02,1665216986.11274,7251552587.88829,3116868666.31115,8457690652.16107 -2021-11-01,1600374343.51066,7644717632.73768,2399518968.27762,7414535804.23788 -2021-10-31,2230442658.77027,4891364031.14979,1252172724.2381,4683665348.28523 -2021-10-30,2794305899.31901,5607149320.88696,1236433111.25193,8944460647.70995 -2021-10-29,2970563557.53894,11827080496.054,2386140622.24291,13745650551.4684 -2021-10-28,5521142497.08641,9520143678.00076,1510752597.82019,9978347079.32533 -2021-10-27,5266890661.72085,10060040846.779,1373816767.21362,8625958618.11682 -2021-10-26,9100405632.58685,7606670936.8543,794004828.241502,5964289628.08707 -2021-10-25,1450537764.27327,6849431181.41415,1079865850.93635,7118940353.92225 -2021-10-24,778075239.980223,4013503783.44765,489366688.111539,3600061587.71532 -2021-10-23,2125555706.7039,3648706633.56919,217537125.172155,3919571175.04865 -2021-10-22,1494015606.34848,7888448520.73596,1093398632.96643,6904258727.62909 -2021-10-21,2959274404.2811,9548609500.01974,2193441838.9735,10920828389.3929 -2021-10-20,2002331445.05039,8621208695.92862,1665151400.27,7373918627.36503 -2021-10-19,1230409584.62971,6500862218.64478,1033015876.52302,7012580039.51362 -2021-10-18,1053055474.42237,6459877023.35071,2425786816.87573,9204128238.92776 -2021-10-17,743916837.31409,3048853114.1994,367599171.987934,3345996590.07026 -2021-10-16,1528520539.38665,5416818362.30991,473684927.937401,5264783228.6909 -2021-10-15,2782434982.14082,8781111937.16252,1450989244.74147,8155437910.55764 -2021-10-14,1902785038.88365,7199943905.35057,1432110803.32222,6392281933.80967 -2021-10-13,3140575937.46246,6636869662.80349,1277957670.43674,9504140955.00377 -2021-10-12,1527948326.35463,7041191684.60693,1087603736.58001,6683962526.17029 -2021-10-11,1109324674.30092,7270408904.82258,630260275.089657,5485904032.51103 -2021-10-10,703630210.062448,3361025005.21128,840609155.628083,3763007704.70741 -2021-10-09,1010019493.49153,4425303048.26771,157184258.88934,3352140626.61961 -2021-10-08,1643478546.33012,7344364312.56255,928003412.166837,6835908497.96258 -2021-10-07,1212093312.87467,8262929332.03152,1372882007.81141,7753769000.19337 -2021-10-06,2572448977.21456,5769574903.40288,1756401866.02937,7125205968.22143 -2021-10-05,1076830825.469,6246223030.24547,457665210.881204,6315324576.60224 -2021-10-04,1242268857.41582,5362121766.16688,558101086.17893,6926358401.6015 -2021-10-03,729259960.646573,3165423645.16434,767286050.765993,4372474470.61927 -2021-10-02,629556529.21861,3918711912.65363,520387577.907148,4466524090.53417 -2021-10-01,1210244217.04561,6484480565.73397,864125800.403659,6735760939.54032 -2021-09-30,5706317953.62322,7375893887.37362,3250975607.69568,10100977983.2464 -2021-09-29,1027943328.06461,5445203741.95125,2323851818.38623,6810925376.90076 -2021-09-28,1029742582.93034,5692138019.75087,716634241.323011,7671294937.14746 -2021-09-27,2349873545.63009,7104154737.50892,1608826566.61765,11592044863.5462 -2021-09-26,848743779.969482,6470410200.31705,610171686.678789,5852497767.89491 -2021-09-25,671559910.626824,4175729554.3068,713389408.567562,4637320304.1739 -2021-09-24,1377105421.77932,8825623131.14134,330731975.894491,8096157269.42887 -2021-09-23,718211544.688131,7903242996.30975,75778627.4059893,5708069825.43339 -2021-09-22,2590637432.4516,6094739626.47435,357334013.382926,7308617178.41108 -2021-09-21,1608698838.76512,6818595170.70937,417353167.681837,9178784688.16273 -2021-09-20,3149102452.85511,8668458276.18677,1511746533.58857,9586792345.11209 -2021-09-19,437831322.459047,3326738020.77576,264147920.358027,2831626989.27651 -2021-09-18,566040259.219058,3443086180.80748,461642074.114907,2796823727.59429 -2021-09-17,754588909.578278,6385298616.5235,136968304.6908,5227252074.27969 -2021-09-16,894372962.377979,6322050081.59012,23717585.6987953,6575652568.63873 -2021-09-15,632157338.317045,5173275218.03389,1033140534.64289,4228016000.22972 -2021-09-14,726318413.947188,5276376755.07229,1290426369.91627,6916415314.96191 -2021-09-13,743837934.677886,6224826706.96919,1318902678.08474,6601229686.09593 -2021-09-12,478972957.219227,3358647640.50286,390509413.239199,3884262693.77366 -2021-09-11,1325623391.48124,3726783462.05806,179529074.362325,3285864080.94258 -2021-09-10,716107352.248007,6260178349.91933,1221610839.01252,7972443453.0617 -2021-09-09,583812050.046899,7521455561.41027,1379261113.59202,6217199277.33506 -2021-09-08,1302855587.17308,9568663905.88809,2393469031.36202,9710436592.54264 -2021-09-07,2032085702.2778,10494389324.3566,1860002163.99685,11864719305.4386 -2021-09-06,1179198090.10214,5896212366.45875,458518797.613576,5724705195.46833 -2021-09-05,686071883.792136,4038492919.87138,559840464.952254,3273141855.76778 -2021-09-04,733347985.70466,4025819350.65679,374257049.892911,3408125248.37688 -2021-09-03,1362280688.8959,8029815500.36917,609751787.036833,8773754975.82835 -2021-09-02,3538675125.24583,8678733013.211,777962764.994889,8747934430.01378 -2021-09-01,1236584779.41435,7503643157.30447,1659386525.31887,6715161274.40892 -2021-08-31,1017858218.93667,7538143110.8682,728591976.499734,7697894190.4378 -2021-08-30,765338780.608937,5933309201.63319,599841160.475655,5724430431.31379 -2021-08-29,611169247.125728,3860885141.67967,456912781.588571,3367708747.52647 -2021-08-28,495114875.594445,3286135108.17699,377744592.830853,2984682719.12305 -2021-08-27,824901884.96498,5847594531.22715,924272614.95901,5087933763.39915 -2021-08-26,823586099.28412,5954554947.53225,642438507.192619,5756930651.55469 -2021-08-25,854797951.410304,7716993940.93909,892580493.257672,6175542517.42457 -2021-08-24,1552694242.29095,17305406432.6781,1004260573.48498,5819173236.64359 -2021-08-23,1565522375.43873,8443029796.37711,896258757.543633,6261398424.49783 -2021-08-22,990632831.780256,4275020534.97821,1086987751.17172,4945132742.15307 -2021-08-21,881488333.540672,4728255594.31935,743212166.712212,4184626325.99146 -2021-08-20,1088545951.23406,9050235060.33999,1524595323.48083,8158741576.82278 -2021-08-19,1114545175.4354,6927626126.85137,1227978159.31751,7230194897.66985 -2021-08-18,1082349671.76621,7160580061.92269,1173295567.08682,7486140890.07537 -2021-08-17,1023471172.63891,7431312143.83049,1119770655.69584,6586201233.17791 -2021-08-16,1328228373.30465,8705865328.23661,1214340944.38776,5479094518.94275 -2021-08-15,644556567.537538,3723529124.9703,480410052.348448,3545412121.46008 -2021-08-14,932887178.866043,4971397959.52991,600244694.100314,3761391742.23466 -2021-08-13,797494220.228547,6977498193.14579,353044425.280766,6060075961.9396 -2021-08-12,2763145094.57072,6778162056.08898,1018843640.85338,6320929214.19146 -2021-08-11,909238114.030849,8053934015.48831,930543988.0234,5939554026.0355 -2021-08-10,1668910364.03694,6603829367.56996,782442216.36491,6461699590.72003 -2021-08-09,1764379331.3446,7845622909.45938,1644114190.99532,8399363738.12868 -2021-08-08,1263187090.10765,4413759585.02443,1214048214.50088,4668274159.09736 -2021-08-07,1164985171.25395,5421194390.46475,612886405.996758,6275685086.53528 -2021-08-06,968874077.259057,4130200528.07798,777427124.22461,4676096048.85322 -2021-08-05,1087579356.42449,7001338270.98389,323226276.668267,5004811972.99232 -2021-08-04,1037405886.23596,4027180664.27661,191035592.448372,4780825077.55706 -2021-08-03,1798531730.99366,4583398088.23083,343003105.541401,4954841639.52824 -2021-08-02,942462501.715839,5603541908.61822,832681357.487549,5441463568.43664 -2021-08-01,1161042390.82975,4723626836.09067,373405997.953738,4535576190.02763 -2021-07-31,2239778169.0371,4527630458.71187,455571492.75234,4148312204.53798 -2021-07-30,1043621937.71512,6065261719.21522,1018174696.09966,5538652504.01732 -2021-07-29,4810906902.93065,6153221592.19366,373223873.6529,5063777958.00561 -2021-07-28,3457924457.92027,6954277487.37716,962773397.449272,6478417305.13673 -2021-07-27,1171778056.7112,6075291403.80325,1943070515.1677,8525124964.54734 -2021-07-26,1658159277.81795,9778875382.49198,2091732428.04674,10496188082.6184 -2021-07-25,790704234.703682,3322120434.17589,738536674.910923,3854248603.46303 -2021-07-24,1675641179.23909,3959032296.8012,1417738490.88122,4277610256.32168 -2021-07-23,982354211.139159,4222423637.9647,917877891.53428,5407255202.86856 -2021-07-22,990841388.622983,5301567451.3339,682232056.296265,4834022015.91307 -2021-07-21,1152582047.21232,6039581542.38708,962431905.799981,7354880746.14719 -2021-07-20,2268655101.00458,5700012271.17896,719301322.522296,8052542362.59387 -2021-07-19,1043628836.71783,5305903478.94944,1433825381.14395,6679505895.80927 -2021-07-18,666623030.573861,2969617990.39194,288890541.63558,3650202389.71545 -2021-07-17,633412640.873535,3366543036.73154,329852372.604561,3969113451.89306 -2021-07-16,1714331829.42058,4317314807.13061,712836695.488135,7057475006.36775 -2021-07-15,1921174084.26366,5746977816.90301,6659327419.90642,9328023281.78495 -2021-07-14,1162383505.2457,5903857793.20293,1818636720.01345,6180969774.43362 -2021-07-13,1412483466.32572,7682803752.37025,1656290552.487,6851559098.85031 -2021-07-12,2505238268.88524,7173677956.57179,1010255598.82269,6830379738.44961 -2021-07-11,864638997.121625,2893216660.3361,137336383.427566,2666904092.14031 -2021-07-10,992590574.239854,3137451374.67079,222609176.221038,4626634392.61712 -2021-07-09,875170926.176999,5649094289.93897,727832355.940957,6818217893.70048 -2021-07-08,806539918.97947,6306128255.0944,732622026.296161,6523255433.15513 -2021-07-07,1870682770.46876,7230478114.44637,995778828.772256,5007126570.08426 -2021-07-06,1940251519.60841,5858309950.51541,579177432.180925,5753856891.23642 -2021-07-05,3282110784.23807,5304640948.82059,268262413.727426,4999428176.15581 -2021-07-04,1683060405.73802,3437070767.88212,357289623.32432,4260206222.6127 -2021-07-03,1033098740.65951,3617781061.28514,294622223.968039,3468530382.32728 -2021-07-02,1179530671.16061,5634129735.00685,1897159769.48632,5564934848.32082 -2021-07-01,1141951453.02971,6575667406.49111,1927926907.62107,6216454373.50742 -2021-06-30,3296681250.67054,6386414634.38232,491379752.144896,7886978456.7775 -2021-06-29,4074624791.1461,7242354153.73671,744104614.528604,10236172577.3112 -2021-06-28,1154288707.36494,7462151165.1123,1471576796.58167,11596274626.9202 -2021-06-27,932936338.795849,3520559992.67485,1021246796.60176,4284902632.06328 -2021-06-26,822192238.221211,3871498633.00369,790425078.182101,4199347372.11959 -2021-06-25,988833982.486823,5969138833.52926,1214228244.39449,9651013460.38636 -2021-06-24,993311904.726968,8815035527.41997,2996697678.9206,12921934529.9128 -2021-06-23,1535477248.55816,7038400415.84733,3027628268.93806,7333753780.95973 -2021-06-22,7171188206.43349,9473188556.626,2400417293.81005,11141152893.6387 -2021-06-21,5414829196.54965,9984758670.91185,2602976255.60659,13182246521.3784 -2021-06-20,960505929.386651,4200656444.45699,1077873060.74748,3595325053.84228 -2021-06-19,1912025333.62294,3995125982.79971,489072836.687756,4497636130.63846 -2021-06-18,2661869388.91899,6635770608.76908,1105489166.48505,7131448073.72032 -2021-06-17,2591322664.02987,6624525086.44973,1022865975.71887,5892454870.05422 -2021-06-16,1339548296.56228,6324977219.32157,859335189.940647,5987372172.16211 -2021-06-15,2528058865.5923,6947020937.93104,2048107213.49027,5226500931.98259 -2021-06-14,1567897983.1705,5483062366.56714,1149347167.39405,5923615092.98621 -2021-06-13,856084403.465014,3840826307.73955,183084919.444759,3958850698.111 -2021-06-12,1601971165.60043,3943120363.05858,273752107.966708,3971594143.44493 -2021-06-11,2519687188.44559,5917129926.77282,1210119618.82308,6131890572.86736 -2021-06-10,1172309952.21766,6334851162.02655,887677130.68624,4976051506.94376 -2021-06-09,2287687251.31258,6938993562.10332,2188266037.09509,7905712097.69297 -2021-06-08,1879067984.7413,7608200043.59342,1253022491.55276,7999984225.75543 -2021-06-07,1764604918.60303,7526529719.35394,1022792325.74212,6736928236.21726 -2021-06-06,628146790.20218,2695871326.31713,478348607.882189,2311052068.38185 -2021-06-05,1179410522.54275,4410123904.3361,252186190.770584,4141205826.16684 -2021-06-04,1516099318.47947,6725801322.76363,1799731248.37164,6704990008.40008 -2021-06-03,2052466545.99295,6706302424.61085,1175998855.36071,7654315480.58664 -2021-06-02,1679987480.70967,6093515940.16683,1395338519.34517,4702363620.37092 -2021-06-01,1998318243.21999,8504068380.7913,1365922701.29098,5405831892.00522 -2021-05-31,1107674236.88761,13990603553.9982,1333706351.66415,6101649785.97808 -2021-05-30,1370955639.94268,6361149067.68456,965699448.579417,9998658003.9821 -2021-05-29,2885147066.28035,6713908551.65196,1894194183.05817,11669177255.4494 -2021-05-28,1795104222.00813,7294135021.46097,1399847693.27668,8137749936.89341 -2021-05-27,2155302332.53429,8316380155.97756,3489259417.72748,9939637358.84602 -2021-05-26,4137089831.4904,10067444167.6387,1892420773.34177,9956003448.65535 -2021-05-25,3199630225.20924,9644122881.61618,1968618189.53696,9943075166.91402 -2021-05-24,3260184925.11593,10413809858.5463,3257743563.82756,12826744494.5096 -2021-05-23,7764187389.46212,12040410806.4439,1691874987.51982,16573929726.1532 -2021-05-22,1991443507.82015,7748975486.96312,1385871408.20368,11853561037.9348 -2021-05-21,3114880285.12248,12343307225.2772,4390470472.99914,16510513113.1034 -2021-05-20,7962180763.20853,14923584847.9367,4387168877.17955,17465194299.7751 -2021-05-19,10614876919.5996,22630770653.885,3954404722.44727,18820986596.6956 -2021-05-18,1803134921.50585,9398484140.87483,2177306735.59874,8059390609.1599 -2021-05-17,3225095685.43891,14266620778.9796,2647354789.66393,9388345339.33957 -2021-05-16,4930141570.85947,6828034194.66386,642655059.834928,6073166708.2871 -2021-05-15,1599062176.63598,6827920213.42543,735253030.030175,5830190207.11734 -2021-05-14,4084725573.79473,12377489395.5046,3068589133.59472,10404006285.9516 -2021-05-13,4441100455.49558,12845154345.7851,3050533194.43955,11442117884.9078 -2021-05-12,2478710464.68617,9716392089.69627,1783127347.47758,9292311852.27285 -2021-05-11,994012634.945119,9741912530.73543,2709956000.32779,6012371719.07536 -2021-05-10,2085691805.86004,13102947242.1916,2694594330.44349,6224043106.70857 -2021-05-09,2069750179.67996,6414102245.84244,3498823957.12624,4345076629.14035 -2021-05-08,1614218589.81453,7393688392.58686,1110580807.49392,4321971960.06161 -2021-05-07,2797664244.70093,8115895146.96804,2026178746.63249,5701072061.83816 -2021-05-06,3346669850.63558,8775350902.07045,1589380151.94912,7635345329.6438 -2021-05-05,3169592092.99078,8764071970.5569,2534972093.9961,9028893645.3016 -2021-05-04,2501624017.31125,8208851472.48297,2718987433.37931,6772585804.05686 -2021-05-03,3159316988.10425,7530004300.67268,2250883334.92514,8767786999.56267 -2021-05-02,1007276797.14004,3698948365.42004,1419206038.43439,3114985614.43086 -2021-05-01,1965061091.95335,4766604957.14309,1579798134.1954,4388262800.35498 -2021-04-30,1305370271.54616,7183781012.80162,2370572418.80866,5533778971.42965 -2021-04-29,1837920768.76303,7318155651.9557,1505650813.48191,5500392219.36782 -2021-04-28,2211092653.25049,7688088079.69574,2905441518.22442,4953126269.98837 -2021-04-27,1818184287.4073,7557853448.87339,147141592.852612,6247349585.20298 -2021-04-26,2743801236.19044,8976216695.7478,,7193348999.43803 -2021-04-25,1527686128.92083,3770445200.14132,,3100132047.42323 -2021-04-24,980220609.45577,4332506373.02716,,3752626337.04262 -2021-04-23,2666221511.02361,11607731157.8919,,7347227366.70476 -2021-04-22,1917864813.0739,7724107626.05337,,4421527536.31378 -2021-04-21,1973701041.02028,7479532286.4197,,6230858186.70419 -2021-04-20,1249752558.43228,7849209994.79876,,4962981789.70983 -2021-04-19,3505998908.44838,9390914584.66997,,8607404510.12022 -2021-04-18,2129685073.35716,9193836188.16743,,9439230020.34039 -2021-04-17,1514786085.07025,6005250973.52666,,3882201840.98336 -2021-04-16,1531203578.28153,10075167241.8419,,6582201662.08612 -2021-04-15,1754655673.3171,5695837870.3385,,3638083174.03301 -2021-04-14,1417468452.66829,8394391860.24847,,6487127510.08241 -2021-04-13,5620855703.59447,8322838732.64675,,6268045546.35926 -2021-04-12,1098001600.84633,6886336759.64591,,4768522335.61767 -2021-04-11,1278885763.49352,3295045221.51513,,2161220193.01508 -2021-04-10,939335073.947175,4522119664.29918,,2807923531.81344 -2021-04-09,763049692.340572,6931673268.21755,,3946680267.25443 -2021-04-08,1215900405.91603,6280009374.67176,,4321295549.12982 -2021-04-07,899803193.381729,9061687915.30815,,4808120867.77911 -2021-04-06,1561648552.85064,6098162794.55576,,4344370043.38028 -2021-04-05,2198646475.42627,4903562290.00291,,4067039569.81775 -2021-04-04,1737246215.30337,3431524877.38991,,2862846586.63757 -2021-04-03,1157082165.79789,4802862334.7296,,4686305376.06353 -2021-04-02,2353349516.69487,7014187056.07479,,4581403402.90425 -2021-04-01,1153225504.27775,7010168636.24701,,3883306992.92758 -2021-03-31,711142200.314837,6168912945.45178,,5014361588.62522 -2021-03-30,630087496.286026,5702210786.55746,,3606781038.74692 -2021-03-29,1121644351.08366,7262350071.519,,5656399121.25355 -2021-03-28,926006958.144035,3257850991.1779,,2606081184.43639 -2021-03-27,617356577.326792,3715995367.26044,,3900135024.07147 -2021-03-26,710925877.426646,5996235041.93547,,4163446719.63514 -2021-03-25,735305241.42262,6359644737.10426,,3738594045.78748 -2021-03-24,898697415.955741,6180280856.44364,,4138115722.44885 -2021-03-23,860534989.335731,5755241261.68204,,4689154350.76077 -2021-03-22,986745103.735344,5937546959.04865,,4012362870.53869 -2021-03-21,767634104.762926,4700478695.45039,,3077081278.40492 -2021-03-20,639791569.506987,5382975362.27074,,3070878686.28528 -2021-03-19,585410262.844447,5673080313.3023,,4419198498.44749 -2021-03-18,488212501.983629,6115506525.92924,,2476669555.48764 -2021-03-17,875159387.101089,6164292496.14711,,3422565452.76863 -2021-03-16,1123511781.51427,7366993114.50036,,4453863179.63914 -2021-03-15,1032156533.44252,8692654710.49887,,3656213692.38365 -2021-03-14,470272035.000021,4507501119.01769,,2228189863.25127 -2021-03-13,784358707.106473,4545463266.72041,,3683093701.64649 -2021-03-12,1087026497.24642,9271609257.97942,,5496995624.61376 -2021-03-11,948576578.59154,6325920806.50754,,2759193089.26543 -2021-03-10,749415218.782931,7201320373.34958,,4130087254.80774 -2021-03-09,1311740996.80603,8156415823.88339,,3950728962.46415 -2021-03-08,1037483449.87509,8823044514.44297,,5328191594.80659 -2021-03-07,2962805983.52249,6384724551.9317,,4490572121.20127 -2021-03-06,1132688563.18119,4276321241.92839,,2506095440.19493 -2021-03-05,1800188080.73072,5875259697.7049,,4428398658.19038 -2021-03-04,1769983297.73963,5414006195.8318,,3169059664.74763 -2021-03-03,1800193877.21902,5508244355.78261,,3474980018.66522 -2021-03-02,2116506353.61115,6192688755.7908,,3602186901.91906 -2021-03-01,1561707786.50212,6090201187.43751,,4408160747.05617 -2021-02-28,2692916045.61964,4431665221.8653,,3622959175.25561 -2021-02-27,827964098.35054,3349725279.99103,,2283828016.36308 -2021-02-26,1226498126.30676,6035343651.51297,,4513814153.21859 -2021-02-25,1071613446.30321,5858229905.51002,,4745064744.5727 -2021-02-24,1339152288.7562,7271641585.236,,5084199290.79487 -2021-02-23,3118618932.50271,9384094283.68205,,7027965550.29764 -2021-02-22,1423944697.2714,8660422831.08583,,5817133845.68988 -2021-02-21,566502200.111292,4430623094.61135,,2766181300.87434 -2021-02-20,1012434824.24227,5908150293.97118,,3770228022.09259 -2021-02-19,811381403.683768,6233436459.23738,,4816557421.1096 -2021-02-18,924078017.357096,6667091424.46595,,4118753664.06605 -2021-02-17,951245674.560827,6181809537.47404,,4491394866.5015 -2021-02-16,2557352536.98972,4629303023.23125,,3310804608.64887 -2021-02-15,1301707184.78318,5635607778.74594,,3124838209.62022 -2021-02-14,693539940.650414,3613350629.13917,,3001685202.0536 -2021-02-13,661842755.231354,3511324485.63083,,2951844400.77749 -2021-02-12,797540590.607597,4660404291.81775,,3262243273.32491 -2021-02-11,1326962487.09259,4376714976.83874,,2991881318.05851 -2021-02-10,847452950.449876,5958509367.21316,,3504875882.40867 -2021-02-09,1085338329.26855,8487391120.13588,,3658059497.16153 -2021-02-08,1599658888.28279,9431417917.35698,,5530574241.67227 -2021-02-07,987302929.826245,5772998732.01759,,2344871236.19642 -2021-02-06,722602551.869828,4731923502.52318,,2457095583.66651 -2021-02-05,776946127.834867,6752041769.26202,,3459678570.46459 -2021-02-04,41258994977.2036,24542626688.6431,,9374969292.16646 -2021-02-03,667762204.555955,15020058601.7389,,3766491233.30693 -2021-02-02,924645236.715338,6695846290.00727,,3246885519.6986 -2021-02-01,810093155.585882,5687714955.04519,,2532588808.06952 -2021-01-31,510829250.932742,3187734223.76653,,1896300973.60206 -2021-01-30,596461499.078267,4293982835.76321,,1585916294.49388 -2021-01-29,840070434.093391,8327796287.49599,,4415069094.1488 -2021-01-28,791626159.377342,6630041014.17317,,3344804118.68128 -2021-01-27,950122693.353738,5855521459.22693,,2439927526.60015 -2021-01-26,745277304.361538,6168744810.43635,,3220144177.49798 -2021-01-25,1037864062.33166,6104392450.59333,,3200631660.8015 -2021-01-24,1027973364.75875,3147811628.64846,,1601059158.5716 -2021-01-23,1483325426.35704,3484995779.84011,,1971111611.11381 -2021-01-22,1447398535.81432,6358015057.96711,,4727349708.79972 -2021-01-21,1212496681.15753,6279463936.26862,,3070596780.52712 -2021-01-20,810189737.207242,6135465714.28278,,2429593080.1965 -2021-01-19,1290126506.95297,7023296258.42498,,4212142477.50374 -2021-01-18,767267128.519842,3963652552.40571,,2024648435.21128 -2021-01-17,659870351.769219,3008689777.32626,,1826114694.88797 -2021-01-16,1029540274.68807,3618037540.65955,,2545111083.37576 -2021-01-15,2732534007.88839,5174192935.08796,,3836148844.51673 -2021-01-14,1569474903.54473,5748296308.35916,,3403004393.45291 -2021-01-13,977430938.827424,5820257116.71511,,2354458609.80916 -2021-01-12,753089899.230148,7331234612.73083,,3325519078.95743 -2021-01-11,2298089067.88397,8339959929.7348,,4248306574.09096 -2021-01-10,989591589.261725,4213398762.04635,,2004157862.19484 -2021-01-09,966463973.262987,4631780502.36488,,2083020971.35999 -2021-01-08,1312703788.33345,6591163461.66744,,3171522624.06782 -2021-01-07,1245046611.49436,6446845268.99275,,3883101240.17222 -2021-01-06,880427745.430905,7712978308.40386,,3295043564.71668 -2021-01-05,1115034937.50091,5710585628.42311,,2610135502.62758 -2021-01-04,3699694934.60426,6750540543.78998,,4777136920.00359 -2021-01-03,1203570714.8639,4188370094.82107,,4855111018.17212 -2021-01-02,3805558726.67436,4007211938.19048,,5823012527.526 -2021-01-01,1042479116.6737,4026636246.49589,,2418773740.80778 -2020-12-31,870668852.96535,4218602528.9978,,3110524984.91659 -2020-12-30,1311849960.78334,5335038497.71469,,3869044524.88047 -2020-12-29,632767557.150043,4804083109.78419,,2261444985.51558 -2020-12-28,775658544.866177,5201396686.8769,,1840816950.44517 -2020-12-27,1238060065.38411,3205962698.72714,,1507960316.44857 -2020-12-26,786377934.578806,2784851417.47931,,977784527.790812 -2020-12-25,368454788.103106,2686199355.09055,,952781098.992152 -2020-12-24,546296465.400708,4329179770.39878,,1669642191.67183 -2020-12-23,396389493.402262,5096216126.57026,,1585470046.64584 -2020-12-22,443008804.59263,4705675035.43737,,2015247336.25406 -2020-12-21,649965305.31777,4477596273.66617,,1688310806.16749 -2020-12-20,640645201.543457,2140273542.30765,,1068574869.41567 -2020-12-19,610337025.901337,3281577416.06906,,1674911769.41303 -2020-12-18,504551238.698294,4421633616.63579,,1875123386.36486 -2020-12-17,856245320.772788,6119215208.33408,,2178328191.6904 -2020-12-16,477318295.378558,4765236675.94864,,1647267650.25127 -2020-12-15,264773164.205435,4268582891.90326,,831418353.905078 -2020-12-14,217861110.742286,3633497951.36035,,876519087.025765 -2020-12-13,314461428.671788,1858997351.10413,,854433775.492254 -2020-12-12,614711605.137357,2094602341.01012,,1611601298.73798 -2020-12-11,663063970.0785,3468583419.92039,,1688333958.67632 -2020-12-10,384899462.49436,3052186499.74927,,1000001414.19972 -2020-12-09,673344419.270527,3777627598.85765,,1323799895.47643 -2020-12-08,320007369.952759,3523200573.56726,,1053209192.39135 -2020-12-07,349616334.18765,3319771973.67909,,1257139931.04892 -2020-12-06,3709979545.96611,1680539026.88785,,604372156.850386 -2020-12-05,345896937.547094,2048495581.90324,,824138326.679016 -2020-12-04,540276887.895542,3407873301.5125,,1125897704.67026 -2020-12-03,299509970.302166,3502786706.7217,,729618811.956542 -2020-12-02,831604666.295886,3240729540.81504,,1148286161.46074 -2020-12-01,688869191.590356,5368845851.85868,,1283950988.43709 -2020-11-30,1164146515.13918,4955201556.53423,,1482974854.45992 -2020-11-29,207638436.662779,1617874699.82957,,427172936.466704 -2020-11-28,228680423.815257,2092393441.72519,,1170744062.65835 -2020-11-27,2048671188.32271,3139399134.44214,,1510598441.74162 -2020-11-26,2020177561.77245,4757974165.26781,,1841214157.24063 -2020-11-25,307219125.558753,4039068869.18363,,1121446157.23482 -2020-11-24,387994963.595225,4416581003.03494,,1254409758.21043 -2020-11-23,397478471.510123,4377646534.92785,,1451590138.5476 -2020-11-22,393246637.377971,2480186934.05574,,1687706291.7521 -2020-11-21,1096178546.41295,2336264822.63801,,1326237057.17462 -2020-11-20,517910660.977637,3579277502.26814,,1202249065.43583 -2020-11-19,453916380.833236,3189006028.66181,,1387402921.62948 -2020-11-18,1234383377.71722,4376740227.38332,,2305349259.62255 -2020-11-17,891064703.200927,4228725171.28921,,2047749326.27098 -2020-11-16,487217309.654617,3539050166.44959,,1022876371.95035 -2020-11-15,479292770.047038,1573176894.37005,,690196197.427392 -2020-11-14,785532052.1419,1988532983.67091,,970520054.230058 -2020-11-13,329677754.365385,3002113674.34052,,1096536065.8891 -2020-11-12,343462163.512953,3425187511.33957,,907584628.419881 -2020-11-11,571207478.540364,3092945968.29708,,687859565.548839 -2020-11-10,351160558.646748,2949273582.95918,,853605483.080345 -2020-11-09,771147337.564133,3269190794.57706,,1723327050.50299 -2020-11-08,188998821.673,1491026022.3381,,437461530.788328 -2020-11-07,402370607.289834,2371253658.7184,,1136226504.11589 -2020-11-06,326637194.768342,3788297008.50671,,1405219886.07931 -2020-11-05,285173376.992229,3727153432.94054,,1407122787.25238 -2020-11-04,262404299.051546,2771849064.86509,,1009895693.39793 -2020-11-03,345239382.65063,3269137207.91577,,1047243732.78894 -2020-11-02,301611935.717296,3489265404.01164,,1552491852.62803 -2020-11-01,207717854.614644,1440454459.76,,515557614.165172 -2020-10-31,149274166.468597,1594603122.85322,,692089759.617507 -2020-10-30,444328987.717467,2908430116.70648,,981827938.777707 -2020-10-29,519964605.571401,2640702595.16694,,1276319788.97598 -2020-10-28,325964228.889405,3450385299.63544,,1572090486.38236 -2020-10-27,368789435.561733,3284388085.08125,,1409367520.10096 -2020-10-26,499445299.104612,15107996235.7149,,15287417045.0623 -2020-10-25,131949104.990413,1282034496.31683,,463545544.431128 -2020-10-24,290627130.822115,1724811943.59976,,613242190.702996 -2020-10-23,641379769.725349,2699684630.18066,,1315513780.45648 -2020-10-22,1006168433.53109,3650552403.40395,,2122427376.48635 -2020-10-21,555684502.538666,3304385086.66402,,2322373493.52654 -2020-10-20,351481806.280204,3055941200.82443,,1437436820.00626 -2020-10-19,379152330.832366,2512932454.88124,,1024540559.11923 -2020-10-18,166272330.798684,1362051178.49243,,705058119.562483 -2020-10-17,312728279.173516,1471990028.07797,,539750076.396767 -2020-10-16,410059344.918814,2636096623.78846,,871997590.975817 -2020-10-15,380510270.069438,2982568325.35434,,811010568.30342 -2020-10-14,481001026.986616,2843028121.12423,,979745549.933236 -2020-10-13,777018639.913946,2761798842.07925,,1589952124.86042 -2020-10-12,322243638.563923,2859627051.65253,,785114837.078162 -2020-10-11,319567899.554755,1957865698.74129,,1108123415.43363 -2020-10-10,307059201.043354,2555016335.5198,,1332028784.94504 -2020-10-09,545814108.614545,3234860317.47072,,1207513761.59504 -2020-10-08,241140866.966612,2843763880.73768,,1323785210.51581 -2020-10-07,215243599.405168,2398587054.45531,,1039107116.04222 -2020-10-06,455270223.663482,2943232461.8433,,1029062146.20299 -2020-10-05,258389501.627029,3548586183.2136,,1028788259.03613 -2020-10-04,244855525.468771,1250991679.33592,,553331513.453946 -2020-10-03,208606813.336852,1870967856.4316,,1000824990.3445 -2020-10-02,576305989.469408,2142227865.82991,,1333094298.69841 -2020-10-01,847167569.530513,2765472078.34891,,1266464962.12958 -2020-09-30,377108596.499142,2978057402.0579,,990800001.580167 -2020-09-29,873595530.347712,3056914261.83619,,929998790.781584 -2020-09-28,379803850.121942,4464598810.13375,,1198474867.60842 -2020-09-27,295894266.872321,2357793541.68913,,1019238528.53576 -2020-09-26,527803125.157748,2058155842.29144,,1013641020.1317 -2020-09-25,496314690.682942,3475036751.33906,,1027384550.57226 -2020-09-24,745521115.646239,3133627843.15172,,1278984780.53578 -2020-09-23,1119342426.06023,3259584188.0596,,1584649184.32504 -2020-09-22,567943930.642461,3098071843.40381,,952342566.312568 -2020-09-21,1147756305.66255,3946921055.88413,,1970425196.2254 -2020-09-20,1309310402.237,2058339791.16812,,1448770512.32467 -2020-09-19,3029299920.41271,3685780930.49258,,4066377919.12023 -2020-09-18,1341958750.46226,3435209485.10451,,1942584991.07448 -2020-09-17,1433281083.33327,3822678942.90498,,2268942903.8733 -2020-09-16,1416684082.96835,3796415602.51131,,1756732154.31077 -2020-09-15,2118929806.698,6926892138.26338,,2461880800.05501 -2020-09-14,1946093750.23001,4694359583.19079,,2894193933.40278 -2020-09-13,629459940.125008,2343599483.95209,,2102184942.02176 -2020-09-12,462668097.743929,2368865564.79601,,1474134992.03144 -2020-09-11,744593490.282546,3579774035.58086,,2394051195.82996 -2020-09-10,741802325.811396,3510581538.12526,,1762248772.94788 -2020-09-09,813703514.035211,3432305733.98022,,2235669399.31079 -2020-09-08,506662778.512757,3276767350.58279,,2148226806.7801 -2020-09-07,563757545.503048,2609166361.23156,,1566885156.3592 -2020-09-06,930447530.793985,2291388704.83284,,1668761950.24283 -2020-09-05,1769105470.1317,3382666982.5141,,2759487811.17366 -2020-09-04,1039128510.35204,4440009098.03494,,1752248806.30906 -2020-09-03,1700163728.4693,3907749773.291,,1564870953.23903 -2020-09-02,1157648536.36941,3788948998.39694,,1500054001.28297 -2020-09-01,662745564.804871,4486447247.99804,,1599867432.11359 -2020-08-31,580253618.688046,3762718669.77153,,1299226874.74522 -2020-08-30,626578390.344776,1969392450.3045,,671732146.711568 -2020-08-29,655726682.675795,2149613145.56153,,926098688.868187 -2020-08-28,399455986.387323,3201262472.85182,,1975304082.83836 -2020-08-27,327428368.737264,2817509634.16352,,964307515.538082 -2020-08-26,268315436.384074,2664221925.01747,,628402913.671879 -2020-08-25,474156456.728319,2677500711.52516,,607147370.060679 -2020-08-24,658375884.264639,2483148268.39026,,756788511.34472 -2020-08-23,339799957.014253,1445446659.87684,,438776377.878567 -2020-08-22,348960146.366621,1573682196.3085,,526167454.151106 -2020-08-21,207664840.878873,2584600757.71534,,637217150.915251 -2020-08-20,520496286.020346,6345717916.56032,,901066157.552314 -2020-08-19,415900203.485214,2606200494.78569,,720962874.525117 -2020-08-18,266706999.932927,2492443532.5994,,924108630.553404 -2020-08-17,404454296.861727,2942846990.33852,,843497075.340099 -2020-08-16,298631876.86201,1485504836.81623,,481326614.890438 -2020-08-15,336449199.121245,1841012011.12232,,592856428.098334 -2020-08-14,2929056952.7406,3389700022.35966,,2528594711.94817 -2020-08-13,588784786.438833,2852584403.878,,945727325.726555 -2020-08-12,688017143.165643,2410531318.59021,,1204390925.17796 -2020-08-11,920476074.743047,2666607057.31599,,830933636.33051 -2020-08-10,981614168.837874,4301500636.92393,,907817137.97979 -2020-08-09,358596353.268948,1129461096.6886,,321148162.756777 -2020-08-08,326147144.228446,1283586133.72823,,725504168.406256 -2020-08-07,1930804951.03717,2209625566.09226,,511543208.765666 -2020-08-06,365422184.398798,2643868468.31187,,388312900.507867 -2020-08-05,482721959.566259,2190058812.8025,,460399905.883484 -2020-08-04,589612692.259331,2652134028.52933,,571474551.508398 -2020-08-03,1051475047.01564,2503262601.6459,,800365051.085053 -2020-08-02,1002777818.08408,1758844102.08878,,589248500.509271 -2020-08-01,801190398.6493,1769704199.68794,,610019734.189969 -2020-07-31,1206090089.912,2306131949.09085,,1118320847.34184 -2020-07-30,1051103549.47672,2378358086.40453,,919096971.676341 -2020-07-29,2600848006.50713,2377905681.25826,,1005291767.60632 -2020-07-28,737710591.798317,2998309655.0573,,807807871.7675 -2020-07-27,1324118826.27108,3555429454.82145,,1309205308.72654 -2020-07-26,3060289301.97933,1691251429.24247,,1430743740.72916 -2020-07-25,1832212440.26231,1594714128.00986,,1167945851.81427 -2020-07-24,1039339893.9092,2365752503.82417,,952449142.158164 -2020-07-23,859681704.980994,2554795193.51562,,864882828.481764 -2020-07-22,1201325560.31342,2539192828.92315,,593977823.522511 -2020-07-21,543841271.35755,2161575186.94409,,674150057.963637 -2020-07-20,1136110834.46591,2481951927.16537,,782812546.096693 -2020-07-19,1085862331.55801,1173422003.49312,,880688519.559681 -2020-07-18,504526039.874633,1087603807.91272,,397935932.515481 -2020-07-17,280727473.155821,1777142978.04874,,371711438.778548 -2020-07-16,317678769.732066,1943294546.21561,,301549084.931817 -2020-07-15,198578881.429666,1920373273.67516,,325231543.855523 -2020-07-14,309870877.517936,2065438913.84144,,259959566.382675 -2020-07-13,174236708.459279,2044075682.49593,,204863001.902738 -2020-07-12,347452973.441247,1096004481.08873,,122167274.120207 -2020-07-11,400803354.724952,995736426.92085,,131608683.914069 -2020-07-10,268782761.637907,1698305364.33853,,303466985.486013 -2020-07-09,478660305.738267,1930239398.92993,,463881553.350342 -2020-07-08,1007993354.39396,2059498657.27854,,578432319.21357 -2020-07-07,830066509.581277,1750289030.10111,,490292997.376943 -2020-07-06,388603746.627248,2000614691.12072,,337162911.898644 -2020-07-05,258637406.240339,824902668.698209,,104864265.021507 -2020-07-04,350438439.845885,915060002.359619,,139058882.07701 -2020-07-03,621377895.157303,1614584976.84585,,516296043.117555 -2020-07-02,1475822995.99003,2031334903.18927,,853658836.123349 -2020-07-01,149408628.794773,1528957999.85455,,305497287.692205 -2020-06-30,184385133.356246,1597752424.64742,,438268555.107911 -2020-06-29,151027669.614743,3083988551.20636,,244909421.081816 -2020-06-28,156560933.714755,926783282.984805,,192974526.304037 -2020-06-27,111797223.022026,846110599.204021,,391379977.019199 -2020-06-26,56778226.4659574,1410563870.29233,,443226605.147979 -2020-06-25,171213909.649025,1482774356.76185,,242494392.696744 -2020-06-24,73380708.4534971,1909947721.31104,,323542005.754992 -2020-06-23,95052904.6756262,1913450970.10905,,334381464.298002 -2020-06-22,120167740.597209,2265511571.14187,,382634014.884123 -2020-06-21,157941188.877085,1373578865.6893,,459234118.161723 -2020-06-20,131144600.229261,1171983596.36401,,490079329.24464 -2020-06-19,227110803.946123,2207035147.98288,,686024019.482071 -2020-06-18,77757636.9476309,1987338567.88794,,358140414.897879 -2020-06-17,83619715.7227163,1776798750.43319,,399139040.672438 -2020-06-16,90876961.3044935,1844138074.5267,,250020518.737928 -2020-06-15,98336092.4098258,1693422266.54687,,473603273.16656 -2020-06-14,102070168.968083,693368537.058371,,89417655.3121603 -2020-06-13,19857950.2161893,777565158.119709,,69383673.5285428 -2020-06-12,38234892.7314093,1453962294.38682,,147585661.888336 -2020-06-11,95853116.2364415,1929452793.64916,,232724664.661915 -2020-06-10,34953740.5046151,1692766052.54051,,161651035.023086 -2020-06-09,38071537.8394386,1653898199.5357,,96160818.4320198 -2020-06-08,55704669.7669793,1610524297.61871,,127632484.517751 -2020-06-07,46968585.1684578,759743219.581454,,55754420.3525069 -2020-06-06,18697196.9677304,765188454.561608,,39279217.3735656 -2020-06-05,31340969.5323765,1414121354.15108,,157711040.238635 -2020-06-04,30976097.2300287,1519138912.56728,,109978927.577868 -2020-06-03,51464278.0705696,1438543726.02896,,140580250.756334 -2020-06-02,114634758.295448,2211029397.53199,,338737136.678718 -2020-06-01,99659329.6801661,1587389121.24091,,112604577.727763 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_dapp_stats.csv b/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_dapp_stats.csv deleted file mode 100644 index a63ec984e018..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_dapp_stats.csv +++ /dev/null @@ -1,48 +0,0 @@ -timeframe,fees,n_users,volume -2021-09-20,971128.408459335,748,7050 -2021-09-27,588703.487155636,617,4984 -2021-10-04,748750.544989823,646,4105 -2021-10-11,671126.179349037,660,4233 -2021-10-18,544587.085742359,628,3794 -2021-10-25,1047504.06142356,550,3246 -2021-11-01,851904.025967565,545,3199 -2021-11-08,1016698.39046912,514,3098 -2021-11-15,914313.524456732,584,3585 -2021-11-22,844123.222284278,511,3186 -2021-11-29,907963.495830892,520,3104 -2021-12-06,465022.877258617,565,3129 -2021-12-13,373827.035095027,497,2660 -2021-12-20,237897.984552777,433,2175 -2021-12-27,338424.386332529,460,2243 -2022-01-03,632744.124896926,548,2935 -2022-01-10,422800.375738491,472,2051 -2022-01-17,716326.950765755,743,3625 -2022-01-24,563906.915059515,584,3447 -2022-01-31,467942.882591503,481,2544 -2022-02-07,343161.100980691,549,2791 -2022-02-14,193537.186726091,459,2274 -2022-02-21,258402.924498461,538,2891 -2022-02-28,231332.920012526,613,3170 -2022-03-07,107379.360219845,656,3124 -2022-03-14,110841.945076548,589,2873 -2022-03-21,129460.539677929,617,2836 -2022-03-28,277589.960765738,643,2957 -2022-04-04,180779.014112563,623,2719 -2022-04-11,356645.21195269,608,3424 -2022-04-18,124905.774368535,444,2115 -2022-04-25,168294.545593294,408,2262 -2022-05-02,197472.132298427,583,2919 -2022-05-09,3816184.97104214,2221,20371 -2022-05-16,152821.867503225,653,4620 -2022-05-23,160341.602955583,633,5118 -2022-05-30,76570.848975358,277,1880 -2022-06-06,281859.794609131,1022,8292 -2022-06-13,949866.053896377,1538,18604 -2022-06-20,280758.206969026,694,8392 -2022-06-27,255340.861358492,630,7432 -2022-07-04,158798.730530248,562,6424 -2022-07-11,202236.12291037,523,6904 -2022-07-18,208600.885208027,596,7057 -2022-07-25,121446.872029091,556,6304 -2022-08-01,43570.523299292,430,3647 -2022-08-08,30.688926514,2,4 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].csv b/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].csv deleted file mode 100644 index ba30fadc5c87..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].csv +++ /dev/null @@ -1 +0,0 @@ -metric_date,symbol,amount_usd diff --git a/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py b/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py index 9ef907edeeb6..debbcaad5ebd 100644 --- a/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py +++ b/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py @@ -341,27 +341,6 @@ def test_call_func_expect_queue(expected_queue, func, queue): [], dict(), ), - ( - "call_dt", - [], - "shroom_view.display_daily_transactions", - [], - dict(), - ), - ( - "call_ds", - ["uniswap-v3"], - "shroom_view.display_dapp_stats", - [], - dict(), - ), - ( - "call_tvl", - ["0xa5407eae9ba41422680e2e00537571bcc53efbfd"], - "shroom_view.display_total_value_locked", - [], - dict(), - ), ], ) def test_call_func( diff --git a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_model.py b/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_model.py deleted file mode 100644 index ed7130607802..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_model.py +++ /dev/null @@ -1,46 +0,0 @@ -import pytest - -from openbb_terminal.cryptocurrency.onchain import shroom_model - - -@pytest.fixture(scope="module") -def vcr_config(): - return { - "filter_headers": [ - ("User-Agent", None), - ("x-api-key", "MOCK_AUTHORIZATION"), - ], - } - - -@pytest.mark.vcr -@pytest.mark.parametrize( - "user_address, address_name", - [ - ("0x0000000000000000000000000000000000000000", ""), - ], -) -def test_get_total_value_locked(user_address, address_name, recorder): - df = shroom_model.get_total_value_locked( - user_address=user_address, address_name=address_name - ) - recorder.capture(df) - - -@pytest.mark.vcr -@pytest.mark.parametrize( - "symbols", - [ - ["DAI", "USDT", "BUSD", "USDC"], - ], -) -def test_get_daily_transactions(symbols, recorder): - df = shroom_model.get_daily_transactions(symbols=symbols) - recorder.capture(df) - - -@pytest.mark.vcr -@pytest.mark.skip(reason="Shroom functions broken.") -def test_get_dapp_stats(recorder): - df = shroom_model.get_dapp_stats(platform="curve") - recorder.capture(df) diff --git a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_view.py b/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_view.py deleted file mode 100644 index 77b4c62e8039..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_view.py +++ /dev/null @@ -1,35 +0,0 @@ -import pytest - -from openbb_terminal.cryptocurrency.onchain import shroom_view - - -@pytest.fixture(scope="module") -def vcr_config(): - return { - "filter_headers": [ - ("User-Agent", None), - ("x-api-key", "MOCK_AUTHORIZATION"), - ], - } - - -@pytest.mark.vcr -@pytest.mark.record_stdout -def test_display_daily_transactions(): - shroom_view.display_daily_transactions() - - -@pytest.mark.vcr -@pytest.mark.record_stdout -@pytest.mark.skip(reason="Shroom functions broken.") -def test_display_dapp_stats(): - shroom_view.display_dapp_stats(platform="uniswap-v3") - - -@pytest.mark.vcr -@pytest.mark.record_stdout -@pytest.mark.skip(reason="Shroom functions broken.") -def test_display_total_value_locked(): - shroom_view.display_total_value_locked( - user_address="0x0000000000000000000000000000000000000000", address_name="" - ) diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt index d1d814f29946..656a5bec7e37 100644 --- a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt +++ b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt @@ -10,9 +10,7 @@ ueat unique ethereum addresses which made a transaction [BitQuery] ttcp top traded crypto pairs on given decentralized exchange [BitQuery] baas bid, ask prices, average spread for given crypto pair [BitQuery] - dt daily transactions of eth tokens [Shroom] - ds stats of eth platform (daily users; fees) [Shroom] - tvl total value locked of ERC20 tokens [Shroom] + query flipsidecrypto query [Shroom] Ethereum address: Address type: diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_daily_transactions.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_daily_transactions.txt deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_dapp_stats.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_dapp_stats.txt deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_total_value_locked.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_total_value_locked.txt deleted file mode 100644 index 38918f82b057..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_total_value_locked.txt +++ /dev/null @@ -1,2 +0,0 @@ -No data found. -