"""OpenBB Terminal API.""" # flake8: noqa # pylint: disable=unused-import # pylint: disable=C0302,W0611,not-callable from inspect import signature, Parameter import types import functools import importlib from typing import Optional, Callable, List from openbb_terminal.helper_classes import TerminalStyle # noqa: F401 from openbb_terminal import helper_funcs as helper # noqa: F401 from .reports import widget_helpers as widgets # noqa: F401 from .portfolio.portfolio_model import PortfolioModel as Portfolio from .cryptocurrency.due_diligence.pycoingecko_model import Coin functions = { "alt.covid.slopes": { "model": "openbb_terminal.alternative.covid.covid_model.get_case_slopes", "view": "openbb_terminal.alternative.covid.covid_view.display_case_slopes", }, "alt.covid.global_cases": { "model": "openbb_terminal.alternative.covid.covid_model.get_global_cases" }, "alt.covid.global_deaths": { "model": "openbb_terminal.alternative.covid.covid_model.get_global_deaths" }, "alt.covid.ov": { "model": "openbb_terminal.alternative.covid.covid_model.get_covid_ov", "view": "openbb_terminal.alternative.covid.covid_view.display_covid_ov", }, "alt.covid.stat": { "model": "openbb_terminal.alternative.covid.covid_model.get_covid_stat", "view": "openbb_terminal.alternative.covid.covid_view.display_covid_stat", }, "alt.oss.github_data": { "model": "openbb_terminal.alternative.oss.github_model.get_github_data" }, "alt.oss.summary": { "model": "openbb_terminal.alternative.oss.github_model.get_repo_summary", "view": "openbb_terminal.alternative.oss.github_view.display_repo_summary", }, "alt.oss.history": { "model": "openbb_terminal.alternative.oss.github_model.get_stars_history", "view": "openbb_terminal.alternative.oss.github_view.display_star_history", }, "alt.oss.top": { "model": "openbb_terminal.alternative.oss.github_model.get_top_repos", "view": "openbb_terminal.alternative.oss.github_view.display_top_repos", }, "alt.oss.search": { "model": "openbb_terminal.alternative.oss.github_model.search_repos" }, "alt.oss._make_request": { "model": "openbb_terminal.alternative.oss.runa_model._make_request" }, "alt.oss._retry_session": { "model": "openbb_terminal.alternative.oss.runa_model._retry_session" }, "alt.oss.ross": { "model": "openbb_terminal.alternative.oss.runa_model.get_startups", "view": "openbb_terminal.alternative.oss.runa_view.display_rossindex", }, "stocks.ba.headlines": { "model": "openbb_terminal.common.behavioural_analysis.finbrain_model.get_sentiment", "view": "openbb_terminal.common.behavioural_analysis.finbrain_view.display_sentiment_analysis", }, "stocks.ba.mentions": { "model": "openbb_terminal.common.behavioural_analysis.google_model.get_mentions", "view": "openbb_terminal.common.behavioural_analysis.google_view.display_mentions", }, "stocks.ba.queries": { "model": "openbb_terminal.common.behavioural_analysis.google_model.get_queries" }, "stocks.ba.regions": { "model": "openbb_terminal.common.behavioural_analysis.google_model.get_regions", "view": "openbb_terminal.common.behavioural_analysis.google_view.display_regions", }, "stocks.ba.rise": { "model": "openbb_terminal.common.behavioural_analysis.google_model.get_rise" }, "stocks.ba.getdd": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_due_dilligence" }, "stocks.ba.popular": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_popular_tickers", "view": "openbb_terminal.common.behavioural_analysis.reddit_view.display_popular_tickers", }, "stocks.ba.reddit_sent": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_posts_about", "view": "openbb_terminal.common.behavioural_analysis.reddit_view.display_reddit_sent", }, "stocks.ba.text_sent": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_sentiment" }, "stocks.ba.spac": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_spac" }, "stocks.ba.spac_c": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_spac_community" }, "stocks.ba.watchlist": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_watchlists", "view": "openbb_terminal.common.behavioural_analysis.reddit_view.display_watchlist", }, "stocks.ba.wsb": { "model": "openbb_terminal.common.behavioural_analysis.reddit_model.get_wsb_community" }, "stocks.ba.hist": { "model": "openbb_terminal.common.behavioural_analysis.sentimentinvestor_model.get_historical", "view": "openbb_terminal.common.behavioural_analysis.sentimentinvestor_view.display_historical", }, "stocks.ba.trend": { "model": "openbb_terminal.common.behavioural_analysis.sentimentinvestor_model.get_trending", "view": "openbb_terminal.common.behavioural_analysis.sentimentinvestor_view.display_trending", }, "stocks.ba.bullbear": { "model": "openbb_terminal.common.behavioural_analysis.stocktwits_model.get_bullbear", "view": "openbb_terminal.common.behavioural_analysis.stocktwits_view.display_bullbear", }, "stocks.ba.messages": { "model": "openbb_terminal.common.behavioural_analysis.stocktwits_model.get_messages", "view": "openbb_terminal.common.behavioural_analysis.stocktwits_view.display_messages", }, "stocks.ba.stalker": { "model": "openbb_terminal.common.behavioural_analysis.stocktwits_model.get_stalker" }, "stocks.ba.trending": { "model": "openbb_terminal.common.behavioural_analysis.stocktwits_model.get_trending" }, "stocks.ba.infer": { "model": "openbb_terminal.common.behavioural_analysis.twitter_model.load_analyze_tweets", "view": "openbb_terminal.common.behavioural_analysis.twitter_view.display_inference", }, "stocks.ba.sentiment": { "model": "openbb_terminal.common.behavioural_analysis.twitter_model.get_sentiment", "view": "openbb_terminal.common.behavioural_analysis.twitter_view.display_sentiment", }, "etf.news": { "model": "openbb_terminal.common.newsapi_model.get_news", "view": "openbb_terminal.common.newsapi_view.display_news", }, "common.news": { "model": "openbb_terminal.common.feedparser_model.get_news", }, "common.qa.bw": { "model": "openbb_terminal.common.quantitative_analysis.qa_view.display_bw", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_bw", }, "common.qa.calculate_adjusted_var": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.calculate_adjusted_var" }, "common.qa.es": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_es", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_es", }, "common.qa.normality": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_normality", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_normality", }, "common.qa.omega": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_omega", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_omega", }, "common.qa.decompose": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_seasonal_decomposition" }, "common.qa.sharpe": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_sharpe", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_sharpe", }, "common.qa.sortino": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_sortino", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_sortino", }, "common.qa.summary": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_summary", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_summary", }, "common.qa.unitroot": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_unitroot", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_unitroot", }, "common.qa.var": { "model": "openbb_terminal.common.quantitative_analysis.qa_model.get_var", "view": "openbb_terminal.common.quantitative_analysis.qa_view.display_var", }, "common.qa.kurtosis": { "model": "openbb_terminal.common.quantitative_analysis.rolling_model.get_kurtosis", "view": "openbb_terminal.common.quantitative_analysis.rolling_view.display_kurtosis", }, "common.qa.quantile": { "model": "openbb_terminal.common.quantitative_analysis.rolling_model.get_quantile", "view": "openbb_terminal.common.quantitative_analysis.rolling_view.display_quantile", }, "common.qa.rolling": { "model": "openbb_terminal.common.quantitative_analysis.rolling_model.get_rolling_avg", "view": "openbb_terminal.common.quantitative_analysis.rolling_view.display_mean_std", }, "common.qa.skew": { "model": "openbb_terminal.common.quantitative_analysis.rolling_model.get_skew", "view": "openbb_terminal.common.quantitative_analysis.rolling_view.display_skew", }, "common.qa.spread": { "model": "openbb_terminal.common.quantitative_analysis.rolling_model.get_spread", "view": "openbb_terminal.common.quantitative_analysis.rolling_view.display_spread", }, "common.ta.fib": { "model": "openbb_terminal.common.technical_analysis.custom_indicators_model.calculate_fib_levels", "view": "openbb_terminal.common.technical_analysis.custom_indicators_view.fibonacci_retracement", }, "common.ta.cci": { "model": "openbb_terminal.common.technical_analysis.momentum_model.cci", "view": "openbb_terminal.common.technical_analysis.momentum_view.display_cci", }, "common.ta.cg": { "model": "openbb_terminal.common.technical_analysis.momentum_model.cg", "view": "openbb_terminal.common.technical_analysis.momentum_view.display_cg", }, "common.ta.fisher": { "model": "openbb_terminal.common.technical_analysis.momentum_model.fisher", "view": "openbb_terminal.common.technical_analysis.momentum_view.display_fisher", }, "common.ta.macd": { "model": "openbb_terminal.common.technical_analysis.momentum_model.macd", "view": "openbb_terminal.common.technical_analysis.momentum_view.display_macd", }, "common.ta.rsi": { "model": "openbb_terminal.common.technical_analysis.momentum_model.rsi", "view": "openbb_terminal.common.technical_analysis.momentum_view.display_rsi", }, "common.ta.stoch": { "model": "openbb_terminal.common.technical_analysis.momentum_model.stoch", "view": "openbb_terminal.common.technical_analysis.momentum_view.display_stoch", }, "common.ta.ma": { "model": "openbb_terminal.common.technical_analysis.overlap_view.view_ma", "view": "openbb_terminal.common.technical_analysis.overlap_view.view_ma", }, "common.ta.ema": { "model": "openbb_terminal.common.technical_analysis.overlap_model.ema" }, "common.ta.hma": { "model": "openbb_terminal.common.technical_analysis.overlap_model.hma" }, "common.ta.sma": { "model": "openbb_terminal.common.technical_analysis.overlap_model.sma" }, "common.ta.vwap": { "model": "openbb_terminal.common.technical_analysis.overlap_model.vwap", "view": "openbb_terminal.common.technical_analysis.overlap_view.view_vwap", }, "common.ta.wma": { "model": "openbb_terminal.common.technical_analysis.overlap_model.wma" }, "common.ta.zlma": { "model": "openbb_terminal.common.technical_analysis.overlap_model.zlma" }, "common.ta.adx": { "model": "openbb_terminal.common.technical_analysis.trend_indicators_model.adx", "view": "openbb_terminal.common.technical_analysis.trend_indicators_view.display_adx", }, "common.ta.aroon": { "model": "openbb_terminal.common.technical_analysis.trend_indicators_model.aroon", "view": "openbb_terminal.common.technical_analysis.trend_indicators_view.display_aroon", }, "common.ta.bbands": { "model": "openbb_terminal.common.technical_analysis.volatility_model.bbands", "view": "openbb_terminal.common.technical_analysis.volatility_view.display_bbands", }, "common.ta.donchian": { "model": "openbb_terminal.common.technical_analysis.volatility_model.donchian", "view": "openbb_terminal.common.technical_analysis.volatility_view.display_donchian", }, "common.ta.kc": { "model": "openbb_terminal.common.technical_analysis.volatility_model.kc", "view": "openbb_terminal.common.technical_analysis.volatility_view.view_kc", }, "common.ta.ad": { "model": "openbb_terminal.common.technical_analysis.volume_model.ad", "view": "openbb_terminal.common.technical_analysis.volume_view.display_ad", }, "common.ta.adosc": { "model": "openbb_terminal.common.technical_analysis.volume_model.adosc", "view": "openbb_terminal.common.technical_analysis.volume_view.display_adosc", }, "common.ta.obv": { "model": "openbb_terminal.common.technical_analysis.volume_model.obv", "view": "openbb_terminal.common.technical_analysis.volume_view.display_obv", }, "crypto.defi.vaults": { "model": "openbb_terminal.cryptocurrency.defi.coindix_model.get_defi_vaults", "view": "openbb_terminal.cryptocurrency.defi.coindix_view.display_defi_vaults", }, "crypto.defi.anchor_data": { "model": "openbb_terminal.cryptocurrency.defi.cryptosaurio_model.get_anchor_data", "view": "openbb_terminal.cryptocurrency.defi.cryptosaurio_view.display_anchor_data", }, "crypto.defi.dpi": { "model": "openbb_terminal.cryptocurrency.defi.defipulse_model.get_defipulse_index", "view": "openbb_terminal.cryptocurrency.defi.defipulse_view.display_defipulse", }, "crypto.defi.swaps": { "model": "openbb_terminal.cryptocurrency.defi.graph_model.get_last_uni_swaps", "view": "openbb_terminal.cryptocurrency.defi.graph_view.display_last_uni_swaps", }, "crypto.defi.pools": { "model": "openbb_terminal.cryptocurrency.defi.graph_model.get_uni_pools_by_volume", "view": "openbb_terminal.cryptocurrency.defi.graph_view.display_uni_pools", }, "crypto.defi.tokens": { "model": "openbb_terminal.cryptocurrency.defi.graph_model.get_uni_tokens", "view": "openbb_terminal.cryptocurrency.defi.graph_view.display_uni_tokens", }, "crypto.defi.pairs": { "model": "openbb_terminal.cryptocurrency.defi.graph_model.get_uniswap_pool_recently_added", "view": "openbb_terminal.cryptocurrency.defi.graph_view.display_recently_added", }, "crypto.defi.stats": { "model": "openbb_terminal.cryptocurrency.defi.graph_model.get_uniswap_stats", "view": "openbb_terminal.cryptocurrency.defi.graph_view.display_uni_stats", }, "crypto.defi.dtvl": { "model": "openbb_terminal.cryptocurrency.defi.llama_model.get_defi_protocol", "view": "openbb_terminal.cryptocurrency.defi.llama_view.display_historical_tvl", }, "crypto.defi.ldapps": { "model": "openbb_terminal.cryptocurrency.defi.llama_model.get_defi_protocols", "view": "openbb_terminal.cryptocurrency.defi.llama_view.display_defi_protocols", }, "crypto.defi.stvl": { "model": "openbb_terminal.cryptocurrency.defi.llama_model.get_defi_tvl", "view": "openbb_terminal.cryptocurrency.defi.llama_view.display_defi_tvl", }, "crypto.defi.gdapps": { "model": "openbb_terminal.cryptocurrency.defi.llama_model.get_grouped_defi_protocols", "view": "openbb_terminal.cryptocurrency.defi.llama_view.display_grouped_defi_protocols", }, "crypto.defi.luna_supply": { "model": "openbb_terminal.cryptocurrency.defi.smartstake_model.get_luna_supply_stats", "view": "openbb_terminal.cryptocurrency.defi.smartstake_view.display_luna_circ_supply_change", }, "crypto.defi.newsletters": { "model": "openbb_terminal.cryptocurrency.defi.substack_model.get_newsletters", "view": "openbb_terminal.cryptocurrency.defi.substack_view.display_newsletters", }, "crypto.defi.aterra": { "model": "openbb_terminal.cryptocurrency.defi.terraengineer_model.get_history_asset_from_terra_address", "view": "openbb_terminal.cryptocurrency.defi.terraengineer_view.display_terra_asset_history", }, "crypto.defi.ayr": { "model": "openbb_terminal.cryptocurrency.defi.terraengineer_model.get_anchor_yield_reserve", "view": "openbb_terminal.cryptocurrency.defi.terraengineer_view.display_anchor_yield_reserve", }, "crypto.defi.gacc": { "model": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_model.get_account_growth", "view": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_view.display_account_growth", }, "crypto.defi.gov_proposals": { "model": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_model.get_proposals", "view": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_view.display_gov_proposals", }, "crypto.defi.sinfo": { "model": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_model.get_staking_account_info", "view": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_view.display_account_staking_info", }, "crypto.defi.sratio": { "model": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_model.get_staking_ratio_history", "view": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_view.display_staking_ratio_history", }, "crypto.defi.sreturn": { "model": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_model.get_staking_returns_history", "view": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_view.display_staking_returns_history", }, "crypto.defi.validators": { "model": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_model.get_validators", "view": "openbb_terminal.cryptocurrency.defi.terramoney_fcd_view.display_validators", }, "crypto.disc.cmctop": { "model": "openbb_terminal.cryptocurrency.discovery.coinmarketcap_model.get_cmc_top_n", "view": "openbb_terminal.cryptocurrency.discovery.coinmarketcap_view.display_cmc_top_coins", }, "crypto.disc.cpsearch": { "model": "openbb_terminal.cryptocurrency.discovery.coinpaprika_model.get_search_results", "view": "openbb_terminal.cryptocurrency.discovery.coinpaprika_view.display_search_results", }, "crypto.disc.top_dapps": { "model": "openbb_terminal.cryptocurrency.discovery.dappradar_model.get_top_dapps", "view": "openbb_terminal.cryptocurrency.discovery.dappradar_view.display_top_dapps", }, "crypto.disc.top_dexes": { "model": "openbb_terminal.cryptocurrency.discovery.dappradar_model.get_top_dexes", "view": "openbb_terminal.cryptocurrency.discovery.dappradar_view.display_top_dexes", }, "crypto.disc.top_games": { "model": "openbb_terminal.cryptocurrency.discovery.dappradar_model.get_top_games", "view": "openbb_terminal.cryptocurrency.discovery.dappradar_view.display_top_games", }, "crypto.disc.top_nfts": { "model": "openbb_terminal.cryptocurrency.discovery.dappradar_model.get_top_nfts", "view": "openbb_terminal.cryptocurrency.discovery.dappradar_view.display_top_nfts", }, "crypto.disc.categories_keys": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_categories_keys" }, "crypto.disc.coin_list": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coin_list" }, "crypto.disc.coins": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coins", "view": "openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_coins", }, "crypto.disc.coins_for_given_exchange": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coins_for_given_exchange" }, "crypto.disc.gainers_or_losers": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_gainers_or_losers" }, "crypto.disc.gainers": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_gainers", "view": "openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_gainers", }, "crypto.disc.losers": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_losers", "view": "openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_losers", }, "crypto.disc.trending": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_trending_coins", "view": "openbb_terminal.cryptocurrency.discovery.pycoingecko_view.display_trending", }, "crypto.dd.trading_pairs": { "model": "openbb_terminal.cryptocurrency.due_diligence.binance_model._get_trading_pairs" }, "crypto.dd.check_valid_binance_str": { "model": "openbb_terminal.cryptocurrency.due_diligence.binance_model.check_valid_binance_str" }, "crypto.dd.all_binance_trading_pairs": { "model": "openbb_terminal.cryptocurrency.due_diligence.binance_model.get_all_binance_trading_pairs" }, "crypto.dd.binance_available_quotes_for_each_coin": { "model": "openbb_terminal.cryptocurrency.due_diligence.binance_model.get_binance_available_quotes_for_each_coin" }, "crypto.dd.balance": { "model": "openbb_terminal.cryptocurrency.due_diligence.binance_view.get_balance", "view": "openbb_terminal.cryptocurrency.due_diligence.binance_view.display_balance", }, "crypto.dd.book": { "model": "openbb_terminal.cryptocurrency.due_diligence.binance_view.get_order_book", "view": "openbb_terminal.cryptocurrency.due_diligence.binance_view.display_order_book", }, "crypto.dd.show_available_pairs_for_given_symbol": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinbase_model.show_available_pairs_for_given_symbol" }, "crypto.dd.exchanges": { "model": "openbb_terminal.cryptocurrency.due_diligence.ccxt_model.get_exchanges" }, "crypto.dd.candles": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinbase_model.get_candles", "view": "openbb_terminal.cryptocurrency.due_diligence.coinbase_view.display_candles", }, "crypto.dd.cbbook": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinbase_model.get_order_book", "view": "openbb_terminal.cryptocurrency.due_diligence.coinbase_view.display_order_book", }, "crypto.dd.stats": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinbase_model.get_product_stats", "view": "openbb_terminal.cryptocurrency.due_diligence.coinbase_view.display_stats", }, "crypto.dd.trades": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinbase_model.get_trades", "view": "openbb_terminal.cryptocurrency.due_diligence.coinbase_view.display_trades", }, "crypto.dd.trading_pair_info": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinbase_model.get_trading_pair_info" }, "crypto.dd.oi": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinglass_model.get_open_interest_per_exchange", "view": "openbb_terminal.cryptocurrency.due_diligence.coinglass_view.display_open_interest", }, "crypto.dd.basic": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.basic_coin_info", "view": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_view.display_basic", }, "crypto.dd.coin": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.get_coin" }, "crypto.dd.events": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.get_coin_events_by_id", "view": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_view.display_events", }, "crypto.dd.ex": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.get_coin_exchanges_by_id", "view": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_view.display_exchanges", }, "crypto.dd.mkt": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.get_coin_markets_by_id", "view": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_view.display_markets", }, "crypto.dd.twitter": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.get_coin_twitter_timeline", "view": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_view.display_twitter", }, "crypto.dd.ohlc_historical": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.get_ohlc_historical" }, "crypto.dd.ps": { "model": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_model.get_tickers_info_for_coin", "view": "openbb_terminal.cryptocurrency.due_diligence.coinpaprika_view.display_price_supply", }, "crypto.dd.news": { "model": "openbb_terminal.cryptocurrency.overview.cryptopanic_model.get_news", "view": "openbb_terminal.cryptocurrency.due_diligence.cryptopanic_view.display_news", }, "crypto.dd.headlines": { "model": "openbb_terminal.common.behavioural_analysis.finbrain_model.get_sentiment", "view": "openbb_terminal.cryptocurrency.due_diligence.finbrain_crypto_view.display_crypto_sentiment_analysis", }, "crypto.dd.active": { "model": "openbb_terminal.cryptocurrency.due_diligence.glassnode_model.get_active_addresses", "view": "openbb_terminal.cryptocurrency.due_diligence.glassnode_view.display_active_addresses", }, "crypto.dd.btcrb": { "model": "openbb_terminal.cryptocurrency.due_diligence.glassnode_model.get_close_price", "view": "openbb_terminal.cryptocurrency.due_diligence.glassnode_view.display_btc_rainbow", }, "crypto.dd.eb": { "model": "openbb_terminal.cryptocurrency.due_diligence.glassnode_model.get_exchange_balances", "view": "openbb_terminal.cryptocurrency.due_diligence.glassnode_view.display_exchange_balances", }, "crypto.dd.change": { "model": "openbb_terminal.cryptocurrency.due_diligence.glassnode_model.get_exchange_net_position_change", "view": "openbb_terminal.cryptocurrency.due_diligence.glassnode_view.display_exchange_net_position_change", }, "crypto.dd.hr": { "model": "openbb_terminal.cryptocurrency.due_diligence.glassnode_model.get_hashrate", "view": "openbb_terminal.cryptocurrency.due_diligence.glassnode_view.display_hashrate", }, "crypto.dd.nonzero": { "model": "openbb_terminal.cryptocurrency.due_diligence.glassnode_model.get_non_zero_addresses", "view": "openbb_terminal.cryptocurrency.due_diligence.glassnode_view.display_non_zero_addresses", }, "crypto.dd.get_mt": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_available_timeseries", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_messari_timeseries_list", }, "crypto.dd.fr": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_fundraising", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_fundraising", }, "crypto.dd.gov": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_governance", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_governance", }, "crypto.dd.inv": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_investors", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_investors", }, "crypto.dd.links": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_links", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_links", }, "crypto.dd.mcapdom": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_marketcap_dominance", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_marketcap_dominance", }, "crypto.dd.mt": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_messari_timeseries", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_messari_timeseries", }, "crypto.dd.pi": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_project_product_info", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_project_info", }, "crypto.dd.rm": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_roadmap", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_roadmap", }, "crypto.dd.team": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_team", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_team", }, "crypto.dd.tk": { "model": "openbb_terminal.cryptocurrency.due_diligence.messari_model.get_tokenomics", "view": "openbb_terminal.cryptocurrency.due_diligence.messari_view.display_tokenomics", }, "crypto.dd.coin_market_chart": { "model": "openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model.get_coin_market_chart" }, "crypto.dd.pr": { "model": "openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model.get_coin_potential_returns", "view": "openbb_terminal.cryptocurrency.due_diligence.pycoingecko_view.display_coin_potential_returns", }, "crypto.dd.tokenomics": { "model": "openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model.get_coin_tokenomics" }, "crypto.dd.gh": { "model": "openbb_terminal.cryptocurrency.due_diligence.santiment_model.get_github_activity", "view": "openbb_terminal.cryptocurrency.due_diligence.santiment_view.display_github_activity", }, "crypto.nft.stats": { "model": "openbb_terminal.cryptocurrency.nft.opensea_model.get_collection_stats", "view": "openbb_terminal.cryptocurrency.nft.opensea_view.display_collection_stats", }, "crypto.onchain.dvcp": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_daily_dex_volume_for_given_pair", "view": "openbb_terminal.cryptocurrency.onchain.bitquery_view.display_daily_volume_for_given_pair", }, "crypto.onchain.lt": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_dex_trades_by_exchange", "view": "openbb_terminal.cryptocurrency.onchain.bitquery_view.display_dex_trades", }, "crypto.onchain.dex_trades_monthly": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_dex_trades_monthly" }, "crypto.onchain.erc20_tokens": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_erc20_tokens" }, "crypto.onchain.ueat": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_ethereum_unique_senders", "view": "openbb_terminal.cryptocurrency.onchain.bitquery_view.display_ethereum_unique_senders", }, "crypto.onchain.ttcp": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_most_traded_pairs", "view": "openbb_terminal.cryptocurrency.onchain.bitquery_view.display_most_traded_pairs", }, "crypto.onchain.baas": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_spread_for_crypto_pair", "view": "openbb_terminal.cryptocurrency.onchain.bitquery_view.display_spread_for_crypto_pair", }, "crypto.onchain.tv": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.get_token_volume_on_dexes", "view": "openbb_terminal.cryptocurrency.onchain.bitquery_view.display_dex_volume_for_token", }, "crypto.onchain.query_graph": { "model": "openbb_terminal.cryptocurrency.onchain.bitquery_model.query_graph" }, "crypto.onchain.btc_supply": { "model": "openbb_terminal.cryptocurrency.onchain.blockchain_model.get_btc_circulating_supply", "view": "openbb_terminal.cryptocurrency.onchain.blockchain_view.display_btc_circulating_supply", }, "crypto.onchain.btc_transac": { "model": "openbb_terminal.cryptocurrency.onchain.blockchain_model.get_btc_confirmed_transactions", "view": "openbb_terminal.cryptocurrency.onchain.blockchain_view.display_btc_confirmed_transactions", }, "crypto.onchain.gwei": { "model": "openbb_terminal.cryptocurrency.onchain.ethgasstation_model.get_gwei_fees", "view": "openbb_terminal.cryptocurrency.onchain.ethgasstation_view.display_gwei_fees", }, "crypto.onchain.hist": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_address_history", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_address_history", }, "crypto.onchain.balance": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_address_info", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_address_info", }, "crypto.onchain.token_decimals": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_token_decimals" }, "crypto.onchain.prices": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_token_historical_price", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_token_historical_prices", }, "crypto.onchain.th": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_token_history", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_token_history", }, "crypto.onchain.info": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_token_info", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_token_info", }, "crypto.onchain.holders": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_top_token_holders", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_top_token_holders", }, "crypto.onchain.top": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_top_tokens", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_top_tokens", }, "crypto.onchain.tx": { "model": "openbb_terminal.cryptocurrency.onchain.ethplorer_model.get_tx_info", "view": "openbb_terminal.cryptocurrency.onchain.ethplorer_view.display_tx_info", }, "crypto.onchain.whales": { "model": "openbb_terminal.cryptocurrency.onchain.whale_alert_model.get_whales_transactions", "view": "openbb_terminal.cryptocurrency.onchain.whale_alert_view.display_whales_transactions", }, "crypto.ov.altindex": { "model": "openbb_terminal.cryptocurrency.overview.blockchaincenter_model.get_altcoin_index", "view": "openbb_terminal.cryptocurrency.overview.blockchaincenter_view.display_altcoin_index", }, "crypto.ov.cbpairs": { "model": "openbb_terminal.cryptocurrency.overview.coinbase_model.get_trading_pairs", "view": "openbb_terminal.cryptocurrency.overview.coinbase_view.display_trading_pairs", }, "crypto.ov.cpplatforms": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_all_contract_platforms", "view": "openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_platforms", }, "crypto.ov.cpinfo": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_coins_info", "view": "openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_coins_info", }, "crypto.ov.cpmarkets": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_coins_market_info", "view": "openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_coins_market_info", }, "crypto.ov.cpcontracts": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_contract_platform", "view": "openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_contracts", }, "crypto.ov.cpexmarkets": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_exchanges_market", "view": "openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_exchange_markets", }, "crypto.ov.cpglobal": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_global_market", "view": "openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_global_market", }, "crypto.ov.list_of_coins": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_list_of_coins" }, "crypto.ov.cpexchanges": { "model": "openbb_terminal.cryptocurrency.overview.coinpaprika_model.get_list_of_exchanges", "view": "openbb_terminal.cryptocurrency.overview.coinpaprika_view.display_all_exchanges", }, "crypto.ov.news": { "model": "openbb_terminal.cryptocurrency.overview.cryptopanic_model.get_news", "view": "openbb_terminal.cryptocurrency.overview.cryptopanic_view.display_news", }, "crypto.ov.cr": { "model": "openbb_terminal.cryptocurrency.overview.loanscan_model.get_rates", "view": "openbb_terminal.cryptocurrency.overview.loanscan_view.display_crypto_rates", }, "crypto.ov.cgderivatives": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_derivatives", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_derivatives", }, "crypto.ov.cgexrates": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_exchange_rates", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_exchange_rates", }, "crypto.ov.exchanges": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_exchanges", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_exchanges", }, "crypto.ov.cgproducts": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_finance_products", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_products", }, "crypto.ov.platforms": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_financial_platforms", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_platforms", }, "crypto.ov.cgdefi": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_defi_info", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_global_defi_info", }, "crypto.ov.global_info": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_info" }, "crypto.ov.cgglobal": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_global_markets_info", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_global_market_info", }, "crypto.ov.cghold": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_holdings_overview", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_holdings_overview", }, "crypto.ov.cgindexes": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_indexes", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_indexes", }, "crypto.ov.cgstables": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_stable_coins", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_stablecoins", }, "crypto.ov.cgcategories": { "model": "openbb_terminal.cryptocurrency.overview.pycoingecko_model.get_top_crypto_categories", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_categories", }, "crypto.ov.cghm": { "model": "openbb_terminal.cryptocurrency.discovery.pycoingecko_model.get_coins", "view": "openbb_terminal.cryptocurrency.overview.pycoingecko_view.display_crypto_heatmap", }, "crypto.ov.crypto_hack": { "model": "openbb_terminal.cryptocurrency.overview.rekt_model.get_crypto_hack" }, "crypto.ov.crypto_hack_slugs": { "model": "openbb_terminal.cryptocurrency.overview.rekt_model.get_crypto_hack_slugs" }, "crypto.ov.crypto_hacks": { "model": "openbb_terminal.cryptocurrency.overview.rekt_model.get_crypto_hacks", "view": "openbb_terminal.cryptocurrency.overview.rekt_view.display_crypto_hacks", }, "crypto.ov.wfpe": { "model": "openbb_terminal.cryptocurrency.overview.withdrawalfees_model.get_crypto_withdrawal_fees", "view": "openbb_terminal.cryptocurrency.overview.withdrawalfees_view.display_crypto_withdrawal_fees", }, "crypto.ov.ewf": { "model": "openbb_terminal.cryptocurrency.overview.withdrawalfees_model.get_overall_exchange_withdrawal_fees", "view": "openbb_terminal.cryptocurrency.overview.withdrawalfees_view.display_overall_exchange_withdrawal_fees", }, "crypto.ov.wf": { "model": "openbb_terminal.cryptocurrency.overview.withdrawalfees_model.get_overall_withdrawal_fees", "view": "openbb_terminal.cryptocurrency.overview.withdrawalfees_view.display_overall_withdrawal_fees", }, "crypto.tools.apy": { "model": "openbb_terminal.cryptocurrency.tools.tools_model.calculate_apy", "view": "openbb_terminal.cryptocurrency.tools.tools_view.display_apy", }, "crypto.tools.il": { "model": "openbb_terminal.cryptocurrency.tools.tools_model.calculate_il", "view": "openbb_terminal.cryptocurrency.tools.tools_view.display_il", }, "econometrics.clean": { "model": "openbb_terminal.econometrics.econometrics_model.clean" }, "econometrics.coint": { "model": "openbb_terminal.econometrics.econometrics_model.get_engle_granger_two_step_cointegration_test", "view": "openbb_terminal.econometrics.econometrics_view.display_cointegration_test", }, "econometrics.granger": { "model": "openbb_terminal.econometrics.econometrics_model.get_granger_causality", "view": "openbb_terminal.econometrics.econometrics_view.display_granger", }, "econometrics.norm": { "model": "openbb_terminal.econometrics.econometrics_model.get_normality", "view": "openbb_terminal.econometrics.econometrics_view.display_norm", }, "econometrics.options": { "model": "openbb_terminal.econometrics.econometrics_model.get_options", "view": "openbb_terminal.econometrics.econometrics_view.show_options", }, "econometrics.root": { "model": "openbb_terminal.econometrics.econometrics_model.get_root", "view": "openbb_terminal.econometrics.econometrics_view.display_root", }, "econometrics.load": { "model": "openbb_terminal.econometrics.econometrics_model.load" }, "econometrics.bgod": { "model": "openbb_terminal.econometrics.regression_model.get_bgod", "view": "openbb_terminal.econometrics.regression_view.display_bgod", }, "econometrics.bols": { "model": "openbb_terminal.econometrics.regression_model.get_bols" }, "econometrics.bpag": { "model": "openbb_terminal.econometrics.regression_model.get_bpag", "view": "openbb_terminal.econometrics.regression_view.display_bpag", }, "econometrics.comparison": { "model": "openbb_terminal.econometrics.regression_model.get_comparison" }, "econometrics.dwat": { "model": "openbb_terminal.econometrics.regression_model.get_dwat", "view": "openbb_terminal.econometrics.regression_view.display_dwat", }, "econometrics.fdols": { "model": "openbb_terminal.econometrics.regression_model.get_fdols" }, "econometrics.fe": { "model": "openbb_terminal.econometrics.regression_model.get_fe" }, "econometrics.ols": { "model": "openbb_terminal.econometrics.regression_model.get_ols" }, "econometrics.pols": { "model": "openbb_terminal.econometrics.regression_model.get_pols" }, "econometrics.re": { "model": "openbb_terminal.econometrics.regression_model.get_re" }, "econometrics.get_regression_data": { "model": "openbb_terminal.econometrics.regression_model.get_regression_data" }, "econometrics.panel": { "model": "openbb_terminal.econometrics.regression_model.get_regressions_results", "view": "openbb_terminal.econometrics.regression_view.display_panel", }, "economy.cpi": { "model": "openbb_terminal.economy.alphavantage_model.get_cpi", "view": "openbb_terminal.economy.alphavantage_view.display_cpi", }, "economy.gdpc": { "model": "openbb_terminal.economy.alphavantage_model.get_gdp_capita", "view": "openbb_terminal.economy.alphavantage_view.display_gdp_capita", }, "economy.inf": { "model": "openbb_terminal.economy.alphavantage_model.get_inflation", "view": "openbb_terminal.economy.alphavantage_view.display_inflation", }, "economy.gdp": { "model": "openbb_terminal.economy.alphavantage_model.get_real_gdp", "view": "openbb_terminal.economy.alphavantage_view.display_real_gdp", }, "economy.rtps": { "model": "openbb_terminal.economy.alphavantage_model.get_sector_data", "view": "openbb_terminal.economy.alphavantage_view.realtime_performance_sector", }, "economy.tyld": { "model": "openbb_terminal.economy.alphavantage_model.get_treasury_yield", "view": "openbb_terminal.economy.alphavantage_view.display_treasury_yield", }, "economy.unemp": { "model": "openbb_terminal.economy.alphavantage_model.get_unemployment", "view": "openbb_terminal.economy.alphavantage_view.display_unemployment", }, "economy.macro": { "model": "openbb_terminal.economy.econdb_model.get_aggregated_macro_data", "view": "openbb_terminal.economy.econdb_view.show_macro_data", }, "economy.macro_parameters": { "model": "openbb_terminal.economy.econdb_model.get_macro_parameters" }, "economy.macro_countries": { "model": "openbb_terminal.economy.econdb_model.get_macro_countries" }, "economy.treasury": { "model": "openbb_terminal.economy.econdb_model.get_treasuries", "view": "openbb_terminal.economy.econdb_view.show_treasuries", }, "economy.treasury_maturities": { "model": "openbb_terminal.economy.econdb_model.get_treasury_maturities" }, "economy.future": {"model": "openbb_terminal.economy.finviz_model.get_futures"}, "economy.spectrum": { "model": "openbb_terminal.economy.finviz_model.get_spectrum_data", "view": "openbb_terminal.economy.finviz_view.display_spectrum", }, "economy.valuation": { "model": "openbb_terminal.economy.finviz_model.get_valuation_data" }, "economy.performance": { "model": "openbb_terminal.economy.finviz_model.get_performance_data" }, "economy.perfmap": { "model": "openbb_terminal.economy.finviz_model.get_performance_map" }, "economy.fred_series": { "model": "openbb_terminal.economy.fred_model.get_aggregated_series_data", "view": "openbb_terminal.economy.fred_view.display_fred_series", }, "economy.fred_ids": {"model": "openbb_terminal.economy.fred_model.get_series_ids"}, "economy.fred_notes": { "model": "openbb_terminal.economy.fred_model.get_series_notes" }, "economy.fred_yield_curve": { "model": "openbb_terminal.economy.fred_model.get_yield_curve", "view": "openbb_terminal.economy.fred_view.display_yield_curve", }, "economy.get_events_countries": { "model": "openbb_terminal.economy.investingcom_model.get_events_countries" }, "economy.events": { "model": "openbb_terminal.economy.investingcom_model.get_economic_calendar" }, "economy.get_ycrv_countries": { "model": "openbb_terminal.economy.investingcom_model.get_ycrv_countries" }, "economy.ycrv": { "model": "openbb_terminal.economy.investingcom_model.get_yieldcurve", "view": "openbb_terminal.economy.investingcom_view.display_yieldcurve", }, "economy.country_codes": { "model": "openbb_terminal.economy.nasdaq_model.get_country_codes" }, "economy.bigmac": { "model": "openbb_terminal.economy.nasdaq_model.get_big_mac_indices", "view": "openbb_terminal.economy.nasdaq_view.display_big_mac_index", }, "economy.glbonds": {"model": "openbb_terminal.economy.wsj_model.global_bonds"}, "economy.currencies": { "model": "openbb_terminal.economy.wsj_model.global_currencies" }, "economy.overview": {"model": "openbb_terminal.economy.wsj_model.market_overview"}, "economy.futures": {"model": "openbb_terminal.economy.wsj_model.top_commodities"}, "economy.usbonds": {"model": "openbb_terminal.economy.wsj_model.us_bonds"}, "economy.indices": {"model": "openbb_terminal.economy.wsj_model.us_indices"}, "economy.index": { "model": "openbb_terminal.economy.yfinance_model.get_indices", "view": "openbb_terminal.economy.yfinance_view.show_indices", }, "economy.available_indices": { "model": "openbb_terminal.economy.yfinance_model.get_available_indices" }, "economy.search_index": { "model": "openbb_terminal.economy.yfinance_model.get_search_indices" }, "etf.disc.mover": { "model": "openbb_terminal.etf.discovery.wsj_model.etf_movers", "view": "openbb_terminal.etf.discovery.wsj_view.show_top_mover", }, "etf.etf_by_category": { "model": "openbb_terminal.etf.financedatabase_model.get_etfs_by_category", "view": "openbb_terminal.etf.financedatabase_view.display_etf_by_category", }, "etf.ld": { "model": "openbb_terminal.etf.financedatabase_model.get_etfs_by_description", "view": "openbb_terminal.etf.financedatabase_view.display_etf_by_description", }, "etf.ln": { "model": "openbb_terminal.etf.financedatabase_model.get_etfs_by_name", "view": "openbb_terminal.etf.financedatabase_view.display_etf_by_name", }, "etf.scr.screen": { "model": "openbb_terminal.etf.screener.screener_model.etf_screener", "view": "openbb_terminal.etf.screener.screener_view.view_screener", }, "etf.holdings": { "model": "openbb_terminal.etf.stockanalysis_model.get_etf_holdings", "view": "openbb_terminal.etf.stockanalysis_view.view_holdings", }, "etf.symbols": { "model": "openbb_terminal.etf.stockanalysis_model.get_all_names_symbols" }, "etf.overview": { "model": "openbb_terminal.etf.stockanalysis_model.get_etf_overview", "view": "openbb_terminal.etf.stockanalysis_view.view_overview", }, "etf.etf_by_name": { "model": "openbb_terminal.etf.stockanalysis_model.get_etfs_by_name", "view": "openbb_terminal.etf.stockanalysis_view.display_etf_by_name", }, "etf.weights": { "model": "openbb_terminal.etf.yfinance_model.get_etf_sector_weightings", "view": "openbb_terminal.etf.yfinance_view.display_etf_weightings", }, "etf.summary": { "model": "openbb_terminal.etf.yfinance_model.get_etf_summary_description", "view": "openbb_terminal.etf.yfinance_view.display_etf_description", }, "forex.get_currency_list": { "model": "openbb_terminal.forex.av_model.get_currency_list", }, "forex.hist": { "model": "openbb_terminal.forex.av_model.get_historical", }, "forex.quote": { "model": "openbb_terminal.forex.av_model.get_quote", "view": "openbb_terminal.forex.av_view.display_quote", }, "forex.oanda.fwd": { "model": "openbb_terminal.forex.fxempire_model.get_forward_rates", "view": "openbb_terminal.forex.fxempire_view.display_forward_rates", }, "forex.oanda.summary": { "model": "openbb_terminal.forex.oanda.oanda_model.account_summary_request", "view": "openbb_terminal.forex.oanda.oanda_view.get_account_summary", }, "forex.oanda.cancel": { "model": "openbb_terminal.forex.oanda.oanda_model.cancel_pending_order_request", "view": "openbb_terminal.forex.oanda.oanda_view.cancel_pending_order", }, "forex.oanda.close": { "model": "openbb_terminal.forex.oanda.oanda_model.close_trades_request", "view": "openbb_terminal.forex.oanda.oanda_view.close_trade", }, "forex.oanda.order": { "model": "openbb_terminal.forex.oanda.oanda_model.create_order_request", "view": "openbb_terminal.forex.oanda.oanda_view.create_order", }, "forex.oanda.price": { "model": "openbb_terminal.forex.oanda.oanda_model.fx_price_request", "view": "openbb_terminal.forex.oanda.oanda_view.get_fx_price", }, "forex.oanda.calendar": { "model": "openbb_terminal.forex.oanda.oanda_model.get_calendar_request", "view": "openbb_terminal.forex.oanda.oanda_view.calendar", }, "forex.oanda.candles": { "model": "openbb_terminal.forex.oanda.oanda_model.get_candles_dataframe", "view": "openbb_terminal.forex.oanda.oanda_view.show_candles", }, "forex.oanda.openpositions": { "model": "openbb_terminal.forex.oanda.oanda_model.open_positions_request", "view": "openbb_terminal.forex.oanda.oanda_view.get_open_positions", }, "forex.oanda.opentrades": { "model": "openbb_terminal.forex.oanda.oanda_model.open_trades_request", "view": "openbb_terminal.forex.oanda.oanda_view.get_open_trades", }, "forex.oanda.listorders": { "model": "openbb_terminal.forex.oanda.oanda_model.order_history_request", "view": "openbb_terminal.forex.oanda.oanda_view.list_orders", }, "forex.oanda.orderbook": { "model": "openbb_terminal.forex.oanda.oanda_model.orderbook_plot_data_request", "view": "openbb_terminal.forex.oanda.oanda_view.get_order_book", }, "forex.oanda.pending": { "model": "openbb_terminal.forex.oanda.oanda_model.pending_orders_request", "view": "openbb_terminal.forex.oanda.oanda_view.get_pending_orders", }, "forex.oanda.positionbook": { "model": "openbb_terminal.forex.oanda.oanda_model.positionbook_plot_data_request", "view": "openbb_terminal.forex.oanda.oanda_view.get_position_book", }, "funds.info": { "model": "openbb_terminal.mutual_funds.investpy_model.get_fund_info", "view": "openbb_terminal.mutual_funds.investpy_view.display_fund_info", }, "funds.overview": { "model": "openbb_terminal.mutual_funds.investpy_model.get_overview", "view": "openbb_terminal.mutual_funds.investpy_view.display_overview", }, "funds.search": { "model": "openbb_terminal.mutual_funds.investpy_model.search_funds", "view": "openbb_terminal.mutual_funds.investpy_view.display_search", }, "portfolio.holdv": { "model": "openbb_terminal.portfolio.portfolio_model.get_holdings_value", "view": "openbb_terminal.portfolio.portfolio_view.display_holdings_value", }, "portfolio.holdp": { "model": "openbb_terminal.portfolio.portfolio_model.get_holdings_percentage", "view": "openbb_terminal.portfolio.portfolio_view.display_holdings_percentage", }, "portfolio.yret": { "model": "openbb_terminal.portfolio.portfolio_model.get_yearly_returns", "view": "openbb_terminal.portfolio.portfolio_view.display_yearly_returns", }, "portfolio.mret": { "model": "openbb_terminal.portfolio.portfolio_model.get_monthly_returns", "view": "openbb_terminal.portfolio.portfolio_view.display_monthly_returns", }, "portfolio.dret": { "model": "openbb_terminal.portfolio.portfolio_model.get_daily_returns", "view": "openbb_terminal.portfolio.portfolio_view.display_daily_returns", }, "portfolio.max_drawdown_ratio": { "model": "openbb_terminal.portfolio.portfolio_model.get_maximum_drawdown", "view": "openbb_terminal.portfolio.portfolio_view.display_maximum_drawdown_ratio", }, "portfolio.distr": { "model": "openbb_terminal.portfolio.portfolio_model.get_distribution_returns", "view": "openbb_terminal.portfolio.portfolio_view.display_distribution_returns", }, "portfolio.maxdd": { "model": "openbb_terminal.portfolio.portfolio_model.get_maximum_drawdown", "view": "openbb_terminal.portfolio.portfolio_view.display_maximum_drawdown", }, "portfolio.rvol": { "model": "openbb_terminal.portfolio.portfolio_model.get_rolling_volatility", "view": "openbb_terminal.portfolio.portfolio_view.display_rolling_volatility", }, "portfolio.rsharpe": { "model": "openbb_terminal.portfolio.portfolio_model.get_rolling_sharpe", "view": "openbb_terminal.portfolio.portfolio_view.display_rolling_sharpe", }, "portfolio.rsortino": { "model": "openbb_terminal.portfolio.portfolio_model.get_rolling_sortino", "view": "openbb_terminal.portfolio.portfolio_view.display_rolling_sortino", }, "portfolio.rbeta": { "model": "openbb_terminal.portfolio.portfolio_model.get_rolling_beta", "view": "openbb_terminal.portfolio.portfolio_view.display_rolling_beta", }, "portfolio.summary": { "model": "openbb_terminal.portfolio.portfolio_model.get_summary", }, "portfolio.skew": { "model": "openbb_terminal.portfolio.portfolio_model.get_skewness", }, "portfolio.kurtosis": { "model": "openbb_terminal.portfolio.portfolio_model.get_kurtosis", }, "portfolio.volatility": { "model": "openbb_terminal.portfolio.portfolio_model.get_volatility", }, "portfolio.sharpe": { "model": "openbb_terminal.portfolio.portfolio_model.get_sharpe_ratio", }, "portfolio.sortino": { "model": "openbb_terminal.portfolio.portfolio_model.get_sortino_ratio", }, "portfolio.maxdrawdown": { "model": "openbb_terminal.portfolio.portfolio_model.get_maximum_drawdown_ratio", }, "portfolio.rsquare": { "model": "openbb_terminal.portfolio.portfolio_model.get_r2_score", }, "portfolio.gaintopain": { "model": "openbb_terminal.portfolio.portfolio_model.get_gaintopain_ratio", }, "portfolio.trackerr": { "model": "openbb_terminal.portfolio.portfolio_model.get_tracking_error", }, "portfolio.information": { "model": "openbb_terminal.portfolio.portfolio_model.get_information_ratio", }, "portfolio.tail": { "model": "openbb_terminal.portfolio.portfolio_model.get_tail_ratio", }, "portfolio.commonsense": { "model": "openbb_terminal.portfolio.portfolio_model.get_common_sense_ratio", }, "portfolio.jensens": { "model": "openbb_terminal.portfolio.portfolio_model.get_jensens_alpha", }, "portfolio.calmar": { "model": "openbb_terminal.portfolio.portfolio_model.get_calmar_ratio", }, "portfolio.kelly": { "model": "openbb_terminal.portfolio.portfolio_model.get_kelly_criterion", }, "portfolio.payoff": { "model": "openbb_terminal.portfolio.portfolio_model.get_payoff_ratio", }, "portfolio.profitfactor": { "model": "openbb_terminal.portfolio.portfolio_model.get_profit_factor", }, "portfolio.perf": { "model": "openbb_terminal.portfolio.portfolio_model.get_performance_vs_benchmark", }, "portfolio.var": { "model": "openbb_terminal.portfolio.portfolio_model.get_var", }, "portfolio.es": { "model": "openbb_terminal.portfolio.portfolio_model.get_es", }, "portfolio.om": { "model": "openbb_terminal.portfolio.portfolio_model.get_omega", "view": "openbb_terminal.portfolio.portfolio_view.display_omega", }, "portfolio.po.load": { "model": "openbb_terminal.portfolio.portfolio_optimization.excel_model.load_allocation", }, "portfolio.po.load_bl_views": { "model": "openbb_terminal.portfolio.portfolio_optimization.excel_model.load_bl_views", }, "portfolio.po.maxsharpe": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_max_sharpe", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_max_sharpe", }, "portfolio.po.minrisk": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_min_risk", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_min_risk", }, "portfolio.po.maxutil": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_max_util", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_max_util", }, "portfolio.po.maxret": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_max_ret", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_max_ret", }, "portfolio.po.maxdiv": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_max_diversification_portfolio", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_max_div", }, "portfolio.po.maxdecorr": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_max_decorrelation_portfolio", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_max_decorr", }, "portfolio.po.blacklitterman": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_black_litterman_portfolio", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_black_litterman", }, "portfolio.po.ef": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_ef", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_ef", }, "portfolio.po.riskparity": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_risk_parity_portfolio", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_risk_parity", }, "portfolio.po.relriskparity": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_rel_risk_parity_portfolio", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_rel_risk_parity", }, "portfolio.po.meanrisk": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_mean_risk_portfolio", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_mean_risk", }, "portfolio.po.hrp": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_hrp", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_hrp", }, "portfolio.po.herc": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_herc", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_herc", }, "portfolio.po.nco": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_nco", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_nco", }, "portfolio.po.hcp": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_hcp_portfolio", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_hcp", }, "portfolio.po.equal": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_equal_weights", }, "portfolio.po.property": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_property_weights", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.display_property_weighting", }, "portfolio.po.get_properties": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_model.get_properties", }, "portfolio.po.plot": { "model": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.additional_plots", "view": "openbb_terminal.portfolio.portfolio_optimization.optimizer_view.additional_plots", }, # "stocks.bt.ema_cross": { # "model": "openbb_terminal.stocks.backtesting.bt_model.ema_cross_strategy", # "view": "openbb_terminal.stocks.backtesting.bt_view.display_ema_cross", # }, # "stocks.bt.ema": { # "model": "openbb_terminal.stocks.backtesting.bt_model.ema_strategy", # "view": "openbb_terminal.stocks.backtesting.bt_view.display_simple_ema", # }, # "stocks.bt.rsi": { # "model": "openbb_terminal.stocks.backtesting.bt_model.rsi_strategy", # "view": "openbb_terminal.stocks.backtesting.bt_view.display_rsi_strategy", # }, "stocks.ba.cramer": { "model": "openbb_terminal.stocks.behavioural_analysis.cramer_model.get_cramer_daily" }, "stocks.ba.cramer_ticker": { "model": "openbb_terminal.stocks.behavioural_analysis.cramer_model.get_cramer_ticker", "view": "openbb_terminal.stocks.behavioural_analysis.cramer_view.display_cramer_ticker", }, "stocks.ba.cnews": { "model": "openbb_terminal.stocks.behavioural_analysis.finnhub_model.get_company_news" }, "stocks.ba.snews": { "model": "openbb_terminal.stocks.behavioural_analysis.finnhub_model.get_headlines_sentiment", "view": "openbb_terminal.stocks.behavioural_analysis.finnhub_view.display_stock_price_headlines_sentiment", }, "stocks.ca.sentiment": { "model": "openbb_terminal.stocks.comparison_analysis.finbrain_model.get_sentiments", "view": "openbb_terminal.stocks.comparison_analysis.finbrain_view.display_sentiment_compare", }, "stocks.ca.scorr": { "model": "openbb_terminal.stocks.comparison_analysis.finbrain_model.get_sentiment_correlation", "view": "openbb_terminal.stocks.comparison_analysis.finbrain_view.display_sentiment_correlation", }, "stocks.ca.finnhub_peers": { "model": "openbb_terminal.stocks.comparison_analysis.finnhub_model.get_similar_companies" }, "stocks.ca.screener": { "model": "openbb_terminal.stocks.comparison_analysis.finviz_compare_model.get_comparison_data" }, "stocks.ca.finviz_peers": { "model": "openbb_terminal.stocks.comparison_analysis.finviz_compare_model.get_similar_companies" }, "stocks.ca.balance": { "model": "openbb_terminal.stocks.comparison_analysis.marketwatch_model.get_balance_comparison" }, "stocks.ca.cashflow": { "model": "openbb_terminal.stocks.comparison_analysis.marketwatch_model.get_cashflow_comparison" }, "stocks.ca.income": { "model": "openbb_terminal.stocks.comparison_analysis.marketwatch_model.get_income_comparison", "view": "openbb_terminal.stocks.comparison_analysis.marketwatch_view.display_income_comparison", }, "stocks.ca.polygon_peers": { "model": "openbb_terminal.stocks.comparison_analysis.polygon_model.get_similar_companies", }, "stocks.ca.hist": { "model": "openbb_terminal.stocks.comparison_analysis.yahoo_finance_model.get_historical", "view": "openbb_terminal.stocks.comparison_analysis.yahoo_finance_view.display_historical", }, "stocks.ca.hcorr": { "model": "openbb_terminal.stocks.comparison_analysis.yahoo_finance_model.get_correlation", "view": "openbb_terminal.stocks.comparison_analysis.yahoo_finance_view.display_correlation", }, "stocks.ca.volume": { "model": "openbb_terminal.stocks.comparison_analysis.yahoo_finance_model.get_volume", "view": "openbb_terminal.stocks.comparison_analysis.yahoo_finance_view.display_volume", }, "stocks.dps.prom": { "model": "openbb_terminal.stocks.dark_pool_shorts.finra_model.getATSdata", "view": "openbb_terminal.stocks.dark_pool_shorts.finra_view.darkpool_otc", }, "stocks.dps.dpotc": { "model": "openbb_terminal.stocks.dark_pool_shorts.finra_model.getTickerFINRAdata", "view": "openbb_terminal.stocks.dark_pool_shorts.finra_view.darkpool_ats_otc", }, "stocks.dps.ctb": { "model": "openbb_terminal.stocks.dark_pool_shorts.ibkr_model.get_cost_to_borrow" }, "stocks.dps.volexch": { "model": "openbb_terminal.stocks.dark_pool_shorts.nyse_model.get_short_data_by_exchange", "view": "openbb_terminal.stocks.dark_pool_shorts.nyse_view.display_short_by_exchange", }, "stocks.dps.psi_q": { "model": "openbb_terminal.stocks.dark_pool_shorts.quandl_model.get_short_interest", "view": "openbb_terminal.stocks.dark_pool_shorts.quandl_view.short_interest", }, "stocks.dps.ftd": { "model": "openbb_terminal.stocks.dark_pool_shorts.sec_model.get_fails_to_deliver", "view": "openbb_terminal.stocks.dark_pool_shorts.sec_view.fails_to_deliver", }, "stocks.dps.hsi": { "model": "openbb_terminal.stocks.dark_pool_shorts.shortinterest_model.get_high_short_interest" }, "stocks.dps.pos": { "model": "openbb_terminal.stocks.dark_pool_shorts.stockgrid_model.get_dark_pool_short_positions" }, "stocks.dps.spos": { "model": "openbb_terminal.stocks.dark_pool_shorts.stockgrid_model.get_net_short_position", "view": "openbb_terminal.stocks.dark_pool_shorts.stockgrid_view.net_short_position", }, "stocks.dps.sidtc": { "model": "openbb_terminal.stocks.dark_pool_shorts.stockgrid_model.get_short_interest_days_to_cover" }, "stocks.dps.psi_sg": { "model": "openbb_terminal.stocks.dark_pool_shorts.stockgrid_model.get_short_interest_volume", "view": "openbb_terminal.stocks.dark_pool_shorts.stockgrid_view.short_interest_volume", }, "stocks.dps.shorted": { "model": "openbb_terminal.stocks.dark_pool_shorts.yahoofinance_model.get_most_shorted" }, "stocks.disc.arkord": { "model": "openbb_terminal.stocks.discovery.ark_model.get_ark_orders" }, "stocks.disc.ipo": { "model": "openbb_terminal.stocks.discovery.finnhub_model.get_ipo_calendar" }, "stocks.disc.pipo": { "model": "openbb_terminal.stocks.discovery.finnhub_model.get_past_ipo" }, "stocks.disc.fipo": { "model": "openbb_terminal.stocks.discovery.finnhub_model.get_future_ipo" }, "stocks.disc.dividends": { "model": "openbb_terminal.stocks.discovery.nasdaq_model.get_dividend_cal" }, "stocks.disc.rtat": { "model": "openbb_terminal.stocks.discovery.nasdaq_model.get_retail_tickers" }, "stocks.disc.news": { "model": "openbb_terminal.stocks.discovery.seeking_alpha_model.get_news" }, "stocks.disc.upcoming": { "model": "openbb_terminal.stocks.discovery.seeking_alpha_model.get_next_earnings" }, "stocks.disc.trending": { "model": "openbb_terminal.stocks.discovery.seeking_alpha_model.get_trending_list" }, "stocks.disc.lowfloat": { "model": "openbb_terminal.stocks.discovery.shortinterest_model.get_low_float" }, "stocks.disc.hotpenny": { "model": "openbb_terminal.stocks.discovery.shortinterest_model.get_today_hot_penny_stocks" }, "stocks.disc.active": { "model": "openbb_terminal.stocks.discovery.yahoofinance_model.get_active" }, "stocks.disc.asc": { "model": "openbb_terminal.stocks.discovery.yahoofinance_model.get_asc" }, "stocks.disc.gainers": { "model": "openbb_terminal.stocks.discovery.yahoofinance_model.get_gainers" }, "stocks.disc.gtech": { "model": "openbb_terminal.stocks.discovery.yahoofinance_model.get_gtech" }, "stocks.disc.losers": { "model": "openbb_terminal.stocks.discovery.yahoofinance_model.get_losers" }, "stocks.disc.ugs": { "model": "openbb_terminal.stocks.discovery.yahoofinance_model.get_ugs" }, "stocks.disc.ulc": { "model": "openbb_terminal.stocks.discovery.yahoofinance_model.get_ulc" }, "stocks.dd.arktrades": { "model": "openbb_terminal.stocks.due_diligence.ark_model.get_ark_trades_by_ticker" }, "stocks.dd.est": { "model": "openbb_terminal.stocks.due_diligence.business_insider_model.get_estimates" }, "stocks.dd.pt": { "model": "openbb_terminal.stocks.due_diligence.business_insider_model.get_price_target_from_analysts", "view": "openbb_terminal.stocks.due_diligence.business_insider_view.price_target_from_analysts", }, "stocks.dd.customer": { "model": "openbb_terminal.stocks.due_diligence.csimarket_model.get_customers" }, "stocks.dd.supplier": { "model": "openbb_terminal.stocks.due_diligence.csimarket_model.get_suppliers" }, "stocks.dd.rot": { "model": "openbb_terminal.stocks.due_diligence.finnhub_model.get_rating_over_time", "view": "openbb_terminal.stocks.due_diligence.finnhub_view.rating_over_time", }, "stocks.dd.analyst": { "model": "openbb_terminal.stocks.due_diligence.finviz_model.get_analyst_data" }, "stocks.dd.news": { "model": "openbb_terminal.stocks.due_diligence.finviz_model.get_news" }, "stocks.dd.rating": { "model": "openbb_terminal.stocks.due_diligence.fmp_model.get_rating" }, "stocks.dd.sec": { "model": "openbb_terminal.stocks.due_diligence.marketwatch_model.get_sec_filings", "view": "openbb_terminal.stocks.due_diligence.marketwatch_view.sec_filings", }, "stocks.fa.av_balance": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_balance_sheet" }, "stocks.fa.av_cash": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_cash_flow", "view": "openbb_terminal.stocks.fundamental_analysis.av_view.display_cash_flow", }, "stocks.fa.dupont": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_dupont" }, "stocks.fa.earnings": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_earnings" }, "stocks.fa.fraud": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_fraud_ratios" }, "stocks.fa.av_income": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_income_statements" }, "stocks.fa.av_metrics": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_key_metrics" }, "stocks.fa.av_overview": { "model": "openbb_terminal.stocks.fundamental_analysis.av_model.get_overview" }, "stocks.fa.mgmt": { "model": "openbb_terminal.stocks.fundamental_analysis.business_insider_model.get_management" }, "stocks.fa.fama_coe": { "model": "openbb_terminal.stocks.fundamental_analysis.dcf_model.get_fama_coe" }, "stocks.fa.fama_raw": { "model": "openbb_terminal.stocks.fundamental_analysis.dcf_model.get_fama_raw" }, "stocks.fa.historical_5": { "model": "openbb_terminal.stocks.fundamental_analysis.dcf_model.get_historical_5" }, "stocks.fa.similar_dfs": { "model": "openbb_terminal.stocks.fundamental_analysis.dcf_model.get_similar_dfs" }, "stocks.fa.analysis": { "model": "openbb_terminal.stocks.fundamental_analysis.eclect_us_model.get_filings_analysis" }, "stocks.fa.fmp_balance": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_balance" }, "stocks.fa.fmp_cash": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_cash" }, "stocks.fa.dcf": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_dcf" }, "stocks.fa.enterprise": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_enterprise" }, "stocks.fa.growth": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_financial_growth" }, "stocks.fa.fmp_income": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_income" }, "stocks.fa.fmp_metrics": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_key_metrics" }, "stocks.fa.fmp_ratios": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_key_ratios" }, "stocks.fa.profile": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_profile" }, "stocks.fa.quote": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_quote" }, "stocks.fa.score": { "model": "openbb_terminal.stocks.fundamental_analysis.fmp_model.get_score" }, "stocks.fa.data": { "model": "openbb_terminal.stocks.fundamental_analysis.finviz_model.get_data" }, "stocks.fa.poly_financials": { "model": "openbb_terminal.stocks.fundamental_analysis.polygon_model.get_financials", "view": "openbb_terminal.stocks.fundamental_analysis.polygon_view.display_fundamentals", }, "stocks.fa.cal": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_calendar_earnings" }, "stocks.fa.divs": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_dividends" }, "stocks.fa.yf_financials": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_financials", "view": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_view.display_fundamentals", }, "stocks.fa.hq": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_hq" }, "stocks.fa.info": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_info" }, "stocks.fa.mktcap": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_mktcap", "view": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_view.display_mktcap", }, "stocks.fa.shrs": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_shareholders" }, "stocks.fa.splits": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_splits", "view": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_view.display_splits", }, "stocks.fa.sust": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_sustainability" }, "stocks.fa.website": { "model": "openbb_terminal.stocks.fundamental_analysis.yahoo_finance_model.get_website" }, "stocks.gov.qtrcontracts": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_qtr_contracts", "view": "openbb_terminal.stocks.government.quiverquant_view.display_qtr_contracts", }, "stocks.gov.government_trading": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_government_trading" }, "stocks.gov.contracts": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_contracts", "view": "openbb_terminal.stocks.government.quiverquant_view.display_contracts", }, "stocks.gov.topbuys": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_government_buys", "view": "openbb_terminal.stocks.government.quiverquant_view.display_government_buys", }, "stocks.gov.topsells": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_government_sells", "view": "openbb_terminal.stocks.government.quiverquant_view.display_government_sells", }, "stocks.gov.gtrades": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_cleaned_government_trading", "view": "openbb_terminal.stocks.government.quiverquant_view.display_government_trading", }, "stocks.gov.histcont": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_hist_contracts", "view": "openbb_terminal.stocks.government.quiverquant_view.display_hist_contracts", }, "stocks.gov.lastcontracts": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_last_contracts", "view": "openbb_terminal.stocks.government.quiverquant_view.display_last_contracts", }, "stocks.gov.lasttrades": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_last_government" }, "stocks.gov.lobbying": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_lobbying" }, "stocks.gov.toplobbying": { "model": "openbb_terminal.stocks.government.quiverquant_model.get_top_lobbying", "view": "openbb_terminal.stocks.government.quiverquant_view.display_top_lobbying", }, "stocks.ins.act": { "model": "openbb_terminal.stocks.insider.businessinsider_model.get_insider_activity", "view": "openbb_terminal.stocks.insider.businessinsider_view.insider_activity", }, "stocks.ins.lins": { "model": "openbb_terminal.stocks.insider.finviz_model.get_last_insider_activity", "view": "openbb_terminal.stocks.insider.finviz_view.last_insider_activity", }, "stocks.ins.print_insider_data": { "model": "openbb_terminal.stocks.insider.openinsider_model.get_print_insider_data", "view": "openbb_terminal.stocks.insider.openinsider_view.print_insider_data", }, "stocks.options.pcr": { "model": "openbb_terminal.stocks.options.alphaquery_model.get_put_call_ratio", "view": "openbb_terminal.stocks.options.alphaquery_view.display_put_call_ratio", }, "stocks.options.info": { "model": "openbb_terminal.stocks.options.yfinance_model.get_info", "view": "openbb_terminal.stocks.options.barchart_view.print_options_data", }, "stocks.options.hist_ce": { "model": "openbb_terminal.stocks.options.chartexchange_model.get_option_history", "view": "openbb_terminal.stocks.options.chartexchange_view.display_raw", }, "stocks.options.unu": { "model": "openbb_terminal.stocks.options.fdscanner_model.unusual_options", "view": "openbb_terminal.stocks.options.fdscanner_view.display_options", }, "stocks.options.hedge.add_hedge_option": { "model": "openbb_terminal.stocks.options.hedge.hedge_model.add_hedge_option", "view": "openbb_terminal.stocks.options.hedge.hedge_view.add_and_show_greeks", }, "stocks.options.hedge.calc_delta": { "model": "openbb_terminal.stocks.options.hedge.hedge_model.calc_delta" }, "stocks.options.hedge.calc_gamma": { "model": "openbb_terminal.stocks.options.hedge.hedge_model.calc_gamma" }, "stocks.options.hedge.calc_hedge": { "model": "openbb_terminal.stocks.options.hedge.hedge_model.calc_hedge", "view": "openbb_terminal.stocks.options.hedge.hedge_view.show_calculated_hedge", }, "stocks.options.hedge.calc_vega": { "model": "openbb_terminal.stocks.options.hedge.hedge_model.calc_vega" }, "stocks.options.screen.check_presets": { "model": "openbb_terminal.stocks.options.screen.syncretism_model.check_presets" }, "stocks.options.grhist": { "model": "openbb_terminal.stocks.options.screen.syncretism_model.get_historical_greeks", "view": "openbb_terminal.stocks.options.screen.syncretism_view.view_historical_greeks", }, "stocks.options.screen.screener_output": { "model": "openbb_terminal.stocks.options.screen.syncretism_model.get_screener_output", "view": "openbb_terminal.stocks.options.screen.syncretism_view.view_screener_output", }, "stocks.options.hist_tr": { "model": "openbb_terminal.stocks.options.tradier_model.get_historical_options", "view": "openbb_terminal.stocks.options.tradier_view.display_historical", }, "stocks.options.chains": { "model": "openbb_terminal.stocks.options.tradier_model.get_option_chains", "view": "openbb_terminal.stocks.options.tradier_view.display_chains", }, "stocks.options.chains_yf": { "model": "openbb_terminal.stocks.options.yfinance_model.get_full_option_chain", "view": "openbb_terminal.stocks.options.yfinance_view.display_chains", }, "stocks.options.last_price": { "model": "openbb_terminal.stocks.options.tradier_model.last_price" }, "stocks.options.option_expirations": { "model": "openbb_terminal.stocks.options.yfinance_model.option_expirations" }, "stocks.options.process_chains": { "model": "openbb_terminal.stocks.options.tradier_model.process_chains" }, "stocks.options.generate_data": { "model": "openbb_terminal.stocks.options.yfinance_model.generate_data" }, "stocks.options.closing": { "model": "openbb_terminal.stocks.options.yfinance_model.get_closing" }, "stocks.options.dividend": { "model": "openbb_terminal.stocks.options.yfinance_model.get_dividend" }, "stocks.options.dte": { "model": "openbb_terminal.stocks.options.yfinance_model.get_dte" }, "stocks.options.vsurf": { "model": "openbb_terminal.stocks.options.yfinance_model.get_iv_surface", "view": "openbb_terminal.stocks.options.yfinance_view.display_vol_surface", }, "stocks.options.vol_yf": { "model": "openbb_terminal.stocks.options.yfinance_model.get_vol", "view": "openbb_terminal.stocks.options.yfinance_view.plot_vol", }, "stocks.options.voi_yf": { "model": "openbb_terminal.stocks.options.yfinance_model.get_volume_open_interest", "view": "openbb_terminal.stocks.options.yfinance_view.plot_volume_open_interest", }, "stocks.options.option_chain": { "model": "openbb_terminal.stocks.options.yfinance_model.get_option_chain" }, "stocks.options.price": { "model": "openbb_terminal.stocks.options.yfinance_model.get_price" }, "stocks.options.x_values": { "model": "openbb_terminal.stocks.options.yfinance_model.get_x_values" }, "stocks.options.y_values": { "model": "openbb_terminal.stocks.options.yfinance_model.get_y_values" }, "stocks.qa.capm_information": { "model": "openbb_terminal.stocks.quantitative_analysis.factors_model.capm_information" }, "stocks.qa.fama_raw": { "model": "openbb_terminal.stocks.quantitative_analysis.factors_model.get_fama_raw" }, "stocks.qa.historical_5": { "model": "openbb_terminal.stocks.quantitative_analysis.factors_model.get_historical_5" }, "stocks.screener.screener_data": { "model": "openbb_terminal.stocks.screener.finviz_model.get_screener_data", "view": "openbb_terminal.stocks.screener.finviz_view.screener", }, "stocks.screener.historical": { "model": "openbb_terminal.stocks.screener.yahoofinance_model.historical", "view": "openbb_terminal.stocks.screener.yahoofinance_view.historical", }, "stocks.sia.filter_stocks": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.filter_stocks" }, "stocks.sia.cpci": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_companies_per_country_in_industry", "view": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_view.display_companies_per_country_in_industry", }, "stocks.sia.cpcs": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_companies_per_country_in_sector", "view": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_view.display_companies_per_country_in_sector", }, "stocks.sia.cpic": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_companies_per_industry_in_country", "view": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_view.display_companies_per_industry_in_country", }, "stocks.sia.cpis": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_companies_per_industry_in_sector", "view": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_view.display_companies_per_industry_in_sector", }, "stocks.sia.cps": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_companies_per_sector_in_country", "view": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_view.display_companies_per_sector_in_country", }, "stocks.sia.countries": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_countries" }, "stocks.sia.industries": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_industries" }, "stocks.sia.maketcap": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_marketcap" }, "stocks.sia.sectors": { "model": "openbb_terminal.stocks.sector_industry_analysis.financedatabase_model.get_sectors" }, "stocks.sia.stocks_data": { "model": "openbb_terminal.stocks.sector_industry_analysis.stockanalysis_model.get_stocks_data" }, "stocks.ta.summary": { "model": "openbb_terminal.stocks.technical_analysis.finbrain_model.get_technical_summary_report", "view": "openbb_terminal.stocks.technical_analysis.finbrain_view.technical_summary_report", }, "stocks.ta.view": { "model": "openbb_terminal.stocks.technical_analysis.finviz_model.get_finviz_image", "view": "openbb_terminal.stocks.technical_analysis.finviz_view.view", }, "stocks.ta.recom": { "model": "openbb_terminal.stocks.technical_analysis.tradingview_model.get_tradingview_recommendation", "view": "openbb_terminal.stocks.technical_analysis.tradingview_view.print_recommendation", }, "stocks.th.check_if_open": { "model": "openbb_terminal.stocks.tradinghours.bursa_model.check_if_open" }, "stocks.th.all": { "model": "openbb_terminal.stocks.tradinghours.bursa_model.get_all", "view": "openbb_terminal.stocks.tradinghours.bursa_view.display_all", }, "stocks.th.closed": { "model": "openbb_terminal.stocks.tradinghours.bursa_model.get_closed", "view": "openbb_terminal.stocks.tradinghours.bursa_view.display_closed", }, "stocks.th.open": { "model": "openbb_terminal.stocks.tradinghours.bursa_model.get_open", "view": "openbb_terminal.stocks.tradinghours.bursa_view.display_open", }, "stocks.th.exchange": { "model": "openbb_terminal.stocks.tradinghours.bursa_model.get_bursa", "view": "openbb_terminal.stocks.tradinghours.bursa_view.display_exchange", }, "stocks.load": {"model": "openbb_terminal.stocks.stocks_helper.load"}, "etf.load": {"model": "openbb_terminal.stocks.stocks_helper.load"}, "stocks.process_candle": { "model": "openbb_terminal.stocks.stocks_helper.process_candle" }, "stocks.search": {"model": "openbb_terminal.stocks.stocks_helper.search"}, "stocks.quote": {"model": "openbb_terminal.stocks.stocks_helper.quote"}, "stocks.candle": {"model": "openbb_terminal.stocks.stocks_helper.display_candle"}, "crypto.load": { "model": "openbb_terminal.cryptocurrency.cryptocurrency_helpers.load" }, "crypto.find": { "model": "openbb_terminal.cryptocurrency.cryptocurrency_helpers.find" }, "crypto.chart": { "model": "openbb_terminal.cryptocurrency.cryptocurrency_helpers.plot_chart", "view": "openbb_terminal.cryptocurrency.cryptocurrency_helpers.plot_chart", }, "crypto.candles": { "model": "openbb_terminal.cryptocurrency.cryptocurrency_helpers.plot_candles" }, "etf.candle": {"model": "openbb_terminal.stocks.stocks_helper.display_candle"}, "forex.candle": {"model": "openbb_terminal.forex.forex_helper.display_candle"}, "forex.load": {"model": "openbb_terminal.forex.forex_helper.load"}, } """ api = Loader(functions=functions) api.stocks.get_news() api.economy.bigmac(chart=True) api.economy.bigmac(chart=False) TO USE THE API DIRECTLY JUST IMPORT IT: from openbb_terminal.api import openbb (or: from openbb_terminal.api import openbb as api) """ def copy_func(f) -> Callable: """Copies the contents and attributes of the entered function. Based on https://stackoverflow.com/a/13503277 Parameters ---------- f: Callable Function to be copied Returns ------- g: Callable New function """ g = types.FunctionType( f.__code__, f.__globals__, name=f.__name__, argdefs=f.__defaults__, closure=f.__closure__, ) g = functools.update_wrapper(g, f) g.__kwdefaults__ = f.__kwdefaults__ return g def change_docstring(api_callable, model: Callable, view=None): """Changes docstring of the entered api_callable Parameters ---------- api_callable: Callable Function whose docstring shall be changed model: Callable model function with docstring view: Callable view function with docstring, can also be None if no docstring from it shall be added Returns ------- Callable api_callable with changed docstring """ if view.__doc__ is not None: index = view.__doc__.find("Parameters") all_parameters = ( "\nAPI function, use the chart kwarg for getting the view model and it's plot. " "See every parmater below:\n\n\t" + view.__doc__[index:] + """chart: bool If the view and its chart shall be used""" ) api_callable.__doc__ = ( all_parameters + "\n\nModel doc:\n" + model.__doc__ + "\n\nView doc:\n" + view.__doc__ ) api_callable.__name__ = model.__name__.replace("get_", "") parameters = list(signature(view).parameters.values()) chart_parameter = [ Parameter( "chart", Parameter.POSITIONAL_OR_KEYWORD, annotation=bool, default=False ) ] api_callable.__signature__ = signature(view).replace( parameters=parameters + chart_parameter ) else: api_callable.__doc__ = model.__doc__ api_callable.__name__ = model.__name__ api_callable.__signature__ = signature(model) return api_callable class FunctionFactory: """The API Function Factory, which creates the callable instance""" def __init__(self, model: Callable, view: Optional[Callable] = None): """Initialises the FunctionFactory instance Parameters ---------- model: Callable The original model function from the terminal view: Callable The original view function from the terminal, this shall be set to None if the function has no charting """ self.model_only = view is None self.model = copy_func(model) self.view = None if view is not None: self.view = copy_func(view) def api_callable(self, *args, **kwargs): """This returns the result of the command from the view or the model function based on the chart parameter Parameters ---------- args kwargs Returns ------- Result from the view or model """ if "chart" not in kwargs: kwargs["chart"] = False if kwargs["chart"] and (not self.model_only): kwargs.pop("chart") return self.view(*args, **kwargs) kwargs.pop("chart") return self.model(*args, **kwargs) class MenuFiller: """Creates a filler callable for the menus""" def __init__(self, function: Callable): self.__function = function def __call__(self, *args, **kwargs): print(self.__function(*args, **kwargs)) def __repr__(self): return self.__function() class MainMenu: def __call__(self): """Prints help message""" print(self.__repr__()) def __repr__(self): return """This is the API of the OpenBB Terminal. Use the API to get data directly into your jupyter notebook or directly use it in your application. ... For more information see the official documentation at: https://openbb-finance.github.io/OpenBBTerminal/api/ """ class Loader: """The Loader class""" def __init__(self, funcs: dict): print( "WARNING! Breaking changes incoming! Especially avoid using kwargs, since some of them will change.\n" "For more information see the official documentation at: https://openbb-finance.github.io/OpenBBTerminal/api/" ) self.__function_map = self.build_function_map(funcs=funcs) self.load_menus() def __call__(self): """Prints help message""" print(self.__repr__()) def __repr__(self): return """This is the API of the OpenBB Terminal. Use the API to get data directly into your jupyter notebook or directly use it in your application. ... For more information see the official documentation at: https://openbb-finance.github.io/OpenBBTerminal/api/ """ # TODO: Add settings def settings(self): pass def load_menus(self): """Creates the API structure (see openbb.stocks.command) by setting attributes and saving the functions""" def menu_message(menu: str, full_path: List[str], function_map: dict): """Creates a callable function, which prints a menus help message Parameters ---------- menu: str Menu for which the help message is generated full_path: List[str] The list to get to the path function_map: dict Dictionary with the functions and their virtual paths Returns ------- Callable: Function which prints help message """ path_str = ".".join(full_path) filtered_dict = {k: v for (k, v) in function_map.items() if path_str in k} def f(): string = menu.upper() + " Menu\n\nThe api commands of the the menu:" for command in filtered_dict: string += "\n\t." + command return string return f function_map = self.__function_map main_menu = MainMenu() for virtual_path, function in function_map.items(): virtual_path_split = virtual_path.split(".") last_virtual_path = virtual_path_split[-1] previous_menu = main_menu for menu in virtual_path_split[:-1]: if not hasattr(previous_menu, menu): partial_path = virtual_path_split[ : virtual_path_split.index(menu) + 1 ] next_menu = MenuFiller( function=menu_message(menu, partial_path, function_map) ) setattr(previous_menu, menu, next_menu) previous_menu = getattr(previous_menu, menu) setattr(previous_menu, last_virtual_path, function) self.openbb = main_menu @staticmethod def __load_module(module_path: str) -> Optional[types.ModuleType]: """Load a module from a path. Parameters ---------- module_path: str Module"s path. Returns ------- Optional[ModuleType]: Loaded module or None. """ try: spec = importlib.util.find_spec(module_path) del spec except ModuleNotFoundError: return None return importlib.import_module(module_path) @classmethod def get_function(cls, function_path: str) -> Callable: """Get function from string path Parameters ---------- cls Class function_path: str Function path from repository base root Returns ------- Callable Function """ module_path, function_name = function_path.rsplit(sep=".", maxsplit=1) module = cls.__load_module(module_path=module_path) return getattr(module, function_name) @classmethod def build_function_map(cls, funcs: dict) -> dict: """Builds dictionary with FunctionFactory instances as items Parameters ---------- funcs: dict Dictionary which has string path of view and model functions as keys. The items is dictionary with the view and model function as items of the respectivee "view" and "model" keys Returns ------- dict Dictionary with FunctionFactory instances as items and string path as keys """ function_map = {} for virtual_path in funcs.keys(): model_path = funcs[virtual_path].get("model") view_path = funcs[virtual_path].get("view") if model_path: model_function = cls.get_function(function_path=model_path) else: model_function = None if view_path: view_function = cls.get_function(function_path=view_path) else: view_function = None if model_function is not None: function_factory = FunctionFactory( model=model_function, view=view_function ) function_with_doc = change_docstring( types.FunctionType(function_factory.api_callable.__code__, {}), model_function, view_function, ) function_map[virtual_path] = types.MethodType( function_with_doc, function_factory ) elif view_function is not None: raise Exception( f"View function without model function : {view_function}" ) return function_map openbb = Loader(funcs=functions).openbb