From d8d7db528ba08742bb26dacaf700d0f2e67bb157 Mon Sep 17 00:00:00 2001 From: James Maslek Date: Thu, 14 Mar 2024 11:23:50 -0400 Subject: [PATCH] Release/3.2.5 (#6214) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix bug. Add router test. (#5888) * Fix bug. Add router test. * Simplify * separate pylint between platform + terminal (#5892) * separate pylint b/w platform + terminal * Explicitly set pylint check scope to files in the diff --------- Co-authored-by: Theodore Aptekarev * sync descriptions (#5893) * Add REST API docs page with advanced settings configuration (#5890) * Don't mention docker in a list of python envs * Create a REST API page * Update docs to get api keys from the hub * Update installation instructions * Mention requirement of poetry and toml in source installation section * move rest page up to the top. and add url to google colab example notebook --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * fix a v3 syntax example (#5891) * Adds federal reserve data points (#5885) * Allow optional input for 2-month treasury rates and add FederalReserve rates model The commit includes two main changes. One being the modification to the standard treasury rate models, where the 2-month input field is now optional, and a default value is set to none. The other main change is the addition of a new module for the FederalReserve treasury rates model, which includes query parameters, a data model, and a data fetcher. * Add Money Measures models and commands This commit introduces new Money Measures models to handle money-related data, defines Money Measures commands in the economy router, and implements the Federal Reserve Money Measures model. The core model includes fields like start_date, end_date, and various components of the money supply. The new command added to the economy router allows the querying of these data. * Add Federal Reserve Money Measures test file This commit adds a test case file for the Federal Reserve Money Measures fetcher in the Federal Reserve module. The test case includes simulating a GET request and the corresponding expected response from the server. * Cleanup * Sneaky unformatted integration tests * its a dawg life for me ...... ruff * add the fed funds rate * didnt mean to commmit this * black * this is why we should pre commit kids * change install name * add providers to int tests * review comments + commit static * replace nan with None * fix float on None * get rid of nans for nulls for json handling * change `_` to `-` in readme pip install. * Update __init__.py docstring --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Theodore Aptekarev * Check if outdated (#5898) * Add econometrics API tests (#5899) * Docs/excel update (#5889) * update xl docs * update syntax line * update again * Fix pylint scope (#5895) * Allow optional input for 2-month treasury rates and add FederalReserve rates model The commit includes two main changes. One being the modification to the standard treasury rate models, where the 2-month input field is now optional, and a default value is set to none. The other main change is the addition of a new module for the FederalReserve treasury rates model, which includes query parameters, a data model, and a data fetcher. * Add Money Measures models and commands This commit introduces new Money Measures models to handle money-related data, defines Money Measures commands in the economy router, and implements the Federal Reserve Money Measures model. The core model includes fields like start_date, end_date, and various components of the money supply. The new command added to the economy router allows the querying of these data. * Add Federal Reserve Money Measures test file This commit adds a test case file for the Federal Reserve Money Measures fetcher in the Federal Reserve module. The test case includes simulating a GET request and the corresponding expected response from the server. * Cleanup * Sneaky unformatted integration tests * its a dawg life for me ...... ruff * add the fed funds rate * didnt mean to commmit this * black * this is why we should pre commit kids * change install name * add providers to int tests * review comments + commit static * replace nan with None * fix float on None * get rid of nans for nulls for json handling * change `_` to `-` in readme pip install. * Update __init__.py docstring * Debug pylint * Adjust the fetch depth --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * fix `from openbb import obb` asyncio lock in python REPL (#5896) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * feature/financials - PR for working on structure of financial statements. (#5794) * balance sheet draft * balance_sheet draft * cash_flow draft * income_statement draft * intrinio financials * description * period field * ruff * income statement * field * label - gross profit ratio * cash flow statement * investing order * add option for caching to cashflow * add caching to balance and income * typos and update order for financial institutions * replace 0 values with None * add financial ratios from intrinio * black * missing test params * balance cassette * query param description * symbol list warning * black * handle BRK-A and symbols with a dash for Intrinio * fix typo error * add free cash flow to bottom of cash flow statement * amortization_expense * dev_install.py * undo dev_install.. wrong branch * cash flow order things * standardized cash flow * fields * integration tests * cash flow model validator * more polygon cash * black * black * Delete openbb_sdk/providers/polygon/openbb_polygon/utils/definitions.py wrong file * balance sheet * some cleanup * ruff * income statement * black * test params * financial ratios async update * recapture fmp and polygon tests * yFinance financials * yfinance tests * delete financial_statements standard model * intrinio balance sheet order * fiscal year standard param * remove file accidentally committed * add reported_financials end point * fiscal_year param for reported_financials * fix url * fmp test cassette * add safe-guard with warning for fiscal year before 2008 * periods can only be annual and quarter * url in docstring correction * add fiscal_year param to intrinio standardized financials and ratios * fix fmp ratios * black * rename fields as per Minh * rogue field * black * Fix typo in a docstring * Resolve linting errors * type ignore * disable=unused-argument * changing the arg name cc @minhhoang1023 --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Theodore Aptekarev Co-authored-by: hjoaquim * docs/legacy-install: Add warning at top of page - Instructions on this page are for installing the Terminal (#5904) * add warning at top of page - instructions are for installing the Terminal app * pip install openbb-nightly * hotfix/financials-field-maps: Updates A Couple FMP/Polygon Income Statement Fields (#5907) * update income statement fields * another polygon field * ratio -> margin * black * explicit fmp fields * add reported_currency for standardized intrinio * # pylint: disable=unused-argument * another unused-argument * black.. * patch tests * polygon income: eps -> basic earnings per share * re-capture terminal portfolio menu test --------- Co-authored-by: hjoaquim * Fix test (#5916) * Fix test * Skip ultima integration tests --------- Co-authored-by: Pratyush Shukla * hotfix/fmp-price-performance-zeros: Replace returned zero with None and normalize percent values. (#5918) * replace zeros with none and normalize percents * pylint unused argument * Update index.md (#5906) * Release/4.1.0 (#5901) * Hotfix/terminal tests (#5919) * skip supressed arguments * silent way of customly load on quote * specify source for call_load * docs/platform-faq: Start Platform FAQ page with bullet points on Platform vs SDK (#5914) * platform vs sdk faq page * add data and data providers faq section and some style cards * typo * makes changes as per reviews * openbb-nightly as a way to install everything * jupyter-lab instead of jupyter --------- Co-authored-by: Henrique Joaquim * hotfix/backend - Initialize OpenBBFigure (#5912) * create backend * openbb_figure * black * pylint * pylint again --------- Co-authored-by: Henrique Joaquim * hotfix/yf-futures-historical: yfinance historical futures multi-ticker support and symbol parsing (#5923) * multi-ticker support for yfinance futures historical * raise-missing-from * integration test params * equity_historical adjusted kwargs * pylint unused argument * Docs/excel examples (#5920) * regen excel md * add syntax + basic example * fix example * create json with docs map * update docs to latest functions.json + remove tiingo * remove space from examples * minor fix * remove spaces * remove spaces * bug fix: remove folder before generating * fix typo * add link to appsource * fix * Update templates.md * regenerate content * change docs colors * fix light mode * add back tiingo * update functions.json * templates go later * remove Library from reference * Make the excel markdown being generated at runtime * fix reference cards having commands under menu * remove excel/reference folder since this is built at runtime by gh-pages action * black formatting * improve title * add excel to the main page * add excel image bg * make excel sidebar show up next to pro * improve main page * small fix for platform page title * update basics page * add tip to autocomplete --------- Co-authored-by: DidierRLopes * Re-record tests and fix symbol bug (#5924) * Re-record tests and fix symbol bug * nordvpn us ftw * @IgorWounds says "SPY >> IOO" --------- Co-authored-by: Pratyush Shukla * Docs/bug fix (#5926) * fix pro link * fix wrong example * Introduces a limit argument for the `equity.fundamental.trailing_dividend_yield` endpoint (#5925) * introduces a limit argument for the equity.fundamental.trailing_dividend_yield endpoint * add default args to test * Add json_schema_extra to openapi.json (#5930) Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * feature/standardize-quote: Proposal to Standardize EquityQuote (#5922) * standardize EquityQuote * intrinio reference * rogue comma * pylint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * hotfix/fmp-rev-segments: Adds Fiscal Period to busines/geographic segments revenue. (#5921) * add fiscal_period to revenue by geography and business line * data description and unused imports * update test cassette * Allow multiple symbols `equity.profile` (#5929) * allow multiple symbols * pylint * pylint ignore position * change callback to helper func --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: hjoaquim * Add filtering to AV historical price (#5928) * add filtering to av historical price * lints --------- Co-authored-by: Pratyush Shukla * Fix vwap FMP error (#5936) * Fix vwap FMP error * Linting * Painlint * Add date filter + symbols to comp (#5931) * add date filter + symbols to comp * make sure year is in d * tests fix * Improving Platform's import time (#5894) * missing decorator * missing optional statements * us-gov to optional and right position * removing redundant call * lazy load mappings * docstrings * introducing the extension loader class * misleading docstring * using the extension loader on the router * using the extension loader on the credentials * docstrings * lazy load of entry points * checkout dev_install * using the extension loader to get the entry points instead of recalling the function * improved auth service and charting service * using the extension loader on the registry * typos * adding properties to extension loader for easy access * using the extension loader on the package builder * avoiding circular imports by using forward references * fix charting service tests * test for the extension loader * Update openbb_platform/core/openbb_core/app/model/credentials.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Update openbb_platform/core/openbb_core/app/router.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Update openbb_platform/core/openbb_core/provider/registry.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * adjustments --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Disable auto_build on test run (#5937) * Disable auto_build on test run * Move to conftest * Update excel docs (#5940) * update basics * update reference generator * Categorize release notes based on labels for OpenBB Platform (#5943) * Categorize release notes based on labels for OpenBB Platform * Add environment variable for GitHub token in labels-PR.yml * Update labeler.yml to use "enhancement" label for feature branches --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Custom deprecation message in API endpoints and Python commands (#5942) * add custom deprecation message feature in routers * add custom deprecation message feature in package builder * using an actual DeprecationWarning instead * fix tests --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: hjoaquim * Hotfix/remove unused workflow (#5945) * Disable auto_build on test run * Remove unused workflow * Revert * Hotfix/fix typo (#5948) * Disable auto_build on test run * Fix typo * Revert * docs/data-models-url: Fix URLs on Development Page (#5944) * fix url to the standard models * github links * `equity.fundamental.dividends`: allow filter by date (#5932) * allow filter by date * ruff * pylint * fix tests --------- Co-authored-by: Pratyush Shukla * Create Excel templates page (#5947) * create templates page * Update index.mdx * fix description * update card * remove clsx * Update index.mdx * Update index.mdx * Update index.mdx * Update index.mdx * min height * min height * improve excel docs and point towards hub --------- Co-authored-by: DidierRLopes * hotfix/intrinio-dividends-limit: Fix Limit Param Alias (#5951) * fix limit param * pylint unused argument, recapture test cassette --------- Co-authored-by: Pratyush Shukla * Docs/remove core refs (#5957) * remove references to core: PathHandler + ProviderInterface * remove unused function * add comment * regenerate * fix a few examples * add comment * rename file * Excel tutorials on the docs (#5956) * update workflows name to tutorial * update title * get barebones to bring in Excel videos * tutorial excel videos in * hotfix/float-values: Convert Intrinio balance sheet values to float type (#5961) * convert intrinio balance sheet values to float type * unused import * typo in alias dict * Update to OpenBB Add-in for Excel (#5965) * Log custom headers (#5966) * add custom headers * fix: send on startup and defaults * pylint * unittests * move government-us to community in dev_install (#5963) * fix: adds logic to check whther user is logged in on hub (#5941) Co-authored-by: Luqman * hotfix/fix-company-filings: Fixes too many mandatory fields. (#5909) * Fixes too many mandatory fields. * black * black again --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: James Maslek * `equity.estimates.price_target` - Integrate with Benzinga (#5946) * deprecation message * fix lints * adding equity.estimates.ratings and fmp as its provider * unit tests for fmp * removing unused file * typos * add benzinga to AnalystRatings * revert changes to estimates router * moving it to price target instead * reverting changes * fmp support for multiple ticker * benzinga price target * ruffy * unused argument * fix type hints * tests for the new fetcher * new integration tests * fixing tests * missing std arg --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [DEPRECATION] `index.market` renamed to `index.price.historical` (#5962) * deprecate index.market and add index.price.historical * add index.historical standard model * add index.historical provider models * index extension tests * provider tests * linting * bug fix (#5969) * Uppercase excel reference (#5958) * uppercase reference * fix name header * add tab title * remove reference excel folder * add to gitignore excel reference files --------- Co-authored-by: DidierRLopes * move templates (#5970) * Release 4.1.1. (#5964) * update dev_install * fix effr test * Update dev_install.py * fix fundamental balance test * fix equity price historical test * fix price target model * black * rebuild static files * update publish.md * fixed dev_install * update publishing doc * updated `openbb-core` to 1.1.1 * updated extensions * updated providers * updated `openbb` package * updated static extension map * updated publishing doc * fixed toml for `openbb-finra` * @jmaslek yfinance IS DEFAULT * updated static --------- Co-authored-by: Pratyush Shukla Co-authored-by: hjoaquim * Fix link to discord channel (#5910) Co-authored-by: James Maslek * Fixing Posthog handler for thread safety (#5968) * fixing posthog handler for thread safety * removing loggging init from the global scope - per sensei juan --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Update labeler.yml and labels-PR.yml (#5974) * hotfix/ allow multiple `identify` calls (#5976) * allow multiple `identify` calls * Update posthog_handler.py * regex out any invisible control character from sales_conditions field (#5977) * docs/http-requests: Contributor Guide For Building HTTP Requests (#5973) * contributor guide for http requests * add a docstring * add section on get_querystring * extra space * add note for people installing PyPI in a zsh terminal shell --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * feature/add-yfinance-functions: Add equity.profile for yFinance (#5978) * equity profile for yFinance * pylint * equity quote * unused imports * remove yfinance from extras in toml (#5982) * Release OpenBB Platform v`4.1.3` (#5983) * fixing pyproject.toml * adding pandas-ta to technical package for publishing * bumping technical * test for pyproject toml * feature/cboe-async: Refactor Cboe for Async (#5900) * refactor cboe for async * codespell * unused imports * pylint * more pylint * platform metadata * classmethod decorator * test params * intrinio quote * test param names * date in test needs to be a datetime.date not string * make fmp unix timestamp tz-aware and normalize percent change * different way of parsing datetime string * recapture cboe equity historical test * unused import * index snapshot update * black * extension map * pylint * cboe pyproject.toml * proposal to standardize equity_quote * one more file * removing changes on static assets * index_historical * index_historical again * last_time -> last_timestamp * obsolete router path * fix tests * test param * restore market index deprecation that I forgot about * fixing tests --------- Co-authored-by: hjoaquim * Fix typo in website/README.md (#5980) * Fix typo in website/README.md * Update linting.yml * Update linting.yml * Update linting.yml * Change ref conditions * Update linting.yml --------- Co-authored-by: Luqman Co-authored-by: Luqman * Hotfix/th etfs (#5959) * added etf trading hours * black formatter --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Henrique Joaquim Co-authored-by: Luqman * feature/finviz-provider: Adds Community Finviz Provider Extension (#5952) * add finviz provider * recapture tests * recapture tests again? * invalid test param * static packages * units_measurement -> unit_measurement * static packages as core only * openbb_core version bump in pyproject.toml * try adding user-agent to test response * fix tests * linting * provider model cosmetic changes * fix install script and typo in openbb toml * static * fix: re-record unittests * empty data error * definitions as a file --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Pratyush Shukla Co-authored-by: Diogo Sousa * Add support for multiple symbols on `obb.equity.price.historical` (#5984) * av - support for multiple symbols * tiingo - support for multiple symbols * include symbol only if necessary * update extension descriptions page (#5985) * remove useless file (#5991) * added symbol to headers (#5981) Co-authored-by: Pratyush Shukla * Fixing Docs Typos (#5955) * fixed typo * fixed stocka typo --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: James Maslek Co-authored-by: DidierRLopes * fix nasdaq test cassettes (#5989) * don't include `custom_headers` in openapi schema (#5994) * hotfix/intrinio-index: Drop None Rows From intrinio Historical Index (#5987) * drop None rows from intrinio historical indexes * add empty data error * static assets * hotfix/insider-trading: Fix #5988 (#5990) * fix validation errors * empty strings * validator --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: teh_coderer * CI listing quick fix (#6002) * BIGGGG LINTING * fixing lints * fixing lints * black * very ruff * no export * fix hedge_view again * lints * platform lints * lints * black * black it @hjoaquim * fix some more linting --------- Co-authored-by: hjoaquim * Release `openbb-finviz` `1.0.0` to the public (#6000) * set version to `1.0.0` * Set correct dep version in main package * Add `finviz` to table * Auto Labelling for OpenBB Excel Docs Changes (#5998) * Update pull request labels * Update labeler.yml with new label for Excel files --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Support for custom examples in router commands (#5993) * Disable auto_build on test run * Add support for custom router examples * Revert odd file change * Fix API pollution * Refactor examples with @montezdesousa * Check if model is inside the PI * Fix * feat: add & fix examples (#6001) * feat: add & fix examples * fix: ruff + comment * feat: read parameter pool from file * feat: typing + unit test * Disable auto_build on test run * Add field order to OBBject * Revert * lint and revert * fix test --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Diogo Sousa * hotfix/intrinio-options-date: Fix comparing values between str and datetime (#5997) * fix compare between str and datetime * unused argument * get_weekday * lint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Field order added to the OBBject extra as preference (#5999) * Disable auto_build on test run * Add field order to OBBject * Improvements * Remove noxfile * Disable auto_build on test run * Add field order to OBBject * Revert * lint * Add docs * Not sure how this happened * lint * Update `openbb-devtools` (#6008) * update deps * unpinned package versions from gh linting action * codespell * updated black dependency * linting * linting * linting * pin codespell version * black * black again * install devtools in linting action * format w new black (#6009) * format w new black * format w new black * black again * black the terminal * ignoring unused arguments --------- Co-authored-by: Pratyush Shukla * remove reviewpad (#6010) * Remove Ultima provider (#6012) * Add OECD unemployment (+more) + data cache idea (#5917) * Add OECD unemployment + data cache idea * Docstring edits * Tests * Add composite leading indicator * i truested ruff --fix too much * Add short + long term interest rates * pylint * pylint2 * was not committing. my b * add csv cache + make it default. remove pyarrow from poetry * Clean up * Didnt run on this file. My bad * Why was this ignored /shrug * pylint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Feature/improved pr template (#6018) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * better pr templates * developer template * [Feature] - Custom deprecation (#6005) * custom deprecation * custom deprecation * using the new deprecation * custom deprecation on the package builder * remove comment * ruff * black * static assets * tests * using parametrization instead * test for deprecated endpoints (#6014) * Deprecation warning on the reference docs (#6015) * typo/fix * bring back methods needed for markdown generation * add deprecation warning to docs * contributor docs for deprecating endpoints - tks @deeleeramone * small changes on publishing procedure per @the-praxs * moving the deprecation summary class to deprecation file instead * explanation on class variables * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update openbb_platform/openbb/package/index.py Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * deprecating on 4.3 instead @the-praxs --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Pratyush Shukla * [BugFix] Fix package builder (#6022) * fix: remove specific imports * adjustments for correct deprecation * static assets --------- Co-authored-by: hjoaquim * [Feature] Add support for multiple tags in `historical_attributes` and `latest_attributes` (#6013) * historical attributes standard model - * add support multiple tags * add `tag` field in data * add support for multiple tags in historical attributes * set correct return type in `callback` function * latest attributes standard model - * add support for multiple tags * add `tag` field in data * add support for multiple tags in latest attributes * add test params for the attributes endpoints * add support for multiple `symbol` and add `symbol` field in the data * modified code to fetch data from multiple symbols and throw warning as per @deeleeramone * add params for testing multiple symbols * linting * fix test params * fixed condition to check if its a `Dict` type * updated intrinio fetcher tests for the statements * updated static * [feature]: feature/overview-to-profile: Deprecate `equity.fundamental.overview()` and move to `equity.profile()` (#6011) * fmp overview to equity profile * deprecation warning * urls * wrangle fields * black * pylint unused argument * insert additional securityID fields to standard model * custom deprecation using OpenBBDeprecationWarning * typo - need to have the deprecated=True flag * static assets * fix non related test * minor adjustment - removing the need for the try/except block - using the get and pop removes the need for key existance checking. cc @deeleeramone --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Henrique Joaquim * [BugFix] - Remove duplicate code (#6025) Co-authored-by: Pratyush Shukla * remove `SectorNews` from router and standard models (#6026) * feature/more-yfinance: Adds some more to openbb-yfinance (#5979) * equity profile for yFinance * pylint * equity quote * unused imports * price target consensus * add currency field * add share_statistics * don't append empty result to results * key executives * missing definition in key_executives * pylint * key metrics * add currency to key metrics * add etf_info * rename trailing_annual_dividend -> dividend_rate_ttm * add institutions count to share_statistics * add historical dividends * add logic for start-end dates to historical_dividends * recapture the test..? * funny test * filter on tests? * record test with clean cache..? * year_price_change -> price_return_1y in key_metrics * black * make descriptions clear for beta and dividend_yield fields * add description field to standard model * updated static * clear description of shares_implied_outstanding field * updated static for equity * clean descriptions --------- Co-authored-by: Pratyush Shukla * feature/commodities-lbma-fixing: Adds Commodity Extension and LBMA Gold/Silver daily fixing levels (#5760) * add commodity extension and add lbma fixing endpoint * dev_install.py * readme url * renovate the standard model * makes a query_params model for nasdaq data link * literal not optional * unused imports * missing test params * test cassette * DataLink query param description * test file import * actually fix import * from openbb_core.provider..... * ruff * another import statement * black * async router * move query_params * update version * version numbers * extension_map * satisfy pylint? * pylint * Update pyproject.toml * black * poetry lock * Update extension_map.json * Update __extensions__.py * Update module_map.json * clean descriptions --------- Co-authored-by: Pratyush Shukla * Improve UX for `obb.news` (#5986) * adding date,start_date and end_date to std params * add date to special params which should've another type * change types to dateType * change helper to accomadate changes in types * date filtering * using the date filtering for all providers * date params on the std model instead * adding the right type * filtering dates on world news * integration tests * fix descriptions * static assets * black * Revert "black" This reverts commit 7288b59f87e1b0816733a96ce77fb96e13dcf0e3. * lint * addressing @montezdesousa suggestion: removing qua 31 jan 2024 15:01:20 WET from standard models and using it only on benzing * tests accordingly * static assets * black --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: teh_coderer Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Improve Standardization - `IndexHistorical` (#6030) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * fix tests * keep the skip * fix test * [Feature] - Refactor Response Model (#6024) * Start refactor with @montezdesousa * feat: add response model inside openapi_extra * feat: find+replace return types * fix: ruff * Feature/api response by provider (#6029) * init * Update router.py * Update registry_map.py * check dicts * lint * exclude provider on data model for package build * `results_type_repr` logic for `Annotated`, ignore provider field in `_extract_data` --------- Co-authored-by: Diogo Sousa Co-authored-by: teh_coderer * [BugFix] - Improve Standardization - `CotSearch` (#6031) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * use cache as std field * fix tests * fix tests * keep the skip * fix test * adding missing param * fix tests accordingly * Docs/byod (#5996) * add byod to reference * fix: rename add-in name * feat: add data conectors page * fix: additional notes * tiny tweaks * update functions.json and openapi.json * fix: fix bug in hedge controller * fix: another bug hedgecontroller * black --------- Co-authored-by: DidierRLopes * Feature/ex-dividend: Renames "date" columns as "ex_dividend_date" for Dividend Calendar and Historical Dividends (#6006) * date -> ex_dividend_date * nasdaq historical dividends * black * pylint * intrinio alias_dict * dividend_currency -> currency * yfinance field name --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Adds a timezone to the Unix timestamp conversion to correct localization errors. (#6023) * fix: remove specific imports * make polygon historical tz-aware * undo including that commit * that PR wasn't supposed to be there. * pylint unused argument * fix polygon crypto historical intervals * pylint * new cassette * fix the rest of the polygon historical price query params * black * pylint.. * integration test param * appease daylight savings handling * paginate for crypto currency and index * black * raise EmptyDataError when no results instead of returning an empty list * ruff --------- Co-authored-by: Diogo Sousa * Hotfix/wrong pydantic validator (#6037) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * Use field_validator instead * fix openapi schema fields `to_snake` (#6036) * Fix data connectors link typo (#6038) * [BugFix] - Improve Standardization - `EquitySearch` (#6033) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * use cache as std field * fix tests * fix tests * use_cache as std * adjust tests * keep the skip * re-record test * black * Docs / only display results for current platform (#6017) * Update index.js * Update index.js * yfinance * tzcache no longer exists * fixxy * ruff --------- Co-authored-by: Henrique Joaquim Co-authored-by: James Maslek Co-authored-by: Andrew * Improve the docstrings (#6040) * Improve the docstrings (#6041) Co-authored-by: Henrique Joaquim * dont run base tests with v4 label (#6046) * Sync excel reference (#6039) * sync excel reference * fix: change delimiter to comma * feat: update data connectors * test skipping wf * Update unit-test.yml * Update unit-test.yml * test skipping wf * watch label changes * Update unit-test.yml * [Enhancement] - Improve `news` router docs and examples (#6047) * better docs * static assets * Feature/platform standardization notebook (#6049) * Add platform standardization overview notebook to examples * Add py.typed marker to openbb-fred * [Enhancement] - Improve `currency` router docs and examples (#6045) * currency search * reference rates * historical price * static assets --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * display warnings based on preference (#6051) * [Enhancement] - Improve `crypto` router docs and examples (#6048) * crypto search add validation for '-'-separated pairs * set default query value to None * improve /crypto description with custom examples * improve /crypto/price/historical description with custom examples * updated static for crypto menu * ignore line too long * linting --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Final Implementation of Changelog V2 (#6050) * Updated the release drafter to process the released changelog for OpenBB Platform * Update release drafter configuration * Add OpenBB Documentation Changes and Create Release * Update process_changelog.py path in draft-release.yml * Update release-drafter version and save changelog * Copy changelog with python * Update draft-release.yml to save Changelog * Update draft-release.yml * Encode and save Changelog to Base64 * Update Changelog saving method * Update Changelog format * Update CHANGELOG.md with release notes * Fix draft release workflow * Add cat command to print CHANGELOG.md * Add platform-drafter.yml and update release-drafter.yml and draft-release.yml * Commented out config-name in release-drafter step * Update branch name validation and process_changelog.py * Refactor process_changelog.py to improve readability and maintainability * Refactor process_changelog.py to handle file I/O errors and remove duplicate PR entries --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * improve discriminator logic, fix package return type docs (#6052) * improve discriminator logic, fix package return type docs * Update registry_map.py * build package * Update registry_map.py * defaults * Update registry_map.py --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Add LLM tools example notebook (#6053) * Add LLM tools example notebook * Update README, rename example notebook --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Remove the preference (#6055) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * [Feature] - Standardise multiple symbols input (#6056) * feat: remove list of str * fix: update cpi * package builder + cpi * build * fix: update unittests * fix: check_item * fix: unittests * Improve the docstrings (#6057) * update economy router docstrings (#6058) Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fix OECD Long Term Interest Rate (#6060) * fix long term interest rate * pylint unused argument * [Bugfix] - Fix economic calendar country (#6059) * fix economic calendar country * lint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [HotFix] Index Router Docstrings & `sp500_multiples()` Cleanup (#6063) * sp500 multiples cleanup * remove dict from standard model * static pacakge * pylint * [Feature] FMP Current Holdings (#6043) * add fmp current holdings to etf holdings * pylint unused argument --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Replace symbols in company/news (#6061) * feat: replace symbols in /news * fix: integration tests * fix: integration tests api * fix: typo * Update test_intrinio_fetchers.py * [Enhancement] Add function examples to router. (#6042) * options router * fixedincome router * futures router * missing comma * static assets * futures router --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Enhancement] Add function examples to Regulators Router (#6054) * options router * fixedincome router * futures router * missing comma * static assets * futures router * sec router * cftc router * black --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fix World News (#6064) * fix fmp * fix intrinio * fix biztoc * actually commit intrinio fix * fix tiingo * unused import * fix tests * black * ruff * benzinga empty strings * codespell * fix test? * more empty strings --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - remove unused validators from standard models (#6067) * update standard models * lint * Update USD Liquidity Example Notebook for V4 (#5902) * Update USD Liquidity Example Notebook for V4 * delete some v3 text in the copperToGold * Update README.md * findSymbols preview image * Google Colab preview image * financialStatements preview * content tsx file * ### title * convert tsx to json * indent size * double quote keys.json * trailing commas * Update content.json * patch --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * Fix QA Examples (#6072) * [Feature] - Ensure Bugfix branches can only do PRs to `develop` branches (#6073) * bugfix branch name checks and few fixes on the linting not to run on pushes to branches outside PRs * Update branch naming guidelines link --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Feature/charting obbject (#5938) * fix circular import issues on the obbject extension framework * settings available on the obbject * extension init * charting assets and code * introduce to_chart functionality * removes the to_chart method from obbject in detriment of the one from the obbject extension * Update openbb_platform/obbject_extensions/charting/charting/__init__.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * fix on the show method * adding the example to the to_chart docstring * copying the exsting README from charting extension - needs to be revamped * moving to openbb_charting instead * update the pyproject.toml file * pydocstyle * versions * better docstrings * making accessors public * removing unnecessary credentials variable cc @montezdesousa * removing access to extra/metadata and use designated private attrs instead * Fixes linting for the logging service (#5992) * lints * typing.Type instead * deprecating ChartingService to use the new extension instead - adding function discovery capabilities using it * tests for the obbject charting extension * removing charting service from command runner * filter functions not implemented in the module * remove charting service tests * removing charting service on the tests for int tests * charting integration tests * removing charting service file * removing old charting extension code * revamp builder * fix obbject tests * fix command_runner tests * removing openbb_figure_table * better website docs * reviewed readme * unsetting api key for posthog (pywry) windows * added debug_mode to the system settings * removing api key * update nightly script * fix tests * black * black * Revert "black" This reverts commit 21d76ad689087b4ad38cec55667186263363c89f. * Revert "black" This reverts commit 0904653fd73518c0d345a82f91f4cb06cfa84cb6. * black for henrique * returning a list instead * better docstrings * removing unnecessary indicators docstring * typo * black * intentional access to protected member * changes to publish script * filtering deleted files * black * adding render argument * fixing the df_to_basemodel function: it should include the index in the columns either if flagged or if the index is named * adding the hability to add you own data to to_chart method * tests * black * disable protected access * accept kwargs to eg. save image * adjustment cc Igor * add if statement for protection * remove unused return typing * fix technical charting views * better error message cc @IgorWounds * better structure and fix test * Revert "better structure and fix test" This reverts commit 612ea6117ce064d5e41f74e72e171646be614408. * Revert "better error message cc @IgorWounds" This reverts commit 3d7ee53878b7742d187e83f7e5d4c27438aa40ef. --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * Fix CAPM example (#6075) * Start removing dead v3 commands for deprecation (#6070) * Yeet tokenterminal * Yeet crypto/onchain/hr and gwei * yeet luna * yeet coinglass * yeet dps/ctb * yeet reddit * yeet covid * actually not yeeting hide yfinance future warning * yeet options/hedge * not yeeting. i18n words * something happened on accident * still fixing * git reset/git checkout -f 2516cfbc72d23a7656715314ea94cc34d4c994ee website/content * still not sure whats going on * Edit workflow to not look at deleted files + change bootup message * Dont pin the workflow to my branch always lol * Remove askobb * [Feature] - Comma separated string and list inputs (#6062) * feat: balancesheet * feat: income statement * fix: cash flow statement * feat: financial ratios * feat: reported financials * feat: revenue business line * feat: revenue per geography * fix: warnings * Update balance_sheet.py * fix: remove warning imports * feat: balance sheet growth * feat: calendar ipo * feat: cashflow growth * feat: __validators__ * fix: typing * fix: validator msg * feat: trailing dividend_yield * feat: short volume * feat: share statistics * feat: price target + consensus * fix: update validator * feat: historical dividends * feat: key executives * fix: getattr directly * fix: type hint validator * fix: add default to getattr * typo * feat: otc * feat: options chains * fix: remove list validators * feat: add validator dict to fetchers * lint * update standard models * lint * feat: rename validator * fix: ownership * feat: query params description * fix: balance yfinance * key execs, income statement * remove change * fix: revenue geographic * fix: disable pylint * fix: unusual + balance * unit test validator * minor fix * explicit validators * update test * feat: multiple items allowed * rebuild * move check_single_value * crypto historical * order providers * fix typing * rename extra dict * marking multiple items allowed * Revert "marking multiple items allowed" This reverts commit 7da04817e18b2c9e373ffde9134f3949d11f58dd. * error msg * fix: default provider runtime vs configuration * minor fix * docstring * revert default changes * get provider before executing cmd * fix container bug * clean filter * add comment * prevent bad defaults * update docstring * typing * fix * black * fix docstring generation * [Feature] - Mark multiple item fetchers (#6074) * feat: price target * bezinga company news * equity quote * marking multiple items allowed * more multiple items * black * rebuild * another batch * rebuild * another * cpi * move prop * rebuild --------- Co-authored-by: hjoaquim * rename var * update msg * rename func * fix test * mypy * ruff --------- Co-authored-by: hjoaquim * [Feature] Add Regional Data Endpoint from FRED (#6071) * add regional data endpoint from FRED * codespell * ruff * sort imports * add provder='fred' to integration test * thought I already sorted those imports.. * pylint.. * more test params.... * even more test params... * even more test params.... * static assets * reconfigure params * ruff * alias dict * recapture cassette * router doctstring --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Fix most integration tests (#6082) * Fix most integration tests * Lint * Fix price_target column for Benzinga (#6083) * Release/4.1.4 (#6081) * static assets * patch version increase * core update * bumping versions * bump finviz version * bump versions * bump versions on package.extension --------- Co-authored-by: James Maslek * Add dates to /quantitative as needed. (#6078) * Add dates to /quantitative as needed. Run new black * Fix tests * Pycharm is weird sometimes * uncommit * Add default window + error handling + mistake --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] Add end point: `etf.equity_exposure()` with FMP provider (#6079) * add etf.equity_exposure from FMP * empty data error * recapture cassette * pylint unused argument * Fix router example typo * fix test...? * static file to fix test? * fix test..? * __json_schema_extra__ * black --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * [BugFix] Fix Equity Integration Tests (#6086) * fix equity integration tests * black * pylint * black * black * move df_apply to helpers * unused import * remove file that shouldn't have been added * oops. didn't remove a couple lines * [Enhancement] Add `analyst_search` to the Equity/Estimates Router (#6088) * standardize price_target * add analyst search * black * more black * ruff * linter, test parmas * last missing param * get rid of convert to upper * ruff * pylint * [BugFix] - Fix POST docstring examples (#6095) * Fix POST docstring examples. * Move router examples to command decorator * [BugFix] Fix `treasury_rates()` (#6092) * fix treasury_rates * drop rows with no data --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * clean up the remains from my yeeting (#6089) * clean up the remains from my yeeting * was not careful * Add ETF examples (#6102) Co-authored-by: Pratyush Shukla * [BugFix] Fix integration tests (#6100) * fix int tests * fix obbject int tests * fix quant tests * fix index tests * use python 3.10 instead * remove cache * end_date < start_date * [Enhancement]: Add TMX data provider extension. (#5913) * dev install * add TMX provider extension * normalize ytm and coupopn_rate values * black * codespell * ruff * black again * pylint * ftw * undo what Pylint thinks is best * more black * renovate insider_trading standard model * fix tests * typo * tests * empty string * pylint unused argument * nans for some reason * black * static files * static files with openbb-tmx installed this time * yfinance TypeError..? * NA -> N/A * update for version bump * list exchange-calendars as tmx dependency * eod chains date -> eod_date * new line * not that file * more black * one more black * fix weird merge thing * ruff * index constituents params * insider trading * fixing things * black * black AGAIN * news integration params * the other missing param * ruff * historical dividends field update * add json_schema_extra * gainers * symbols -> symbol * company news symbol * unit test param * review items * wrangle a rogue field * index router example * company news thing - symbols -> symbol * field name map --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Henrique Joaquim Co-authored-by: James Maslek * [Feature] - OBB.GET (#6097) * create OBB.GET and data slicer page * remove quotes * format description * wording * functions.json * sidebar position * remove if stamente * [Docs] Remove Reference to `to_chart` in OBBject. (#6096) * remove reference to to_chart in OBBject. * put chart description back in OBBject properties * [Feature] - Create openbb assets folder (#6101) * create openbb assets folder * fix unittest * rebuild --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fixes to_df() where the date series contains multiple TZ-offsets. (#6099) * allow mixed utc offset in a tz-aware date column * enforce ascending from all providers for price.historical * fix tests * add comments and apply treatment to basemodel_from_df before JSON output * yfinance consistency * add unit test * add unit test * better test * ruff --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Update the quantitative extension to make more sense (#6087) * Split out a rolling submenu for the rolling functions * Make a performance and a stats submenu. * Test the statistics functions * lint * lint * dupe test * pylint * ruff * Try tests quick * black magic signature funcs * fix my custom tests * Fix the existing imports/urls * push the api update * okay I figured out whats going on * this should be all of them * Correct docstringing examples --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * [BugFix] Fix ECB Yield Curve (#6108) * fix ecb yield curve * standard model update * Update unit-test workflow to check for changes to openbb_platform (#6109) * [Bug fix] - Fix package mypy (#6110) * fix: package mypy * types * black * [Feature] - Equity router descriptions & examples (#6103) * feat: equity/calendar * feat: compare router * fix descriptions * darkpool + discovery * fix paragraph issues * fix descriptions * fundamental part 1 * fundamental part2 * transcipts * ownership * fix * price * shorts * Update darkpool_router.py * minor fix * shorts examples * examples * ruff * black --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Add `exception_handler` decorator to static (#6112) * add exception handler decorator * add exception handler decorator code * updated static * rebuild to fix docstring indentation --------- Co-authored-by: Diogo Sousa * update extensions list (#6114) * add missing field descriptions to yfinance equity price historical (#6116) Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * remove charting extension env var (#6118) * [BugFix] Fix Company News (#6111) * fix company news * update tests * multiple symbols for polygon * don't include pageSize in Benzinga querystring, fixed as 100 * remove extra space * black * unused imports * make benzinga test cassette smaller * missing params * clear empty strings --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Allow Multiple Symbols in `equity.fundamental.metrics()` from `yfinance` (#6124) * allow multiple symbols in key_metrics from yfinance * field order thing * remove unnecessary function (#6125) * [Docs] Update OpenBB Copilot docs (#6106) * WIP: Tweak description. * WIP: Experimenting with react-player * WIP: Add copilot docs. * fixes videos width/height * WIP: Refine videos and copy. * WIP: Add last videos and sections. * Add bring-your-own-copilot section. * Tweak grammar. * Add copilot link. * Fix typos. --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * [Enhancement] Add Previous Close to DATA_DESCRIPTIONS (#6120) * add data description for previous close * ..just the one * update the model tripped by this change --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * added australia as a country also (#6131) * [Bug fix] - Fix regulator cik map standard model (#6129) * Fix regulator cik map standard model * fix description * Update cik_map.py * increase timeout to 30 (#6115) Co-authored-by: James Maslek * clean up some v3 deps (#6105) * clean up some v3 deps * forgot we need to do the requirements txt files * not sure it matters, but run ruff + black * am addicted to bug fixes --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * [Bug fix] - explicit multiple items docstring (#6127) * explicit multiple items docstring * rebuiild * rebuild again --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * [Feature] Pretty Pydantic `ValidationError` exceptions (#6130) * fix validator in fmp IndexHistorical model * make ValidationError pretty * modify arg error * linting fmp IndexHistorical * black * remove unused code * tmx etf info (#6132) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * [Feature] - Platform V4 Markdown Generator V2 (#6094) * add recent `openapi.json` * fix data types in models * removed `openapi.json` * set default date value as None in PolygonCurrencyPairs class * add function to generate reference.json file * reworked function to improve readability * reword function to add seo metadata * add functions for creating markdown sections * add code to extract data card markdown title * add additional functions for generating index and data models file * extract first sentence of the description for cards * code cleanup and documentation * linting * linting polygon models * add openbb import statement in create_reference_markdown_examples function * add POST method functions * cleanup; reworked generate_reference_index_files function * moved development section to 7th position in the sidebar * fix POST function params default value add standard flag to QueryParams and Data fields cleanup * add type expansion from package_builder.MethodDefinition * sort data models cards alphabetically make printing less verbose * make MAX_CARDS global display less content in cards in Commannds section * cleanup * Remove '_' from the cards under Commands section * " to ' in econometrics/causality * replace ' with " in ReferenceCard for reference dir index files * remove extra . from the quantile function description * shoutout to @deeleeramone for finding POST method description bug! * set correct value for standard field * handle BaseModel types in provider data fields * unit tests for the platform markdown generator v2 * yeet 'Default' and 'Optional' columns in the 'Data' section * last minute bug fix * add info for multiple symbols * make multiple items info same as platform static * organize sections properly * sort reference sub-directories alphabetically * extra space in 'OBBject extra' description * add type expansion for fields with multiple items POST method cleanup --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Docs] Adds Example Notebook for the Implied Earnings Move (#6128) * adds example notebook for the implied earnings move * remove commented out line --------- Co-authored-by: James Maslek * [Feature] - Sync with new openapi.json (#6137) * feat: create data tabs * fix: uncomment * fix: remove unecessary comment * sort side bar * comment * uncomment * use .dev functions.json + clean traverse * fix futures example * fix example * point to .co * Fix the v3 markdown generation workflow (#6138) * fix workflow * debug time * see if the docs generate at least * ahhhh i found it * getting there * put the test first * some keys cleanup * small change to error message * remove ultima + althub * update functions.json (#6140) * move twitter keys * fix intraday check in charting ta_class (#6119) Co-authored-by: Henrique Joaquim * [BugFix] Display EconDB as source for macro (#6143) * [BugFix] Disable Intrinio `InstitutionalOwnership` model (#6142) * disable fetcher in init and fetcher tests * disable provider test params from equity python and api tests * updated static * add more examples into findSymbols (#6139) Co-authored-by: James Maslek * [BugFix] Fix SEC ETF Holdings Parsing Exception (#6121) * fix etf holdings * linting * black --------- Co-authored-by: James Maslek * Docs/update xl docs (#6145) * remove print * update obb.get docs * example * md lint * fix get reference (#6147) * [BugFix] Filter OECD data using `start_date` and `end_date` parameters (#6144) * move constant dicts to constants.py filter by start_date and end_date * black * black again again * Merge 'main' into 'develop' (#6151) * Release/3.2.4 (#5696) * test * ultima description (#5541) * Updating showcase page (#5543) * updating showcase page * use sdk instead * add new bot command autopost docs (#5530) add new bot command autopost docs to docs.openbb.co Co-authored-by: James Maslek * Hotfix/ultima improvements (#5553) * tweaks for monetization * fix linting issue * fix: Modify 'load' behavior to append data to existing sheet (#5503) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Fixed 'worksheet not found' error during export to an existing sheet * Changes: * Now if the sheet exists in the xlsx file it will ask the user if he wants to replace/append/create new sheet --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * added platform API integration test to Nightly build (#5571) * Add columns to `stocks/search` (#5565) * Add columns to `stocks/search` isin, cusip, figi, composite_figi, shareclass_figi * Update test_search[False].txt * Update test_search[True].txt * Delete tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_search.yaml * Create test_search.yaml --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * updating ultima urls (#5587) * fix: A value is trying to be set on a copy of a slice from a DataFrame #5582 (#5591) * Update README.md (#5598) * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * fix docs (#5646) * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update settings.md (#5665) * fix front matter (#5667) * #5633 adding comma every 1000 (#5652) * #5633 adding comma every 1000 * pylint --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Hotfix/reports model render report sanitize inputs (#5669) * Adding more robust special character handling to create_output_path(). Addresses https://github.com/OpenBB-finance/OpenBBTerminal/issues/5299 * Running black linter on code to conform to OBB style guides. --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * hotfix/fix-gov-histcont: Fix #5650 - /stocks/gov/histcont (#5676) * fix histcont * some cleanup * remove sort line * 12-31 not 12-12 * columns_keep_types * remove space in regex (#5675) * Pin openai (#5685) * Clarified stocks/ta empty recom object message (#5468) * Clarified stocks/ta empty recom object message * black * lint --------- Co-authored-by: James Maslek * improved market cap value extraction (#5169) * improved market cap value extraction * pylint --------- Co-authored-by: James Maslek * 3.2.3->3.2.4 * Changelogs * new changelog --------- Co-authored-by: Henrique Joaquim Co-authored-by: Andrew Co-authored-by: Adi Sai Co-authored-by: Sandip Saha Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Luqman Co-authored-by: Adwait <111136306+AdwaitSalankar@users.noreply.github.com> Co-authored-by: Abhishek Amar <66067391+abhishek-amar@users.noreply.github.com> Co-authored-by: DidierRLopes Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Ramazan Co-authored-by: joshuabuildsthings Co-authored-by: wojda <114031148+polooner@users.noreply.github.com> Co-authored-by: Bim Phomthong <118195204+bimbolimbo@users.noreply.github.com> * Release/4.0.1 (#5840) * test * ultima description (#5541) * Updating showcase page (#5543) * updating showcase page * use sdk instead * add new bot command autopost docs (#5530) add new bot command autopost docs to docs.openbb.co Co-authored-by: James Maslek * Hotfix/ultima improvements (#5553) * tweaks for monetization * fix linting issue * fix: Modify 'load' behavior to append data to existing sheet (#5503) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Fixed 'worksheet not found' error during export to an existing sheet * Changes: * Now if the sheet exists in the xlsx file it will ask the user if he wants to replace/append/create new sheet --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * added platform API integration test to Nightly build (#5571) * Add columns to `stocks/search` (#5565) * Add columns to `stocks/search` isin, cusip, figi, composite_figi, shareclass_figi * Update test_search[False].txt * Update test_search[True].txt * Delete tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_search.yaml * Create test_search.yaml --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * updating ultima urls (#5587) * fix: A value is trying to be set on a copy of a slice from a DataFrame #5582 (#5591) * Update README.md (#5598) * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * fix docs (#5646) * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update settings.md (#5665) * fix front matter (#5667) * #5633 adding comma every 1000 (#5652) * #5633 adding comma every 1000 * pylint --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Hotfix/reports model render report sanitize inputs (#5669) * Adding more robust special character handling to create_output_path(). Addresses https://github.com/OpenBB-finance/OpenBBTerminal/issues/5299 * Running black linter on code to conform to OBB style guides. --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * hotfix/fix-gov-histcont: Fix #5650 - /stocks/gov/histcont (#5676) * fix histcont * some cleanup * remove sort line * 12-31 not 12-12 * columns_keep_types * remove space in regex (#5675) * Pin openai (#5685) * Clarified stocks/ta empty recom object message (#5468) * Clarified stocks/ta empty recom object message * black * lint --------- Co-authored-by: James Maslek * improved market cap value extraction (#5169) * improved market cap value extraction * pylint --------- Co-authored-by: James Maslek * Release/3.2.4 (#5704) * 3.2.3->3.2.4 * Changelogs * new changelog * OpenBB Platform v4 (#5225) * change location * check something * add cache * fixed auth w/@IgorWounds and @montezdesousa * fixes for econometrics * include Darren auth suggestions * some routers included if dev + chg hub backend var * coverage router should not be here * update docker readme * forgot to check auth here * Change extension imports * update docstrings and readme * headers function wasnt being called, just referenced * relative import * econometrics add headers everywhere * Fix QA * Fix TA * Fix test * Fix python interface QA and TA * Lint * Cleanup * Change path * make the changes and some etf models * tests for command_runner * ruff * solving naming issues on pytest * Update some docstrings, fix typos and lint * solving econometrics instantiating wrong openbb * chaging the way pytest runs * messing around with the imports * ruff * Change template to add platform considerations (#5533) * change template to add platform considerations * @the-praxs suggestions * solving __pycache__ issue * removing typo * ci yml * making linters happy (i guess) * Improve Omega Ratio and docstrings * chaging pro validation hash * ruff * Fix OLS Summary and lint * Add OECD Provider for economy extension (#5534) * Add record to docs * update a couple of cboe models * Fix econometrics bugs. Make tests pass. Lint. * black * ruff * pydantic v2: remove deprecated Extra * pydantic v2: self.dict -> self.model_dump * revert pydantic * revert the revert * try 1: pin urllib3 < 2 * Revert "try 1: pin urllib3 < 2" This reverts commit 3736c311cb6aa9e653dcb5db733798408b72a82e. * Revert dep * Fix * re-lock * Skip all tests when doing cspell in pre-commit * Resolve linter errors * Add OECD to install script * Add OECD * Resolve more linter errors * Exclude static files of v4 python from ruff * More linting * Another attempt to resolve even more linting errors * Change how Literal is used * ticker. symbol. consistent. @piiq * change ticker field in Stock Search to is_symbol * Update Cboe model for stocks_search -> is_symbol parameter. * Fix issue * Lint * Small QA to rename SDK to Platform (#5544) * SDK -> Platform in docs * renamed in core * renamed in openbb `init` * `sdk` variable renamed as `platform` --------- Co-authored-by: hjoaquim * `validator` -> `field_validator` in standard models * Standard convention for multi-ticker symbols (#5549) * standardize symbol input param in forex and crypto historical data * static * linting * Fix stock_search integration test params * Update dependencies and linting on the CI (#5550) * Remove ruff and black from platform dependencies * Update codespell configuration * Lint python code * Add toml and tomli to root dev dependencies * Update requirements.txt files * Fix buggy docstring in python package methods (#5548) * fix buggy docstring for methods * remove space * fix typing * avoid name collision with validator * Revert "avoid name collision with validator" This reverts commit 8a30a44555d97132f6bddcbc4a4facdd97ecc591. * typing * rebuild * python 3.8, ParamSpec not available * lint * ruff noqa * Merge with develop (#5551) * Charting extension integration tests (#5547) * initial proposal for integration tests on the charting extension * int tests for charting generation * python generator * ruff * boilerplate templates * python tests * tests for the api * using body instead so data don't get redefined * unit tests for coverage * ruff * docstrings * unnecessary access to keys() * Add trading economics economic calendar * dev install * Data Models disposition on the website (#5538) * pydantic v4 * flat structure * md files * Revert "md files" This reverts commit bd2170e2adf82fed3a35d34fad6a2e3ba3ae1d49. * improve command descriptions * nice title and description * human readble data model names on left panel * implementation details section * content markdown files * markdown versioned files * showcase page * updates --------- Co-authored-by: tehcoderer * everything except tests * fix `datetime.date` import in fetcher test * modified url to remove `api_key` placeholder * record test * api key is called c here * fixed fetcher test for api key * recorded tests * refactor * life is ruff * codespell * Make Intrinio options chains great again (#5540) * add multithreading * cleanup * linting * use dateutil.parser * removed `TICKER_EXCEPTIONS` * modified `date` and `type` fields in standard model * set alias for `date` and `type` to match standards * static * static * Hotfix/fix post tests (#5555) * Fix econometrics * Fix ta * Fix qa. Remove intrinio to not be rate limited * Lint * Fix typo * obbject tests (#5558) * obbject tests * ruff * fix dev_install * fix unittests * black on nox * black on nox * nox * fix fetcher test so it can compare dates * fix intrinio tests * ruff * change to model_dum() instead (#5561) * Passing tests (#5560) * Passing tests * fix options * Fix most tests and bugs * fix forex missing params * make symbol upper in polygon fx pairs * fix fixedincome integration tests (#5564) * Fixing charting api integration tests (#5562) * fixing charting api integration tests * black * fix stocks less five API fails * fix the 5 failing stocks integration tests * recapture fmp stock news unit test * fix fmp forex api test * couple more forex integration fixes * changing the request to always use the legacy session. @jmaslek this is was broken for 3.8 and 3.9; with this change apparently all versions work - lemme know if you see any issue with this change * ruff * fix ta * add missing param * fix testers for the api * fix globalnews to use images instead of image * remove unncessary pandas import * econcal int tests * update gitignore * fix get_querystring to support lists * add missing parameters --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Henrique Joaquim * Stock Historical standardization and UX improvements (#5457) * polygon add interval standard param * attempt at standardization * Alpha Vantage params standardization * rename `get_intervals` and fixed bug for extracting wrong value * missed changing it in `extract_data` * linting * polygon cleanup * modified `start_date` & `end_date` type to `datetime` from `dateType` * standardized intrinio stock historical params * fixed yfinance * linting * revert start and end date to dateType from datetime * fix alpha vantage * changed param * fix intrinio infinite loop * `validator` is `field_validator` * revert time params and fixed intervals * `outputsize` alias set in `Field` * set interval description using in-build dict * yfinance stock param standardization * static * intrinio cleanup * Polygon add api params as `PrivateAttr` * modified yfinance params to `PrivateAttr` * intrinio remove overriding date params * fixed description for AV adjusted param * fix alpha vantage intraday not working * re-record and pass unit tests * pass integration tests * Update test --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Fix econcal endpoint (#5567) * fix econcal for python interface * fix econcal tests * fix non supported json output * Fixes FMP index endpoint to get 1 day interval data (#5535) * fix FMP endpoint for getting index data for `1day` interval * fix `open` type to prevent validation error * modifed `validator` to `field_validator` * type of fields is `StrictFloat` * re-record and pass test * linting * `validator` -> `field_validator`, a3'd everything * Fix regression in tests. Lint * updating the integration test actions * Fix typo * Fix typo * Fix import * Publish versions `a3` to Pypi (#5568) * bump versions and script to publish * small improvements * uncomment exception * openbb * publishing guidelines * improve docs * add providers to economy api * make symbol required in stock_quote * Fix keys * Fix oecd * add comma * revert * Add quotes * Sleep * Improve tests * Improve * Feature/query transform (#5566) * inject query into transform_data * swap query and data * update missing fetchers * last test failing * sig test fetcher * black * av add `query` to `transform_data` call * transform_data: missing refactoring * fix uvicorn command in the doc * Automated examples (#5576) * Automated examples * Fix bug * Lint * static assets built on 3.8 * Revert "static assets built on 3.8" This reverts commit fb82ff7bd9af92ed676d8f8047c31e74daf7b8b2. * remove assets * static assets on 3.8 * static assets on 3.8 * Wrap in quotes * Improve wrap * minor fix * rebuild 3.8 * Fix bug * Fix edge case * Lint * rebuild --------- Co-authored-by: hjoaquim Co-authored-by: Diogo Sousa * use SecretStr for sensitive fields (#5578) * use SecretStr for sensitive fields * fix * docstring * Add tests for provider (#5583) * Add tests for provider * Test standard models * Lint * Fix standard model issues. Co-authored-by: @the-praxs * linting * `symbol` -> `is_symbol` in `economy.index_search` * static --------- Co-authored-by: Pratyush Shukla * feature/v4-biztoc-provider: Adds Biztoc provider and GlobalNews (#5546) * add biztoc provider * duplicate field * black * request headers * recapture test * move stuff around * add integration tests * duplicate OECD entry in dev_install * duplicate entry for oecd in pyproject.toml * Add Biztoc to workflow * update readme: credentials * Add Preferences to README * improve tests * fix biztoc * obbject pylint * Bug fix: serializ SecretStr before dumping to json * export credentials as json (#5592) * Check for wrong, changed, or outdated params. (#5597) * Improving `economy.cpi` for the FRED data (#5602) * remove multiindex using coding magic * Update field descriptions --------- Co-authored-by: Theodore Aptekarev * Improve error message. * Improve * Test tests (#5607) * Test tests * Add test * 4.0.0a4 PyPI publishing (#5608) * changes to publish * fix mini conflict * typo * cleaned `descriptions.py` * fix description in `cpi.py` * Add ETF extension to v4 (#5609) * Add etf extension with search data model * Add FMP ETF search * Add fetcher tests * Add ETF historical price from yfinance (#5610) * Add etf extension with search data model * Add FMP ETF search * Add fetcher tests * Add etf historical price standard model and route * Add etf historical data from yfinance * Add unit tests * Fix linter error. Organize imports * Update test data * Revert common descriptions erased by CPI PR * remove `symbol` from data for `stocks.ca.peers` * Test docstrings (#5613) * Test docstrings * fix minor bugs w/@IgorWounds * static only w/@IgorWounds * fix `importance` param in `economy.econcal` * right static only w/@IgorWounds * Fix econcal and add tests to noxfile * fix econcal static * re-record --------- Co-authored-by: Pratyush Shukla * Clean up the newly created ETF extension (#5611) * Add ETF to dev_install bundle * Add integration tests for openbb-etf * Patch integration test generator scripts to produce lintable code * Add py.typed markers for extensions * user preferences descriptions (#5593) * user preferences descriptions * typo * Feature/v4-sec-provider: Add SEC provider to V4 (#5556) * coerce string type, add default=None * add sec provider and FTD function * update description * ruff * data model definitions in standard model already * duplicate oecd entries in dev_install and pyproject * actually commit * integration test * add stock search to SEC * add company filings for SEC provider * integration tests * remove duplicated line * ruff * **kwargs in Transform Data * some helper functions for later * black * add helper for mutual fund and etf lookup * add some SEC lookup helpers to a new regulators extension * black * ruff * fix test param * take institution filter out of sec stock_search * ruff * remove URL that codespell doesn't like * add cik-to-ticker map * add litigations rss feed * make openbb-regulators a dependency of openbb-sec * add SIC search * improve ftd and remove BeautifulSoup from SEC dependencies * fix parsing the zip files pre-2009 * ruff * update descriptions * recapture ftd test * tests params * typo * change limit param to 1 in test_sec_stock_ftd * Add didiers to_records method (#5588) * Add didiers to_records * unused import * Bring back polars + do what igor suggested * Make the output consistent with what it was. * Black ? * spelling. oops. almost like we have a pre commit or something * Feature/v4-price-performance: % returns for various horizons, comparable across multiple tickers. (#5618) * coerce string type, add default=None * add price_performance endpoint from FMP * black * extra period in docstring * ruff * forgot one file * Feature/ipo-calendar: V4 IPO Calendar (#5605) * coerce string type, add default=None * add intrinio ipo calendar * fix typo * sort __init__ * fix description * make requested changes * update test params * black * test updates * etf integration * Add disc router and WSJ provider * OBBject extensions (#5612) * changes to core * bug? * docstring * doc * Update credentials.py * fix model_dump * create extensions * fix docstring * doc * revert change query_exc * doc * fix container test * redirect obbject test patch * doc * rename method * move decorator to extension file * rename method extend_obbject * changes in creds model * avoid credential racing * doc * rename prop * doc * doc * remove comment * comment some code * free extension names * docstring * doc * docs * Hotfix/fix-v4-economic-calendar: Add FMP to Econ Calendar and fix some TE bugs (#5580) * coerce string type, add default=None * adds fmp to economic calendar and fixes some things with TE * ruff * etf integration test * missing provider for test * rename te cassette to economic_calendar * fix test * rename tests --------- Co-authored-by: James Maslek * Add stocks disc endpoints (#5630) * Add stocks disc endpoints * Explicit * Lint * Add tests * Bump timeout * Feature/disc router (#5616) * Add disc router and WSJ provider * Lint * Lint * Move endpoints under ETF router * Update etf_performance.py * Add ETF info and sector exposure from FMP (#5620) * Add ETF info from FMP * Add integration tests * Add unit tests * Add etf sectors endpoint * Add etf sectors fmp endpoint * Omit nested sector list from fmp info data * Update tests and test data * Update test data * Specify provider explicitly in integration tests * Update tests * Skip yfinance etf historical test * Fix linter errors after the merge * Fix more linter errors * Fix failing and add missing tests * Fix integration tests * Fix calendar ipo tests * Add ETF holdings and holding report dates from FMP (#5629) * Add ETF info from FMP * Add integration tests * Add unit tests * Add etf sectors endpoint * Add etf sectors fmp endpoint * Omit nested sector list from fmp info data * Update tests and test data * Update test data * Specify provider explicitly in integration tests * Update tests * Skip yfinance etf historical test * Add etf holdings and holdings date routes and standard models * Add fmp holdings and holding dates fetchers * Update holdings fetcher to properly handle date object inputs * Add unit tests * Add integration tests * Black after merge * Fix test input data format * Disc router for equities. (#5640) * Disc router for equities. * add tests * Bug fixes in financial statements (#5537) * `validator` to `field_validator` in standard models * Polygon add `ttm` to `period` param * Revert "Polygon add `ttm` to `period` param" * Polygon add `ttm` to param `period` * `EarningsCallTranscript` standard model removed `quarter` param * use `tag` instead of `name` for correct field name * fix url for intrinio income statement * modified intrinio cash flow `transform_data` function * set optional data fields and validate dates * fix insider trading not fetching recent data * linting * refactoring * refactoring * set param alias in fmp stock insider provider model * get all quarter data for intrinio * add `limit` param to `stocks.fa.ins` * refactoring and linting * removed additional comment * linting * re-recorded and fix tests * cash flow standard model field type to `StrictFloat` * Intrinio cash flow model fixed to get all quarters' data * linting * refactoring * financial statement standard model field type to `StrictFloat` * Intrinio financial statement model get all quarter data * set `period` type to `Optional[str]` * add `period` param to balance sheet provider models * add `period` param to cash flow provider models * use alias in model dump * remove `ttm` from `period` param * revamped intrinio financials * fixed incorrect description for `limit` param * modified tests for `balance`, `cash` and `income` * re-recorded tests * skipped intrinio financial statement fetcher tests * Add ETF county weighting command with FMP data (#5645) * Remove code that wrongfully infers the filing date as end of quarter * Add etf countries command with fmp data * Add countries command to etf router * Update sector and country weighting fmp models * Fix docstring typo * Add unit tests and update mock data * Add integration tests for etf.countries * Bring back missing integration tests * Fix economic calendar integration tests * fix missing data in intrinio financials * removed inutile params from Polygon financial statement models * Intrinio IPO overhaul * tests fixed and re-recorded * Add ETF holdings performance with FMP data (#5659) * Add etf holdings performance endpoint * Add tests * Fix failing polygon fetcher tests * Split long holdings lists into chunks and update test data * Change chunk length to 500 tickers * Add stock search from FMP (#5642) Co-authored-by: Theodore Aptekarev * Feature/v4 pypi (#5579) * improvements to the publish script * move scripts * initial script that builds the package * adjustments on the docs * test pypi workflow * add hour and minute to version * black * ruff * duplicate file * moving files instead * build throught the script instead * update nox file * integration tests workflow * change workflow * fix dev_install * fix in sed cmd * testing the platform only * commenting out the publishing * fix run commands * improvements to the publish script and doc * fix publish script * updating the script and the workflow * feature/v4-pypi nightly (#5589) * init * Update nightly.py * cleanup * init file * not referencing dev_utils * updating obb platform key * revert * Increase warmup time * project name on pyproject and adding the --pre flag on readme * moving to the build folder * fix noxfile * reflecting the moves on the import statements * fix pyproject path * ruff * fix paths * fix super typo * update workflows * moving the pypi terminal files into its folder --------- Co-authored-by: teh_coderer Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Theodore Aptekarev * economy.calendar nasdaq (#5628) * add quandl econcal * unittest * add integration tests * replace   * fix bug TE importance * small fix * remove stuff from quandl * add nasdaq provider * add nasdaq to install files * Update test_economy_api.py * test * quandl leftovers * remove quandl econcal test * lint * replace   * ruff * lint * update nasdaq gmt * validate countries * here * no need for this * fix calendar tests * static * static * remove error * static * readme + website * readme * remove changes TE * typo * fix unittest * fix tests * Update __init__.py * Update economic_calendar.py * revamped model and added helpers for date range --------- Co-authored-by: Pratyush Shukla * Feature/v4-dividend-calendar: Adds Nasdaq dividend calendar and moves the command out of fundamental_analysis (#5672) * add nasdaq dividend calendar and move out of fundamental_analysis * black * ruff * add random-user-agent to pyproject.toml * add nasdaq ipo calendar * add nasdaq flag for SPO to IPO calendar * add spo test param * black * dividend test * fix transform_query - nasdaq_calendar_ipo * bring back different headers for ipo calendar * remove references to test * Add disc endpoints (#5660) * Add Quandl top retail * Add tests * Add Seeking Alpha * Add Filings * Change Provider * Fix test * Add dev_install * static * static correct * y u forget me * updated deps * static --------- Co-authored-by: Pratyush Shukla * using dev install (#5673) * Expanding the `fixedincome` menu (#5655) * models and fetcher * making the fetcher visible * std model * adding the command * improvements to the models * typo * adding the command * imrpovements to dwpcr * standard model for ecb int rates * adding the fetcher for fred * standard model of ice bofa * add ice_bofa command * ruff * ice bofa fetcher * moody std model * moody * std model * add cp command * unused import * cp * spot * ruff * hqm * tmc * ffrmc * tbffr * ruff * typing fixes * buggy dates * fred fetcher tests * ruff * adding ecb as a provider * adding new provider related stuff * adding the new command eu_ycvr * models * test for ecb fetcher * Feature/v4 fixedincome int tests (#5661) * integration tests * happy ruff * mini adjustment * ruff * typo * verbose type * fix tests * docstrings everywhere and an happy pydocstyle * fix tests * Feature/user-cache-dir: Add User Preference for the Cache Directory (#5621) * add user preference for storing cached data * ruff * fix tests? * fix test key error..? * etf integration test fix * add cache dir to SEC * black * improve docs structure for V4 (#5586) * improve docs structure for V4 * moving over changes * Add Docs to the navbar * add some, re-order sidebar * fix sentence * add docs install to source instructions * insert a couple of links, fix a typo * big terminal docs usage revamps * improve toggle component for tutorials * get rid of TOCs for all terminal docs for consistency and simplicity * improve platform docs * improve bot docs content structure * remove index from bot docs * improve ON THIS PAGE to only display TOC if at least 1 element * make edit this page text and icon on same line * add author and date to docs * add basic syntax page to usage * sidebar order for usage section * move api start command to the top with the import python import * some install page additions * small improvement * refactor routines section * Update introduction-to-routines.md * Update pipeline-of-commands.md * Update introduction-to-routines.md * Update routines-for-power-users.md * Update community-routines.md * update keyboard hotkey macros * askobb page * Update askobb-feature.md * Update index.md * Update index.md * Update index.md * Update index.md * fix images * remove HeadTitle from all files where it exist * get rid of extra spacing in markdown * small update * small edit * need index at the start because of main path when homepage of docs * use openAI to create SEO for front matter on my behalf * remove table of content from sdk page * finish improving metadata SEO for SDK docs * update duplicate header * update HeadTitle to be more specific on product * remove index from bot telegram reference * delete duplicated title for platform reference * another update * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * start PR so screenshots can get attached via GitHub website * Update qa.md * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * Update crypto introduction.md * titles * another title * Update crypto dd.md * Update defi.md * Update disc.md * Update nft.md * Update onchain.md * Update ov.md * Update introduction.md updates URL * Update introduction.md add HeadTitle * Update ba.md * Update comparison.md * Update dark-pool-shorts.md * Update disc.md * fix docs (#5646) * Update fa.md * Update gov.md * Update ins.md * Update tradinghours.md * Delete website/content/terminal/menus/stocks/options/screener.md * Update Options introduction.md * Update screener head title * Update screener TOC * Update econometrics.md * Update economy head title * Update etf.md * codespell * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Contributing guidelines (#5615) * intro section * what's expected sections * improve sections * improve sections and move how to add a data point * moving qa under contributor * better intro * moving the sharing section * better expectations * small intro to the contributor guidelines * moving things under the contributor section * there is no pre commits on the platform yet * dependency management * best practices for extensions * typo * collapse options subfolder * codespell * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update fixedincome.md * url * Update forecast.md * Update settings.md (#5665) * Update forex.md * fix front matter (#5667) * Fix conflict markers that got into markdown during previous merges * Fix front matter list formatting * Fix typo * small thing * fix hyperlinks * Update .codespell.ignore * output_type options * Architectural considerations * Update sidebar to hide pro section by default * Minor copy changes * TET pattern * import statements * clarification on preferences * Minor copy changes * Lint markdown and python * fix: open index on collapsible root elements * remove old content * options title * Fix linting errors * Refactor sidebar label to url mapping condition --------- Co-authored-by: andrewkenreich Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: hjoaquim Co-authored-by: Sandip Saha Co-authored-by: James Maslek Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Theodore Aptekarev * Add multi-ticker support to etf_countries (#5670) * add multi-ticker support to etf_countries * remove commented-out lines * normalized percent points * percent -> percentage * Fix Nasdaq Econ Calendar Fetcher (#5668) * fix nasdaq econ cal request * more html tags * add random-user-agent to pyproject * another edge case - 24H -> 00:00 * Feature/v4-unusual-options: Adds unusual options endpoint. (#5677) * add unusual options fro Intrinio * test params * move sorting * Change type * update FMP fetcher to use the V4 endpoint (#5681) * Fix price performance not parsed correctly when there is only 1 ticker (#5678) * Add crypto search standard model and FMP data for it (#5679) * Apply renaming to news data (#5684) * inegration complete * reformatted for black * fix ruff issues * revised integration * changes to versions in pyproject.toml and updated lock files * Rename models * Update tests * Fix typos here and there * Update routers * Apply rename to ultima * Properly mock api key * Mock ultima api key --------- Co-authored-by: Adi Sai * Feature/v4-market-snapshots: Adds full market snapshots (#5473) * add stocks market snapshots from fmp * add fmp fetcher test * unused imports * add polygon to market_snapshots * update fmp market_snapshots * black * pydantic2 things * updates * change validate_obj to model_validate * polygon cleanup * tests * descriptions * black * data description * minor adjustments, using less local variables, improving readability and removing pandas * better structure * minor adjustments * lint * fix int tests --------- Co-authored-by: hjoaquim * Add NBBO Quotes, with historical, to `obb.stocks.quote()` (#5617) * coerce string type, add default=None * add polygon stock quote * limit cleanup * add greater/less than to params * limit param * black * tests * fix tests * test_etf * rename model and function to NBBO * add standard model for nbbo * improve standardization * not redifining builtin max * fix input params * integration test params * removing unused import Co-authored-by: Pratyush Shukla * revamped code * re-recorded nbbo test * added symbol validator * added alias in field * Stock news -> Company news --------- Co-authored-by: hjoaquim Co-authored-by: Pratyush Shukla Co-authored-by: Theodore Aptekarev * hotfix/update-quandl-to-nasdaq: Merge Quandl + Nasdaq (#5682) * merge quandl nd nasdaq * dev_install.py * test param name * economy python integration test * Add more input types to data processing commands (#5453) * adding more supported types to data processing commands * ruff * removing unused import * docstrings * data processing types covertion * data description * test filters * ruff * fix package builder tests * ruff * removing print * Add stocks/dps module (#5638) * short volume * pyproject missed * add sec short interest with days to cover * Add FINRA OTC endopoint * some tests * rest of unit tests * Integratin test scripts * dev install * linters caught by pre commit * lines too long * Last test files * maybe it needs a lock file? * thanks pratty * Maybe ill actually listen to pratty next time * sec test date freeze * I cant hit buttons * re record tests * tests 3 * Stockgrid test * regen int test * more testing * lint * moved these fns * dis killing me * one more test * last one * Update integration tests * Fix tests picking up wrong dps route --------- Co-authored-by: Theodore Aptekarev * Rename Forex to Currency (#5687) * restore fields as optional (#5686) * Rename Crypto (#5689) * added `crypto.price.historical` * static * fix tests * fix incorrect label * Move model from sec to finra (#5692) * Update toml * fixed deps * add openbb-etf lock file * cleanup * cleanup (#5694) * Rename Fixed Income (#5695) * Rename Fixed Income * Add routers * Rename stocks to equity (#5688) * Rename stocks folder * Rename openbb_stocks package * Rename routers * Reroute equity menu * Update routes based on feedback * StockNews -> EquityNews * StockInfo -> EquityProfile * Rename Equity calendars * Equity peers rename * Rename discovery * Rename fundamental * Rename price command models * Rename shorts * Update charting router * Fix seeking alpha upcoming release date * Fix linting errors * Update tests * Fix tests * Skip econometrics api tests because it's python only * Update integration tests and test data * Historical analyst estimates * Skip cboe options chain test. Unable to record vcr cassette * re-record cboe cassettes * Document CBOE unit test creation caveats --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Feature/files-for-igor: Adding a few standard models for Igor (#5699) * add some standard models for Igor * codespell * update descriptions * Add devtools metapackage (#5703) * Add openbb-devtools metapackage * adding devtools to the dev_install script --------- Co-authored-by: hjoaquim * Rename econometrics commands to be more verbose (#5702) * Expose command to model map (#5706) * Rename ta qa (#5708) * Rename ta folder * Rename ta to technical * Rename qa folder * Rename qa to quantitative * Rename the actual routes in quantitative * Equity cleanup (#5707) * cleanup * static * renaming to equity cc @the-praxs * Proof reading --------- Co-authored-by: hjoaquim Co-authored-by: Theodore Aptekarev * Don't enforce imperative for first word of the docstring * Remove ultima from default extensions * Rename `economy` and create `index` extension (#5705) * renamed economy and re-recorded tests * static * market indices * european indices * fred indices * index constituents * tests * correct package name * oops * static * linting * Move COT commands to regulators * Rename economy.list to available_indices * Rename GDP models and clean up * Fix charting tests * Drop _indices from available_indices command * Fix obbject to_dict test --------- Co-authored-by: Theodore Aptekarev * Rename etf/disc (#5715) * Docs/v4-working-docs: PR to Work on V4 Docs (#5693) * Revert changes related to pydantic2 made into v3 code * Revert fred model changes in v3 * Revert pydantic2 databento model changes in v2 * Update some names and v3 lock file * Clean up openbb/package before the beta release * Platform publishing procedure (#5701) * update instructions * introducing the version script * publish message * fix platform path * reflecting version changes * getting version from installed packages instead * removing toml from dependencies * Changes to get `a7` out (#5697) * changes to get a7 out * etf menu on the pyproject.toml * poetry lock * bump `openbb-etf` to `a5` to match version * updated deps * removing ultima * removing references to a4 cc @the-praxs * Bump index menu version * poetry lock --------- Co-authored-by: Pratyush Shukla Co-authored-by: Theodore Aptekarev * Update publishing instructions * Bump core dependencies in extensions and providers * Add changes to the publish script following the beta release * Update the versions in static extension map and openbb metapackage --------- Co-authored-by: James Maslek Co-authored-by: Pratyush Shukla Co-authored-by: hjoaquim Co-authored-by: Diogo Sousa Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: tehcoderer Co-authored-by: DidierRLopes Co-authored-by: andrewkenreich Co-authored-by: Sandip Saha Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Adi Sai * Hotfix/pypi openbb terminal (#5719) * renaming the project * documentation changes * Finishing touches to the publishing procedure (#5728) * finishing touches to the publishing procedure * grammar improvements * Run tests on develop (#5725) * Run tests on develop * Add a check that files changes in platform * Seprate Intrinio financials data tags into a different command (#5723) * add `ebit` field in income statement standard model * only add required data tags * remove calculations data * use `name` key instead of `tag` key * set `period` as required in data * remove `period` and `cik` from provider models * add `equity/fundamental/search_financial_attributes` with tests * clean descriptions file * add `equity/fundamental/financial_attributes` with tests * set `value` as `Optional` * Fix threadpool test error (#5734) * Remove ultima from deps (#5736) * remove ultima from deps * skip ultima test * black * change skip location * try except statement to avoid error on the ci * new currency reference rates pr (#5724) * point files to linters (#5739) * remove news from equity (#5741) * Add tiingo provider (#5740) * first commit * things * Add news endpoints * CryptoHistorical * Add currency and trailing dividend yield * things working * deps * fix pre commit things * tests? * black on the tests * pratty told me to add it * integration tests * added helpers * crypto revamped * currency revamped * trailing dividend yield revamped * equity historical revamped * company news overhauled * global news overhauled * remove `tags` param from news models * crypto correct `exchanges` description * james smh * re-recorded fetcher tests * fixed integration tests * econometrics smh * james smh again --------- Co-authored-by: Pratyush Shukla * Add `derivatives` extension for `futures` and `options` (#5742) * removed options and futures * add derivatives extension * cleanup * bug #5649 (#5722) * bug #5649 * fixing --a upmom, downmom --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Rename the fmp search -> screener (#5744) * Rename the fmp search -> screener * misses some * i cant copy paste * docs/fix-urls: Updates the Terminal About URLs to match `/develop` (#5720) * update Terminal about URLs and some other broken links * ruff * intro * changing the heading levels * dependency management sections * structure * developer guides * structure * contributor guides * keywords and descriptions * broken urls * cool cards * Cool cards (#5727) * tidy up terminal/content * some more tidy up * fix styling for platform that was missing * more tidy up * improve color for dark and light mode * create new reference card for more basic cards * rename back to menus * implement all index.md for terminal, except reference * improve bot title * more refactoring * fix remaining index * header styling * more styling * heheheheheheeh * Revert "heheheheheheeh" This reverts commit 7d095fcfd258efb7e82b75b4663b5360785195f3. * Ccards (#5733) * links * more links * improved styling and chevron aligned to title * fix index.mdx urls for Terminal * update package.json * update index.mdx * fix generation * spelling * toolkit_extensions * update data extensions * couple of links * add tiingo to data extensions list --------- Co-authored-by: hjoaquim Co-authored-by: andrewkenreich Co-authored-by: DidierRLopes Co-authored-by: James Maslek * Stock leftover cleanup (#5745) * change to equity in `.md` files * `HistoricalStockSplits`->`HistoricalSplits` * `StockInsiderTrading`->`InsiderTrading` * sorry fmp * `EquityHistorical` cleanup * `EquityNBBO` cleanup * .md leftover * the last of stocks * Hotfix/urllib to dev group (#5732) * use the urllib3 dependency on the dev group instead * adapt the version script for the nightlies - if it's a nightly the package distribution name will have a different name * add dev dependencies to the dev installation bc of the ci * updating the import on validate_call according to: https://docs.pydantic.dev/latest/concepts/validation_decorator/ the way we were importing it breaks if pydantic=2.5 @montezdesousa * loosing urllib3 version specification on the provider and adding it to platform dev deps * rmeoving urllib from top level deps; and removing --with dev flag * changing to ^ instead * Revert "changing to ^ instead" This reverts commit 7300904e9f3adba372b106d381b70ae06e28795a. * unnecessary dep --------- Co-authored-by: Theodore Aptekarev Co-authored-by: James Maslek * feature/v4-bop - Add ECB Balance of Payments (Replaces #5716) (#5726) * add ecb balance of payments * missing __init__.py files * Nasdaq calendar earnings and fix FMP calendar earnings (#5718) Co-authored-by: James Maslek * feature/us-treasury-auctions: Adds Treasury Auctions endpoint and provider for US Government Data. (#5746) * add government_us provider and treasury auctions endpoint * black * add param for cusip * move logic for setting default start/end date * Update hub<>platform credentials map (#5749) * update hub<>platform credentials map * typo * Add API settings schema to system settings (#5743) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Skip checking creds (#5737) * skip checking creds * fix bug * ok mypy * add comment * rename required_credentials * fix * fix top_retail bug * don't require creds in some nasdaq fetchers * black * this was not here before * fix tests * update fetcher test * update contributing guidelines * Fix Quote (#5752) * Fix Quote * fixed return type and model validation --------- Co-authored-by: Pratyush Shukla * Wrap up renaming global news to world news on a model level (#5750) * Wrap up renaming global news to world news on a model level * cleanup --------- Co-authored-by: Pratyush Shukla * Remove eod from docstrings (#5751) * Wrap up renaming global news to world news on a model level * Remove "end of day" from historical price model docstrings --------- Co-authored-by: Pratyush Shukla * Massive docstring cleanup (#5755) * sec router remove command * standard models cleanup * fmp cleanup * av cleanup * benzinga cleanup * biztoc cleanup * cboe cleanup * ecb cleanup * finra cleanup * fred cleanup * us cleanup * intrinio cleanup * nasdaq cleanup * oecd cleanup * polygon cleanup * sec cleanup * seeking alpha cleanup * stockgrid cleanup * tiingo cleanup * tradingeconomics cleanup * ultima cleanup * wsj cleanup * yfinance cleanup * sec router lint * fix date query param description * Updates system and api settings (#5753) * remove uncessary import on rest api * remove FrozenField and add api.version * allow setup from json * remove id tag * computed field is better * formatting --------- Co-authored-by: Theodore Aptekarev * Squeeze build time (#5756) * squeeze build time * bug fix * fix test * typo? * rebuild * keep tradingeconomics * docs/working-docs: Working V4 Docs PR (#5747) * post-install clarification, fix links * more links * change word * toolkit cleanup * rename 'contributing' to 'development' * update extensions * some urls * Update sdk-platform and v4-develop in urls (#5730) * Update sdk-platform and v4-develop in urls * Seprate Intrinio financials data tags into a different command (#5723) * add `ebit` field in income statement standard model * only add required data tags * remove calculations data * use `name` key instead of `tag` key * set `period` as required in data * remove `period` and `cik` from provider models * add `equity/fundamental/search_financial_attributes` with tests * clean descriptions file * add `equity/fundamental/financial_attributes` with tests * set `value` as `Optional` * Fix threadpool test error (#5734) * Remove ultima from deps (#5736) * remove ultima from deps * skip ultima test * black * c… * More v3 removals (#6141) * remove ultima + althub * move twitter keys * economy kill bigmac + remove eval + plot+ stored data * am losing track * oanda is next * brokers now * fix sdk in case anyone wants it * missed an sdk endpoint * spec file * small edits for installer * stop the int tests on these * always be fixin bugs * some more removals * [Enhancement] Show the source of error in exception traceback (#6153) * show source of error * restructure code for readability * Improve the OECD requests (#6152) * remove ultima + althub * move twitter keys * Enhance caching + more specific urls * Update urls for stir * LTIR * cli * one v3 file to fix * Typing edits + gdp dates + gdp all countries * Tests * lint * not sure why those didnt record * handle the fact that we artifically add some start dates and end dates * fix dates with actual solution not weird patch * lint * adds AlphaVantage to historical_eps (#6155) * [BugFix] Fix FMP Market Snapshots (#6160) * fix FMP market snapshots * exception handling * model type * forgot one line * fix test --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Excel help page (#6165) * create help page * rename file * words * words * more issues * less words * minor fix * email * no bare urls * unused attribute * ruff * [Feature] Add Currency Snapshots With Data From FMP (#6162) * add obb.currency.snapshots() endpoint and create new standard model * add standard model * static assets * add couple of comments * codespell --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] Add `form_13f` Endpoint to `equity.ownership` (#6122) * add form_13f endpoint * review things * option_type validator * black * codespell * add some comments to the code * remove duplicated process * static file * remove warning * static why no one updates you :-( --------- Co-authored-by: Pratyush Shukla Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Bug fix] - Run charting tests again (#6167) * run tests again * forgot these 2 * [Enhancement] Slightly Change The Order of intrinio Cash Flow (#6168) * fix order of intrinio cash flow * apparently homebrew takes priority, deleted that black * [Bug fix] - Fix integration tests (#6170) * fix integration tests * rebuild * unittest * [Bug fix] - Handle multiple items with arbitrary type (#6171) * handle multiple items with arbitrary type * minor fix * ruff * inequality * integration tests * test * pylint * fix tests * fix category * ruff * [Feature] Custom choices (#6169) * custom choices * remove unnecessary choices from the extra info * static assets * simpler way to pop choices on extra * Getting json_schema_extra without changing the original dict --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * exception in debug mode shows complete argument (#6174) * [Bugfix] - Lower case validator in standard models (#6172) * add to_lower validator * change validator name * docstrings * fix interval * [Enhancement] Standardize "X".price.historical Intervals and Params (#6146) * FMP * tiingo * yfinance * intrinio * polygon * fmp interval descriptions * alpha_vantage * update unit tests * tests * static files * black * black * black again * codespell * codespell again * futures historical * ruff * some more black * pylint * now black again * test params * skip deprecated * fmp test cassette * fix some tests * fix test_query * fix bad symbol in toolkit integration tests * attempt at parameter deprecation warning * Fix edge case * test params * more test params * that's the ticket --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - refactor examples (#6154) * remove auto examples and split python from api * add missing exampels * rebuild * query params focstring * black * add scoped examples * group model imports in the router * unblock api * fix * classify examples * fix package identation * black sig * fix indentation without linter * fix python examples * remove doc * pylint * again * add model validators * commodity, crypto, currency * filter examples * fix python examples * fix filter and build * undo toml change * add comment * oop * comment * typing * lint * Update router.py * Update econometrics_router.py * fix to_python * to_python * to_python * black * fix multiple line field descriptions * remove circular import * add missing import * pass indent as object attr * doc * doc * this looks better * forgot this * fix: new examples adapted * fix prev commit * avoid future problems * Update ownership_router.py * rebuild + remove todo * make description mandatory for python examples * simple indent * append_examples func works for both website and docstring * Add example unit tests * Edit example unit tests * fix validator * this works * fix to_python * fix mandatory docstrings * typing * shorter error msgs * economy router * fix more examples * more examples * more examples * more examples * field desc * minor fix * fix etf examples * handling types better * lint * rename method * rename var * docstring + move method * typing * prompt * rebuild * prompt fix in PythonEx * fix examples without model * example mock data * add get_field_type func to get field data type * panel data * mock data * fix * fix * docstring * ohlcv * pylint * quantitaive router * simplify mock data * fix remaining quantitative routers * a bit more flexibility for examples * lint * mock dat from sample * docstring * assertion * bugfix * minor fix * technical * fix integration tests * fix docstring * econometrics examples * econometrics examples * remove warning * add technical examples * fix bad examples * fix more examples * update test rules * remoce old pydantic referenc * fix bug in treasury prices * fix quantitative examples * discovery router * equity shorts * equity shorts * fix currency pairs * fix sec_router example * fix panel data to support all funcs * black * more examples fixes * simplify test * rebuild * test doc * add provider to some ex * ^ * last * add provider * rebuild * working examples * noqa * pylint * pylint * clean * minor fix * fix test * lint * ruff --------- Co-authored-by: Pratyush Shukla Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Enhancement] Improve Intrinio Unusual Options (#6177) * improve intrinio unusual options * static files * fix test * really fix the test * added code to get new examples as string (#6181) * [Feature] Add Tradier Provider Extension (#6178) * add tradier provider * python 3-9 tz parsing * unused argument * add handling for cassette playback on GitHub * sort equity historical nicely --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Create static asset tests (#6182) * Create static asset tests * Lint * Add labels for `breaking_changes` tag (#6184) * Add labels for breaking changes*** ***Update release-drafter configuration * Update release-drafter.yml to include emoji for OpenBB Platform Breaking Changes * [Bugfix] - Fix equity/price/historical w/ alphavantage (#6183) * fix premium endpoint bug * lint * [Enhancement] Allow Multiple Symbols For Intrinio Key Metrics (#6186) * improve intrinio key metrics * type thing * some thing * ruff * handle date type (#6185) * Release bug fixes (#6187) * release bug fixes * rebuild --------- Co-authored-by: Pratyush Shukla * [BugFix] Update `README` for Platform (#6189) * update readme * prevent oopsies * beta versions * print extensions name * update toml with beta versions * [BugFix] Raise Alpha Vantage API Error (#6188) * raise API error * handle more API error messages * handle bad data --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Diogo Sousa * update econ cal headers (#6191) * [Release] 4.1.5 to `develop` (#6192) * Release/3.2.4 (#5696) * test * ultima description (#5541) * Updating showcase page (#5543) * updating showcase page * use sdk instead * add new bot command autopost docs (#5530) add new bot command autopost docs to docs.openbb.co Co-authored-by: James Maslek * Hotfix/ultima improvements (#5553) * tweaks for monetization * fix linting issue * fix: Modify 'load' behavior to append data to existing sheet (#5503) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Fixed 'worksheet not found' error during export to an existing sheet * Changes: * Now if the sheet exists in the xlsx file it will ask the user if he wants to replace/append/create new sheet --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * added platform API integration test to Nightly build (#5571) * Add columns to `stocks/search` (#5565) * Add columns to `stocks/search` isin, cusip, figi, composite_figi, shareclass_figi * Update test_search[False].txt * Update test_search[True].txt * Delete tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_search.yaml * Create test_search.yaml --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * updating ultima urls (#5587) * fix: A value is trying to be set on a copy of a slice from a DataFrame #5582 (#5591) * Update README.md (#5598) * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * fix docs (#5646) * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update settings.md (#5665) * fix front matter (#5667) * #5633 adding comma every 1000 (#5652) * #5633 adding comma every 1000 * pylint --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Hotfix/reports model render report sanitize inputs (#5669) * Adding more robust special character handling to create_output_path(). Addresses https://github.com/OpenBB-finance/OpenBBTerminal/issues/5299 * Running black linter on code to conform to OBB style guides. --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * hotfix/fix-gov-histcont: Fix #5650 - /stocks/gov/histcont (#5676) * fix histcont * some cleanup * remove sort line * 12-31 not 12-12 * columns_keep_types * remove space in regex (#5675) * Pin openai (#5685) * Clarified stocks/ta empty recom object message (#5468) * Clarified stocks/ta empty recom object message * black * lint --------- Co-authored-by: James Maslek * improved market cap value extraction (#5169) * improved market cap value extraction * pylint --------- Co-authored-by: James Maslek * 3.2.3->3.2.4 * Changelogs * new changelog --------- Co-authored-by: Henrique Joaquim Co-authored-by: Andrew Co-authored-by: Adi Sai Co-authored-by: Sandip Saha Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Luqman Co-authored-by: Adwait <111136306+AdwaitSalankar@users.noreply.github.com> Co-authored-by: Abhishek Amar <66067391+abhishek-amar@users.noreply.github.com> Co-authored-by: DidierRLopes Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Ramazan Co-authored-by: joshuabuildsthings Co-authored-by: wojda <114031148+polooner@users.noreply.github.com> Co-authored-by: Bim Phomthong <118195204+bimbolimbo@users.noreply.github.com> * Release/4.0.1 (#5840) * test * ultima description (#5541) * Updating showcase page (#5543) * updating showcase page * use sdk instead * add new bot command autopost docs (#5530) add new bot command autopost docs to docs.openbb.co Co-authored-by: James Maslek * Hotfix/ultima improvements (#5553) * tweaks for monetization * fix linting issue * fix: Modify 'load' behavior to append data to existing sheet (#5503) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Fixed 'worksheet not found' error during export to an existing sheet * Changes: * Now if the sheet exists in the xlsx file it will ask the user if he wants to replace/append/create new sheet --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * added platform API integration test to Nightly build (#5571) * Add columns to `stocks/search` (#5565) * Add columns to `stocks/search` isin, cusip, figi, composite_figi, shareclass_figi * Update test_search[False].txt * Update test_search[True].txt * Delete tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_search.yaml * Create test_search.yaml --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * updating ultima urls (#5587) * fix: A value is trying to be set on a copy of a slice from a DataFrame #5582 (#5591) * Update README.md (#5598) * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * fix docs (#5646) * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update settings.md (#5665) * fix front matter (#5667) * #5633 adding comma every 1000 (#5652) * #5633 adding comma every 1000 * pylint --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Hotfix/reports model render report sanitize inputs (#5669) * Adding more robust special character handling to create_output_path(). Addresses https://github.com/OpenBB-finance/OpenBBTerminal/issues/5299 * Running black linter on code to conform to OBB style guides. --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * hotfix/fix-gov-histcont: Fix #5650 - /stocks/gov/histcont (#5676) * fix histcont * some cleanup * remove sort line * 12-31 not 12-12 * columns_keep_types * remove space in regex (#5675) * Pin openai (#5685) * Clarified stocks/ta empty recom object message (#5468) * Clarified stocks/ta empty recom object message * black * lint --------- Co-authored-by: James Maslek * improved market cap value extraction (#5169) * improved market cap value extraction * pylint --------- Co-authored-by: James Maslek * Release/3.2.4 (#5704) * 3.2.3->3.2.4 * Changelogs * new changelog * OpenBB Platform v4 (#5225) * change location * check something * add cache * fixed auth w/@IgorWounds and @montezdesousa * fixes for econometrics * include Darren auth suggestions * some routers included if dev + chg hub backend var * coverage router should not be here * update docker readme * forgot to check auth here * Change extension imports * update docstrings and readme * headers function wasnt being called, just referenced * relative import * econometrics add headers everywhere * Fix QA * Fix TA * Fix test * Fix python interface QA and TA * Lint * Cleanup * Change path * make the changes and some etf models * tests for command_runner * ruff * solving naming issues on pytest * Update some docstrings, fix typos and lint * solving econometrics instantiating wrong openbb * chaging the way pytest runs * messing around with the imports * ruff * Change template to add platform considerations (#5533) * change template to add platform considerations * @the-praxs suggestions * solving __pycache__ issue * removing typo * ci yml * making linters happy (i guess) * Improve Omega Ratio and docstrings * chaging pro validation hash * ruff * Fix OLS Summary and lint * Add OECD Provider for economy extension (#5534) * Add record to docs * update a couple of cboe models * Fix econometrics bugs. Make tests pass. Lint. * black * ruff * pydantic v2: remove deprecated Extra * pydantic v2: self.dict -> self.model_dump * revert pydantic * revert the revert * try 1: pin urllib3 < 2 * Revert "try 1: pin urllib3 < 2" This reverts commit 3736c311cb6aa9e653dcb5db733798408b72a82e. * Revert dep * Fix * re-lock * Skip all tests when doing cspell in pre-commit * Resolve linter errors * Add OECD to install script * Add OECD * Resolve more linter errors * Exclude static files of v4 python from ruff * More linting * Another attempt to resolve even more linting errors * Change how Literal is used * ticker. symbol. consistent. @piiq * change ticker field in Stock Search to is_symbol * Update Cboe model for stocks_search -> is_symbol parameter. * Fix issue * Lint * Small QA to rename SDK to Platform (#5544) * SDK -> Platform in docs * renamed in core * renamed in openbb `init` * `sdk` variable renamed as `platform` --------- Co-authored-by: hjoaquim * `validator` -> `field_validator` in standard models * Standard convention for multi-ticker symbols (#5549) * standardize symbol input param in forex and crypto historical data * static * linting * Fix stock_search integration test params * Update dependencies and linting on the CI (#5550) * Remove ruff and black from platform dependencies * Update codespell configuration * Lint python code * Add toml and tomli to root dev dependencies * Update requirements.txt files * Fix buggy docstring in python package methods (#5548) * fix buggy docstring for methods * remove space * fix typing * avoid name collision with validator * Revert "avoid name collision with validator" This reverts commit 8a30a44555d97132f6bddcbc4a4facdd97ecc591. * typing * rebuild * python 3.8, ParamSpec not available * lint * ruff noqa * Merge with develop (#5551) * Charting extension integration tests (#5547) * initial proposal for integration tests on the charting extension * int tests for charting generation * python generator * ruff * boilerplate templates * python tests * tests for the api * using body instead so data don't get redefined * unit tests for coverage * ruff * docstrings * unnecessary access to keys() * Add trading economics economic calendar * dev install * Data Models disposition on the website (#5538) * pydantic v4 * flat structure * md files * Revert "md files" This reverts commit bd2170e2adf82fed3a35d34fad6a2e3ba3ae1d49. * improve command descriptions * nice title and description * human readble data model names on left panel * implementation details section * content markdown files * markdown versioned files * showcase page * updates --------- Co-authored-by: tehcoderer * everything except tests * fix `datetime.date` import in fetcher test * modified url to remove `api_key` placeholder * record test * api key is called c here * fixed fetcher test for api key * recorded tests * refactor * life is ruff * codespell * Make Intrinio options chains great again (#5540) * add multithreading * cleanup * linting * use dateutil.parser * removed `TICKER_EXCEPTIONS` * modified `date` and `type` fields in standard model * set alias for `date` and `type` to match standards * static * static * Hotfix/fix post tests (#5555) * Fix econometrics * Fix ta * Fix qa. Remove intrinio to not be rate limited * Lint * Fix typo * obbject tests (#5558) * obbject tests * ruff * fix dev_install * fix unittests * black on nox * black on nox * nox * fix fetcher test so it can compare dates * fix intrinio tests * ruff * change to model_dum() instead (#5561) * Passing tests (#5560) * Passing tests * fix options * Fix most tests and bugs * fix forex missing params * make symbol upper in polygon fx pairs * fix fixedincome integration tests (#5564) * Fixing charting api integration tests (#5562) * fixing charting api integration tests * black * fix stocks less five API fails * fix the 5 failing stocks integration tests * recapture fmp stock news unit test * fix fmp forex api test * couple more forex integration fixes * changing the request to always use the legacy session. @jmaslek this is was broken for 3.8 and 3.9; with this change apparently all versions work - lemme know if you see any issue with this change * ruff * fix ta * add missing param * fix testers for the api * fix globalnews to use images instead of image * remove unncessary pandas import * econcal int tests * update gitignore * fix get_querystring to support lists * add missing parameters --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Henrique Joaquim * Stock Historical standardization and UX improvements (#5457) * polygon add interval standard param * attempt at standardization * Alpha Vantage params standardization * rename `get_intervals` and fixed bug for extracting wrong value * missed changing it in `extract_data` * linting * polygon cleanup * modified `start_date` & `end_date` type to `datetime` from `dateType` * standardized intrinio stock historical params * fixed yfinance * linting * revert start and end date to dateType from datetime * fix alpha vantage * changed param * fix intrinio infinite loop * `validator` is `field_validator` * revert time params and fixed intervals * `outputsize` alias set in `Field` * set interval description using in-build dict * yfinance stock param standardization * static * intrinio cleanup * Polygon add api params as `PrivateAttr` * modified yfinance params to `PrivateAttr` * intrinio remove overriding date params * fixed description for AV adjusted param * fix alpha vantage intraday not working * re-record and pass unit tests * pass integration tests * Update test --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Fix econcal endpoint (#5567) * fix econcal for python interface * fix econcal tests * fix non supported json output * Fixes FMP index endpoint to get 1 day interval data (#5535) * fix FMP endpoint for getting index data for `1day` interval * fix `open` type to prevent validation error * modifed `validator` to `field_validator` * type of fields is `StrictFloat` * re-record and pass test * linting * `validator` -> `field_validator`, a3'd everything * Fix regression in tests. Lint * updating the integration test actions * Fix typo * Fix typo * Fix import * Publish versions `a3` to Pypi (#5568) * bump versions and script to publish * small improvements * uncomment exception * openbb * publishing guidelines * improve docs * add providers to economy api * make symbol required in stock_quote * Fix keys * Fix oecd * add comma * revert * Add quotes * Sleep * Improve tests * Improve * Feature/query transform (#5566) * inject query into transform_data * swap query and data * update missing fetchers * last test failing * sig test fetcher * black * av add `query` to `transform_data` call * transform_data: missing refactoring * fix uvicorn command in the doc * Automated examples (#5576) * Automated examples * Fix bug * Lint * static assets built on 3.8 * Revert "static assets built on 3.8" This reverts commit fb82ff7bd9af92ed676d8f8047c31e74daf7b8b2. * remove assets * static assets on 3.8 * static assets on 3.8 * Wrap in quotes * Improve wrap * minor fix * rebuild 3.8 * Fix bug * Fix edge case * Lint * rebuild --------- Co-authored-by: hjoaquim Co-authored-by: Diogo Sousa * use SecretStr for sensitive fields (#5578) * use SecretStr for sensitive fields * fix * docstring * Add tests for provider (#5583) * Add tests for provider * Test standard models * Lint * Fix standard model issues. Co-authored-by: @the-praxs * linting * `symbol` -> `is_symbol` in `economy.index_search` * static --------- Co-authored-by: Pratyush Shukla * feature/v4-biztoc-provider: Adds Biztoc provider and GlobalNews (#5546) * add biztoc provider * duplicate field * black * request headers * recapture test * move stuff around * add integration tests * duplicate OECD entry in dev_install * duplicate entry for oecd in pyproject.toml * Add Biztoc to workflow * update readme: credentials * Add Preferences to README * improve tests * fix biztoc * obbject pylint * Bug fix: serializ SecretStr before dumping to json * export credentials as json (#5592) * Check for wrong, changed, or outdated params. (#5597) * Improving `economy.cpi` for the FRED data (#5602) * remove multiindex using coding magic * Update field descriptions --------- Co-authored-by: Theodore Aptekarev * Improve error message. * Improve * Test tests (#5607) * Test tests * Add test * 4.0.0a4 PyPI publishing (#5608) * changes to publish * fix mini conflict * typo * cleaned `descriptions.py` * fix description in `cpi.py` * Add ETF extension to v4 (#5609) * Add etf extension with search data model * Add FMP ETF search * Add fetcher tests * Add ETF historical price from yfinance (#5610) * Add etf extension with search data model * Add FMP ETF search * Add fetcher tests * Add etf historical price standard model and route * Add etf historical data from yfinance * Add unit tests * Fix linter error. Organize imports * Update test data * Revert common descriptions erased by CPI PR * remove `symbol` from data for `stocks.ca.peers` * Test docstrings (#5613) * Test docstrings * fix minor bugs w/@IgorWounds * static only w/@IgorWounds * fix `importance` param in `economy.econcal` * right static only w/@IgorWounds * Fix econcal and add tests to noxfile * fix econcal static * re-record --------- Co-authored-by: Pratyush Shukla * Clean up the newly created ETF extension (#5611) * Add ETF to dev_install bundle * Add integration tests for openbb-etf * Patch integration test generator scripts to produce lintable code * Add py.typed markers for extensions * user preferences descriptions (#5593) * user preferences descriptions * typo * Feature/v4-sec-provider: Add SEC provider to V4 (#5556) * coerce string type, add default=None * add sec provider and FTD function * update description * ruff * data model definitions in standard model already * duplicate oecd entries in dev_install and pyproject * actually commit * integration test * add stock search to SEC * add company filings for SEC provider * integration tests * remove duplicated line * ruff * **kwargs in Transform Data * some helper functions for later * black * add helper for mutual fund and etf lookup * add some SEC lookup helpers to a new regulators extension * black * ruff * fix test param * take institution filter out of sec stock_search * ruff * remove URL that codespell doesn't like * add cik-to-ticker map * add litigations rss feed * make openbb-regulators a dependency of openbb-sec * add SIC search * improve ftd and remove BeautifulSoup from SEC dependencies * fix parsing the zip files pre-2009 * ruff * update descriptions * recapture ftd test * tests params * typo * change limit param to 1 in test_sec_stock_ftd * Add didiers to_records method (#5588) * Add didiers to_records * unused import * Bring back polars + do what igor suggested * Make the output consistent with what it was. * Black ? * spelling. oops. almost like we have a pre commit or something * Feature/v4-price-performance: % returns for various horizons, comparable across multiple tickers. (#5618) * coerce string type, add default=None * add price_performance endpoint from FMP * black * extra period in docstring * ruff * forgot one file * Feature/ipo-calendar: V4 IPO Calendar (#5605) * coerce string type, add default=None * add intrinio ipo calendar * fix typo * sort __init__ * fix description * make requested changes * update test params * black * test updates * etf integration * Add disc router and WSJ provider * OBBject extensions (#5612) * changes to core * bug? * docstring * doc * Update credentials.py * fix model_dump * create extensions * fix docstring * doc * revert change query_exc * doc * fix container test * redirect obbject test patch * doc * rename method * move decorator to extension file * rename method extend_obbject * changes in creds model * avoid credential racing * doc * rename prop * doc * doc * remove comment * comment some code * free extension names * docstring * doc * docs * Hotfix/fix-v4-economic-calendar: Add FMP to Econ Calendar and fix some TE bugs (#5580) * coerce string type, add default=None * adds fmp to economic calendar and fixes some things with TE * ruff * etf integration test * missing provider for test * rename te cassette to economic_calendar * fix test * rename tests --------- Co-authored-by: James Maslek * Add stocks disc endpoints (#5630) * Add stocks disc endpoints * Explicit * Lint * Add tests * Bump timeout * Feature/disc router (#5616) * Add disc router and WSJ provider * Lint * Lint * Move endpoints under ETF router * Update etf_performance.py * Add ETF info and sector exposure from FMP (#5620) * Add ETF info from FMP * Add integration tests * Add unit tests * Add etf sectors endpoint * Add etf sectors fmp endpoint * Omit nested sector list from fmp info data * Update tests and test data * Update test data * Specify provider explicitly in integration tests * Update tests * Skip yfinance etf historical test * Fix linter errors after the merge * Fix more linter errors * Fix failing and add missing tests * Fix integration tests * Fix calendar ipo tests * Add ETF holdings and holding report dates from FMP (#5629) * Add ETF info from FMP * Add integration tests * Add unit tests * Add etf sectors endpoint * Add etf sectors fmp endpoint * Omit nested sector list from fmp info data * Update tests and test data * Update test data * Specify provider explicitly in integration tests * Update tests * Skip yfinance etf historical test * Add etf holdings and holdings date routes and standard models * Add fmp holdings and holding dates fetchers * Update holdings fetcher to properly handle date object inputs * Add unit tests * Add integration tests * Black after merge * Fix test input data format * Disc router for equities. (#5640) * Disc router for equities. * add tests * Bug fixes in financial statements (#5537) * `validator` to `field_validator` in standard models * Polygon add `ttm` to `period` param * Revert "Polygon add `ttm` to `period` param" * Polygon add `ttm` to param `period` * `EarningsCallTranscript` standard model removed `quarter` param * use `tag` instead of `name` for correct field name * fix url for intrinio income statement * modified intrinio cash flow `transform_data` function * set optional data fields and validate dates * fix insider trading not fetching recent data * linting * refactoring * refactoring * set param alias in fmp stock insider provider model * get all quarter data for intrinio * add `limit` param to `stocks.fa.ins` * refactoring and linting * removed additional comment * linting * re-recorded and fix tests * cash flow standard model field type to `StrictFloat` * Intrinio cash flow model fixed to get all quarters' data * linting * refactoring * financial statement standard model field type to `StrictFloat` * Intrinio financial statement model get all quarter data * set `period` type to `Optional[str]` * add `period` param to balance sheet provider models * add `period` param to cash flow provider models * use alias in model dump * remove `ttm` from `period` param * revamped intrinio financials * fixed incorrect description for `limit` param * modified tests for `balance`, `cash` and `income` * re-recorded tests * skipped intrinio financial statement fetcher tests * Add ETF county weighting command with FMP data (#5645) * Remove code that wrongfully infers the filing date as end of quarter * Add etf countries command with fmp data * Add countries command to etf router * Update sector and country weighting fmp models * Fix docstring typo * Add unit tests and update mock data * Add integration tests for etf.countries * Bring back missing integration tests * Fix economic calendar integration tests * fix missing data in intrinio financials * removed inutile params from Polygon financial statement models * Intrinio IPO overhaul * tests fixed and re-recorded * Add ETF holdings performance with FMP data (#5659) * Add etf holdings performance endpoint * Add tests * Fix failing polygon fetcher tests * Split long holdings lists into chunks and update test data * Change chunk length to 500 tickers * Add stock search from FMP (#5642) Co-authored-by: Theodore Aptekarev * Feature/v4 pypi (#5579) * improvements to the publish script * move scripts * initial script that builds the package * adjustments on the docs * test pypi workflow * add hour and minute to version * black * ruff * duplicate file * moving files instead * build throught the script instead * update nox file * integration tests workflow * change workflow * fix dev_install * fix in sed cmd * testing the platform only * commenting out the publishing * fix run commands * improvements to the publish script and doc * fix publish script * updating the script and the workflow * feature/v4-pypi nightly (#5589) * init * Update nightly.py * cleanup * init file * not referencing dev_utils * updating obb platform key * revert * Increase warmup time * project name on pyproject and adding the --pre flag on readme * moving to the build folder * fix noxfile * reflecting the moves on the import statements * fix pyproject path * ruff * fix paths * fix super typo * update workflows * moving the pypi terminal files into its folder --------- Co-authored-by: teh_coderer Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Theodore Aptekarev * economy.calendar nasdaq (#5628) * add quandl econcal * unittest * add integration tests * replace   * fix bug TE importance * small fix * remove stuff from quandl * add nasdaq provider * add nasdaq to install files * Update test_economy_api.py * test * quandl leftovers * remove quandl econcal test * lint * replace   * ruff * lint * update nasdaq gmt * validate countries * here * no need for this * fix calendar tests * static * static * remove error * static * readme + website * readme * remove changes TE * typo * fix unittest * fix tests * Update __init__.py * Update economic_calendar.py * revamped model and added helpers for date range --------- Co-authored-by: Pratyush Shukla * Feature/v4-dividend-calendar: Adds Nasdaq dividend calendar and moves the command out of fundamental_analysis (#5672) * add nasdaq dividend calendar and move out of fundamental_analysis * black * ruff * add random-user-agent to pyproject.toml * add nasdaq ipo calendar * add nasdaq flag for SPO to IPO calendar * add spo test param * black * dividend test * fix transform_query - nasdaq_calendar_ipo * bring back different headers for ipo calendar * remove references to test * Add disc endpoints (#5660) * Add Quandl top retail * Add tests * Add Seeking Alpha * Add Filings * Change Provider * Fix test * Add dev_install * static * static correct * y u forget me * updated deps * static --------- Co-authored-by: Pratyush Shukla * using dev install (#5673) * Expanding the `fixedincome` menu (#5655) * models and fetcher * making the fetcher visible * std model * adding the command * improvements to the models * typo * adding the command * imrpovements to dwpcr * standard model for ecb int rates * adding the fetcher for fred * standard model of ice bofa * add ice_bofa command * ruff * ice bofa fetcher * moody std model * moody * std model * add cp command * unused import * cp * spot * ruff * hqm * tmc * ffrmc * tbffr * ruff * typing fixes * buggy dates * fred fetcher tests * ruff * adding ecb as a provider * adding new provider related stuff * adding the new command eu_ycvr * models * test for ecb fetcher * Feature/v4 fixedincome int tests (#5661) * integration tests * happy ruff * mini adjustment * ruff * typo * verbose type * fix tests * docstrings everywhere and an happy pydocstyle * fix tests * Feature/user-cache-dir: Add User Preference for the Cache Directory (#5621) * add user preference for storing cached data * ruff * fix tests? * fix test key error..? * etf integration test fix * add cache dir to SEC * black * improve docs structure for V4 (#5586) * improve docs structure for V4 * moving over changes * Add Docs to the navbar * add some, re-order sidebar * fix sentence * add docs install to source instructions * insert a couple of links, fix a typo * big terminal docs usage revamps * improve toggle component for tutorials * get rid of TOCs for all terminal docs for consistency and simplicity * improve platform docs * improve bot docs content structure * remove index from bot docs * improve ON THIS PAGE to only display TOC if at least 1 element * make edit this page text and icon on same line * add author and date to docs * add basic syntax page to usage * sidebar order for usage section * move api start command to the top with the import python import * some install page additions * small improvement * refactor routines section * Update introduction-to-routines.md * Update pipeline-of-commands.md * Update introduction-to-routines.md * Update routines-for-power-users.md * Update community-routines.md * update keyboard hotkey macros * askobb page * Update askobb-feature.md * Update index.md * Update index.md * Update index.md * Update index.md * fix images * remove HeadTitle from all files where it exist * get rid of extra spacing in markdown * small update * small edit * need index at the start because of main path when homepage of docs * use openAI to create SEO for front matter on my behalf * remove table of content from sdk page * finish improving metadata SEO for SDK docs * update duplicate header * update HeadTitle to be more specific on product * remove index from bot telegram reference * delete duplicated title for platform reference * another update * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * start PR so screenshots can get attached via GitHub website * Update qa.md * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * Update crypto introduction.md * titles * another title * Update crypto dd.md * Update defi.md * Update disc.md * Update nft.md * Update onchain.md * Update ov.md * Update introduction.md updates URL * Update introduction.md add HeadTitle * Update ba.md * Update comparison.md * Update dark-pool-shorts.md * Update disc.md * fix docs (#5646) * Update fa.md * Update gov.md * Update ins.md * Update tradinghours.md * Delete website/content/terminal/menus/stocks/options/screener.md * Update Options introduction.md * Update screener head title * Update screener TOC * Update econometrics.md * Update economy head title * Update etf.md * codespell * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Contributing guidelines (#5615) * intro section * what's expected sections * improve sections * improve sections and move how to add a data point * moving qa under contributor * better intro * moving the sharing section * better expectations * small intro to the contributor guidelines * moving things under the contributor section * there is no pre commits on the platform yet * dependency management * best practices for extensions * typo * collapse options subfolder * codespell * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update fixedincome.md * url * Update forecast.md * Update settings.md (#5665) * Update forex.md * fix front matter (#5667) * Fix conflict markers that got into markdown during previous merges * Fix front matter list formatting * Fix typo * small thing * fix hyperlinks * Update .codespell.ignore * output_type options * Architectural considerations * Update sidebar to hide pro section by default * Minor copy changes * TET pattern * import statements * clarification on preferences * Minor copy changes * Lint markdown and python * fix: open index on collapsible root elements * remove old content * options title * Fix linting errors * Refactor sidebar label to url mapping condition --------- Co-authored-by: andrewkenreich Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: hjoaquim Co-authored-by: Sandip Saha Co-authored-by: James Maslek Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Theodore Aptekarev * Add multi-ticker support to etf_countries (#5670) * add multi-ticker support to etf_countries * remove commented-out lines * normalized percent points * percent -> percentage * Fix Nasdaq Econ Calendar Fetcher (#5668) * fix nasdaq econ cal request * more html tags * add random-user-agent to pyproject * another edge case - 24H -> 00:00 * Feature/v4-unusual-options: Adds unusual options endpoint. (#5677) * add unusual options fro Intrinio * test params * move sorting * Change type * update FMP fetcher to use the V4 endpoint (#5681) * Fix price performance not parsed correctly when there is only 1 ticker (#5678) * Add crypto search standard model and FMP data for it (#5679) * Apply renaming to news data (#5684) * inegration complete * reformatted for black * fix ruff issues * revised integration * changes to versions in pyproject.toml and updated lock files * Rename models * Update tests * Fix typos here and there * Update routers * Apply rename to ultima * Properly mock api key * Mock ultima api key --------- Co-authored-by: Adi Sai * Feature/v4-market-snapshots: Adds full market snapshots (#5473) * add stocks market snapshots from fmp * add fmp fetcher test * unused imports * add polygon to market_snapshots * update fmp market_snapshots * black * pydantic2 things * updates * change validate_obj to model_validate * polygon cleanup * tests * descriptions * black * data description * minor adjustments, using less local variables, improving readability and removing pandas * better structure * minor adjustments * lint * fix int tests --------- Co-authored-by: hjoaquim * Add NBBO Quotes, with historical, to `obb.stocks.quote()` (#5617) * coerce string type, add default=None * add polygon stock quote * limit cleanup * add greater/less than to params * limit param * black * tests * fix tests * test_etf * rename model and function to NBBO * add standard model for nbbo * improve standardization * not redifining builtin max * fix input params * integration test params * removing unused import Co-authored-by: Pratyush Shukla * revamped code * re-recorded nbbo test * added symbol validator * added alias in field * Stock news -> Company news --------- Co-authored-by: hjoaquim Co-authored-by: Pratyush Shukla Co-authored-by: Theodore Aptekarev * hotfix/update-quandl-to-nasdaq: Merge Quandl + Nasdaq (#5682) * merge quandl nd nasdaq * dev_install.py * test param name * economy python integration test * Add more input types to data processing commands (#5453) * adding more supported types to data processing commands * ruff * removing unused import * docstrings * data processing types covertion * data description * test filters * ruff * fix package builder tests * ruff * removing print * Add stocks/dps module (#5638) * short volume * pyproject missed * add sec short interest with days to cover * Add FINRA OTC endopoint * some tests * rest of unit tests * Integratin test scripts * dev install * linters caught by pre commit * lines too long * Last test files * maybe it needs a lock file? * thanks pratty * Maybe ill actually listen to pratty next time * sec test date freeze * I cant hit buttons * re record tests * tests 3 * Stockgrid test * regen int test * more testing * lint * moved these fns * dis killing me * one more test * last one * Update integration tests * Fix tests picking up wrong dps route --------- Co-authored-by: Theodore Aptekarev * Rename Forex to Currency (#5687) * restore fields as optional (#5686) * Rename Crypto (#5689) * added `crypto.price.historical` * static * fix tests * fix incorrect label * Move model from sec to finra (#5692) * Update toml * fixed deps * add openbb-etf lock file * cleanup * cleanup (#5694) * Rename Fixed Income (#5695) * Rename Fixed Income * Add routers * Rename stocks to equity (#5688) * Rename stocks folder * Rename openbb_stocks package * Rename routers * Reroute equity menu * Update routes based on feedback * StockNews -> EquityNews * StockInfo -> EquityProfile * Rename Equity calendars * Equity peers rename * Rename discovery * Rename fundamental * Rename price command models * Rename shorts * Update charting router * Fix seeking alpha upcoming release date * Fix linting errors * Update tests * Fix tests * Skip econometrics api tests because it's python only * Update integration tests and test data * Historical analyst estimates * Skip cboe options chain test. Unable to record vcr cassette * re-record cboe cassettes * Document CBOE unit test creation caveats --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Feature/files-for-igor: Adding a few standard models for Igor (#5699) * add some standard models for Igor * codespell * update descriptions * Add devtools metapackage (#5703) * Add openbb-devtools metapackage * adding devtools to the dev_install script --------- Co-authored-by: hjoaquim * Rename econometrics commands to be more verbose (#5702) * Expose command to model map (#5706) * Rename ta qa (#5708) * Rename ta folder * Rename ta to technical * Rename qa folder * Rename qa to quantitative * Rename the actual routes in quantitative * Equity cleanup (#5707) * cleanup * static * renaming to equity cc @the-praxs * Proof reading --------- Co-authored-by: hjoaquim Co-authored-by: Theodore Aptekarev * Don't enforce imperative for first word of the docstring * Remove ultima from default extensions * Rename `economy` and create `index` extension (#5705) * renamed economy and re-recorded tests * static * market indices * european indices * fred indices * index constituents * tests * correct package name * oops * static * linting * Move COT commands to regulators * Rename economy.list to available_indices * Rename GDP models and clean up * Fix charting tests * Drop _indices from available_indices command * Fix obbject to_dict test --------- Co-authored-by: Theodore Aptekarev * Rename etf/disc (#5715) * Docs/v4-working-docs: PR to Work on V4 Docs (#5693) * Revert changes related to pydantic2 made into v3 code * Revert fred model changes in v3 * Revert pydantic2 databento model changes in v2 * Update some names and v3 lock file * Clean up openbb/package before the beta release * Platform publishing procedure (#5701) * update instructions * introducing the version script * publish message * fix platform path * reflecting version changes * getting version from installed packages instead * removing toml from dependencies * Changes to get `a7` out (#5697) * changes to get a7 out * etf menu on the pyproject.toml * poetry lock * bump `openbb-etf` to `a5` to match version * updated deps * removing ultima * removing references to a4 cc @the-praxs * Bump index menu version * poetry lock --------- Co-authored-by: Pratyush Shukla Co-authored-by: Theodore Aptekarev * Update publishing instructions * Bump core dependencies in extensions and providers * Add changes to the publish script following the beta release * Update the versions in static extension map and openbb metapackage --------- Co-authored-by: James Maslek Co-authored-by: Pratyush Shukla Co-authored-by: hjoaquim Co-authored-by: Diogo Sousa Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: tehcoderer Co-authored-by: DidierRLopes Co-authored-by: andrewkenreich Co-authored-by: Sandip Saha Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Adi Sai * Hotfix/pypi openbb terminal (#5719) * renaming the project * documentation changes * Finishing touches to the publishing procedure (#5728) * finishing touches to the publishing procedure * grammar improvements * Run tests on develop (#5725) * Run tests on develop * Add a check that files changes in platform * Seprate Intrinio financials data tags into a different command (#5723) * add `ebit` field in income statement standard model * only add required data tags * remove calculations data * use `name` key instead of `tag` key * set `period` as required in data * remove `period` and `cik` from provider models * add `equity/fundamental/search_financial_attributes` with tests * clean descriptions file * add `equity/fundamental/financial_attributes` with tests * set `value` as `Optional` * Fix threadpool test error (#5734) * Remove ultima from deps (#5736) * remove ultima from deps * skip ultima test * black * change skip location * try except statement to avoid error on the ci * new currency reference rates pr (#5724) * point files to linters (#5739) * remove news from equity (#5741) * Add tiingo provider (#5740) * first commit * things * Add news endpoints * CryptoHistorical * Add currency and trailing dividend yield * things working * deps * fix pre commit things * tests? * black on the tests * pratty told me to add it * integration tests * added helpers * crypto revamped * currency revamped * trailing dividend yield revamped * equity historical revamped * company news overhauled * global news overhauled * remove `tags` param from news models * crypto correct `exchanges` description * james smh * re-recorded fetcher tests * fixed integration tests * econometrics smh * james smh again --------- Co-authored-by: Pratyush Shukla * Add `derivatives` extension for `futures` and `options` (#5742) * removed options and futures * add derivatives extension * cleanup * bug #5649 (#5722) * bug #5649 * fixing --a upmom, downmom --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Rename the fmp search -> screener (#5744) * Rename the fmp search -> screener * misses some * i cant copy paste * docs/fix-urls: Updates the Terminal About URLs to match `/develop` (#5720) * update Terminal about URLs and some other broken links * ruff * intro * changing the heading levels * dependency management sections * structure * developer guides * structure * contributor guides * keywords and descriptions * broken urls * cool cards * Cool cards (#5727) * tidy up terminal/content * some more tidy up * fix styling for platform that was missing * more tidy up * improve color for dark and light mode * create new reference card for more basic cards * rename back to menus * implement all index.md for terminal, except reference * improve bot title * more refactoring * fix remaining index * header styling * more styling * heheheheheheeh * Revert "heheheheheheeh" This reverts commit 7d095fcfd258efb7e82b75b4663b5360785195f3. * Ccards (#5733) * links * more links * improved styling and chevron aligned to title * fix index.mdx urls for Terminal * update package.json * update index.mdx * fix generation * spelling * toolkit_extensions * update data extensions * couple of links * add tiingo to data extensions list --------- Co-authored-by: hjoaquim Co-authored-by: andrewkenreich Co-authored-by: DidierRLopes Co-authored-by: James Maslek * Stock leftover cleanup (#5745) * change to equity in `.md` files * `HistoricalStockSplits`->`HistoricalSplits` * `StockInsiderTrading`->`InsiderTrading` * sorry fmp * `EquityHistorical` cleanup * `EquityNBBO` cleanup * .md leftover * the last of stocks * Hotfix/urllib to dev group (#5732) * use the urllib3 dependency on the dev group instead * adapt the version script for the nightlies - if it's a nightly the package distribution name will have a different name * add dev dependencies to the dev installation bc of the ci * updating the import on validate_call according to: https://docs.pydantic.dev/latest/concepts/validation_decorator/ the way we were importing it breaks if pydantic=2.5 @montezdesousa * loosing urllib3 version specification on the provider and adding it to platform dev deps * rmeoving urllib from top level deps; and removing --with dev flag * changing to ^ instead * Revert "changing to ^ instead" This reverts commit 7300904e9f3adba372b106d381b70ae06e28795a. * unnecessary dep --------- Co-authored-by: Theodore Aptekarev Co-authored-by: James Maslek * feature/v4-bop - Add ECB Balance of Payments (Replaces #5716) (#5726) * add ecb balance of payments * missing __init__.py files * Nasdaq calendar earnings and fix FMP calendar earnings (#5718) Co-authored-by: James Maslek * feature/us-treasury-auctions: Adds Treasury Auctions endpoint and provider for US Government Data. (#5746) * add government_us provider and treasury auctions endpoint * black * add param for cusip * move logic for setting default start/end date * Update hub<>platform credentials map (#5749) * update hub<>platform credentials map * typo * Add API settings schema to system settings (#5743) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Skip checking creds (#5737) * skip checking creds * fix bug * ok mypy * add comment * rename required_credentials * fix * fix top_retail bug * don't require creds in some nasdaq fetchers * black * this was not here before * fix tests * update fetcher test * update contributing guidelines * Fix Quote (#5752) * Fix Quote * fixed return type and model validation --------- Co-authored-by: Pratyush Shukla * Wrap up renaming global news to world news on a model level (#5750) * Wrap up renaming global news to world news on a model level * cleanup --------- Co-authored-by: Pratyush Shukla * Remove eod from docstrings (#5751) * Wrap up renaming global news to world news on a model level * Remove "end of day" from historical price model docstrings --------- Co-authored-by: Pratyush Shukla * Massive docstring cleanup (#5755) * sec router remove command * standard models cleanup * fmp cleanup * av cleanup * benzinga cleanup * biztoc cleanup * cboe cleanup * ecb cleanup * finra cleanup * fred cleanup * us cleanup * intrinio cleanup * nasdaq cleanup * oecd cleanup * polygon cleanup * sec cleanup * seeking alpha cleanup * stockgrid cleanup * tiingo cleanup * tradingeconomics cleanup * ultima cleanup * wsj cleanup * yfinance cleanup * sec router lint * fix date query param description * Updates system and api settings (#5753) * remove uncessary import on rest api * remove FrozenField and add api.version * allow setup from json * remove id tag * computed field is better * formatting --------- Co-authored-by: Theodore Aptekarev * Squeeze build time (#5756) * squeeze build time * bug fix * fix test * typo? * rebuild * keep tradingeconomics * docs/working-docs: Working V4 Docs PR (#5747) * post-install clarification, fix links * more links * change word * toolkit cleanup * rename 'contributing' to 'development' * update extensions * some urls * Update sdk-platform and v4-develop in urls (#5730) * Update sdk-platform and v4-develop in urls * Seprate Intrinio financials data tags into a different command (#5723) * add `ebit` field in income statement standard model * only add required data tags * remove calculations data * use `name` key instead of `tag` key * set `period` as required in data * remove `period` and `cik` from provider models * add `equity/fundamental/search_financial_attributes` with tests * clean descriptions file * add `equity/fundamental/financial_attributes` with tests * set `value` as `Optional` * Fix threadpool test error (#5734) * Remove ultima from deps (#5736) * remove ultima from deps * skip ultima test * black… * [Bugfix] Update `PUBLISH.md` file (#6193) * publish doc updated * add info * Remove charting extension preference from user settings (#6194) * [Bugfix] - Small update on PUBLISH.md (#6196) * small update on publish.md * minor fix * updated with more details --------- Co-authored-by: Pratyush Shukla * [Feature] Hotfix develop main sync (#6200) * Release/3.2.4 (#5696) * test * ultima description (#5541) * Updating showcase page (#5543) * updating showcase page * use sdk instead * add new bot command autopost docs (#5530) add new bot command autopost docs to docs.openbb.co Co-authored-by: James Maslek * Hotfix/ultima improvements (#5553) * tweaks for monetization * fix linting issue * fix: Modify 'load' behavior to append data to existing sheet (#5503) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Fixed 'worksheet not found' error during export to an existing sheet * Changes: * Now if the sheet exists in the xlsx file it will ask the user if he wants to replace/append/create new sheet --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * added platform API integration test to Nightly build (#5571) * Add columns to `stocks/search` (#5565) * Add columns to `stocks/search` isin, cusip, figi, composite_figi, shareclass_figi * Update test_search[False].txt * Update test_search[True].txt * Delete tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_search.yaml * Create test_search.yaml --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * updating ultima urls (#5587) * fix: A value is trying to be set on a copy of a slice from a DataFrame #5582 (#5591) * Update README.md (#5598) * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * fix docs (#5646) * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update settings.md (#5665) * fix front matter (#5667) * #5633 adding comma every 1000 (#5652) * #5633 adding comma every 1000 * pylint --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Hotfix/reports model render report sanitize inputs (#5669) * Adding more robust special character handling to create_output_path(). Addresses https://github.com/OpenBB-finance/OpenBBTerminal/issues/5299 * Running black linter on code to conform to OBB style guides. --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * hotfix/fix-gov-histcont: Fix #5650 - /stocks/gov/histcont (#5676) * fix histcont * some cleanup * remove sort line * 12-31 not 12-12 * columns_keep_types * remove space in regex (#5675) * Pin openai (#5685) * Clarified stocks/ta empty recom object message (#5468) * Clarified stocks/ta empty recom object message * black * lint --------- Co-authored-by: James Maslek * improved market cap value extraction (#5169) * improved market cap value extraction * pylint --------- Co-authored-by: James Maslek * 3.2.3->3.2.4 * Changelogs * new changelog --------- Co-authored-by: Henrique Joaquim Co-authored-by: Andrew Co-authored-by: Adi Sai Co-authored-by: Sandip Saha Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Luqman Co-authored-by: Adwait <111136306+AdwaitSalankar@users.noreply.github.com> Co-authored-by: Abhishek Amar <66067391+abhishek-amar@users.noreply.github.com> Co-authored-by: DidierRLopes Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Ramazan Co-authored-by: joshuabuildsthings Co-authored-by: wojda <114031148+polooner@users.noreply.github.com> Co-authored-by: Bim Phomthong <118195204+bimbolimbo@users.noreply.github.com> * Release/4.0.1 (#5840) * test * ultima description (#5541) * Updating showcase page (#5543) * updating showcase page * use sdk instead * add new bot command autopost docs (#5530) add new bot command autopost docs to docs.openbb.co Co-authored-by: James Maslek * Hotfix/ultima improvements (#5553) * tweaks for monetization * fix linting issue * fix: Modify 'load' behavior to append data to existing sheet (#5503) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Fixed 'worksheet not found' error during export to an existing sheet * Changes: * Now if the sheet exists in the xlsx file it will ask the user if he wants to replace/append/create new sheet --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * added platform API integration test to Nightly build (#5571) * Add columns to `stocks/search` (#5565) * Add columns to `stocks/search` isin, cusip, figi, composite_figi, shareclass_figi * Update test_search[False].txt * Update test_search[True].txt * Delete tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_search.yaml * Create test_search.yaml --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * updating ultima urls (#5587) * fix: A value is trying to be set on a copy of a slice from a DataFrame #5582 (#5591) * Update README.md (#5598) * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * fix docs (#5646) * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update settings.md (#5665) * fix front matter (#5667) * #5633 adding comma every 1000 (#5652) * #5633 adding comma every 1000 * pylint --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Hotfix/reports model render report sanitize inputs (#5669) * Adding more robust special character handling to create_output_path(). Addresses https://github.com/OpenBB-finance/OpenBBTerminal/issues/5299 * Running black linter on code to conform to OBB style guides. --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * hotfix/fix-gov-histcont: Fix #5650 - /stocks/gov/histcont (#5676) * fix histcont * some cleanup * remove sort line * 12-31 not 12-12 * columns_keep_types * remove space in regex (#5675) * Pin openai (#5685) * Clarified stocks/ta empty recom object message (#5468) * Clarified stocks/ta empty recom object message * black * lint --------- Co-authored-by: James Maslek * improved market cap value extraction (#5169) * improved market cap value extraction * pylint --------- Co-authored-by: James Maslek * Release/3.2.4 (#5704) * 3.2.3->3.2.4 * Changelogs * new changelog * OpenBB Platform v4 (#5225) * change location * check something * add cache * fixed auth w/@IgorWounds and @montezdesousa * fixes for econometrics * include Darren auth suggestions * some routers included if dev + chg hub backend var * coverage router should not be here * update docker readme * forgot to check auth here * Change extension imports * update docstrings and readme * headers function wasnt being called, just referenced * relative import * econometrics add headers everywhere * Fix QA * Fix TA * Fix test * Fix python interface QA and TA * Lint * Cleanup * Change path * make the changes and some etf models * tests for command_runner * ruff * solving naming issues on pytest * Update some docstrings, fix typos and lint * solving econometrics instantiating wrong openbb * chaging the way pytest runs * messing around with the imports * ruff * Change template to add platform considerations (#5533) * change template to add platform considerations * @the-praxs suggestions * solving __pycache__ issue * removing typo * ci yml * making linters happy (i guess) * Improve Omega Ratio and docstrings * chaging pro validation hash * ruff * Fix OLS Summary and lint * Add OECD Provider for economy extension (#5534) * Add record to docs * update a couple of cboe models * Fix econometrics bugs. Make tests pass. Lint. * black * ruff * pydantic v2: remove deprecated Extra * pydantic v2: self.dict -> self.model_dump * revert pydantic * revert the revert * try 1: pin urllib3 < 2 * Revert "try 1: pin urllib3 < 2" This reverts commit 3736c311cb6aa9e653dcb5db733798408b72a82e. * Revert dep * Fix * re-lock * Skip all tests when doing cspell in pre-commit * Resolve linter errors * Add OECD to install script * Add OECD * Resolve more linter errors * Exclude static files of v4 python from ruff * More linting * Another attempt to resolve even more linting errors * Change how Literal is used * ticker. symbol. consistent. @piiq * change ticker field in Stock Search to is_symbol * Update Cboe model for stocks_search -> is_symbol parameter. * Fix issue * Lint * Small QA to rename SDK to Platform (#5544) * SDK -> Platform in docs * renamed in core * renamed in openbb `init` * `sdk` variable renamed as `platform` --------- Co-authored-by: hjoaquim * `validator` -> `field_validator` in standard models * Standard convention for multi-ticker symbols (#5549) * standardize symbol input param in forex and crypto historical data * static * linting * Fix stock_search integration test params * Update dependencies and linting on the CI (#5550) * Remove ruff and black from platform dependencies * Update codespell configuration * Lint python code * Add toml and tomli to root dev dependencies * Update requirements.txt files * Fix buggy docstring in python package methods (#5548) * fix buggy docstring for methods * remove space * fix typing * avoid name collision with validator * Revert "avoid name collision with validator" This reverts commit 8a30a44555d97132f6bddcbc4a4facdd97ecc591. * typing * rebuild * python 3.8, ParamSpec not available * lint * ruff noqa * Merge with develop (#5551) * Charting extension integration tests (#5547) * initial proposal for integration tests on the charting extension * int tests for charting generation * python generator * ruff * boilerplate templates * python tests * tests for the api * using body instead so data don't get redefined * unit tests for coverage * ruff * docstrings * unnecessary access to keys() * Add trading economics economic calendar * dev install * Data Models disposition on the website (#5538) * pydantic v4 * flat structure * md files * Revert "md files" This reverts commit bd2170e2adf82fed3a35d34fad6a2e3ba3ae1d49. * improve command descriptions * nice title and description * human readble data model names on left panel * implementation details section * content markdown files * markdown versioned files * showcase page * updates --------- Co-authored-by: tehcoderer * everything except tests * fix `datetime.date` import in fetcher test * modified url to remove `api_key` placeholder * record test * api key is called c here * fixed fetcher test for api key * recorded tests * refactor * life is ruff * codespell * Make Intrinio options chains great again (#5540) * add multithreading * cleanup * linting * use dateutil.parser * removed `TICKER_EXCEPTIONS` * modified `date` and `type` fields in standard model * set alias for `date` and `type` to match standards * static * static * Hotfix/fix post tests (#5555) * Fix econometrics * Fix ta * Fix qa. Remove intrinio to not be rate limited * Lint * Fix typo * obbject tests (#5558) * obbject tests * ruff * fix dev_install * fix unittests * black on nox * black on nox * nox * fix fetcher test so it can compare dates * fix intrinio tests * ruff * change to model_dum() instead (#5561) * Passing tests (#5560) * Passing tests * fix options * Fix most tests and bugs * fix forex missing params * make symbol upper in polygon fx pairs * fix fixedincome integration tests (#5564) * Fixing charting api integration tests (#5562) * fixing charting api integration tests * black * fix stocks less five API fails * fix the 5 failing stocks integration tests * recapture fmp stock news unit test * fix fmp forex api test * couple more forex integration fixes * changing the request to always use the legacy session. @jmaslek this is was broken for 3.8 and 3.9; with this change apparently all versions work - lemme know if you see any issue with this change * ruff * fix ta * add missing param * fix testers for the api * fix globalnews to use images instead of image * remove unncessary pandas import * econcal int tests * update gitignore * fix get_querystring to support lists * add missing parameters --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Henrique Joaquim * Stock Historical standardization and UX improvements (#5457) * polygon add interval standard param * attempt at standardization * Alpha Vantage params standardization * rename `get_intervals` and fixed bug for extracting wrong value * missed changing it in `extract_data` * linting * polygon cleanup * modified `start_date` & `end_date` type to `datetime` from `dateType` * standardized intrinio stock historical params * fixed yfinance * linting * revert start and end date to dateType from datetime * fix alpha vantage * changed param * fix intrinio infinite loop * `validator` is `field_validator` * revert time params and fixed intervals * `outputsize` alias set in `Field` * set interval description using in-build dict * yfinance stock param standardization * static * intrinio cleanup * Polygon add api params as `PrivateAttr` * modified yfinance params to `PrivateAttr` * intrinio remove overriding date params * fixed description for AV adjusted param * fix alpha vantage intraday not working * re-record and pass unit tests * pass integration tests * Update test --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Fix econcal endpoint (#5567) * fix econcal for python interface * fix econcal tests * fix non supported json output * Fixes FMP index endpoint to get 1 day interval data (#5535) * fix FMP endpoint for getting index data for `1day` interval * fix `open` type to prevent validation error * modifed `validator` to `field_validator` * type of fields is `StrictFloat` * re-record and pass test * linting * `validator` -> `field_validator`, a3'd everything * Fix regression in tests. Lint * updating the integration test actions * Fix typo * Fix typo * Fix import * Publish versions `a3` to Pypi (#5568) * bump versions and script to publish * small improvements * uncomment exception * openbb * publishing guidelines * improve docs * add providers to economy api * make symbol required in stock_quote * Fix keys * Fix oecd * add comma * revert * Add quotes * Sleep * Improve tests * Improve * Feature/query transform (#5566) * inject query into transform_data * swap query and data * update missing fetchers * last test failing * sig test fetcher * black * av add `query` to `transform_data` call * transform_data: missing refactoring * fix uvicorn command in the doc * Automated examples (#5576) * Automated examples * Fix bug * Lint * static assets built on 3.8 * Revert "static assets built on 3.8" This reverts commit fb82ff7bd9af92ed676d8f8047c31e74daf7b8b2. * remove assets * static assets on 3.8 * static assets on 3.8 * Wrap in quotes * Improve wrap * minor fix * rebuild 3.8 * Fix bug * Fix edge case * Lint * rebuild --------- Co-authored-by: hjoaquim Co-authored-by: Diogo Sousa * use SecretStr for sensitive fields (#5578) * use SecretStr for sensitive fields * fix * docstring * Add tests for provider (#5583) * Add tests for provider * Test standard models * Lint * Fix standard model issues. Co-authored-by: @the-praxs * linting * `symbol` -> `is_symbol` in `economy.index_search` * static --------- Co-authored-by: Pratyush Shukla * feature/v4-biztoc-provider: Adds Biztoc provider and GlobalNews (#5546) * add biztoc provider * duplicate field * black * request headers * recapture test * move stuff around * add integration tests * duplicate OECD entry in dev_install * duplicate entry for oecd in pyproject.toml * Add Biztoc to workflow * update readme: credentials * Add Preferences to README * improve tests * fix biztoc * obbject pylint * Bug fix: serializ SecretStr before dumping to json * export credentials as json (#5592) * Check for wrong, changed, or outdated params. (#5597) * Improving `economy.cpi` for the FRED data (#5602) * remove multiindex using coding magic * Update field descriptions --------- Co-authored-by: Theodore Aptekarev * Improve error message. * Improve * Test tests (#5607) * Test tests * Add test * 4.0.0a4 PyPI publishing (#5608) * changes to publish * fix mini conflict * typo * cleaned `descriptions.py` * fix description in `cpi.py` * Add ETF extension to v4 (#5609) * Add etf extension with search data model * Add FMP ETF search * Add fetcher tests * Add ETF historical price from yfinance (#5610) * Add etf extension with search data model * Add FMP ETF search * Add fetcher tests * Add etf historical price standard model and route * Add etf historical data from yfinance * Add unit tests * Fix linter error. Organize imports * Update test data * Revert common descriptions erased by CPI PR * remove `symbol` from data for `stocks.ca.peers` * Test docstrings (#5613) * Test docstrings * fix minor bugs w/@IgorWounds * static only w/@IgorWounds * fix `importance` param in `economy.econcal` * right static only w/@IgorWounds * Fix econcal and add tests to noxfile * fix econcal static * re-record --------- Co-authored-by: Pratyush Shukla * Clean up the newly created ETF extension (#5611) * Add ETF to dev_install bundle * Add integration tests for openbb-etf * Patch integration test generator scripts to produce lintable code * Add py.typed markers for extensions * user preferences descriptions (#5593) * user preferences descriptions * typo * Feature/v4-sec-provider: Add SEC provider to V4 (#5556) * coerce string type, add default=None * add sec provider and FTD function * update description * ruff * data model definitions in standard model already * duplicate oecd entries in dev_install and pyproject * actually commit * integration test * add stock search to SEC * add company filings for SEC provider * integration tests * remove duplicated line * ruff * **kwargs in Transform Data * some helper functions for later * black * add helper for mutual fund and etf lookup * add some SEC lookup helpers to a new regulators extension * black * ruff * fix test param * take institution filter out of sec stock_search * ruff * remove URL that codespell doesn't like * add cik-to-ticker map * add litigations rss feed * make openbb-regulators a dependency of openbb-sec * add SIC search * improve ftd and remove BeautifulSoup from SEC dependencies * fix parsing the zip files pre-2009 * ruff * update descriptions * recapture ftd test * tests params * typo * change limit param to 1 in test_sec_stock_ftd * Add didiers to_records method (#5588) * Add didiers to_records * unused import * Bring back polars + do what igor suggested * Make the output consistent with what it was. * Black ? * spelling. oops. almost like we have a pre commit or something * Feature/v4-price-performance: % returns for various horizons, comparable across multiple tickers. (#5618) * coerce string type, add default=None * add price_performance endpoint from FMP * black * extra period in docstring * ruff * forgot one file * Feature/ipo-calendar: V4 IPO Calendar (#5605) * coerce string type, add default=None * add intrinio ipo calendar * fix typo * sort __init__ * fix description * make requested changes * update test params * black * test updates * etf integration * Add disc router and WSJ provider * OBBject extensions (#5612) * changes to core * bug? * docstring * doc * Update credentials.py * fix model_dump * create extensions * fix docstring * doc * revert change query_exc * doc * fix container test * redirect obbject test patch * doc * rename method * move decorator to extension file * rename method extend_obbject * changes in creds model * avoid credential racing * doc * rename prop * doc * doc * remove comment * comment some code * free extension names * docstring * doc * docs * Hotfix/fix-v4-economic-calendar: Add FMP to Econ Calendar and fix some TE bugs (#5580) * coerce string type, add default=None * adds fmp to economic calendar and fixes some things with TE * ruff * etf integration test * missing provider for test * rename te cassette to economic_calendar * fix test * rename tests --------- Co-authored-by: James Maslek * Add stocks disc endpoints (#5630) * Add stocks disc endpoints * Explicit * Lint * Add tests * Bump timeout * Feature/disc router (#5616) * Add disc router and WSJ provider * Lint * Lint * Move endpoints under ETF router * Update etf_performance.py * Add ETF info and sector exposure from FMP (#5620) * Add ETF info from FMP * Add integration tests * Add unit tests * Add etf sectors endpoint * Add etf sectors fmp endpoint * Omit nested sector list from fmp info data * Update tests and test data * Update test data * Specify provider explicitly in integration tests * Update tests * Skip yfinance etf historical test * Fix linter errors after the merge * Fix more linter errors * Fix failing and add missing tests * Fix integration tests * Fix calendar ipo tests * Add ETF holdings and holding report dates from FMP (#5629) * Add ETF info from FMP * Add integration tests * Add unit tests * Add etf sectors endpoint * Add etf sectors fmp endpoint * Omit nested sector list from fmp info data * Update tests and test data * Update test data * Specify provider explicitly in integration tests * Update tests * Skip yfinance etf historical test * Add etf holdings and holdings date routes and standard models * Add fmp holdings and holding dates fetchers * Update holdings fetcher to properly handle date object inputs * Add unit tests * Add integration tests * Black after merge * Fix test input data format * Disc router for equities. (#5640) * Disc router for equities. * add tests * Bug fixes in financial statements (#5537) * `validator` to `field_validator` in standard models * Polygon add `ttm` to `period` param * Revert "Polygon add `ttm` to `period` param" * Polygon add `ttm` to param `period` * `EarningsCallTranscript` standard model removed `quarter` param * use `tag` instead of `name` for correct field name * fix url for intrinio income statement * modified intrinio cash flow `transform_data` function * set optional data fields and validate dates * fix insider trading not fetching recent data * linting * refactoring * refactoring * set param alias in fmp stock insider provider model * get all quarter data for intrinio * add `limit` param to `stocks.fa.ins` * refactoring and linting * removed additional comment * linting * re-recorded and fix tests * cash flow standard model field type to `StrictFloat` * Intrinio cash flow model fixed to get all quarters' data * linting * refactoring * financial statement standard model field type to `StrictFloat` * Intrinio financial statement model get all quarter data * set `period` type to `Optional[str]` * add `period` param to balance sheet provider models * add `period` param to cash flow provider models * use alias in model dump * remove `ttm` from `period` param * revamped intrinio financials * fixed incorrect description for `limit` param * modified tests for `balance`, `cash` and `income` * re-recorded tests * skipped intrinio financial statement fetcher tests * Add ETF county weighting command with FMP data (#5645) * Remove code that wrongfully infers the filing date as end of quarter * Add etf countries command with fmp data * Add countries command to etf router * Update sector and country weighting fmp models * Fix docstring typo * Add unit tests and update mock data * Add integration tests for etf.countries * Bring back missing integration tests * Fix economic calendar integration tests * fix missing data in intrinio financials * removed inutile params from Polygon financial statement models * Intrinio IPO overhaul * tests fixed and re-recorded * Add ETF holdings performance with FMP data (#5659) * Add etf holdings performance endpoint * Add tests * Fix failing polygon fetcher tests * Split long holdings lists into chunks and update test data * Change chunk length to 500 tickers * Add stock search from FMP (#5642) Co-authored-by: Theodore Aptekarev * Feature/v4 pypi (#5579) * improvements to the publish script * move scripts * initial script that builds the package * adjustments on the docs * test pypi workflow * add hour and minute to version * black * ruff * duplicate file * moving files instead * build throught the script instead * update nox file * integration tests workflow * change workflow * fix dev_install * fix in sed cmd * testing the platform only * commenting out the publishing * fix run commands * improvements to the publish script and doc * fix publish script * updating the script and the workflow * feature/v4-pypi nightly (#5589) * init * Update nightly.py * cleanup * init file * not referencing dev_utils * updating obb platform key * revert * Increase warmup time * project name on pyproject and adding the --pre flag on readme * moving to the build folder * fix noxfile * reflecting the moves on the import statements * fix pyproject path * ruff * fix paths * fix super typo * update workflows * moving the pypi terminal files into its folder --------- Co-authored-by: teh_coderer Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Theodore Aptekarev * economy.calendar nasdaq (#5628) * add quandl econcal * unittest * add integration tests * replace   * fix bug TE importance * small fix * remove stuff from quandl * add nasdaq provider * add nasdaq to install files * Update test_economy_api.py * test * quandl leftovers * remove quandl econcal test * lint * replace   * ruff * lint * update nasdaq gmt * validate countries * here * no need for this * fix calendar tests * static * static * remove error * static * readme + website * readme * remove changes TE * typo * fix unittest * fix tests * Update __init__.py * Update economic_calendar.py * revamped model and added helpers for date range --------- Co-authored-by: Pratyush Shukla * Feature/v4-dividend-calendar: Adds Nasdaq dividend calendar and moves the command out of fundamental_analysis (#5672) * add nasdaq dividend calendar and move out of fundamental_analysis * black * ruff * add random-user-agent to pyproject.toml * add nasdaq ipo calendar * add nasdaq flag for SPO to IPO calendar * add spo test param * black * dividend test * fix transform_query - nasdaq_calendar_ipo * bring back different headers for ipo calendar * remove references to test * Add disc endpoints (#5660) * Add Quandl top retail * Add tests * Add Seeking Alpha * Add Filings * Change Provider * Fix test * Add dev_install * static * static correct * y u forget me * updated deps * static --------- Co-authored-by: Pratyush Shukla * using dev install (#5673) * Expanding the `fixedincome` menu (#5655) * models and fetcher * making the fetcher visible * std model * adding the command * improvements to the models * typo * adding the command * imrpovements to dwpcr * standard model for ecb int rates * adding the fetcher for fred * standard model of ice bofa * add ice_bofa command * ruff * ice bofa fetcher * moody std model * moody * std model * add cp command * unused import * cp * spot * ruff * hqm * tmc * ffrmc * tbffr * ruff * typing fixes * buggy dates * fred fetcher tests * ruff * adding ecb as a provider * adding new provider related stuff * adding the new command eu_ycvr * models * test for ecb fetcher * Feature/v4 fixedincome int tests (#5661) * integration tests * happy ruff * mini adjustment * ruff * typo * verbose type * fix tests * docstrings everywhere and an happy pydocstyle * fix tests * Feature/user-cache-dir: Add User Preference for the Cache Directory (#5621) * add user preference for storing cached data * ruff * fix tests? * fix test key error..? * etf integration test fix * add cache dir to SEC * black * improve docs structure for V4 (#5586) * improve docs structure for V4 * moving over changes * Add Docs to the navbar * add some, re-order sidebar * fix sentence * add docs install to source instructions * insert a couple of links, fix a typo * big terminal docs usage revamps * improve toggle component for tutorials * get rid of TOCs for all terminal docs for consistency and simplicity * improve platform docs * improve bot docs content structure * remove index from bot docs * improve ON THIS PAGE to only display TOC if at least 1 element * make edit this page text and icon on same line * add author and date to docs * add basic syntax page to usage * sidebar order for usage section * move api start command to the top with the import python import * some install page additions * small improvement * refactor routines section * Update introduction-to-routines.md * Update pipeline-of-commands.md * Update introduction-to-routines.md * Update routines-for-power-users.md * Update community-routines.md * update keyboard hotkey macros * askobb page * Update askobb-feature.md * Update index.md * Update index.md * Update index.md * Update index.md * fix images * remove HeadTitle from all files where it exist * get rid of extra spacing in markdown * small update * small edit * need index at the start because of main path when homepage of docs * use openAI to create SEO for front matter on my behalf * remove table of content from sdk page * finish improving metadata SEO for SDK docs * update duplicate header * update HeadTitle to be more specific on product * remove index from bot telegram reference * delete duplicated title for platform reference * another update * Hotfix/econometrics export filename fix (#5508) * fix: Modify 'load' behavior to append data to existing sheet Details: - Added logic to detect existing sheet and append data if present. - There is no direct way to append on the sheet, so I am reading the sheet to get the last row number and then writing after that row number. Resolves: #5472 * Added --export option for exporting to a desired file in /econometrics menu * Added a -f/--file option to provide the filename for export. Made -t/--type and -f/--file mutually exclusive. If -f is not given, -t is required and the filename will be generated based on the time and module. * Revert `helper_funcs.py` to original state * Made some arguments not required. * Minor changes asked by @deeleeramone * No sheet name * black --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * FIX #5600 Updated the Twitter logo to X logo (#5601) * Change Ultima paragraph (#5624) * change ultima paragraph * remove old paragraph * Update CONTRIBUTING.md (#5623) * mobile line-brake fixed (#5604) In the mobile view (media max 400px ), the text line "Installation >>" appears broken into smaller segments. Co-authored-by: James Maslek * start PR so screenshots can get attached via GitHub website * Update qa.md * Docs/terminalpro and improvement (#5622) * add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich * Add light blue banner, blue when clicking sidebar + fix link in docusaurus.config.js (#5627) * typo * pro docs tab coloring * sidebar selection blue * redirecting missing * Update crypto introduction.md * titles * another title * Update crypto dd.md * Update defi.md * Update disc.md * Update nft.md * Update onchain.md * Update ov.md * Update introduction.md updates URL * Update introduction.md add HeadTitle * Update ba.md * Update comparison.md * Update dark-pool-shorts.md * Update disc.md * fix docs (#5646) * Update fa.md * Update gov.md * Update ins.md * Update tradinghours.md * Delete website/content/terminal/menus/stocks/options/screener.md * Update Options introduction.md * Update screener head title * Update screener TOC * Update econometrics.md * Update economy head title * Update etf.md * codespell * Fix the redirect for intro to the correct url for docs (#5658) * fix the redirect for intro to the correct url for docs * fix code linting --------- Co-authored-by: James Maslek * Contributing guidelines (#5615) * intro section * what's expected sections * improve sections * improve sections and move how to add a data point * moving qa under contributor * better intro * moving the sharing section * better expectations * small intro to the contributor guidelines * moving things under the contributor section * there is no pre commits on the platform yet * dependency management * best practices for extensions * typo * collapse options subfolder * codespell * Improve Pro documentation further (#5641) * small improvement * Fix TutorialVideo for mobile view * main page terminal pro docs * jose whelp * placeholder index file that needs to be removed * fix: fixes sidebar, removes unused index.md * update link to api keys * update api keys link * fix hyperlinks in terminal helper * fix a few more links * fix some more links * linter * black linter * improve main docs page for each product * small refactor * header to take to main page of product * run OpenAI script to generate SEO for pro content --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * Update folders.md * Update integrate-your-own-backend.md * Update index.md * Update fixedincome.md * url * Update forecast.md * Update settings.md (#5665) * Update forex.md * fix front matter (#5667) * Fix conflict markers that got into markdown during previous merges * Fix front matter list formatting * Fix typo * small thing * fix hyperlinks * Update .codespell.ignore * output_type options * Architectural considerations * Update sidebar to hide pro section by default * Minor copy changes * TET pattern * import statements * clarification on preferences * Minor copy changes * Lint markdown and python * fix: open index on collapsible root elements * remove old content * options title * Fix linting errors * Refactor sidebar label to url mapping condition --------- Co-authored-by: andrewkenreich Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: hjoaquim Co-authored-by: Sandip Saha Co-authored-by: James Maslek Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Theodore Aptekarev * Add multi-ticker support to etf_countries (#5670) * add multi-ticker support to etf_countries * remove commented-out lines * normalized percent points * percent -> percentage * Fix Nasdaq Econ Calendar Fetcher (#5668) * fix nasdaq econ cal request * more html tags * add random-user-agent to pyproject * another edge case - 24H -> 00:00 * Feature/v4-unusual-options: Adds unusual options endpoint. (#5677) * add unusual options fro Intrinio * test params * move sorting * Change type * update FMP fetcher to use the V4 endpoint (#5681) * Fix price performance not parsed correctly when there is only 1 ticker (#5678) * Add crypto search standard model and FMP data for it (#5679) * Apply renaming to news data (#5684) * inegration complete * reformatted for black * fix ruff issues * revised integration * changes to versions in pyproject.toml and updated lock files * Rename models * Update tests * Fix typos here and there * Update routers * Apply rename to ultima * Properly mock api key * Mock ultima api key --------- Co-authored-by: Adi Sai * Feature/v4-market-snapshots: Adds full market snapshots (#5473) * add stocks market snapshots from fmp * add fmp fetcher test * unused imports * add polygon to market_snapshots * update fmp market_snapshots * black * pydantic2 things * updates * change validate_obj to model_validate * polygon cleanup * tests * descriptions * black * data description * minor adjustments, using less local variables, improving readability and removing pandas * better structure * minor adjustments * lint * fix int tests --------- Co-authored-by: hjoaquim * Add NBBO Quotes, with historical, to `obb.stocks.quote()` (#5617) * coerce string type, add default=None * add polygon stock quote * limit cleanup * add greater/less than to params * limit param * black * tests * fix tests * test_etf * rename model and function to NBBO * add standard model for nbbo * improve standardization * not redifining builtin max * fix input params * integration test params * removing unused import Co-authored-by: Pratyush Shukla * revamped code * re-recorded nbbo test * added symbol validator * added alias in field * Stock news -> Company news --------- Co-authored-by: hjoaquim Co-authored-by: Pratyush Shukla Co-authored-by: Theodore Aptekarev * hotfix/update-quandl-to-nasdaq: Merge Quandl + Nasdaq (#5682) * merge quandl nd nasdaq * dev_install.py * test param name * economy python integration test * Add more input types to data processing commands (#5453) * adding more supported types to data processing commands * ruff * removing unused import * docstrings * data processing types covertion * data description * test filters * ruff * fix package builder tests * ruff * removing print * Add stocks/dps module (#5638) * short volume * pyproject missed * add sec short interest with days to cover * Add FINRA OTC endopoint * some tests * rest of unit tests * Integratin test scripts * dev install * linters caught by pre commit * lines too long * Last test files * maybe it needs a lock file? * thanks pratty * Maybe ill actually listen to pratty next time * sec test date freeze * I cant hit buttons * re record tests * tests 3 * Stockgrid test * regen int test * more testing * lint * moved these fns * dis killing me * one more test * last one * Update integration tests * Fix tests picking up wrong dps route --------- Co-authored-by: Theodore Aptekarev * Rename Forex to Currency (#5687) * restore fields as optional (#5686) * Rename Crypto (#5689) * added `crypto.price.historical` * static * fix tests * fix incorrect label * Move model from sec to finra (#5692) * Update toml * fixed deps * add openbb-etf lock file * cleanup * cleanup (#5694) * Rename Fixed Income (#5695) * Rename Fixed Income * Add routers * Rename stocks to equity (#5688) * Rename stocks folder * Rename openbb_stocks package * Rename routers * Reroute equity menu * Update routes based on feedback * StockNews -> EquityNews * StockInfo -> EquityProfile * Rename Equity calendars * Equity peers rename * Rename discovery * Rename fundamental * Rename price command models * Rename shorts * Update charting router * Fix seeking alpha upcoming release date * Fix linting errors * Update tests * Fix tests * Skip econometrics api tests because it's python only * Update integration tests and test data * Historical analyst estimates * Skip cboe options chain test. Unable to record vcr cassette * re-record cboe cassettes * Document CBOE unit test creation caveats --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Feature/files-for-igor: Adding a few standard models for Igor (#5699) * add some standard models for Igor * codespell * update descriptions * Add devtools metapackage (#5703) * Add openbb-devtools metapackage * adding devtools to the dev_install script --------- Co-authored-by: hjoaquim * Rename econometrics commands to be more verbose (#5702) * Expose command to model map (#5706) * Rename ta qa (#5708) * Rename ta folder * Rename ta to technical * Rename qa folder * Rename qa to quantitative * Rename the actual routes in quantitative * Equity cleanup (#5707) * cleanup * static * renaming to equity cc @the-praxs * Proof reading --------- Co-authored-by: hjoaquim Co-authored-by: Theodore Aptekarev * Don't enforce imperative for first word of the docstring * Remove ultima from default extensions * Rename `economy` and create `index` extension (#5705) * renamed economy and re-recorded tests * static * market indices * european indices * fred indices * index constituents * tests * correct package name * oops * static * linting * Move COT commands to regulators * Rename economy.list to available_indices * Rename GDP models and clean up * Fix charting tests * Drop _indices from available_indices command * Fix obbject to_dict test --------- Co-authored-by: Theodore Aptekarev * Rename etf/disc (#5715) * Docs/v4-working-docs: PR to Work on V4 Docs (#5693) * Revert changes related to pydantic2 made into v3 code * Revert fred model changes in v3 * Revert pydantic2 databento model changes in v2 * Update some names and v3 lock file * Clean up openbb/package before the beta release * Platform publishing procedure (#5701) * update instructions * introducing the version script * publish message * fix platform path * reflecting version changes * getting version from installed packages instead * removing toml from dependencies * Changes to get `a7` out (#5697) * changes to get a7 out * etf menu on the pyproject.toml * poetry lock * bump `openbb-etf` to `a5` to match version * updated deps * removing ultima * removing references to a4 cc @the-praxs * Bump index menu version * poetry lock --------- Co-authored-by: Pratyush Shukla Co-authored-by: Theodore Aptekarev * Update publishing instructions * Bump core dependencies in extensions and providers * Add changes to the publish script following the beta release * Update the versions in static extension map and openbb metapackage --------- Co-authored-by: James Maslek Co-authored-by: Pratyush Shukla Co-authored-by: hjoaquim Co-authored-by: Diogo Sousa Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: tehcoderer Co-authored-by: DidierRLopes Co-authored-by: andrewkenreich Co-authored-by: Sandip Saha Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Mohamad Fadil Co-authored-by: Adi Sai * Hotfix/pypi openbb terminal (#5719) * renaming the project * documentation changes * Finishing touches to the publishing procedure (#5728) * finishing touches to the publishing procedure * grammar improvements * Run tests on develop (#5725) * Run tests on develop * Add a check that files changes in platform * Seprate Intrinio financials data tags into a different command (#5723) * add `ebit` field in income statement standard model * only add required data tags * remove calculations data * use `name` key instead of `tag` key * set `period` as required in data * remove `period` and `cik` from provider models * add `equity/fundamental/search_financial_attributes` with tests * clean descriptions file * add `equity/fundamental/financial_attributes` with tests * set `value` as `Optional` * Fix threadpool test error (#5734) * Remove ultima from deps (#5736) * remove ultima from deps * skip ultima test * black * change skip location * try except statement to avoid error on the ci * new currency reference rates pr (#5724) * point files to linters (#5739) * remove news from equity (#5741) * Add tiingo provider (#5740) * first commit * things * Add news endpoints * CryptoHistorical * Add currency and trailing dividend yield * things working * deps * fix pre commit things * tests? * black on the tests * pratty told me to add it * integration tests * added helpers * crypto revamped * currency revamped * trailing dividend yield revamped * equity historical revamped * company news overhauled * global news overhauled * remove `tags` param from news models * crypto correct `exchanges` description * james smh * re-recorded fetcher tests * fixed integration tests * econometrics smh * james smh again --------- Co-authored-by: Pratyush Shukla * Add `derivatives` extension for `futures` and `options` (#5742) * removed options and futures * add derivatives extension * cleanup * bug #5649 (#5722) * bug #5649 * fixing --a upmom, downmom --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * Rename the fmp search -> screener (#5744) * Rename the fmp search -> screener * misses some * i cant copy paste * docs/fix-urls: Updates the Terminal About URLs to match `/develop` (#5720) * update Terminal about URLs and some other broken links * ruff * intro * changing the heading levels * dependency management sections * structure * developer guides * structure * contributor guides * keywords and descriptions * broken urls * cool cards * Cool cards (#5727) * tidy up terminal/content * some more tidy up * fix styling for platform that was missing * more tidy up * improve color for dark and light mode * create new reference card for more basic cards * rename back to menus * implement all index.md for terminal, except reference * improve bot title * more refactoring * fix remaining index * header styling * more styling * heheheheheheeh * Revert "heheheheheheeh" This reverts commit 7d095fcfd258efb7e82b75b4663b5360785195f3. * Ccards (#5733) * links * more links * improved styling and chevron aligned to title * fix index.mdx urls for Terminal * update package.json * update index.mdx * fix generation * spelling * toolkit_extensions * update data extensions * couple of links * add tiingo to data extensions list --------- Co-authored-by: hjoaquim Co-authored-by: andrewkenreich Co-authored-by: DidierRLopes Co-authored-by: James Maslek * Stock leftover cleanup (#5745) * change to equity in `.md` files * `HistoricalStockSplits`->`HistoricalSplits` * `StockInsiderTrading`->`InsiderTrading` * sorry fmp * `EquityHistorical` cleanup * `EquityNBBO` cleanup * .md leftover * the last of stocks * Hotfix/urllib to dev group (#5732) * use the urllib3 dependency on the dev group instead * adapt the version script for the nightlies - if it's a nightly the package distribution name will have a different name * add dev dependencies to the dev installation bc of the ci * updating the import on validate_call according to: https://docs.pydantic.dev/latest/concepts/validation_decorator/ the way we were importing it breaks if pydantic=2.5 @montezdesousa * loosing urllib3 version specification on the provider and adding it to platform dev deps * rmeoving urllib from top level deps; and removing --with dev flag * changing to ^ instead * Revert "changing to ^ instead" This reverts commit 7300904e9f3adba372b106d381b70ae06e28795a. * unnecessary dep --------- Co-authored-by: Theodore Aptekarev Co-authored-by: James Maslek * feature/v4-bop - Add ECB Balance of Payments (Replaces #5716) (#5726) * add ecb balance of payments * missing __init__.py files * Nasdaq calendar earnings and fix FMP calendar earnings (#5718) Co-authored-by: James Maslek * feature/us-treasury-auctions: Adds Treasury Auctions endpoint and provider for US Government Data. (#5746) * add government_us provider and treasury auctions endpoint * black * add param for cusip * move logic for setting default start/end date * Update hub<>platform credentials map (#5749) * update hub<>platform credentials map * typo * Add API settings schema to system settings (#5743) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Skip checking creds (#5737) * skip checking creds * fix bug * ok mypy * add comment * rename required_credentials * fix * fix top_retail bug * don't require creds in some nasdaq fetchers * black * this was not here before * fix tests * update fetcher test * update contributing guidelines * Fix Quote (#5752) * Fix Quote * fixed return type and model validation --------- Co-authored-by: Pratyush Shukla * Wrap up renaming global news to world news on a model level (#5750) * Wrap up renaming global news to world news on a model level * cleanup --------- Co-authored-by: Pratyush Shukla * Remove eod from docstrings (#5751) * Wrap up renaming global news to world news on a model level * Remove "end of day" from historical price model docstrings --------- Co-authored-by: Pratyush Shukla * Massive docstring cleanup (#5755) * sec router remove command * standard models cleanup * fmp cleanup * av cleanup * benzinga cleanup * biztoc cleanup * cboe cleanup * ecb cleanup * finra cleanup * fred cleanup * us cleanup * intrinio cleanup * nasdaq cleanup * oecd cleanup * polygon cleanup * sec cleanup * seeking alpha cleanup * stockgrid cleanup * tiingo cleanup * tradingeconomics cleanup * ultima cleanup * wsj cleanup * yfinance cleanup * sec router lint * fix date query param description * Updates system and api settings (#5753) * remove uncessary import on rest api * remove FrozenField and add api.version * allow setup from json * remove id tag * computed field is better * formatting --------- Co-authored-by: Theodore Aptekarev * Squeeze build time (#5756) * squeeze build time * bug fix * fix test * typo? * rebuild * keep tradingeconomics * docs/working-docs: Working V4 Docs PR (#5747) * post-install clarification, fix links * more links * change word * toolkit cleanup * rename 'contributing' to 'development' * update extensions * some urls * Update sdk-platform and v4-develop in urls (#5730) * Update sdk-platform and v4-develop in urls * Seprate Intrinio financials data tags into a different command (#5723) * add `ebit` field in income statement standard model * only add required data tags * remove calculations data * use `name` key instead of `tag` key * set `period` as required in data * remove `period` and `cik` from provider models * add `equity/fundamental/search_financial_attributes` with tests * clean descriptions file * add `equity/fundamental/financial_attributes` with tests * set `value` as `Optional` * Fix threadpool test error (#5734) * Remove ultima from deps (#5736) * remove ultima from deps * skip ultima test * black… * Improve the example test (#6203) * Improve fetcher test error messages (#6204) * [Feature] Add Intrinio ETF Info/Search (#6198) * add intrinio etf info * black * should have been "x-unit_measurement" * field order thing * another field order * review things * [Enhancement] `ReferenceGenerator` class in `package_builder.py` (#6179) * fix docstrings in quantitative,technical,econometrics routers * add reference generator class to create reference.json file in openbb/assets folder * modify platform markdown generator script to not generate the reference.json file * get properly formatted examples for the website * modify get_field_type function * remove TODO comment * path change / to . * remove extra '-' below 'Args' in function docstring * get obbject extensions in extension_map.json * skew in stats_router had extra . rip * black * extra space (sigh) * modify get_provider_parameter_info func to use model_provider from provider interface * update lock files * black * Revert "update lock files" This reverts commit 13e7d8b280a910acd19959ae2ffac3cdab5a2818. * add function to check all extensions are installed before the markdow generator runs * better comment * fix docstring fix mypy obbject description function * black * 'static * remove duplicate standard params & data from reference data add standard params & data fields while generating markdown files * Final v3 touches (#6205) * remove ultima + althub * move twitter keys * Remove reports * Launch Message * Actual launch message * Correct leaving message * Update version * [BugFix] Fix empty docstring in data processing functions (#6206) * update etf static file update reference.json with changes * data processing docstrings can be empty use self._write func to create reference.json file * Release tasks * Missed the website files * Try manual trigger --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Theodore Aptekarev Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: teh_coderer Co-authored-by: hjoaquim Co-authored-by: Pratyush Shukla Co-authored-by: DidierRLopes Co-authored-by: Luqman Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com> Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Ayrton Parkinson Co-authored-by: northern-64bit <75195383+northern-64bit@users.noreply.github.com> Co-authored-by: Luqman Co-authored-by: Eric Li <38477812+EricLi-Dev@users.noreply.github.com> Co-authored-by: Diogo Sousa Co-authored-by: Andrew Co-authored-by: Michael Struwig Co-authored-by: capital0 <72140796+capital0@users.noreply.github.com> Co-authored-by: Ben Van Doren Co-authored-by: Adi Sai Co-authored-by: Sandip Saha Co-authored-by: Adwait <111136306+AdwaitSalankar@users.noreply.github.com> Co-authored-by: Abhishek Amar <66067391+abhishek-amar@users.noreply.github.com> Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: Mohamad Fadil Co-authored-by: Ramazan Co-authored-by: joshuabuildsthings Co-authored-by: wojda <114031148+polooner@users.noreply.github.com> Co-authored-by: Bim Phomthong <118195204+bimbolimbo@users.noreply.github.com> Co-authored-by: Ramazan Co-authored-by: omahs <73983677+omahs@users.noreply.github.com> --- .github/workflows/build-release.yml | 11 +- build/docker/compose.env | 2 +- build/nsis/setup.nsi | 8 +- .../OpenBB Terminal/OpenBB Terminal | 23 +- build/pyinstaller/version.rc | 4 +- .../openbb_core/app/static/package_builder.py | 447 +- .../openbb_core/provider/abstract/fetcher.py | 61 +- .../tests/app/static/test_package_builder.py | 5 - .../econometrics_router.py | 28 +- .../etf/integration/test_etf_api.py | 8 + .../etf/integration/test_etf_python.py | 8 + .../rolling/rolling_router.py | 24 +- .../openbb_quantitative/stats/stats_router.py | 9 +- .../openbb_technical/technical_router.py | 2 + .../extensions/tests/test_routers.py | 1 + .../extensions/tests/utils/helpers.py | 12 + .../extensions/tests/utils/router_testers.py | 23 +- .../openbb/assets/extension_map.json | 1 + openbb_platform/openbb/assets/module_map.json | 152 - openbb_platform/openbb/assets/reference.json | 23089 ++++++++++++++++ openbb_platform/openbb/package/etf.py | 282 +- .../intrinio/openbb_intrinio/__init__.py | 4 + .../openbb_intrinio/models/etf_info.py | 655 + .../openbb_intrinio/models/etf_search.py | 144 + .../openbb_intrinio/utils/references.py | 24 + .../test_intrinio_etf_info_fetcher.yaml | 184 + .../test_intrinio_etf_search_fetcher.yaml | 621 + .../intrinio/tests/test_intrinio_fetchers.py | 20 + openbb_terminal/core/models/system_model.py | 2 +- .../reports/templates/equity.ipynb | 2 +- openbb_terminal/terminal_controller.py | 8 - openbb_terminal/terminal_helper.py | 38 +- poetry.lock | 58 +- pyproject.toml | 4 +- .../terminal/changelog/version2_0_0.mdx | 2 +- .../terminal/changelog/version2_1_0.mdx | 2 +- .../terminal/changelog/version2_2_0.mdx | 2 +- .../terminal/changelog/version2_3_0.mdx | 2 +- .../terminal/changelog/version2_3_1.mdx | 2 +- .../terminal/changelog/version2_4_0.mdx | 2 +- .../terminal/changelog/version2_4_1.mdx | 2 +- .../terminal/changelog/version2_5_0.mdx | 2 +- .../terminal/changelog/version2_5_1.mdx | 2 +- .../terminal/changelog/version3_0_0.mdx | 2 +- .../terminal/changelog/version3_0_1.mdx | 2 +- .../terminal/changelog/version3_1_0.mdx | 2 +- .../terminal/changelog/version3_2_0.mdx | 2 +- .../terminal/changelog/version3_2_1.mdx | 2 +- .../terminal/changelog/version3_2_2.mdx | 2 +- .../terminal/changelog/version3_2_3.mdx | 2 +- .../terminal/changelog/version3_2_4.mdx | 6 +- .../terminal/changelog/version3_2_5.mdx | 11 + .../content/terminal/installation/macos.md | 2 +- website/content/terminal/installation/pypi.md | 10 +- .../content/terminal/installation/windows.md | 2 +- website/generate_platform_v4_markdown.py | 817 +- website/pypi.md | 2 +- 57 files changed, 25920 insertions(+), 926 deletions(-) delete mode 100644 openbb_platform/openbb/assets/module_map.json create mode 100644 openbb_platform/openbb/assets/reference.json create mode 100644 openbb_platform/providers/intrinio/openbb_intrinio/models/etf_info.py create mode 100644 openbb_platform/providers/intrinio/openbb_intrinio/models/etf_search.py create mode 100644 openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_info_fetcher.yaml create mode 100644 openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_search_fetcher.yaml create mode 100644 website/content/terminal/changelog/version3_2_5.mdx diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index f190c65a959a..cdcb8ca708ef 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -11,6 +11,8 @@ on: push: branches: - release/v3/* + workflow_dispatch: + concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -39,12 +41,3 @@ jobs: workflow: macos-build.yml token: ${{ secrets.GITHUB_TOKEN }} wait-for-completion-timeout: 2h - - trigger-docker-build: - runs-on: ubuntu-latest - steps: - - name: Trigger docker Build - uses: aurelien-baudet/workflow-dispatch@v2 - with: - workflow: docker-build.yml - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/build/docker/compose.env b/build/docker/compose.env index 683cafaf6c2a..bc8a9bcb697b 100644 --- a/build/docker/compose.env +++ b/build/docker/compose.env @@ -1,2 +1,2 @@ OPENBBTERMINAL_DOCKER_REGISTRY="ghcr.io" -OPENBBTERMINAL_DOCKER_RELEASE_VERSION="3.2.4" +OPENBBTERMINAL_DOCKER_RELEASE_VERSION="3.2.5" diff --git a/build/nsis/setup.nsi b/build/nsis/setup.nsi index a9948736ae51..c3f23890cd68 100644 --- a/build/nsis/setup.nsi +++ b/build/nsis/setup.nsi @@ -10,18 +10,18 @@ !define NAME "OpenBB Terminal" !define COMPANY "OpenBB" !define APPFILE "OpenBBTerminal.exe" - !define VERSION "3.2.4" + !define VERSION "3.2.5" !define SLUG "${NAME} v${VERSION}" ;-------------------------------- ; Info for Installer.exe - VIProductVersion 3.2.4.0 + VIProductVersion 3.2.5.0 VIAddVersionKey ProductName "OpenBB Terminal" VIAddVersionKey Comments "An installer for OpenBB Terminal. For additional details, visit OpenBB.co" VIAddVersionKey CompanyName OpenBB.co VIAddVersionKey FileDescription "OpenBB Terminal Program" - VIAddVersionKey FileVersion 3.2.4.0 - VIAddVersionKey ProductVersion 3.2.4.0 + VIAddVersionKey FileVersion 3.2.5.0 + VIAddVersionKey ProductVersion 3.2.5.0 VIAddVersionKey InternalName "OpenBB Terminal" ;-------------------------------- diff --git a/build/pyinstaller/macOS_package_assets/OpenBB Terminal/OpenBB Terminal b/build/pyinstaller/macOS_package_assets/OpenBB Terminal/OpenBB Terminal index efe4bff9aec0..455e34ab2fb8 100755 --- a/build/pyinstaller/macOS_package_assets/OpenBB Terminal/OpenBB Terminal +++ b/build/pyinstaller/macOS_package_assets/OpenBB Terminal/OpenBB Terminal @@ -16,25 +16,16 @@ echo " |___/ " BOOTUP_MESSAGE=" The boot up process might take a while. Please be patient... -We will be deprecating the OpenBBTerminal in the future and this will be the final release. +OpenBB Terminal v3.2.5 will be the last version of this Terminal. - We have been working hard to build the OpenBB platform and we will be releasing a CLI version of the platform in the coming - months where you can customize your experience and explore all of the data available on the OpenBB platform. +To continue our mission of democratizing investment research, we are working on a new open-source CLI tool built on top of the OpenBB Platform that will soon be available to everyone for free on my.openbb.co. +Join us on social media to be among the first to hear the news. + +Discord: openbb.co/discord +Twitter: openbb.co/twitter +LinkedIn: openbb.co/linkedin " echo "$BOOTUP_MESSAGE" -# Add some messages we can print out -messages=("" "" "" "" \ -"Did you know that you can search for stocks from a given country by running stocks/search --exchangecountry COUNTRY" \ -"" "" "" \ -"You can jump between menus by starting your command with a backslash. To go from funds to stocks/fa, you can run /stocks/fa" \ -"" "" "" \ -"Every command has a help flag. To access this use the -h flag after your command.") - - -# Pick a random one -index=$((RANDOM % ${#messages[@]})) -echo ${messages[$index]} - "$SCRIPTDIR"/.OpenBB/OpenBBTerminal diff --git a/build/pyinstaller/version.rc b/build/pyinstaller/version.rc index 63b485dbd883..8a232ed040db 100644 --- a/build/pyinstaller/version.rc +++ b/build/pyinstaller/version.rc @@ -32,10 +32,10 @@ VSVersionInfo( [StringStruct('Comments', 'The OpenBB Terminal. For additional details, visit OpenBB.co'), StringStruct('CompanyName', 'OpenBB'), StringStruct('FileDescription', 'OpenBB Terminal Program'), - StringStruct('FileVersion', '3.2.4.0'), + StringStruct('FileVersion', '5.0'), StringStruct('InternalName', 'OpenBB Terminal'), StringStruct('ProductName', 'OpenBB Terminal'), - StringStruct('ProductVersion', '3.2.4.0')]) + StringStruct('ProductVersion', '3.2.5.0')]) ]), VarFileInfo([VarStruct('Translation', [1033, 1200])]) ] diff --git a/openbb_platform/core/openbb_core/app/static/package_builder.py b/openbb_platform/core/openbb_core/app/static/package_builder.py index 20b2fc433a8e..a784e5e81645 100644 --- a/openbb_platform/core/openbb_core/app/static/package_builder.py +++ b/openbb_platform/core/openbb_core/app/static/package_builder.py @@ -3,6 +3,7 @@ # pylint: disable=too-many-lines import builtins import inspect +import re import shutil import sys from dataclasses import Field @@ -10,6 +11,7 @@ from json import dumps, load from pathlib import Path from typing import ( + Any, Callable, Dict, List, @@ -112,9 +114,9 @@ def build( self._clean(modules) ext_map = self._get_extension_map() self._save_extension_map(ext_map) - self._save_module_map() self._save_modules(modules, ext_map) self._save_package() + self._save_reference_file() if self.lint: self._run_linters() @@ -147,17 +149,6 @@ def _save_extension_map(self, ext_map: Dict[str, List[str]]) -> None: self.console.log("Writing extension map...") self._write(code=code, name="extension_map", extension="json", folder="assets") - def _save_module_map(self): - """Save the module map.""" - route_map = PathHandler.build_route_map() - path_list = PathHandler.build_path_list(route_map=route_map) - module_map = { - PathHandler.build_module_name(path=path): path for path in path_list - } - code = dumps(obj=dict(sorted(module_map.items())), indent=4) - self.console.log("\nWriting module map...") - self._write(code=code, name="module_map", extension="json", folder="assets") - def _save_modules( self, modules: Optional[Union[str, List[str]]] = None, @@ -194,6 +185,13 @@ def _save_package(self): code = "### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###\n" self._write(code=code, name="__init__") + def _save_reference_file(self): + """Save the reference.json file.""" + self.console.log("\nWriting reference file...") + data = ReferenceGenerator.get_reference_data() + code = dumps(obj=data, indent=4) + self._write(code=code, name="reference", extension="json", folder="assets") + def _run_linters(self): """Run the linters.""" self.console.log("\nRunning linters...") @@ -886,12 +884,14 @@ class DocstringGenerator: @staticmethod def get_field_type( - field: FieldInfo, target: Literal["docstring", "website"] = "docstring" + field_type: Any, + is_required: bool, + target: Literal["docstring", "website"] = "docstring", ) -> str: """Get the implicit data type of a defined Pydantic field. - Args - ---- + Parameters + ---------- field (FieldInfo): Pydantic field object containing field information. target (Literal["docstring", "website"], optional): Target to return type for. Defaults to "docstring". @@ -899,10 +899,10 @@ def get_field_type( ------- str: String representation of the field type. """ - is_optional = not field.is_required() if target == "docstring" else False + is_optional = not is_required try: - _type = field.annotation + _type = field_type if "BeforeValidator" in str(_type): _type = "Optional[int]" if is_optional else "int" # type: ignore @@ -918,38 +918,47 @@ def get_field_type( .replace("NoneType", "None") .replace(", None", "") ) + field_type = ( f"Optional[{field_type}]" if is_optional and "Optional" not in str(_type) else field_type ) + + if target == "website": + field_type = re.sub(r"Optional\[(.*)\]", r"\1", field_type) + field_type = re.sub(r"Annotated\[(.*)\]", r"\1", field_type) + + return field_type + except TypeError: # Fallback to the annotation if the repr fails - field_type = field.annotation # type: ignore - - return field_type + return field_type # type: ignore @staticmethod def get_OBBject_description( results_type: str, providers: Optional[str], + target: Literal["docstring", "website"] = "docstring", ) -> str: """Get the command output description.""" available_providers = providers or "Optional[str]" + indent = 2 if target == "docstring" else 0 obbject_description = ( - f"{create_indent(2)}OBBject\n" - f"{create_indent(3)}results : {results_type}\n" - f"{create_indent(4)}Serializable results.\n" - f"{create_indent(3)}provider : {available_providers}\n" - f"{create_indent(4)}Provider name.\n" - f"{create_indent(3)}warnings : Optional[List[Warning_]]\n" - f"{create_indent(4)}List of warnings.\n" - f"{create_indent(3)}chart : Optional[Chart]\n" - f"{create_indent(4)}Chart object.\n" - f"{create_indent(3)}extra : Dict[str, Any]\n" - f"{create_indent(4)}Extra info.\n" + f"{create_indent(indent)}OBBject\n" + f"{create_indent(indent+1)}results : {results_type}\n" + f"{create_indent(indent+2)}Serializable results.\n" + f"{create_indent(indent+1)}provider : {available_providers}\n" + f"{create_indent(indent+2)}Provider name.\n" + f"{create_indent(indent+1)}warnings : Optional[List[Warning_]]\n" + f"{create_indent(indent+2)}List of warnings.\n" + f"{create_indent(indent+1)}chart : Optional[Chart]\n" + f"{create_indent(indent+2)}Chart object.\n" + f"{create_indent(indent+1)}extra : Dict[str, Any]\n" + f"{create_indent(indent+2)}Extra info.\n" ) + obbject_description = obbject_description.replace("NoneType", "None") return obbject_description @@ -1066,7 +1075,7 @@ def get_param_info(parameter: Parameter) -> Tuple[str, str]: docstring += f"{create_indent(2)}{underline}\n" for name, field in returns.items(): - field_type = cls.get_field_type(field) + field_type = cls.get_field_type(field.annotation, field.is_required()) description = getattr(field, "description", "") docstring += f"{create_indent(2)}{field.alias or name} : {field_type}\n" docstring += f"{create_indent(3)}{format_description(description)}\n" @@ -1190,3 +1199,377 @@ def build_module_class(cls, path: str) -> str: if not path: return "Extensions" return f"ROUTER_{cls.clean_path(path=path)}" + + +class ReferenceGenerator: + """Generate the reference for the Platform.""" + + REFERENCE_FIELDS = [ + "deprecated", + "description", + "examples", + "parameters", + "returns", + "data", + ] + + # pylint: disable=protected-access + pi = DocstringGenerator.provider_interface + + @classmethod + def get_endpoint_examples( + cls, + path: str, + func: Callable, + examples: Optional[List[Example]], + ) -> str: + """Get the examples for the given standard model or function. + + For a given standard model or function, the examples are fetched from the + list of Example objects and formatted into a string. + + Parameters + ---------- + path (str): + Path of the router. + func (Callable): + Router endpoint function. + examples (Optional[List[Example]]): + List of Examples (APIEx or PythonEx type) + for the endpoint. + + Returns + ------- + str: + Formatted string containing the examples for the endpoint. + """ + sig = signature(func) + parameter_map = dict(sig.parameters) + formatted_params = MethodDefinition.format_params( + path=path, parameter_map=parameter_map + ) + explicit_params = dict(formatted_params) + explicit_params.pop("extra_params", None) + param_types = {k: v.annotation for k, v in explicit_params.items()} + + return DocstringGenerator.build_examples( + path.replace("/", "."), + param_types, + examples, + "website", + ) + + @classmethod + def get_provider_parameter_info(cls, model: str) -> Dict[str, str]: + """Get the name, type, description, default value and optionality information for the provider parameter. + + Parameters + ---------- + model (str): + Standard model to access the model providers. + + Returns + ------- + Dict[str, str]: + Dictionary of the provider parameter information + """ + pi_model_provider = cls.pi.model_providers[model] + provider_params_field = pi_model_provider.__dataclass_fields__["provider"] + + name = provider_params_field.name + field_type = DocstringGenerator.get_field_type( + provider_params_field.type, False, "website" + ) + default = provider_params_field.type.__args__[0] + description = ( + "The provider to use for the query, by default None. " + "If None, the provider specified in defaults is selected " + f"or '{default}' if there is no default." + ) + + provider_parameter_info = { + "name": name, + "type": field_type, + "description": description, + "default": default, + "optional": True, + } + + return provider_parameter_info + + @classmethod + def get_provider_field_params( + cls, + model: str, + params_type: str, + provider: str = "openbb", + ) -> List[Dict[str, Any]]: + """Get the fields of the given parameter type for the given provider of the standard_model. + + Parameters + ---------- + model (str): + Model name to access the provider interface + params_type (str): + Parameters to fetch data for (QueryParams or Data) + provider (str, optional): + Provider name. Defaults to "openbb". + + Returns + ------- + List[Dict[str, str]]: + List of dictionaries containing the field name, type, description, default, + optional flag and standard flag for each provider. + """ + provider_field_params = [] + expanded_types = MethodDefinition.TYPE_EXPANSION + model_map = cls.pi._map[model] # pylint: disable=protected-access + + for field, field_info in model_map[provider][params_type]["fields"].items(): + # Determine the field type, expanding it if necessary and if params_type is "Parameters" + field_type = field_info.annotation + is_required = field_info.is_required() + field_type = DocstringGenerator.get_field_type( + field_type, is_required, "website" + ) + + if params_type == "QueryParams" and field in expanded_types: + expanded_type = DocstringGenerator.get_field_type( + expanded_types[field], is_required, "website" + ) + field_type = f"Union[{field_type}, {expanded_type}]" + + cleaned_description = ( + str(field_info.description) + .strip().replace("\n", " ").replace(" ", " ").replace('"', "'") + ) # fmt: skip + + # Add information for the providers supporting multiple symbols + if params_type == "QueryParams" and field_info.json_schema_extra: + multiple_items_list = field_info.json_schema_extra.get( + "multiple_items_allowed", None + ) + if multiple_items_list: + multiple_items = ", ".join(multiple_items_list) + cleaned_description += ( + f" Multiple items allowed for provider(s): {multiple_items}." + ) + # Manually setting to List[] for multiple items + # Should be removed if TYPE_EXPANSION is updated to include this + field_type = f"Union[{field_type}, List[{field_type}]]" + + default_value = "" if field_info.default is PydanticUndefined else str(field_info.default) # fmt: skip + + provider_field_params.append( + { + "name": field, + "type": field_type, + "description": cleaned_description, + "default": default_value, + "optional": not is_required, + } + ) + + return provider_field_params + + @staticmethod + def get_post_method_parameters_info( + docstring: str, + ) -> List[Dict[str, Union[bool, str]]]: + """Get the parameters for the POST method endpoints. + + Parameters + ---------- + docstring (str): + Router endpoint function's docstring + + Returns + ------- + List[Dict[str, str]]: + List of dictionaries containing the name,type, description, default + and optionality of each parameter. + """ + parameters_list = [] + + # Define a regex pattern to match parameter blocks + # This pattern looks for a parameter name followed by " : ", then captures the type and description + pattern = re.compile( + r"\n\s*(?P\w+)\s*:\s*(?P[^\n]+?)(?:\s*=\s*(?P[^\n]+))?\n\s*(?P[^\n]+)" + ) + + # Find all matches in the docstring + matches = pattern.finditer(docstring) + + if matches: + # Iterate over the matches to extract details + for match in matches: + # Extract named groups as a dictionary + param_info = match.groupdict() + + # Determine if the parameter is optional + is_optional = "Optional" in param_info["type"] + + # If no default value is captured, set it to an empty string + default_value = ( + param_info["default"] if param_info["default"] is not None else "" + ) + + # Create a new dictionary with fields in the desired order + param_dict = { + "name": param_info["name"], + "type": param_info["type"], + "description": param_info["description"], + "default": default_value, + "optional": is_optional, + } + + # Append the dictionary to the list + parameters_list.append(param_dict) + + return parameters_list + + @staticmethod + def get_post_method_returns_info(docstring: str) -> str: + """Get the returns information for the POST method endpoints. + + Parameters + ---------- + docstring (str): + Router endpoint function's docstring + + Returns + ------- + Dict[str, str]: + Dictionary containing the name, type, description of the return value + """ + return_info = "" + + # Define a regex pattern to match the Returns section + # This pattern captures the model name inside "OBBject[]" and its description + match = re.search(r"Returns\n\s*-------\n\s*([^\n]+)\n\s*([^\n]+)", docstring) + + if match: + return_type = match.group(1).strip() # type: ignore + # Remove newlines and indentation from the description + description = match.group(2).strip().replace("\n", "").replace(" ", "") # type: ignore + # Adjust regex to correctly capture content inside brackets, including nested brackets + content_inside_brackets = re.search( + r"OBBject\[\s*((?:[^\[\]]|\[[^\[\]]*\])*)\s*\]", return_type + ) + return_type_content = content_inside_brackets.group(1) # type: ignore + + return_info = ( + f"OBBject\n" + f"{create_indent(1)}results : {return_type_content}\n" + f"{create_indent(2)}{description}" + ) + + return return_info + + @classmethod + def get_reference_data(cls) -> Dict[str, Dict[str, Any]]: + """Get the reference data for the Platform. + + The reference data is a dictionary containing the description, parameters, + returns and examples for each endpoint. This is currently useful for + automating the creation of the website documentation files. + + Returns + ------- + Dict[str, Dict[str, Any]]: + Dictionary containing the description, parameters, returns and + examples for each endpoint. + """ + reference: Dict[str, Dict] = {} + route_map = PathHandler.build_route_map() + + for path, route in route_map.items(): + # Initialize the reference fields as empty dictionaries + reference[path] = {field: {} for field in cls.REFERENCE_FIELDS} + # Route method is used to distinguish between GET and POST methods + route_method = getattr(route, "methods", None) + # Route endpoint is the callable function + route_func = getattr(route, "endpoint", None) + # Attribute contains the model and examples info for the endpoint + openapi_extra = getattr(route, "openapi_extra", {}) + # Standard model is used as the key for the ProviderInterface Map dictionary + standard_model = openapi_extra.get("model", "") + # Add endpoint model for GET methods + reference[path]["model"] = standard_model + # Add endpoint deprecation details + reference[path]["deprecated"] = { + "flag": MethodDefinition.is_deprecated_function(path), + "message": MethodDefinition.get_deprecation_message(path), + } + # Add endpoint examples + examples = openapi_extra.get("examples", []) + reference[path]["examples"] = cls.get_endpoint_examples( + path, route_func, examples # type: ignore + ) + # Add data for the endpoints having a standard model + if route_method == {"GET"}: + reference[path]["description"] = getattr( + route, "description", "No description available." + ) + # Access model map from the ProviderInterface + model_map = cls.pi._map[ + standard_model + ] # pylint: disable=protected-access + + for provider in model_map: + if provider == "openbb": + # openbb provider is always present hence its the standard field + reference[path]["parameters"]["standard"] = ( + cls.get_provider_field_params(standard_model, "QueryParams") + ) + # Add `provider` parameter fields to the openbb provider + provider_parameter_fields = cls.get_provider_parameter_info( + standard_model + ) + reference[path]["parameters"]["standard"].append( + provider_parameter_fields + ) + + # Add endpoint data fields for standard provider + reference[path]["data"]["standard"] = ( + cls.get_provider_field_params(standard_model, "Data") + ) + continue + # Adds provider specific parameter fields to the reference + reference[path]["parameters"][provider] = ( + cls.get_provider_field_params( + standard_model, "QueryParams", provider + ) + ) + # Adds provider specific data fields to the reference + reference[path]["data"][provider] = cls.get_provider_field_params( + standard_model, "Data", provider + ) + # Add endpoint returns data + # Currently only OBBject object is returned + providers = provider_parameter_fields["type"] + reference[path]["returns"]["OBBject"] = ( + DocstringGenerator.get_OBBject_description( + standard_model, providers, "website" + ) + ) + # Add data for the endpoints without a standard model (data processing endpoints) + elif route_method == {"POST"}: + # POST method router `description` attribute is unreliable as it may or + # may not contain the "Parameters" and "Returns" sections. Hence, the + # endpoint function docstring is used instead. + docstring = getattr(route_func, "__doc__", "") + description = docstring.split("Parameters")[0].strip() + # Remove extra spaces in between the string + reference[path]["description"] = re.sub(" +", " ", description) + # Add endpoint parameters fields for POST methods + reference[path]["parameters"]["standard"] = ( + ReferenceGenerator.get_post_method_parameters_info(docstring) + ) + # Add endpoint returns data + # Currently only OBBject object is returned + reference[path]["returns"]["OBBject"] = ( + cls.get_post_method_returns_info(docstring) + ) + + return reference diff --git a/openbb_platform/core/openbb_core/provider/abstract/fetcher.py b/openbb_platform/core/openbb_core/provider/abstract/fetcher.py index 44d74e3a7457..4ff3482118af 100644 --- a/openbb_platform/core/openbb_core/provider/abstract/fetcher.py +++ b/openbb_platform/core/openbb_core/provider/abstract/fetcher.py @@ -1,7 +1,7 @@ """Abstract class for the fetcher.""" -# ruff: noqa: S101 -# pylint: disable=E1101 +# ruff: noqa: S101, E501 +# pylint: disable=E1101, C0301 from typing import ( Any, @@ -142,39 +142,49 @@ def test( transformed_data = cls.transform_data(query=query, data=data, **kwargs) # Class Assertions - assert isinstance(cls.require_credentials, bool) + assert isinstance( + cls.require_credentials, bool + ), "require_credentials must be a boolean." # Query Assertions - assert query - assert issubclass(type(query), cls.query_params_type) - assert all(getattr(query, key) == value for key, value in params.items()) + assert query, "Query must not be None." + assert issubclass( + type(query), cls.query_params_type + ), f"Query type mismatch. Expected: {cls.query_params_type} Got: {type(query)}" + assert all( + getattr(query, key) == value for key, value in params.items() + ), f"Query must have the correct values. Expected: {params} Got: {query.__dict__}" # Data Assertions if not isinstance(data, DataFrame): - assert data + assert data, "Data must not be None." else: - assert not data.empty + assert not data.empty, "Data must not be empty." is_list = isinstance(data, list) if is_list: assert all( field in data[0] for field in cls.data_type.__fields__ if field in data[0] - ) + ), f"Data must have the correct fields. Expected: {cls.data_type.__fields__} Got: {data[0].__dict__}" # This makes sure that the data is not transformed yet so that the # pipeline is implemented correctly. We can remove this assertion if we # want to be less strict. - assert issubclass(type(data[0]), cls.data_type) is False + assert ( + issubclass(type(data[0]), cls.data_type) is False + ), f"Data must not be transformed yet. Expected: {cls.data_type} Got: {type(data[0])}" else: assert all( field in data for field in cls.data_type.__fields__ if field in data - ) - assert issubclass(type(data), cls.data_type) is False + ), f"Data must have the correct fields. Expected: {cls.data_type.__fields__} Got: {data.__dict__}" + assert ( + issubclass(type(data), cls.data_type) is False + ), f"Data must not be transformed yet. Expected: {cls.data_type} Got: {type(data)}" - assert len(data) > 0 + assert len(data) > 0, "Data must not be empty." # Transformed Data Assertions - assert transformed_data + assert transformed_data, "Transformed data must not be None." is_list = isinstance(transformed_data, list) if is_list: @@ -190,20 +200,25 @@ def test( return_type_fields = return_type_args.__fields__ return_type = return_type_args - assert len(transformed_data) > 0 # type: ignore + assert len(transformed_data) > 0, "Transformed data must not be empty." # type: ignore assert all( - field in transformed_data[0].__dict__ # type: ignore - for field in return_type_fields - ) - assert issubclass(type(transformed_data[0]), cls.data_type) # type: ignore + field in transformed_data[0].__dict__ for field in return_type_fields # type: ignore + ), f"Transformed data must have the correct fields. Expected: {return_type_fields} Got: {transformed_data[0].__dict__}" # type: ignore assert issubclass( + type(transformed_data[0]), cls.data_type # type: ignore + ), f"Transformed data must be of the correct type. Expected: {cls.data_type} Got: {type(transformed_data[0])}" # type: ignore + assert issubclass( # type: ignore type(transformed_data[0]), # type: ignore return_type, - ) + ), f"Transformed data must be of the correct type. Expected: {return_type} Got: {type(transformed_data[0])}" # type: ignore else: assert all( field in transformed_data.__dict__ for field in cls.return_type.__fields__ - ) - assert issubclass(type(transformed_data), cls.data_type) - assert issubclass(type(transformed_data), cls.return_type) + ), f"Transformed data must have the correct fields. Expected: {cls.return_type.__fields__} Got: {transformed_data.__dict__}" + assert issubclass( + type(transformed_data), cls.data_type + ), f"Transformed data must be of the correct type. Expected: {cls.data_type} Got: {type(transformed_data)}" + assert issubclass( + type(transformed_data), cls.return_type + ), f"Transformed data must be of the correct type. Expected: {cls.return_type} Got: {type(transformed_data)}" diff --git a/openbb_platform/core/tests/app/static/test_package_builder.py b/openbb_platform/core/tests/app/static/test_package_builder.py index eb1fe3a1d2e2..aa7c00294757 100644 --- a/openbb_platform/core/tests/app/static/test_package_builder.py +++ b/openbb_platform/core/tests/app/static/test_package_builder.py @@ -46,11 +46,6 @@ def test_package_builder_build(package_builder): package_builder.build() -def test_save_module_map(package_builder): - """Test save module map.""" - package_builder._save_module_map() - - def test_save_modules(package_builder): """Test save module.""" package_builder._save_modules() diff --git a/openbb_platform/extensions/econometrics/openbb_econometrics/econometrics_router.py b/openbb_platform/extensions/econometrics/openbb_econometrics/econometrics_router.py index bb9f2bd9a43d..f4c8f48386e5 100644 --- a/openbb_platform/extensions/econometrics/openbb_econometrics/econometrics_router.py +++ b/openbb_platform/extensions/econometrics/openbb_econometrics/econometrics_router.py @@ -58,7 +58,7 @@ def correlation_matrix(data: List[Data]) -> OBBject[List[Data]]: Returns ------- - OBBject[List[Data]]: + OBBject[List[Data]] Correlation matrix. """ df = basemodel_to_df(data) @@ -120,7 +120,7 @@ def ols_regression( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the results being model and results objects. """ X = sm.add_constant(get_target_columns(basemodel_to_df(data), x_columns)) @@ -169,7 +169,7 @@ def ols_regression_summary( Returns ------- - OBBject[Data]: + OBBject[Data] OBBject with the results being summary object. """ X = sm.add_constant(get_target_columns(basemodel_to_df(data), x_columns)) @@ -260,7 +260,7 @@ def autocorrelation( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the results being the score from the test. """ X = sm.add_constant(get_target_columns(basemodel_to_df(data), x_columns)) @@ -317,7 +317,7 @@ def residual_autocorrelation( Returns ------- - OBBject[Data]: + OBBject[Data] OBBject with the results being the score from the test. """ X = sm.add_constant(get_target_columns(basemodel_to_df(data), x_columns)) @@ -374,7 +374,7 @@ def cointegration( Returns ------- - OBBject[Data]: + OBBject[Data] OBBject with the results being the score from the test. """ pairs = list(combinations(columns, 2)) @@ -450,7 +450,7 @@ def causality( Returns ------- - OBBject[Data]: + OBBject[Data] OBBject with the results being the score from the test. """ X = get_target_column(basemodel_to_df(data), x_column) @@ -518,7 +518,7 @@ def unit_root( Returns ------- - OBBject[Data]: + OBBject[Data] OBBject with the results being the score from the test. """ dataset = get_target_column(basemodel_to_df(data), column) @@ -568,7 +568,7 @@ def panel_random_effects( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the fit model returned """ X = get_target_columns(basemodel_to_df(data), x_columns) @@ -615,7 +615,7 @@ def panel_between( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the fit model returned """ X = get_target_columns(basemodel_to_df(data), x_columns) @@ -661,7 +661,7 @@ def panel_pooled( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the fit model returned """ X = get_target_columns(basemodel_to_df(data), x_columns) @@ -706,7 +706,7 @@ def panel_fixed( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the fit model returned """ X = get_target_columns(basemodel_to_df(data), x_columns) @@ -751,7 +751,7 @@ def panel_first_difference( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the fit model returned """ X = get_target_columns(basemodel_to_df(data), x_columns) @@ -797,7 +797,7 @@ def panel_fmac( Returns ------- - OBBject[Dict]: + OBBject[Dict] OBBject with the fit model returned """ X = get_target_columns(basemodel_to_df(data), x_columns) diff --git a/openbb_platform/extensions/etf/integration/test_etf_api.py b/openbb_platform/extensions/etf/integration/test_etf_api.py index 0baccbd72b02..b53b4bfb2b12 100644 --- a/openbb_platform/extensions/etf/integration/test_etf_api.py +++ b/openbb_platform/extensions/etf/integration/test_etf_api.py @@ -32,6 +32,13 @@ def headers(): "use_cache": False, } ), + ( + { + "query": "vanguard", + "provider": "intrinio", + "exchange": "arcx", + } + ), ], ) @pytest.mark.integration @@ -235,6 +242,7 @@ def test_etf_historical(params, headers): ({"symbol": "IOO", "provider": "fmp"}), ({"symbol": "XIU", "provider": "tmx", "use_cache": False}), ({"symbol": "QQQ", "provider": "yfinance"}), + ({"symbol": "IOO,QQQ", "provider": "intrinio"}), ], ) @pytest.mark.integration diff --git a/openbb_platform/extensions/etf/integration/test_etf_python.py b/openbb_platform/extensions/etf/integration/test_etf_python.py index 9329a1cdada6..6f76921edb57 100644 --- a/openbb_platform/extensions/etf/integration/test_etf_python.py +++ b/openbb_platform/extensions/etf/integration/test_etf_python.py @@ -31,6 +31,13 @@ def obb(pytestconfig): # pylint: disable=inconsistent-return-statements "use_cache": False, } ), + ( + { + "query": "vanguard", + "provider": "intrinio", + "exchange": "arcx", + } + ), ], ) @pytest.mark.integration @@ -230,6 +237,7 @@ def test_etf_historical(params, obb): ({"symbol": "IOO", "provider": "fmp"}), ({"symbol": "XIU", "provider": "tmx", "use_cache": False}), ({"symbol": "QQQ", "provider": "yfinance"}), + ({"symbol": "IOO,QQQ", "provider": "intrinio"}), ], ) @pytest.mark.integration diff --git a/openbb_platform/extensions/quantitative/openbb_quantitative/rolling/rolling_router.py b/openbb_platform/extensions/quantitative/openbb_quantitative/rolling/rolling_router.py index fb02b5f051a7..34ef9be67a1b 100644 --- a/openbb_platform/extensions/quantitative/openbb_quantitative/rolling/rolling_router.py +++ b/openbb_platform/extensions/quantitative/openbb_quantitative/rolling/rolling_router.py @@ -76,7 +76,6 @@ def skew( Rolling skew. """ - df = basemodel_to_df(data, index=index) series_target = get_target_column(df, target) series_target.name = f"rolling_skew_{window}" @@ -132,7 +131,7 @@ def variance( index: str, optional The name of the index column, default is "date". - Returns: + Returns ------- OBBject[List[Data]] An object containing the rolling variance values. @@ -177,8 +176,8 @@ def stdev( Calculate the rolling standard deviation of a target column within a given window size. Standard deviation is a measure of the amount of variation or dispersion of a set of values. - It is widely used to assess the risk and volatility of financial returns or other time series data - over a specified rolling window. It is the square root of the variance. + It is widely used to assess the risk and volatility of financial returns or other time series data + over a specified rolling window. It is the square root of the variance. Parameters ---------- @@ -191,12 +190,11 @@ def stdev( index: str, optional The name of the index column, default is "date". - Returns: + Returns ------- OBBject[List[Data]] An object containing the rolling standard deviation values. """ - df = basemodel_to_df(data, index=index) series_target = get_target_column(df, target) series_target.name = f"rolling_stdev_{window}" @@ -255,12 +253,11 @@ def kurtosis( index: str, optional The name of the index column, default is "date". - Returns: + Returns ------- OBBject[List[Data]] An object containing the rolling kurtosis values. """ - df = basemodel_to_df(data, index=index) series_target = get_target_column(df, target) series_target.name = f"rolling_kurtosis_{window}" @@ -324,12 +321,11 @@ def quantile( index: str, optional The name of the index column, default is "date". - Returns: + Returns ------- OBBject[List[Data]] An object containing the rolling quantile values with the median. """ - df = basemodel_to_df(data, index=index) series_target = get_target_column(df, target) validate_window(series_target, window) @@ -398,11 +394,11 @@ def mean( index: str, optional The name of the index column, default is "date". - Returns: - OBBject[List[Data]] - An object containing the rolling mean values. + Returns + ------- + OBBject[List[Data]] + An object containing the rolling mean values. """ - df = basemodel_to_df(data, index=index) series_target = get_target_column(df, target) series_target.name = f"rolling_mean_{window}" diff --git a/openbb_platform/extensions/quantitative/openbb_quantitative/stats/stats_router.py b/openbb_platform/extensions/quantitative/openbb_quantitative/stats/stats_router.py index 41e93a160208..68be4b675cfc 100644 --- a/openbb_platform/extensions/quantitative/openbb_quantitative/stats/stats_router.py +++ b/openbb_platform/extensions/quantitative/openbb_quantitative/stats/stats_router.py @@ -50,7 +50,7 @@ def skew( data: List[Data], target: str, ) -> OBBject[List[Data]]: - """Get the skew. of the data set + """Get the skew of the data set. Skew is a statistical measure that reveals the degree of asymmetry of a distribution around its mean. Positive skewness indicates a distribution with an extended tail to the right, while negative skewness shows a tail @@ -70,7 +70,6 @@ def skew( OBBject[List[Data]] Rolling skew. """ - df = basemodel_to_df(data) series_target = get_target_column(df, target) results = pd.DataFrame([skew_(series_target)], columns=["skew"]) @@ -170,7 +169,6 @@ def stdev(data: List[Data], target: str) -> OBBject[List[Data]]: OBBject[List[Data]] An object containing the rolling standard deviation values. """ - df = basemodel_to_df(data) series_target = get_target_column(df, target) results = pd.DataFrame([std_dev_(series_target)], columns=["stdev"]) @@ -218,11 +216,10 @@ def kurtosis(data: List[Data], target: str) -> OBBject[List[Data]]: The name of the column for which to calculate kurtosis. Returns - ------ + ------- OBBject[List[Data]] An object containing the kurtosis value """ - df = basemodel_to_df(data) series_target = get_target_column(df, target) results = pd.DataFrame([kurtosis_(series_target)], columns=["kurtosis"]) @@ -278,7 +275,6 @@ def quantile( OBBject[List[Data]] An object containing the rolling quantile values with the median. """ - df = basemodel_to_df( data, ) @@ -335,7 +331,6 @@ def mean( OBBject[List[Data]] An object containing the mean value. """ - df = basemodel_to_df(data) series_target = get_target_column(df, target) results = pd.DataFrame([mean_(series_target)], columns=["mean"]) diff --git a/openbb_platform/extensions/technical/openbb_technical/technical_router.py b/openbb_platform/extensions/technical/openbb_technical/technical_router.py index b516585115ad..69405a3e3fe4 100644 --- a/openbb_platform/extensions/technical/openbb_technical/technical_router.py +++ b/openbb_platform/extensions/technical/openbb_technical/technical_router.py @@ -315,6 +315,7 @@ def adosc( Returns ------- OBBject[List[Data]] + The calculated data. """ validate_data(data, [fast, slow]) df = basemodel_to_df(data, index=index) @@ -1093,6 +1094,7 @@ def ad(data: List[Data], index: str = "date", offset: int = 0) -> OBBject[List[D Returns ------- OBBject[List[Data]] + The calculated data. """ df = basemodel_to_df(data, index=index) df_target = get_target_columns(df, ["high", "low", "close", "volume"]) diff --git a/openbb_platform/extensions/tests/test_routers.py b/openbb_platform/extensions/tests/test_routers.py index 863979dc4ffb..cc16eed757f5 100644 --- a/openbb_platform/extensions/tests/test_routers.py +++ b/openbb_platform/extensions/tests/test_routers.py @@ -25,6 +25,7 @@ def test_router_examples_rules() -> None: Rules: - All endpoints should have examples. - At least one example using all required parameters. + - All params are valid for the command. """ invalid_examples = check_router_command_examples() assert not invalid_examples, "\n".join(sorted(invalid_examples)) diff --git a/openbb_platform/extensions/tests/utils/helpers.py b/openbb_platform/extensions/tests/utils/helpers.py index 14ee9126f789..ac0d7aaaa9da 100644 --- a/openbb_platform/extensions/tests/utils/helpers.py +++ b/openbb_platform/extensions/tests/utils/helpers.py @@ -271,3 +271,15 @@ def get_required_fields(model: str) -> List[str]: """Get the required fields of a model.""" fields = pi.map[model]["openbb"]["QueryParams"]["fields"] return [field for field, info in fields.items() if info.is_required()] + + +def get_all_fields(model: str) -> List[str]: + """Get all the fields of a model.""" + all_fields: List[str] = [] + info = pi.map[model] + # for every key, grab the fields + for _, provider_info in info.items(): + for field, _ in provider_info["QueryParams"]["fields"].items(): + all_fields.append(field) + + return all_fields diff --git a/openbb_platform/extensions/tests/utils/router_testers.py b/openbb_platform/extensions/tests/utils/router_testers.py index 918b9e7850d6..27639b779ef7 100644 --- a/openbb_platform/extensions/tests/utils/router_testers.py +++ b/openbb_platform/extensions/tests/utils/router_testers.py @@ -11,6 +11,7 @@ collect_routers, find_decorator, find_missing_router_function_models, + get_all_fields, get_decorator_details, get_required_fields, import_routers, @@ -84,16 +85,28 @@ def check_api( examples: str, router_name: str, model: Optional[str], function: Any ) -> List[str]: """Check for API examples.""" - # Check if the endpoint has at least 1 example with all required fields api_example_violation: List[str] = [] parsed_examples = parse_example_string(examples) if model and "APIEx" in parsed_examples: - required_fields = get_required_fields(model.strip("'")) + required_fields = set(get_required_fields(model.strip("'"))) + all_fields = get_all_fields(model.strip("'")) + all_fields.append("provider") + required_fields_met = False + for api_example in parsed_examples["APIEx"]: params = ast.literal_eval(api_example.get("params", "{}")) - if len(set(params.keys()) - set(required_fields) - {"provider"}) == 0: - break - else: + if not required_fields_met and required_fields.issubset(params.keys()): + required_fields_met = True + + # Check for unsupported parameters + for param in params: + if param not in all_fields: + api_example_violation.append( + f"'{router_name}' > '{function.__name__}': param '{param}' is not supported by the command." + ) + + # If after checking all examples, required fields are still not met + if not required_fields_met: api_example_violation.append( f"'{router_name}' > '{function.__name__}': missing example with required fields only > {required_fields}" ) diff --git a/openbb_platform/openbb/assets/extension_map.json b/openbb_platform/openbb/assets/extension_map.json index c326eda7652f..74405cc2f074 100644 --- a/openbb_platform/openbb/assets/extension_map.json +++ b/openbb_platform/openbb/assets/extension_map.json @@ -12,6 +12,7 @@ "news@1.1.3", "regulators@1.1.3" ], + "openbb_obbject_extension": [], "openbb_provider_extension": [ "benzinga@1.1.3", "federal_reserve@1.1.3", diff --git a/openbb_platform/openbb/assets/module_map.json b/openbb_platform/openbb/assets/module_map.json deleted file mode 100644 index 0163f3c6803c..000000000000 --- a/openbb_platform/openbb/assets/module_map.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "__extensions__": "", - "crypto": "/crypto", - "crypto_price": "/crypto/price", - "crypto_price_historical": "/crypto/price/historical", - "crypto_search": "/crypto/search", - "currency": "/currency", - "currency_price": "/currency/price", - "currency_price_historical": "/currency/price/historical", - "currency_search": "/currency/search", - "currency_snapshots": "/currency/snapshots", - "derivatives": "/derivatives", - "derivatives_futures": "/derivatives/futures", - "derivatives_futures_curve": "/derivatives/futures/curve", - "derivatives_futures_historical": "/derivatives/futures/historical", - "derivatives_options": "/derivatives/options", - "derivatives_options_chains": "/derivatives/options/chains", - "derivatives_options_unusual": "/derivatives/options/unusual", - "economy": "/economy", - "economy_calendar": "/economy/calendar", - "economy_composite_leading_indicator": "/economy/composite_leading_indicator", - "economy_cpi": "/economy/cpi", - "economy_fred_regional": "/economy/fred_regional", - "economy_fred_search": "/economy/fred_search", - "economy_fred_series": "/economy/fred_series", - "economy_gdp": "/economy/gdp", - "economy_gdp_forecast": "/economy/gdp/forecast", - "economy_gdp_nominal": "/economy/gdp/nominal", - "economy_gdp_real": "/economy/gdp/real", - "economy_long_term_interest_rate": "/economy/long_term_interest_rate", - "economy_money_measures": "/economy/money_measures", - "economy_risk_premium": "/economy/risk_premium", - "economy_short_term_interest_rate": "/economy/short_term_interest_rate", - "economy_unemployment": "/economy/unemployment", - "equity": "/equity", - "equity_calendar": "/equity/calendar", - "equity_calendar_dividend": "/equity/calendar/dividend", - "equity_calendar_earnings": "/equity/calendar/earnings", - "equity_calendar_ipo": "/equity/calendar/ipo", - "equity_calendar_splits": "/equity/calendar/splits", - "equity_compare": "/equity/compare", - "equity_compare_peers": "/equity/compare/peers", - "equity_discovery": "/equity/discovery", - "equity_discovery_active": "/equity/discovery/active", - "equity_discovery_aggressive_small_caps": "/equity/discovery/aggressive_small_caps", - "equity_discovery_filings": "/equity/discovery/filings", - "equity_discovery_gainers": "/equity/discovery/gainers", - "equity_discovery_growth_tech": "/equity/discovery/growth_tech", - "equity_discovery_losers": "/equity/discovery/losers", - "equity_discovery_undervalued_growth": "/equity/discovery/undervalued_growth", - "equity_discovery_undervalued_large_caps": "/equity/discovery/undervalued_large_caps", - "equity_estimates": "/equity/estimates", - "equity_estimates_analyst_search": "/equity/estimates/analyst_search", - "equity_estimates_consensus": "/equity/estimates/consensus", - "equity_estimates_historical": "/equity/estimates/historical", - "equity_estimates_price_target": "/equity/estimates/price_target", - "equity_fundamental": "/equity/fundamental", - "equity_fundamental_balance": "/equity/fundamental/balance", - "equity_fundamental_balance_growth": "/equity/fundamental/balance_growth", - "equity_fundamental_cash": "/equity/fundamental/cash", - "equity_fundamental_cash_growth": "/equity/fundamental/cash_growth", - "equity_fundamental_dividends": "/equity/fundamental/dividends", - "equity_fundamental_employee_count": "/equity/fundamental/employee_count", - "equity_fundamental_filings": "/equity/fundamental/filings", - "equity_fundamental_historical_attributes": "/equity/fundamental/historical_attributes", - "equity_fundamental_historical_eps": "/equity/fundamental/historical_eps", - "equity_fundamental_historical_splits": "/equity/fundamental/historical_splits", - "equity_fundamental_income": "/equity/fundamental/income", - "equity_fundamental_income_growth": "/equity/fundamental/income_growth", - "equity_fundamental_latest_attributes": "/equity/fundamental/latest_attributes", - "equity_fundamental_management": "/equity/fundamental/management", - "equity_fundamental_management_compensation": "/equity/fundamental/management_compensation", - "equity_fundamental_metrics": "/equity/fundamental/metrics", - "equity_fundamental_multiples": "/equity/fundamental/multiples", - "equity_fundamental_overview": "/equity/fundamental/overview", - "equity_fundamental_ratios": "/equity/fundamental/ratios", - "equity_fundamental_reported_financials": "/equity/fundamental/reported_financials", - "equity_fundamental_revenue_per_geography": "/equity/fundamental/revenue_per_geography", - "equity_fundamental_revenue_per_segment": "/equity/fundamental/revenue_per_segment", - "equity_fundamental_search_attributes": "/equity/fundamental/search_attributes", - "equity_fundamental_trailing_dividend_yield": "/equity/fundamental/trailing_dividend_yield", - "equity_fundamental_transcript": "/equity/fundamental/transcript", - "equity_market_snapshots": "/equity/market_snapshots", - "equity_ownership": "/equity/ownership", - "equity_ownership_form_13f": "/equity/ownership/form_13f", - "equity_ownership_insider_trading": "/equity/ownership/insider_trading", - "equity_ownership_institutional": "/equity/ownership/institutional", - "equity_ownership_major_holders": "/equity/ownership/major_holders", - "equity_ownership_share_statistics": "/equity/ownership/share_statistics", - "equity_price": "/equity/price", - "equity_price_historical": "/equity/price/historical", - "equity_price_nbbo": "/equity/price/nbbo", - "equity_price_performance": "/equity/price/performance", - "equity_price_quote": "/equity/price/quote", - "equity_profile": "/equity/profile", - "equity_screener": "/equity/screener", - "equity_search": "/equity/search", - "equity_shorts": "/equity/shorts", - "equity_shorts_fails_to_deliver": "/equity/shorts/fails_to_deliver", - "etf": "/etf", - "etf_countries": "/etf/countries", - "etf_equity_exposure": "/etf/equity_exposure", - "etf_historical": "/etf/historical", - "etf_holdings": "/etf/holdings", - "etf_holdings_date": "/etf/holdings_date", - "etf_holdings_performance": "/etf/holdings_performance", - "etf_info": "/etf/info", - "etf_price_performance": "/etf/price_performance", - "etf_search": "/etf/search", - "etf_sectors": "/etf/sectors", - "fixedincome": "/fixedincome", - "fixedincome_corporate": "/fixedincome/corporate", - "fixedincome_corporate_commercial_paper": "/fixedincome/corporate/commercial_paper", - "fixedincome_corporate_hqm": "/fixedincome/corporate/hqm", - "fixedincome_corporate_ice_bofa": "/fixedincome/corporate/ice_bofa", - "fixedincome_corporate_moody": "/fixedincome/corporate/moody", - "fixedincome_corporate_spot_rates": "/fixedincome/corporate/spot_rates", - "fixedincome_government": "/fixedincome/government", - "fixedincome_government_treasury_rates": "/fixedincome/government/treasury_rates", - "fixedincome_government_us_yield_curve": "/fixedincome/government/us_yield_curve", - "fixedincome_rate": "/fixedincome/rate", - "fixedincome_rate_ameribor": "/fixedincome/rate/ameribor", - "fixedincome_rate_dpcredit": "/fixedincome/rate/dpcredit", - "fixedincome_rate_ecb": "/fixedincome/rate/ecb", - "fixedincome_rate_effr": "/fixedincome/rate/effr", - "fixedincome_rate_effr_forecast": "/fixedincome/rate/effr_forecast", - "fixedincome_rate_estr": "/fixedincome/rate/estr", - "fixedincome_rate_iorb": "/fixedincome/rate/iorb", - "fixedincome_rate_sonia": "/fixedincome/rate/sonia", - "fixedincome_sofr": "/fixedincome/sofr", - "fixedincome_spreads": "/fixedincome/spreads", - "fixedincome_spreads_tcm": "/fixedincome/spreads/tcm", - "fixedincome_spreads_tcm_effr": "/fixedincome/spreads/tcm_effr", - "fixedincome_spreads_treasury_effr": "/fixedincome/spreads/treasury_effr", - "index": "/index", - "index_available": "/index/available", - "index_constituents": "/index/constituents", - "index_market": "/index/market", - "index_price": "/index/price", - "index_price_historical": "/index/price/historical", - "news": "/news", - "news_company": "/news/company", - "news_world": "/news/world", - "regulators": "/regulators", - "regulators_sec": "/regulators/sec", - "regulators_sec_cik_map": "/regulators/sec/cik_map", - "regulators_sec_institutions_search": "/regulators/sec/institutions_search", - "regulators_sec_rss_litigation": "/regulators/sec/rss_litigation", - "regulators_sec_schema_files": "/regulators/sec/schema_files", - "regulators_sec_sic_search": "/regulators/sec/sic_search", - "regulators_sec_symbol_map": "/regulators/sec/symbol_map" -} \ No newline at end of file diff --git a/openbb_platform/openbb/assets/reference.json b/openbb_platform/openbb/assets/reference.json new file mode 100644 index 000000000000..465a0f4bb6fa --- /dev/null +++ b/openbb_platform/openbb/assets/reference.json @@ -0,0 +1,23089 @@ +{ + "/crypto/price/historical": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical price data for cryptocurrency pair(s) within a provider.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.crypto.price.historical(symbol='BTCUSD', provider='fmp')\nobb.crypto.price.historical(symbol='BTCUSD', start_date='2024-01-01', end_date='2024-01-31', provider='fmp')\nobb.crypto.price.historical(symbol='BTCUSD,ETHUSD', start_date='2024-01-01', end_date='2024-01-31', provider='polygon')\n# Get monthly historical prices from Yahoo Finance for Ethereum.\nobb.crypto.price.historical(symbol='ETH-USD', interval=1m, start_date='2024-01-01', end_date='2024-12-31', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple items allowed for provider(s): fmp, polygon, tiingo, yfinance.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'polygon', 'tiingo', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "interval", + "type": "Literal['1m', '5m', '15m', '30m', '1h', '4h', '1d']", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + } + ], + "polygon": [ + { + "name": "interval", + "type": "str", + "description": "Time interval of the data to return. The numeric portion of the interval can be any positive integer. The letter portion can be one of the following: s, m, h, d, W, M, Q, Y", + "default": "1d", + "optional": true + }, + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date.", + "default": "asc", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "49999", + "optional": true + } + ], + "tiingo": [ + { + "name": "interval", + "type": "Literal['1m', '5m', '15m', '30m', '1h', '4h', '1d']", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + }, + { + "name": "exchanges", + "type": "List[str]", + "description": "To limit the query to a subset of exchanges e.g. ['POLONIEX', 'GDAX']", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "interval", + "type": "Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q']", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : CryptoHistorical\n Serializable results.\n provider : Literal['fmp', 'polygon', 'tiingo', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "Union[date, datetime]", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "", + "optional": false + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "", + "optional": false + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "", + "optional": false + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + }, + { + "name": "vwap", + "type": "float, Gt(gt=0)", + "description": "Volume Weighted Average Price over the period.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change in the price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "transactions", + "type": "int, Gt(gt=0)", + "description": "Number of transactions for the symbol in the time period.", + "default": "None", + "optional": true + } + ], + "tiingo": [ + { + "name": "transactions", + "type": "int", + "description": "Number of transactions for the symbol in the time period.", + "default": "None", + "optional": true + }, + { + "name": "volume_notional", + "type": "float", + "description": "The last size done for the asset on the specific date in the quote currency. The volume of the asset on the specific date in the quote currency.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "CryptoHistorical" + }, + "/crypto/search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search available cryptocurrency pairs within a provider.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.crypto.search(provider='fmp')\nobb.crypto.search(query='BTCUSD', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Search query.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : CryptoSearch\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data. (Crypto)", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the crypto.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "currency", + "type": "str", + "description": "The currency the crypto trades for.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The exchange code the crypto trades on.", + "default": "None", + "optional": true + }, + { + "name": "exchange_name", + "type": "str", + "description": "The short name of the exchange the crypto trades on.", + "default": "None", + "optional": true + } + ] + }, + "model": "CryptoSearch" + }, + "/currency/price/historical": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Currency Historical Price. Currency historical data.\n\nCurrency historical prices refer to the past exchange rates of one currency against\nanother over a specific period.\nThis data provides insight into the fluctuations and trends in the foreign exchange market,\nhelping analysts, traders, and economists understand currency performance,\nevaluate economic health, and make predictions about future movements.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.currency.price.historical(symbol='EURUSD', provider='fmp')\n# Filter historical data with specific start and end date.\nobb.currency.price.historical(symbol='EURUSD', start_date='2023-01-01', end_date='2023-12-31', provider='fmp')\n# Get data with different granularity.\nobb.currency.price.historical(symbol='EURUSD', provider='polygon', interval=15m)\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple items allowed for provider(s): fmp, polygon, tiingo, yfinance.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'polygon', 'tiingo', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "interval", + "type": "Literal['1m', '5m', '15m', '30m', '1h', '4h', '1d']", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + } + ], + "polygon": [ + { + "name": "interval", + "type": "str", + "description": "Time interval of the data to return. The numeric portion of the interval can be any positive integer. The letter portion can be one of the following: s, m, h, d, W, M, Q, Y", + "default": "1d", + "optional": true + }, + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date.", + "default": "asc", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "49999", + "optional": true + } + ], + "tiingo": [ + { + "name": "interval", + "type": "Literal['1m', '5m', '15m', '30m', '1h', '4h', '1d']", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + } + ], + "yfinance": [ + { + "name": "interval", + "type": "Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q']", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : CurrencyHistorical\n Serializable results.\n provider : Literal['fmp', 'polygon', 'tiingo', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "Union[date, datetime]", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "", + "optional": false + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "", + "optional": false + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "", + "optional": false + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "None", + "optional": true + }, + { + "name": "vwap", + "type": "float, Gt(gt=0)", + "description": "Volume Weighted Average Price over the period.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change in the price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "transactions", + "type": "int, Gt(gt=0)", + "description": "Number of transactions for the symbol in the time period.", + "default": "None", + "optional": true + } + ], + "tiingo": [], + "yfinance": [] + }, + "model": "CurrencyHistorical" + }, + "/currency/search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Currency Search.\n\nSearch available currency pairs.\nCurrency pairs are the national currencies from two countries coupled for trading on\nthe foreign exchange (FX) marketplace.\nBoth currencies will have exchange rates on which the trade will have its position basis.\nAll trading within the forex market, whether selling, buying, or trading, will take place through currency pairs.\n(ref: Investopedia)\nMajor currency pairs include pairs such as EUR/USD, USD/JPY, GBP/USD, etc.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.currency.search(provider='intrinio')\n# Search for 'EURUSD' currency pair using 'intrinio' as provider.\nobb.currency.search(provider='intrinio', symbol=EURUSD)\n# Search for actively traded currency pairs on the queried date using 'polygon' as provider.\nobb.currency.search(provider='polygon', date=2024-01-02, active=True)\n# Search for terms using 'polygon' as provider.\nobb.currency.search(provider='polygon', search=Euro zone)\n```\n\n", + "parameters": { + "standard": [ + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [], + "polygon": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol of the pair to search.", + "default": "None", + "optional": true + }, + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for.", + "default": "None", + "optional": true + }, + { + "name": "search", + "type": "str", + "description": "Search for terms within the ticker and/or company name.", + "default": "", + "optional": true + }, + { + "name": "active", + "type": "bool", + "description": "Specify if the tickers returned should be actively traded on the queried date.", + "default": "True", + "optional": true + }, + { + "name": "order", + "type": "Literal['asc', 'desc']", + "description": "Order data by ascending or descending.", + "default": "asc", + "optional": true + }, + { + "name": "sort", + "type": "Literal['ticker', 'name', 'market', 'locale', 'currency_symbol', 'currency_name', 'base_currency_symbol', 'base_currency_name', 'last_updated_utc', 'delisted_utc']", + "description": "Sort field used for ordering.", + "default": "", + "optional": true + }, + { + "name": "limit", + "type": "int, Gt(gt=0)", + "description": "The number of data entries to return.", + "default": "1000", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : CurrencyPairs\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "name", + "type": "str", + "description": "Name of the currency pair.", + "default": "", + "optional": false + } + ], + "fmp": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol of the currency pair.", + "default": "", + "optional": false + }, + { + "name": "currency", + "type": "str", + "description": "Base currency of the currency pair.", + "default": "", + "optional": false + }, + { + "name": "stock_exchange", + "type": "str", + "description": "Stock exchange of the currency pair.", + "default": "None", + "optional": true + }, + { + "name": "exchange_short_name", + "type": "str", + "description": "Short name of the stock exchange of the currency pair.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "code", + "type": "str", + "description": "Code of the currency pair.", + "default": "", + "optional": false + }, + { + "name": "base_currency", + "type": "str", + "description": "ISO 4217 currency code of the base currency.", + "default": "", + "optional": false + }, + { + "name": "quote_currency", + "type": "str", + "description": "ISO 4217 currency code of the quote currency.", + "default": "", + "optional": false + } + ], + "polygon": [ + { + "name": "market", + "type": "str", + "description": "Name of the trading market. Always 'fx'.", + "default": "", + "optional": false + }, + { + "name": "locale", + "type": "str", + "description": "Locale of the currency pair.", + "default": "", + "optional": false + }, + { + "name": "currency_symbol", + "type": "str", + "description": "The symbol of the quote currency.", + "default": "None", + "optional": true + }, + { + "name": "currency_name", + "type": "str", + "description": "Name of the quote currency.", + "default": "None", + "optional": true + }, + { + "name": "base_currency_symbol", + "type": "str", + "description": "The symbol of the base currency.", + "default": "None", + "optional": true + }, + { + "name": "base_currency_name", + "type": "str", + "description": "Name of the base currency.", + "default": "None", + "optional": true + }, + { + "name": "last_updated_utc", + "type": "datetime", + "description": "The last updated timestamp in UTC.", + "default": "", + "optional": false + }, + { + "name": "delisted_utc", + "type": "datetime", + "description": "The delisted timestamp in UTC.", + "default": "None", + "optional": true + } + ] + }, + "model": "CurrencyPairs" + }, + "/currency/snapshots": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Snapshots of currency exchange rates from an indirect or direct perspective of a base currency.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.currency.snapshots(provider='fmp')\n# Get exchange rates from USD and XAU to EUR, JPY, and GBP using 'fmp' as provider.\nobb.currency.snapshots(provider='fmp', base='USD,XAU', counter_currencies='EUR,JPY,GBP', quote_type='indirect')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "base", + "type": "Union[str, List[str]]", + "description": "The base currency symbol. Multiple items allowed for provider(s): fmp.", + "default": "usd", + "optional": true + }, + { + "name": "quote_type", + "type": "Literal['direct', 'indirect']", + "description": "Whether the quote is direct or indirect. Selecting 'direct' will return the exchange rate as the amount of domestic currency required to buy one unit of the foreign currency. Selecting 'indirect' (default) will return the exchange rate as the amount of foreign currency required to buy one unit of the domestic currency.", + "default": "indirect", + "optional": true + }, + { + "name": "counter_currencies", + "type": "Union[str, List[str]]", + "description": "An optional list of counter currency symbols to filter for. None returns all.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : CurrencySnapshots\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "base_currency", + "type": "str", + "description": "The base, or domestic, currency.", + "default": "", + "optional": false + }, + { + "name": "counter_currency", + "type": "str", + "description": "The counter, or foreign, currency.", + "default": "", + "optional": false + }, + { + "name": "last_rate", + "type": "float", + "description": "The exchange rate, relative to the base currency. Rates are expressed as the amount of foreign currency received from selling one unit of the base currency, or the quantity of foreign currency required to purchase one unit of the domestic currency. To inverse the perspective, set the 'quote_type' parameter as 'direct'.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "None", + "optional": true + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "None", + "optional": true + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "None", + "optional": true + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The trading volume.", + "default": "None", + "optional": true + }, + { + "name": "prev_close", + "type": "float", + "description": "The previous close price.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "change", + "type": "float", + "description": "The change in the price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "The change in the price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "ma50", + "type": "float", + "description": "The 50-day moving average.", + "default": "None", + "optional": true + }, + { + "name": "ma200", + "type": "float", + "description": "The 200-day moving average.", + "default": "None", + "optional": true + }, + { + "name": "year_high", + "type": "float", + "description": "The 52-week high.", + "default": "None", + "optional": true + }, + { + "name": "year_low", + "type": "float", + "description": "The 52-week low.", + "default": "None", + "optional": true + }, + { + "name": "last_rate_timestamp", + "type": "datetime", + "description": "The timestamp of the last rate.", + "default": "None", + "optional": true + } + ] + }, + "model": "CurrencySnapshots" + }, + "/derivatives/options/chains": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the complete options chain for a ticker.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.derivatives.options.chains(symbol='AAPL', provider='intrinio')\n# Use the \"date\" parameter to get the end-of-day-data for a specific date, where supported.\nobb.derivatives.options.chains(symbol='AAPL', date=2023-01-25, provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [ + { + "name": "date", + "type": "Union[date, str]", + "description": "The end-of-day date for options chains data.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : OptionsChains\n Serializable results.\n provider : Literal['intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data. Here, it is the underlying symbol for the option.", + "default": "None", + "optional": true + }, + { + "name": "contract_symbol", + "type": "str", + "description": "Contract symbol for the option.", + "default": "", + "optional": false + }, + { + "name": "eod_date", + "type": "date", + "description": "Date for which the options chains are returned.", + "default": "None", + "optional": true + }, + { + "name": "expiration", + "type": "date", + "description": "Expiration date of the contract.", + "default": "", + "optional": false + }, + { + "name": "strike", + "type": "float", + "description": "Strike price of the contract.", + "default": "", + "optional": false + }, + { + "name": "option_type", + "type": "str", + "description": "Call or Put.", + "default": "", + "optional": false + }, + { + "name": "open_interest", + "type": "int", + "description": "Open interest on the contract.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The trading volume.", + "default": "None", + "optional": true + }, + { + "name": "theoretical_price", + "type": "float", + "description": "Theoretical value of the option.", + "default": "None", + "optional": true + }, + { + "name": "last_trade_price", + "type": "float", + "description": "Last trade price of the option.", + "default": "None", + "optional": true + }, + { + "name": "tick", + "type": "str", + "description": "Whether the last tick was up or down in price.", + "default": "None", + "optional": true + }, + { + "name": "bid", + "type": "float", + "description": "Current bid price for the option.", + "default": "None", + "optional": true + }, + { + "name": "bid_size", + "type": "int", + "description": "Bid size for the option.", + "default": "None", + "optional": true + }, + { + "name": "ask", + "type": "float", + "description": "Current ask price for the option.", + "default": "None", + "optional": true + }, + { + "name": "ask_size", + "type": "int", + "description": "Ask size for the option.", + "default": "None", + "optional": true + }, + { + "name": "mark", + "type": "float", + "description": "The mid-price between the latest bid and ask.", + "default": "None", + "optional": true + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "None", + "optional": true + }, + { + "name": "open_bid", + "type": "float", + "description": "The opening bid price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "open_ask", + "type": "float", + "description": "The opening ask price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "None", + "optional": true + }, + { + "name": "bid_high", + "type": "float", + "description": "The highest bid price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "ask_high", + "type": "float", + "description": "The highest ask price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "None", + "optional": true + }, + { + "name": "bid_low", + "type": "float", + "description": "The lowest bid price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "ask_low", + "type": "float", + "description": "The lowest ask price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "None", + "optional": true + }, + { + "name": "close_size", + "type": "int", + "description": "The closing trade size for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close_time", + "type": "datetime", + "description": "The time of the closing price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close_bid", + "type": "float", + "description": "The closing bid price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close_bid_size", + "type": "int", + "description": "The closing bid size for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close_bid_time", + "type": "datetime", + "description": "The time of the bid closing price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close_ask", + "type": "float", + "description": "The closing ask price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close_ask_size", + "type": "int", + "description": "The closing ask size for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "close_ask_time", + "type": "datetime", + "description": "The time of the ask closing price for the option that day.", + "default": "None", + "optional": true + }, + { + "name": "prev_close", + "type": "float", + "description": "The previous close price.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "The change in the price of the option.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change, in normalizezd percentage points, of the option.", + "default": "None", + "optional": true + }, + { + "name": "implied_volatility", + "type": "float", + "description": "Implied volatility of the option.", + "default": "None", + "optional": true + }, + { + "name": "delta", + "type": "float", + "description": "Delta of the option.", + "default": "None", + "optional": true + }, + { + "name": "gamma", + "type": "float", + "description": "Gamma of the option.", + "default": "None", + "optional": true + }, + { + "name": "theta", + "type": "float", + "description": "Theta of the option.", + "default": "None", + "optional": true + }, + { + "name": "vega", + "type": "float", + "description": "Vega of the option.", + "default": "None", + "optional": true + }, + { + "name": "rho", + "type": "float", + "description": "Rho of the option.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "exercise_style", + "type": "str", + "description": "The exercise style of the option, American or European.", + "default": "None", + "optional": true + } + ] + }, + "model": "OptionsChains" + }, + "/derivatives/options/unusual": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the complete options chain for a ticker.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.derivatives.options.unusual(provider='intrinio')\n# Use the 'symbol' parameter to get the most recent activity for a specific symbol.\nobb.derivatives.options.unusual(symbol='TSLA', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for. (the underlying symbol)", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format. If no symbol is supplied, requests are only allowed for a single date. Use the start_date for the target date. Intrinio appears to have data beginning Feb/2022, but is unclear when it actually began.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format. If a symbol is not supplied, do not include an end date.", + "default": "None", + "optional": true + }, + { + "name": "trade_type", + "type": "Literal['block', 'sweep', 'large']", + "description": "The type of unusual activity to query for.", + "default": "None", + "optional": true + }, + { + "name": "sentiment", + "type": "Literal['bullish', 'bearish', 'neutral']", + "description": "The sentiment type to query for.", + "default": "None", + "optional": true + }, + { + "name": "min_value", + "type": "Union[float, int]", + "description": "The inclusive minimum total value for the unusual activity.", + "default": "None", + "optional": true + }, + { + "name": "max_value", + "type": "Union[float, int]", + "description": "The inclusive maximum total value for the unusual activity.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return. A typical day for all symbols will yield 50-80K records. The API will paginate at 1000 records. The high default limit (100K) is to be able to reliably capture the most days. The high absolute limit (1.25M) is to allow for outlier days. Queries at the absolute limit will take a long time, and might be unreliable. Apply filters to improve performance.", + "default": "100000", + "optional": true + }, + { + "name": "source", + "type": "Literal['delayed', 'realtime']", + "description": "The source of the data. Either realtime or delayed.", + "default": "delayed", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : OptionsUnusual\n Serializable results.\n provider : Literal['intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "underlying_symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data. (the underlying symbol)", + "default": "None", + "optional": true + }, + { + "name": "contract_symbol", + "type": "str", + "description": "Contract symbol for the option.", + "default": "", + "optional": false + } + ], + "intrinio": [ + { + "name": "trade_timestamp", + "type": "datetime", + "description": "The datetime of order placement.", + "default": "", + "optional": false + }, + { + "name": "trade_type", + "type": "Literal['block', 'sweep', 'large']", + "description": "The type of unusual trade.", + "default": "", + "optional": false + }, + { + "name": "sentiment", + "type": "Literal['bullish', 'bearish', 'neutral']", + "description": "Bullish, Bearish, or Neutral Sentiment is estimated based on whether the trade was executed at the bid, ask, or mark price.", + "default": "", + "optional": false + }, + { + "name": "bid_at_execution", + "type": "float", + "description": "Bid price at execution.", + "default": "", + "optional": false + }, + { + "name": "ask_at_execution", + "type": "float", + "description": "Ask price at execution.", + "default": "", + "optional": false + }, + { + "name": "average_price", + "type": "float", + "description": "The average premium paid per option contract.", + "default": "", + "optional": false + }, + { + "name": "underlying_price_at_execution", + "type": "float", + "description": "Price of the underlying security at execution of trade.", + "default": "None", + "optional": true + }, + { + "name": "total_size", + "type": "int", + "description": "The total number of contracts involved in a single transaction.", + "default": "", + "optional": false + }, + { + "name": "total_value", + "type": "Union[int, float]", + "description": "The aggregated value of all option contract premiums included in the trade.", + "default": "", + "optional": false + } + ] + }, + "model": "OptionsUnusual" + }, + "/derivatives/futures/historical": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Historical futures prices.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.derivatives.futures.historical(symbol='ES', provider='yfinance')\n# Enter multiple symbols.\nobb.derivatives.futures.historical(symbol='ES,NQ', provider='yfinance')\n# Enter expiration dates as \"YYYY-MM\".\nobb.derivatives.futures.historical(symbol='ES', provider='yfinance', expiration='2025-12')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): yfinance.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "expiration", + "type": "str", + "description": "Future expiry date with format YYYY-MM", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [ + { + "name": "interval", + "type": "Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q']", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : FuturesHistorical\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "datetime", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "", + "optional": false + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "", + "optional": false + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "", + "optional": false + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [] + }, + "model": "FuturesHistorical" + }, + "/derivatives/futures/curve": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Futures Term Structure, current or historical.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\n# Enter a date to get the term structure from a historical date.\nobb.derivatives.futures.curve(symbol='NG', provider='yfinance', date='2023-01-01')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : FuturesCurve\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "expiration", + "type": "str", + "description": "Futures expiration month.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "The close price.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "FuturesCurve" + }, + "/economy/gdp/forecast": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Forecasted GDP Data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.gdp.forecast(provider='oecd')\nobb.economy.gdp.forecast(period='annual', type='real', provider='oecd')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "period", + "type": "Literal['quarter', 'annual']", + "description": "Time period of the data to return. Units for nominal GDP period. Either quarter or annual.", + "default": "annual", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "type", + "type": "Literal['nominal', 'real']", + "description": "Type of GDP to get forecast of. Either nominal or real.", + "default": "real", + "optional": true + }, + { + "name": "provider", + "type": "Literal['oecd']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'oecd' if there is no default.", + "default": "oecd", + "optional": true + } + ], + "oecd": [ + { + "name": "country", + "type": "Literal['argentina', 'asia', 'australia', 'austria', 'belgium', 'brazil', 'bulgaria', 'canada', 'chile', 'china', 'colombia', 'costa_rica', 'croatia', 'czech_republic', 'denmark', 'estonia', 'euro_area_17', 'finland', 'france', 'germany', 'greece', 'hungary', 'iceland', 'india', 'indonesia', 'ireland', 'israel', 'italy', 'japan', 'korea', 'latvia', 'lithuania', 'luxembourg', 'mexico', 'netherlands', 'new_zealand', 'non-oecd', 'norway', 'oecd_total', 'peru', 'poland', 'portugal', 'romania', 'russia', 'slovak_republic', 'slovenia', 'south_africa', 'spain', 'sweden', 'switzerland', 'turkey', 'united_kingdom', 'united_states', 'world']", + "description": "Country to get GDP for.", + "default": "united_states", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : GdpForecast\n Serializable results.\n provider : Literal['oecd']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "Nominal GDP value on the date.", + "default": "None", + "optional": true + } + ], + "oecd": [] + }, + "model": "GdpForecast" + }, + "/economy/gdp/nominal": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Nominal GDP Data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.gdp.nominal(provider='oecd')\nobb.economy.gdp.nominal(units='usd', provider='oecd')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "units", + "type": "Literal['usd', 'usd_cap']", + "description": "The unit of measurement for the data. Units to get nominal GDP in. Either usd or usd_cap indicating per capita.", + "default": "usd", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['oecd']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'oecd' if there is no default.", + "default": "oecd", + "optional": true + } + ], + "oecd": [ + { + "name": "country", + "type": "Literal['australia', 'austria', 'belgium', 'brazil', 'canada', 'chile', 'colombia', 'costa_rica', 'czech_republic', 'denmark', 'estonia', 'euro_area', 'european_union', 'finland', 'france', 'germany', 'greece', 'hungary', 'iceland', 'indonesia', 'ireland', 'israel', 'italy', 'japan', 'korea', 'latvia', 'lithuania', 'luxembourg', 'mexico', 'netherlands', 'new_zealand', 'norway', 'poland', 'portugal', 'russia', 'slovak_republic', 'slovenia', 'south_africa', 'spain', 'sweden', 'switzerland', 'turkey', 'united_kingdom', 'united_states', 'all']", + "description": "Country to get GDP for.", + "default": "united_states", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : GdpNominal\n Serializable results.\n provider : Literal['oecd']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "Nominal GDP value on the date.", + "default": "None", + "optional": true + } + ], + "oecd": [] + }, + "model": "GdpNominal" + }, + "/economy/gdp/real": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Real GDP Data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.gdp.real(provider='oecd')\nobb.economy.gdp.real(units='yoy', provider='oecd')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "units", + "type": "Literal['idx', 'qoq', 'yoy']", + "description": "The unit of measurement for the data. Either idx (indicating 2015=100), qoq (previous period) or yoy (same period, previous year).)", + "default": "yoy", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['oecd']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'oecd' if there is no default.", + "default": "oecd", + "optional": true + } + ], + "oecd": [ + { + "name": "country", + "type": "Literal['G20', 'G7', 'argentina', 'australia', 'austria', 'belgium', 'brazil', 'bulgaria', 'canada', 'chile', 'china', 'colombia', 'costa_rica', 'croatia', 'czech_republic', 'denmark', 'estonia', 'euro_area_19', 'europe', 'european_union_27', 'finland', 'france', 'germany', 'greece', 'hungary', 'iceland', 'india', 'indonesia', 'ireland', 'israel', 'italy', 'japan', 'korea', 'latvia', 'lithuania', 'luxembourg', 'mexico', 'netherlands', 'new_zealand', 'norway', 'oecd_total', 'poland', 'portugal', 'romania', 'russia', 'saudi_arabia', 'slovak_republic', 'slovenia', 'south_africa', 'spain', 'sweden', 'switzerland', 'turkey', 'united_kingdom', 'united_states', 'all']", + "description": "Country to get GDP for.", + "default": "united_states", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : GdpReal\n Serializable results.\n provider : Literal['oecd']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "Nominal GDP value on the date.", + "default": "None", + "optional": true + } + ], + "oecd": [] + }, + "model": "GdpReal" + }, + "/economy/calendar": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the upcoming, or historical, economic calendar of global events.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\n# By default, the calendar will be forward-looking.\nobb.economy.calendar(provider='fmp')\nobb.economy.calendar(provider='fmp', start_date='2020-03-01', end_date='2020-03-31')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'tradingeconomics']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "tradingeconomics": [ + { + "name": "country", + "type": "Union[str, List[str]]", + "description": "Country of the event. Multiple items allowed for provider(s): tradingeconomics.", + "default": "None", + "optional": true + }, + { + "name": "importance", + "type": "Literal['Low', 'Medium', 'High']", + "description": "Importance of the event.", + "default": "None", + "optional": true + }, + { + "name": "group", + "type": "Literal['interest rate', 'inflation', 'bonds', 'consumer', 'gdp', 'government', 'housing', 'labour', 'markets', 'money', 'prices', 'trade', 'business']", + "description": "Grouping of events", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EconomicCalendar\n Serializable results.\n provider : Literal['fmp', 'tradingeconomics']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "datetime", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "Country of event.", + "default": "None", + "optional": true + }, + { + "name": "event", + "type": "str", + "description": "Event name.", + "default": "None", + "optional": true + }, + { + "name": "reference", + "type": "str", + "description": "Abbreviated period for which released data refers to.", + "default": "None", + "optional": true + }, + { + "name": "source", + "type": "str", + "description": "Source of the data.", + "default": "None", + "optional": true + }, + { + "name": "sourceurl", + "type": "str", + "description": "Source URL.", + "default": "None", + "optional": true + }, + { + "name": "actual", + "type": "Union[str, float]", + "description": "Latest released value.", + "default": "None", + "optional": true + }, + { + "name": "previous", + "type": "Union[str, float]", + "description": "Value for the previous period after the revision (if revision is applicable).", + "default": "None", + "optional": true + }, + { + "name": "consensus", + "type": "Union[str, float]", + "description": "Average forecast among a representative group of economists.", + "default": "None", + "optional": true + }, + { + "name": "forecast", + "type": "Union[str, float]", + "description": "Trading Economics projections", + "default": "None", + "optional": true + }, + { + "name": "url", + "type": "str", + "description": "Trading Economics URL", + "default": "None", + "optional": true + }, + { + "name": "importance", + "type": "Union[Literal[0, 1, 2, 3], str]", + "description": "Importance of the event. 1-Low, 2-Medium, 3-High", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency of the data.", + "default": "None", + "optional": true + }, + { + "name": "unit", + "type": "str", + "description": "Unit of the data.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "change", + "type": "float", + "description": "Value change since previous.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Percentage change since previous.", + "default": "None", + "optional": true + }, + { + "name": "updated_at", + "type": "datetime", + "description": "Last updated timestamp.", + "default": "None", + "optional": true + }, + { + "name": "created_at", + "type": "datetime", + "description": "Created at timestamp.", + "default": "None", + "optional": true + } + ], + "tradingeconomics": [] + }, + "model": "EconomicCalendar" + }, + "/economy/cpi": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Consumer Price Index (CPI). Returns either the rescaled index value, or a rate of change (inflation).", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.cpi(country='japan,china,turkey', provider='fred')\n# Use the `units` parameter to define the reference period for the change in values.\nobb.economy.cpi(country='united_states,united_kingdom', units='growth_previous', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "country", + "type": "Union[str, List[str]]", + "description": "The country to get data. Multiple items allowed for provider(s): fred.", + "default": "", + "optional": false + }, + { + "name": "units", + "type": "Literal['growth_previous', 'growth_same', 'index_2015']", + "description": "The unit of measurement for the data. Options: - `growth_previous`: Percent growth from the previous period. If monthly data, this is month-over-month, etc - `growth_same`: Percent growth from the same period in the previous year. If looking at monthly data, this would be year-over-year, etc. - `index_2015`: Rescaled index value, such that the value in 2015 is 100.", + "default": "growth_same", + "optional": true + }, + { + "name": "frequency", + "type": "Literal['monthly', 'quarter', 'annual']", + "description": "The frequency of the data. Options: `monthly`, `quarter`, and `annual`.", + "default": "monthly", + "optional": true + }, + { + "name": "harmonized", + "type": "bool", + "description": "Whether you wish to obtain harmonized data.", + "default": "False", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : ConsumerPriceIndex\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "ConsumerPriceIndex" + }, + "/economy/risk_premium": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Market Risk Premium by country.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.risk_premium(provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : RiskPremium\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "country", + "type": "str", + "description": "Market country.", + "default": "", + "optional": false + }, + { + "name": "continent", + "type": "str", + "description": "Continent of the country.", + "default": "None", + "optional": true + }, + { + "name": "total_equity_risk_premium", + "type": "float, Gt(gt=0)", + "description": "Total equity risk premium for the country.", + "default": "None", + "optional": true + }, + { + "name": "country_risk_premium", + "type": "float, Ge(ge=0)", + "description": "Country-specific risk premium.", + "default": "None", + "optional": true + } + ], + "fmp": [] + }, + "model": "RiskPremium" + }, + "/economy/fred_search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search for FRED series or economic releases by ID or string.\nThis does not return the observation values, only the metadata.\nUse this function to find series IDs for `fred_series()`.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.fred_search(provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "The search word(s).", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "is_release", + "type": "bool", + "description": "Is release? If True, other search filter variables are ignored. If no query text or release_id is supplied, this defaults to True.", + "default": "False", + "optional": true + }, + { + "name": "release_id", + "type": "Union[int, str]", + "description": "A specific release ID to target.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return. (1-1000)", + "default": "None", + "optional": true + }, + { + "name": "offset", + "type": "int, Ge(ge=0)", + "description": "Offset the results in conjunction with limit.", + "default": "0", + "optional": true + }, + { + "name": "filter_variable", + "type": "Literal[None, 'frequency', 'units', 'seasonal_adjustment']", + "description": "Filter by an attribute.", + "default": "None", + "optional": true + }, + { + "name": "filter_value", + "type": "str", + "description": "String value to filter the variable by. Used in conjunction with filter_variable.", + "default": "None", + "optional": true + }, + { + "name": "tag_names", + "type": "str", + "description": "A semicolon delimited list of tag names that series match all of. Example: 'japan;imports'", + "default": "None", + "optional": true + }, + { + "name": "exclude_tag_names", + "type": "str", + "description": "A semicolon delimited list of tag names that series match none of. Example: 'imports;services'. Requires that variable tag_names also be set to limit the number of matching series.", + "default": "None", + "optional": true + }, + { + "name": "series_id", + "type": "str", + "description": "A FRED Series ID to return series group information for. This returns the required information to query for regional data. Not all series that are in FRED have geographical data. Entering a value for series_id will override all other parameters. Multiple series_ids can be separated by commas.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : FredSearch\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "release_id", + "type": "Union[int, str]", + "description": "The release ID for queries.", + "default": "None", + "optional": true + }, + { + "name": "series_id", + "type": "str", + "description": "The series ID for the item in the release.", + "default": "None", + "optional": true + }, + { + "name": "name", + "type": "str", + "description": "The name of the release.", + "default": "None", + "optional": true + }, + { + "name": "title", + "type": "str", + "description": "The title of the series.", + "default": "None", + "optional": true + }, + { + "name": "observation_start", + "type": "date", + "description": "The date of the first observation in the series.", + "default": "None", + "optional": true + }, + { + "name": "observation_end", + "type": "date", + "description": "The date of the last observation in the series.", + "default": "None", + "optional": true + }, + { + "name": "frequency", + "type": "str", + "description": "The frequency of the data.", + "default": "None", + "optional": true + }, + { + "name": "frequency_short", + "type": "str", + "description": "Short form of the data frequency.", + "default": "None", + "optional": true + }, + { + "name": "units", + "type": "str", + "description": "The units of the data.", + "default": "None", + "optional": true + }, + { + "name": "units_short", + "type": "str", + "description": "Short form of the data units.", + "default": "None", + "optional": true + }, + { + "name": "seasonal_adjustment", + "type": "str", + "description": "The seasonal adjustment of the data.", + "default": "None", + "optional": true + }, + { + "name": "seasonal_adjustment_short", + "type": "str", + "description": "Short form of the data seasonal adjustment.", + "default": "None", + "optional": true + }, + { + "name": "last_updated", + "type": "datetime", + "description": "The datetime of the last update to the data.", + "default": "None", + "optional": true + }, + { + "name": "notes", + "type": "str", + "description": "Description of the release.", + "default": "None", + "optional": true + }, + { + "name": "press_release", + "type": "bool", + "description": "If the release is a press release.", + "default": "None", + "optional": true + }, + { + "name": "url", + "type": "str", + "description": "URL to the release.", + "default": "None", + "optional": true + } + ], + "fred": [ + { + "name": "popularity", + "type": "int", + "description": "Popularity of the series", + "default": "None", + "optional": true + }, + { + "name": "group_popularity", + "type": "int", + "description": "Group popularity of the release", + "default": "None", + "optional": true + }, + { + "name": "region_type", + "type": "str", + "description": "The region type of the series.", + "default": "None", + "optional": true + }, + { + "name": "series_group", + "type": "Union[int, str]", + "description": "The series group ID of the series. This value is used to query for regional data.", + "default": "None", + "optional": true + } + ] + }, + "model": "FredSearch" + }, + "/economy/fred_series": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get data by series ID from FRED.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.fred_series(symbol='NFCI', provider='fred')\n# Multiple series can be passed in as a list.\nobb.economy.fred_series(symbol='NFCI,STLFSI4', provider='fred')\n# Use the `transform` parameter to transform the data as change, log, or percent change.\nobb.economy.fred_series(symbol='CBBTCUSD', transform=pc1, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fred.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "100000", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred', 'intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "frequency", + "type": "Literal[None, 'a', 'q', 'm', 'w', 'd', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']", + "description": "Frequency aggregation to convert high frequency data to lower frequency. None = No change a = Annual q = Quarterly m = Monthly w = Weekly d = Daily wef = Weekly, Ending Friday weth = Weekly, Ending Thursday wew = Weekly, Ending Wednesday wetu = Weekly, Ending Tuesday wem = Weekly, Ending Monday wesu = Weekly, Ending Sunday wesa = Weekly, Ending Saturday bwew = Biweekly, Ending Wednesday bwem = Biweekly, Ending Monday", + "default": "None", + "optional": true + }, + { + "name": "aggregation_method", + "type": "Literal[None, 'avg', 'sum', 'eop']", + "description": "A key that indicates the aggregation method used for frequency aggregation. This parameter has no affect if the frequency parameter is not set. avg = Average sum = Sum eop = End of Period", + "default": "eop", + "optional": true + }, + { + "name": "transform", + "type": "Literal[None, 'chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']", + "description": "Transformation type None = No transformation chg = Change ch1 = Change from Year Ago pch = Percent Change pc1 = Percent Change from Year Ago pca = Compounded Annual Rate of Change cch = Continuously Compounded Rate of Change cca = Continuously Compounded Annual Rate of Change log = Natural Log", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "all_pages", + "type": "bool", + "description": "Returns all pages of data from the API call at once.", + "default": "False", + "optional": true + }, + { + "name": "sleep", + "type": "float", + "description": "Time to sleep between requests to avoid rate limiting.", + "default": "1.0", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : FredSeries\n Serializable results.\n provider : Literal['fred', 'intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + } + ], + "fred": [], + "intrinio": [ + { + "name": "value", + "type": "float", + "description": "Value of the index.", + "default": "None", + "optional": true + } + ] + }, + "model": "FredSeries" + }, + "/economy/money_measures": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Money Measures (M1/M2 and components). The Federal Reserve publishes as part of the H.6 Release.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.money_measures(provider='federal_reserve')\nobb.economy.money_measures(adjusted=False, provider='federal_reserve')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "adjusted", + "type": "bool", + "description": "Whether to return seasonally adjusted data.", + "default": "True", + "optional": true + }, + { + "name": "provider", + "type": "Literal['federal_reserve']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'federal_reserve' if there is no default.", + "default": "federal_reserve", + "optional": true + } + ], + "federal_reserve": [] + }, + "returns": { + "OBBject": "OBBject\n results : MoneyMeasures\n Serializable results.\n provider : Literal['federal_reserve']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "month", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "M1", + "type": "float", + "description": "Value of the M1 money supply in billions.", + "default": "", + "optional": false + }, + { + "name": "M2", + "type": "float", + "description": "Value of the M2 money supply in billions.", + "default": "", + "optional": false + }, + { + "name": "currency", + "type": "float", + "description": "Value of currency in circulation in billions.", + "default": "None", + "optional": true + }, + { + "name": "demand_deposits", + "type": "float", + "description": "Value of demand deposits in billions.", + "default": "None", + "optional": true + }, + { + "name": "retail_money_market_funds", + "type": "float", + "description": "Value of retail money market funds in billions.", + "default": "None", + "optional": true + }, + { + "name": "other_liquid_deposits", + "type": "float", + "description": "Value of other liquid deposits in billions.", + "default": "None", + "optional": true + }, + { + "name": "small_denomination_time_deposits", + "type": "float", + "description": "Value of small denomination time deposits in billions.", + "default": "None", + "optional": true + } + ], + "federal_reserve": [] + }, + "model": "MoneyMeasures" + }, + "/economy/unemployment": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Global unemployment data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.unemployment(provider='oecd')\nobb.economy.unemployment(country=all, frequency=quarterly, provider='oecd')\n# Demographics for the statistics are selected with the `age` parameter.\nobb.economy.unemployment(country=all, frequency=quarterly, age=25-54, provider='oecd')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['oecd']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'oecd' if there is no default.", + "default": "oecd", + "optional": true + } + ], + "oecd": [ + { + "name": "country", + "type": "Literal['colombia', 'new_zealand', 'united_kingdom', 'italy', 'luxembourg', 'euro_area19', 'sweden', 'oecd', 'south_africa', 'denmark', 'canada', 'switzerland', 'slovakia', 'hungary', 'portugal', 'spain', 'france', 'czech_republic', 'costa_rica', 'japan', 'slovenia', 'russia', 'austria', 'latvia', 'netherlands', 'israel', 'iceland', 'united_states', 'ireland', 'mexico', 'germany', 'greece', 'turkey', 'australia', 'poland', 'south_korea', 'chile', 'finland', 'european_union27_2020', 'norway', 'lithuania', 'euro_area20', 'estonia', 'belgium', 'brazil', 'indonesia', 'all']", + "description": "Country to get GDP for.", + "default": "united_states", + "optional": true + }, + { + "name": "sex", + "type": "Literal['total', 'male', 'female']", + "description": "Sex to get unemployment for.", + "default": "total", + "optional": true + }, + { + "name": "frequency", + "type": "Literal['monthly', 'quarterly', 'annual']", + "description": "Frequency to get unemployment for.", + "default": "monthly", + "optional": true + }, + { + "name": "age", + "type": "Literal['total', '15-24', '15-64', '25-54', '55-64']", + "description": "Age group to get unemployment for. Total indicates 15 years or over", + "default": "total", + "optional": true + }, + { + "name": "seasonal_adjustment", + "type": "bool", + "description": "Whether to get seasonally adjusted unemployment. Defaults to False.", + "default": "False", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : Unemployment\n Serializable results.\n provider : Literal['oecd']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "Unemployment rate (given as a whole number, i.e 10=10%)", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "Country for which unemployment rate is given", + "default": "None", + "optional": true + } + ], + "oecd": [] + }, + "model": "Unemployment" + }, + "/economy/composite_leading_indicator": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "The composite leading indicator (CLI) is designed to provide early signals of turning points\nin business cycles showing fluctuation of the economic activity around its long term potential level.\nCLIs show short-term economic movements in qualitative rather than quantitative terms.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.composite_leading_indicator(provider='oecd')\nobb.economy.composite_leading_indicator(country=all, provider='oecd')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['oecd']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'oecd' if there is no default.", + "default": "oecd", + "optional": true + } + ], + "oecd": [ + { + "name": "country", + "type": "Literal['united_states', 'united_kingdom', 'japan', 'mexico', 'indonesia', 'australia', 'brazil', 'canada', 'italy', 'germany', 'turkey', 'france', 'south_africa', 'south_korea', 'spain', 'india', 'china', 'g7', 'g20', 'all']", + "description": "Country to get GDP for.", + "default": "united_states", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : CLI\n Serializable results.\n provider : Literal['oecd']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "CLI value", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "Country for which CLI is given", + "default": "None", + "optional": true + } + ], + "oecd": [] + }, + "model": "CLI" + }, + "/economy/short_term_interest_rate": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Short-term interest rates are the rates at which short-term borrowings are effected between\nfinancial institutions or the rate at which short-term government paper is issued or traded in the market.\nShort-term interest rates are generally averages of daily rates, measured as a percentage.\nShort-term interest rates are based on three-month money market rates where available.\nTypical standardised names are \"money market rate\" and \"treasury bill rate\".", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.short_term_interest_rate(provider='oecd')\nobb.economy.short_term_interest_rate(country=all, frequency=quarterly, provider='oecd')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['oecd']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'oecd' if there is no default.", + "default": "oecd", + "optional": true + } + ], + "oecd": [ + { + "name": "country", + "type": "Literal['belgium', 'ireland', 'mexico', 'indonesia', 'new_zealand', 'japan', 'united_kingdom', 'france', 'chile', 'canada', 'netherlands', 'united_states', 'south_korea', 'norway', 'austria', 'south_africa', 'denmark', 'switzerland', 'hungary', 'luxembourg', 'australia', 'germany', 'sweden', 'iceland', 'turkey', 'greece', 'israel', 'czech_republic', 'latvia', 'slovenia', 'poland', 'estonia', 'lithuania', 'portugal', 'costa_rica', 'slovakia', 'finland', 'spain', 'russia', 'euro_area19', 'colombia', 'italy', 'india', 'china', 'croatia', 'all']", + "description": "Country to get GDP for.", + "default": "united_states", + "optional": true + }, + { + "name": "frequency", + "type": "Literal['monthly', 'quarterly', 'annual']", + "description": "Frequency to get interest rate for for.", + "default": "monthly", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : STIR\n Serializable results.\n provider : Literal['oecd']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "Interest rate (given as a whole number, i.e 10=10%)", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "Country for which interest rate is given", + "default": "None", + "optional": true + } + ], + "oecd": [] + }, + "model": "STIR" + }, + "/economy/long_term_interest_rate": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Long-term interest rates refer to government bonds maturing in ten years.\nRates are mainly determined by the price charged by the lender, the risk from the borrower and the\nfall in the capital value. Long-term interest rates are generally averages of daily rates,\nmeasured as a percentage. These interest rates are implied by the prices at which the government bonds are\ntraded on financial markets, not the interest rates at which the loans were issued.\nIn all cases, they refer to bonds whose capital repayment is guaranteed by governments.\nLong-term interest rates are one of the determinants of business investment.\nLow long-term interest rates encourage investment in new equipment and high interest rates discourage it.\nInvestment is, in turn, a major source of economic growth.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.long_term_interest_rate(provider='oecd')\nobb.economy.long_term_interest_rate(country=all, frequency=quarterly, provider='oecd')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['oecd']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'oecd' if there is no default.", + "default": "oecd", + "optional": true + } + ], + "oecd": [ + { + "name": "country", + "type": "Literal['belgium', 'ireland', 'mexico', 'indonesia', 'new_zealand', 'japan', 'united_kingdom', 'france', 'chile', 'canada', 'netherlands', 'united_states', 'south_korea', 'norway', 'austria', 'south_africa', 'denmark', 'switzerland', 'hungary', 'luxembourg', 'australia', 'germany', 'sweden', 'iceland', 'turkey', 'greece', 'israel', 'czech_republic', 'latvia', 'slovenia', 'poland', 'estonia', 'lithuania', 'portugal', 'costa_rica', 'slovakia', 'finland', 'spain', 'russia', 'euro_area19', 'colombia', 'italy', 'india', 'china', 'croatia', 'all']", + "description": "Country to get GDP for.", + "default": "united_states", + "optional": true + }, + { + "name": "frequency", + "type": "Literal['monthly', 'quarterly', 'annual']", + "description": "Frequency to get interest rate for for.", + "default": "monthly", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : LTIR\n Serializable results.\n provider : Literal['oecd']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "Interest rate (given as a whole number, i.e 10=10%)", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "Country for which interest rate is given", + "default": "None", + "optional": true + } + ], + "oecd": [] + }, + "model": "LTIR" + }, + "/economy/fred_regional": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Query the Geo Fred API for regional economic data by series group.\nThe series group ID is found by using `fred_search` and the `series_id` parameter.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.economy.fred_regional(symbol='NYICLAIMS', provider='fred')\n# With a date, time series data is returned.\nobb.economy.fred_regional(symbol='NYICLAIMS', start_date='2021-01-01', end_date='2021-12-31', limit=10, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fred.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "100000", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "is_series_group", + "type": "bool", + "description": "When True, the symbol provided is for a series_group, else it is for a series ID.", + "default": "False", + "optional": true + }, + { + "name": "region_type", + "type": "Literal['bea', 'msa', 'frb', 'necta', 'state', 'country', 'county', 'censusregion']", + "description": "The type of regional data. Parameter is only valid when `is_series_group` is True.", + "default": "None", + "optional": true + }, + { + "name": "season", + "type": "Literal['SA', 'NSA', 'SSA']", + "description": "The seasonal adjustments to the data. Parameter is only valid when `is_series_group` is True.", + "default": "NSA", + "optional": true + }, + { + "name": "units", + "type": "str", + "description": "The units of the data. This should match the units returned from searching by series ID. An incorrect field will not necessarily return an error. Parameter is only valid when `is_series_group` is True.", + "default": "None", + "optional": true + }, + { + "name": "frequency", + "type": "Literal['d', 'w', 'bw', 'm', 'q', 'sa', 'a', 'wef', 'weth', 'wew', 'wetu', 'wem', 'wesu', 'wesa', 'bwew', 'bwem']", + "description": "Frequency aggregation to convert high frequency data to lower frequency. Parameter is only valid when `is_series_group` is True. a = Annual sa= Semiannual q = Quarterly m = Monthly w = Weekly d = Daily wef = Weekly, Ending Friday weth = Weekly, Ending Thursday wew = Weekly, Ending Wednesday wetu = Weekly, Ending Tuesday wem = Weekly, Ending Monday wesu = Weekly, Ending Sunday wesa = Weekly, Ending Saturday bwew = Biweekly, Ending Wednesday bwem = Biweekly, Ending Monday", + "default": "None", + "optional": true + }, + { + "name": "aggregation_method", + "type": "Literal['avg', 'sum', 'eop']", + "description": "A key that indicates the aggregation method used for frequency aggregation. This parameter has no affect if the frequency parameter is not set. Only valid when `is_series_group` is True. avg = Average sum = Sum eop = End of Period", + "default": "avg", + "optional": true + }, + { + "name": "transform", + "type": "Literal['lin', 'chg', 'ch1', 'pch', 'pc1', 'pca', 'cch', 'cca', 'log']", + "description": "Transformation type. Only valid when `is_series_group` is True. lin = Levels (No transformation) chg = Change ch1 = Change from Year Ago pch = Percent Change pc1 = Percent Change from Year Ago pca = Compounded Annual Rate of Change cch = Continuously Compounded Rate of Change cca = Continuously Compounded Annual Rate of Change log = Natural Log", + "default": "lin", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : FredRegional\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + } + ], + "fred": [ + { + "name": "region", + "type": "str", + "description": "The name of the region.", + "default": "", + "optional": false + }, + { + "name": "code", + "type": "Union[str, int]", + "description": "The code of the region.", + "default": "", + "optional": false + }, + { + "name": "value", + "type": "Union[float, int]", + "description": "The obersvation value. The units are defined in the search results by series ID.", + "default": "None", + "optional": true + }, + { + "name": "series_id", + "type": "str", + "description": "The individual series ID for the region.", + "default": "", + "optional": false + } + ] + }, + "model": "FredRegional" + }, + "/equity/calendar/ipo": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical and upcoming initial public offerings (IPOs).", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.calendar.ipo(provider='intrinio')\n# Get all IPOs available.\nobb.equity.calendar.ipo(provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "None", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "100", + "optional": true + }, + { + "name": "provider", + "type": "Literal['intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [ + { + "name": "status", + "type": "Literal['upcoming', 'priced', 'withdrawn']", + "description": "Status of the IPO. [upcoming, priced, or withdrawn]", + "default": "None", + "optional": true + }, + { + "name": "min_value", + "type": "int", + "description": "Return IPOs with an offer dollar amount greater than the given amount.", + "default": "None", + "optional": true + }, + { + "name": "max_value", + "type": "int", + "description": "Return IPOs with an offer dollar amount less than the given amount.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : CalendarIpo\n Serializable results.\n provider : Literal['intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "ipo_date", + "type": "date", + "description": "The date of the IPO, when the stock first trades on a major exchange.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "status", + "type": "Literal['upcoming', 'priced', 'withdrawn']", + "description": "The status of the IPO. Upcoming IPOs have not taken place yet but are expected to. Priced IPOs have taken place. Withdrawn IPOs were expected to take place, but were subsequently withdrawn and did not take place", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The acronym of the stock exchange that the company is going to trade publicly on. Typically NYSE or NASDAQ.", + "default": "None", + "optional": true + }, + { + "name": "offer_amount", + "type": "float", + "description": "The total dollar amount of shares offered in the IPO. Typically this is share price * share count", + "default": "None", + "optional": true + }, + { + "name": "share_price", + "type": "float", + "description": "The price per share at which the IPO was offered.", + "default": "None", + "optional": true + }, + { + "name": "share_price_lowest", + "type": "float", + "description": "The expected lowest price per share at which the IPO will be offered. Before an IPO is priced, companies typically provide a range of prices per share at which they expect to offer the IPO (typically available for upcoming IPOs).", + "default": "None", + "optional": true + }, + { + "name": "share_price_highest", + "type": "float", + "description": "The expected highest price per share at which the IPO will be offered. Before an IPO is priced, companies typically provide a range of prices per share at which they expect to offer the IPO (typically available for upcoming IPOs).", + "default": "None", + "optional": true + }, + { + "name": "share_count", + "type": "int", + "description": "The number of shares offered in the IPO.", + "default": "None", + "optional": true + }, + { + "name": "share_count_lowest", + "type": "int", + "description": "The expected lowest number of shares that will be offered in the IPO. Before an IPO is priced, companies typically provide a range of shares that they expect to offer in the IPO (typically available for upcoming IPOs).", + "default": "None", + "optional": true + }, + { + "name": "share_count_highest", + "type": "int", + "description": "The expected highest number of shares that will be offered in the IPO. Before an IPO is priced, companies typically provide a range of shares that they expect to offer in the IPO (typically available for upcoming IPOs).", + "default": "None", + "optional": true + }, + { + "name": "announcement_url", + "type": "str", + "description": "The URL to the company's announcement of the IPO", + "default": "None", + "optional": true + }, + { + "name": "sec_report_url", + "type": "str", + "description": "The URL to the company's S-1, S-1/A, F-1, or F-1/A SEC filing, which is required to be filed before an IPO takes place.", + "default": "None", + "optional": true + }, + { + "name": "open_price", + "type": "float", + "description": "The opening price at the beginning of the first trading day (only available for priced IPOs).", + "default": "None", + "optional": true + }, + { + "name": "close_price", + "type": "float", + "description": "The closing price at the end of the first trading day (only available for priced IPOs).", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The volume at the end of the first trading day (only available for priced IPOs).", + "default": "None", + "optional": true + }, + { + "name": "day_change", + "type": "float", + "description": "The percentage change between the open price and the close price on the first trading day (only available for priced IPOs).", + "default": "None", + "optional": true + }, + { + "name": "week_change", + "type": "float", + "description": "The percentage change between the open price on the first trading day and the close price approximately a week after the first trading day (only available for priced IPOs).", + "default": "None", + "optional": true + }, + { + "name": "month_change", + "type": "float", + "description": "The percentage change between the open price on the first trading day and the close price approximately a month after the first trading day (only available for priced IPOs).", + "default": "None", + "optional": true + }, + { + "name": "id", + "type": "str", + "description": "The Intrinio ID of the IPO.", + "default": "None", + "optional": true + }, + { + "name": "company", + "type": "openbb_intrinio.utils.references.IntrinioCompany", + "description": "The company that is going public via the IPO.", + "default": "None", + "optional": true + }, + { + "name": "security", + "type": "openbb_intrinio.utils.references.IntrinioSecurity", + "description": "The primary Security for the Company that is going public via the IPO", + "default": "None", + "optional": true + } + ] + }, + "model": "CalendarIpo" + }, + "/equity/calendar/dividend": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical and upcoming dividend payments. Includes dividend amount, ex-dividend and payment dates.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.calendar.dividend(provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : CalendarDividend\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "ex_dividend_date", + "type": "date", + "description": "The ex-dividend date - the date on which the stock begins trading without rights to the dividend.", + "default": "", + "optional": false + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "amount", + "type": "float", + "description": "The dividend amount per share.", + "default": "None", + "optional": true + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "None", + "optional": true + }, + { + "name": "record_date", + "type": "date", + "description": "The record date of ownership for eligibility.", + "default": "None", + "optional": true + }, + { + "name": "payment_date", + "type": "date", + "description": "The payment date of the dividend.", + "default": "None", + "optional": true + }, + { + "name": "declaration_date", + "type": "date", + "description": "Declaration date of the dividend.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "adjusted_amount", + "type": "float", + "description": "The adjusted-dividend amount.", + "default": "None", + "optional": true + }, + { + "name": "label", + "type": "str", + "description": "Ex-dividend date formatted for display.", + "default": "None", + "optional": true + } + ] + }, + "model": "CalendarDividend" + }, + "/equity/calendar/splits": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical and upcoming stock split operations.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.calendar.splits(provider='fmp')\n# Get stock splits calendar for specific dates.\nobb.equity.calendar.splits(start_date='2024-02-01', end_date='2024-02-07', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : CalendarSplits\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "label", + "type": "str", + "description": "Label of the stock splits.", + "default": "", + "optional": false + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "numerator", + "type": "float", + "description": "Numerator of the stock splits.", + "default": "", + "optional": false + }, + { + "name": "denominator", + "type": "float", + "description": "Denominator of the stock splits.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "CalendarSplits" + }, + "/equity/calendar/earnings": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical and upcoming company earnings releases. Includes earnings per share (EPS) and revenue data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.calendar.earnings(provider='fmp')\n# Get earnings calendar for specific dates.\nobb.equity.calendar.earnings(start_date='2024-02-01', end_date='2024-02-07', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : CalendarEarnings\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "report_date", + "type": "date", + "description": "The date of the earnings report.", + "default": "", + "optional": false + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "None", + "optional": true + }, + { + "name": "eps_previous", + "type": "float", + "description": "The earnings-per-share from the same previously reported period.", + "default": "None", + "optional": true + }, + { + "name": "eps_consensus", + "type": "float", + "description": "The analyst conesus earnings-per-share estimate.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "eps_actual", + "type": "float", + "description": "The actual earnings per share announced.", + "default": "None", + "optional": true + }, + { + "name": "revenue_actual", + "type": "float", + "description": "The actual reported revenue.", + "default": "None", + "optional": true + }, + { + "name": "revenue_consensus", + "type": "float", + "description": "The revenue forecast consensus.", + "default": "None", + "optional": true + }, + { + "name": "period_ending", + "type": "date", + "description": "The fiscal period end date.", + "default": "None", + "optional": true + }, + { + "name": "reporting_time", + "type": "str", + "description": "The reporting time - e.g. after market close.", + "default": "None", + "optional": true + }, + { + "name": "updated_date", + "type": "date", + "description": "The date the data was updated last.", + "default": "None", + "optional": true + } + ] + }, + "model": "CalendarEarnings" + }, + "/equity/compare/peers": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the closest peers for a given company.\n\nPeers consist of companies trading on the same exchange, operating within the same sector\nand with comparable market capitalizations.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.compare.peers(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityPeers\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "peers_list", + "type": "List[str]", + "description": "A list of equity peers based on sector, exchange and market cap.", + "default": "", + "optional": true + } + ], + "fmp": [] + }, + "model": "EquityPeers" + }, + "/equity/estimates/price_target": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get analyst price targets by company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.estimates.price_target(provider='benzinga')\n# Get price targets for Microsoft using 'benzinga' as provider.\nobb.equity.estimates.price_target(start_date=2020-01-01, end_date=2024-02-16, limit=10, symbol='msft', provider='benzinga', action=downgrades)\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): benzinga.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "200", + "optional": true + }, + { + "name": "provider", + "type": "Literal['benzinga', 'fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'benzinga' if there is no default.", + "default": "benzinga", + "optional": true + } + ], + "benzinga": [ + { + "name": "page", + "type": "int", + "description": "Page offset. For optimization, performance and technical reasons, page offsets are limited from 0 - 100000. Limit the query results by other parameters such as date. Used in conjunction with the limit and date parameters.", + "default": "0", + "optional": true + }, + { + "name": "date", + "type": "Union[date, str]", + "description": "Date for calendar data, shorthand for date_from and date_to.", + "default": "None", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "updated", + "type": "Union[date, int]", + "description": "Records last Updated Unix timestamp (UTC). This will force the sort order to be Greater Than or Equal to the timestamp indicated. The date can be a date string or a Unix timestamp. The date string must be in the format of YYYY-MM-DD.", + "default": "None", + "optional": true + }, + { + "name": "importance", + "type": "int", + "description": "Importance level to filter by. Uses Greater Than or Equal To the importance indicated", + "default": "None", + "optional": true + }, + { + "name": "action", + "type": "Literal['downgrades', 'maintains', 'reinstates', 'reiterates', 'upgrades', 'assumes', 'initiates', 'terminates', 'removes', 'suspends', 'firm_dissolved']", + "description": "Filter by a specific action_company.", + "default": "None", + "optional": true + }, + { + "name": "analyst_ids", + "type": "Union[str, List[str]]", + "description": "Comma-separated list of analyst (person) IDs. Omitting will bring back all available analysts.", + "default": "None", + "optional": true + }, + { + "name": "firm_ids", + "type": "Union[str, List[str]]", + "description": "Comma-separated list of firm IDs.", + "default": "None", + "optional": true + }, + { + "name": "fields", + "type": "Union[str, List[str]]", + "description": "Comma-separated list of fields to include in the response. See https://docs.benzinga.io/benzinga-apis/calendar/get-ratings to learn about the available fields.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "with_grade", + "type": "bool", + "description": "Include upgrades and downgrades in the response.", + "default": "False", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : PriceTarget\n Serializable results.\n provider : Literal['benzinga', 'fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "published_date", + "type": "Union[date, datetime]", + "description": "Published date of the price target.", + "default": "", + "optional": false + }, + { + "name": "published_time", + "type": "datetime.time", + "description": "Time of the original rating, UTC.", + "default": "None", + "optional": true + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "exchange", + "type": "str", + "description": "Exchange where the company is traded.", + "default": "None", + "optional": true + }, + { + "name": "company_name", + "type": "str", + "description": "Name of company that is the subject of rating.", + "default": "None", + "optional": true + }, + { + "name": "analyst_name", + "type": "str", + "description": "Analyst name.", + "default": "None", + "optional": true + }, + { + "name": "analyst_firm", + "type": "str", + "description": "Name of the analyst firm that published the price target.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency the data is denominated in.", + "default": "None", + "optional": true + }, + { + "name": "price_target", + "type": "float", + "description": "The current price target.", + "default": "None", + "optional": true + }, + { + "name": "adj_price_target", + "type": "float", + "description": "Adjusted price target for splits and stock dividends.", + "default": "None", + "optional": true + }, + { + "name": "price_target_previous", + "type": "float", + "description": "Previous price target.", + "default": "None", + "optional": true + }, + { + "name": "previous_adj_price_target", + "type": "float", + "description": "Previous adjusted price target.", + "default": "None", + "optional": true + }, + { + "name": "price_when_posted", + "type": "float", + "description": "Price when posted.", + "default": "None", + "optional": true + }, + { + "name": "rating_current", + "type": "str", + "description": "The analyst's rating for the company.", + "default": "None", + "optional": true + }, + { + "name": "rating_previous", + "type": "str", + "description": "Previous analyst rating for the company.", + "default": "None", + "optional": true + }, + { + "name": "action", + "type": "str", + "description": "Description of the change in rating from firm's last rating.", + "default": "None", + "optional": true + } + ], + "benzinga": [ + { + "name": "action_change", + "type": "Literal['Announces', 'Maintains', 'Lowers', 'Raises', 'Removes', 'Adjusts']", + "description": "Description of the change in price target from firm's last price target.", + "default": "None", + "optional": true + }, + { + "name": "importance", + "type": "Literal[0, 1, 2, 3, 4, 5]", + "description": "Subjective Basis of How Important Event is to Market. 5 = High", + "default": "None", + "optional": true + }, + { + "name": "notes", + "type": "str", + "description": "Notes of the price target.", + "default": "None", + "optional": true + }, + { + "name": "analyst_id", + "type": "str", + "description": "Id of the analyst.", + "default": "None", + "optional": true + }, + { + "name": "url_news", + "type": "str", + "description": "URL for analyst ratings news articles for this ticker on Benzinga.com.", + "default": "None", + "optional": true + }, + { + "name": "url_analyst", + "type": "str", + "description": "URL for analyst ratings page for this ticker on Benzinga.com.", + "default": "None", + "optional": true + }, + { + "name": "id", + "type": "str", + "description": "Unique ID of this entry.", + "default": "None", + "optional": true + }, + { + "name": "last_updated", + "type": "datetime", + "description": "Last updated timestamp, UTC.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "news_url", + "type": "str", + "description": "News URL of the price target.", + "default": "None", + "optional": true + }, + { + "name": "news_title", + "type": "str", + "description": "News title of the price target.", + "default": "None", + "optional": true + }, + { + "name": "news_publisher", + "type": "str", + "description": "News publisher of the price target.", + "default": "None", + "optional": true + }, + { + "name": "news_base_url", + "type": "str", + "description": "News base URL of the price target.", + "default": "None", + "optional": true + } + ] + }, + "model": "PriceTarget" + }, + "/equity/estimates/historical": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical analyst estimates for earnings and revenue.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.estimates.historical(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "Literal['quarter', 'annual']", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "30", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : AnalystEstimates\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "estimated_revenue_low", + "type": "int", + "description": "Estimated revenue low.", + "default": "", + "optional": false + }, + { + "name": "estimated_revenue_high", + "type": "int", + "description": "Estimated revenue high.", + "default": "", + "optional": false + }, + { + "name": "estimated_revenue_avg", + "type": "int", + "description": "Estimated revenue average.", + "default": "", + "optional": false + }, + { + "name": "estimated_ebitda_low", + "type": "int", + "description": "Estimated EBITDA low.", + "default": "", + "optional": false + }, + { + "name": "estimated_ebitda_high", + "type": "int", + "description": "Estimated EBITDA high.", + "default": "", + "optional": false + }, + { + "name": "estimated_ebitda_avg", + "type": "int", + "description": "Estimated EBITDA average.", + "default": "", + "optional": false + }, + { + "name": "estimated_ebit_low", + "type": "int", + "description": "Estimated EBIT low.", + "default": "", + "optional": false + }, + { + "name": "estimated_ebit_high", + "type": "int", + "description": "Estimated EBIT high.", + "default": "", + "optional": false + }, + { + "name": "estimated_ebit_avg", + "type": "int", + "description": "Estimated EBIT average.", + "default": "", + "optional": false + }, + { + "name": "estimated_net_income_low", + "type": "int", + "description": "Estimated net income low.", + "default": "", + "optional": false + }, + { + "name": "estimated_net_income_high", + "type": "int", + "description": "Estimated net income high.", + "default": "", + "optional": false + }, + { + "name": "estimated_net_income_avg", + "type": "int", + "description": "Estimated net income average.", + "default": "", + "optional": false + }, + { + "name": "estimated_sga_expense_low", + "type": "int", + "description": "Estimated SGA expense low.", + "default": "", + "optional": false + }, + { + "name": "estimated_sga_expense_high", + "type": "int", + "description": "Estimated SGA expense high.", + "default": "", + "optional": false + }, + { + "name": "estimated_sga_expense_avg", + "type": "int", + "description": "Estimated SGA expense average.", + "default": "", + "optional": false + }, + { + "name": "estimated_eps_avg", + "type": "float", + "description": "Estimated EPS average.", + "default": "", + "optional": false + }, + { + "name": "estimated_eps_high", + "type": "float", + "description": "Estimated EPS high.", + "default": "", + "optional": false + }, + { + "name": "estimated_eps_low", + "type": "float", + "description": "Estimated EPS low.", + "default": "", + "optional": false + }, + { + "name": "number_analyst_estimated_revenue", + "type": "int", + "description": "Number of analysts who estimated revenue.", + "default": "", + "optional": false + }, + { + "name": "number_analysts_estimated_eps", + "type": "int", + "description": "Number of analysts who estimated EPS.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "AnalystEstimates" + }, + "/equity/estimates/consensus": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get consensus price target and recommendation.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.estimates.consensus(symbol='AAPL', provider='fmp')\nobb.equity.estimates.consensus(symbol='AAPL,MSFT', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): yfinance.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : PriceTargetConsensus\n Serializable results.\n provider : Literal['fmp', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "target_high", + "type": "float", + "description": "High target of the price target consensus.", + "default": "None", + "optional": true + }, + { + "name": "target_low", + "type": "float", + "description": "Low target of the price target consensus.", + "default": "None", + "optional": true + }, + { + "name": "target_consensus", + "type": "float", + "description": "Consensus target of the price target consensus.", + "default": "None", + "optional": true + }, + { + "name": "target_median", + "type": "float", + "description": "Median target of the price target consensus.", + "default": "None", + "optional": true + } + ], + "fmp": [], + "yfinance": [ + { + "name": "recommendation", + "type": "str", + "description": "Recommendation - buy, sell, etc.", + "default": "None", + "optional": true + }, + { + "name": "recommendation_mean", + "type": "float", + "description": "Mean recommendation score where 1 is strong buy and 5 is strong sell.", + "default": "None", + "optional": true + }, + { + "name": "number_of_analysts", + "type": "int", + "description": "Number of analysts providing opinions.", + "default": "None", + "optional": true + }, + { + "name": "current_price", + "type": "float", + "description": "Current price of the stock.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency the stock is priced in.", + "default": "None", + "optional": true + } + ] + }, + "model": "PriceTargetConsensus" + }, + "/equity/estimates/analyst_search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search for specific analysts and get their forecast track record.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.estimates.analyst_search(provider='benzinga')\nobb.equity.estimates.analyst_search(firm_name='Wedbush', provider='benzinga')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "analyst_name", + "type": "str", + "description": "A comma separated list of analyst names to bring back. Omitting will bring back all available analysts.", + "default": "None", + "optional": true + }, + { + "name": "firm_name", + "type": "str", + "description": "A comma separated list of firm names to bring back. Omitting will bring back all available firms.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['benzinga']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'benzinga' if there is no default.", + "default": "benzinga", + "optional": true + } + ], + "benzinga": [ + { + "name": "analyst_ids", + "type": "Union[str, List[str]]", + "description": "A comma separated list of analyst IDs to bring back.", + "default": "None", + "optional": true + }, + { + "name": "firm_ids", + "type": "Union[str, List[str]]", + "description": "A comma separated list of firm IDs to bring back.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "Number of results returned. Limit 1000.", + "default": "100", + "optional": true + }, + { + "name": "page", + "type": "int", + "description": "Page offset. For optimization, performance and technical reasons, page offsets are limited from 0 - 100000. Limit the query results by other parameters such as date.", + "default": "0", + "optional": true + }, + { + "name": "fields", + "type": "Union[str, List[str]]", + "description": "Comma-separated list of fields to include in the response. See https://docs.benzinga.io/benzinga-apis/calendar/get-ratings to learn about the available fields.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : AnalystSearch\n Serializable results.\n provider : Literal['benzinga']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "last_updated", + "type": "datetime", + "description": "Date of the last update.", + "default": "None", + "optional": true + }, + { + "name": "firm_name", + "type": "str", + "description": "Firm name of the analyst.", + "default": "None", + "optional": true + }, + { + "name": "name_first", + "type": "str", + "description": "Analyst first name.", + "default": "None", + "optional": true + }, + { + "name": "name_last", + "type": "str", + "description": "Analyst last name.", + "default": "None", + "optional": true + }, + { + "name": "name_full", + "type": "str", + "description": "Analyst full name.", + "default": "", + "optional": false + } + ], + "benzinga": [ + { + "name": "analyst_id", + "type": "str", + "description": "ID of the analyst.", + "default": "None", + "optional": true + }, + { + "name": "firm_id", + "type": "str", + "description": "ID of the analyst firm.", + "default": "None", + "optional": true + }, + { + "name": "smart_score", + "type": "float", + "description": "A weighted average of the total_ratings_percentile, overall_avg_return_percentile, and overall_success_rate", + "default": "None", + "optional": true + }, + { + "name": "overall_success_rate", + "type": "float", + "description": "The percentage (normalized) of gain/loss ratings that resulted in a gain overall.", + "default": "None", + "optional": true + }, + { + "name": "overall_avg_return_percentile", + "type": "float", + "description": "The percentile (normalized) of this analyst's overall average return per rating in comparison to other analysts' overall average returns per rating.", + "default": "None", + "optional": true + }, + { + "name": "total_ratings_percentile", + "type": "float", + "description": "The percentile (normalized) of this analyst's total number of ratings in comparison to the total number of ratings published by all other analysts", + "default": "None", + "optional": true + }, + { + "name": "total_ratings", + "type": "int", + "description": "Number of recommendations made by this analyst.", + "default": "None", + "optional": true + }, + { + "name": "overall_gain_count", + "type": "int", + "description": "The number of ratings that have gained value since the date of recommendation", + "default": "None", + "optional": true + }, + { + "name": "overall_loss_count", + "type": "int", + "description": "The number of ratings that have lost value since the date of recommendation", + "default": "None", + "optional": true + }, + { + "name": "overall_average_return", + "type": "float", + "description": "The average percent (normalized) price difference per rating since the date of recommendation", + "default": "None", + "optional": true + }, + { + "name": "overall_std_dev", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings since the date of recommendation", + "default": "None", + "optional": true + }, + { + "name": "gain_count_1m", + "type": "int", + "description": "The number of ratings that have gained value over the last month", + "default": "None", + "optional": true + }, + { + "name": "loss_count_1m", + "type": "int", + "description": "The number of ratings that have lost value over the last month", + "default": "None", + "optional": true + }, + { + "name": "average_return_1m", + "type": "float", + "description": "The average percent (normalized) price difference per rating over the last month", + "default": "None", + "optional": true + }, + { + "name": "std_dev_1m", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings over the last month", + "default": "None", + "optional": true + }, + { + "name": "gain_count_3m", + "type": "int", + "description": "The number of ratings that have gained value over the last 3 months", + "default": "None", + "optional": true + }, + { + "name": "loss_count_3m", + "type": "int", + "description": "The number of ratings that have lost value over the last 3 months", + "default": "None", + "optional": true + }, + { + "name": "average_return_3m", + "type": "float", + "description": "The average percent (normalized) price difference per rating over the last 3 months", + "default": "None", + "optional": true + }, + { + "name": "std_dev_3m", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings over the last 3 months", + "default": "None", + "optional": true + }, + { + "name": "gain_count_6m", + "type": "int", + "description": "The number of ratings that have gained value over the last 6 months", + "default": "None", + "optional": true + }, + { + "name": "loss_count_6m", + "type": "int", + "description": "The number of ratings that have lost value over the last 6 months", + "default": "None", + "optional": true + }, + { + "name": "average_return_6m", + "type": "float", + "description": "The average percent (normalized) price difference per rating over the last 6 months", + "default": "None", + "optional": true + }, + { + "name": "std_dev_6m", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings over the last 6 months", + "default": "None", + "optional": true + }, + { + "name": "gain_count_9m", + "type": "int", + "description": "The number of ratings that have gained value over the last 9 months", + "default": "None", + "optional": true + }, + { + "name": "loss_count_9m", + "type": "int", + "description": "The number of ratings that have lost value over the last 9 months", + "default": "None", + "optional": true + }, + { + "name": "average_return_9m", + "type": "float", + "description": "The average percent (normalized) price difference per rating over the last 9 months", + "default": "None", + "optional": true + }, + { + "name": "std_dev_9m", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings over the last 9 months", + "default": "None", + "optional": true + }, + { + "name": "gain_count_1y", + "type": "int", + "description": "The number of ratings that have gained value over the last 1 year", + "default": "None", + "optional": true + }, + { + "name": "loss_count_1y", + "type": "int", + "description": "The number of ratings that have lost value over the last 1 year", + "default": "None", + "optional": true + }, + { + "name": "average_return_1y", + "type": "float", + "description": "The average percent (normalized) price difference per rating over the last 1 year", + "default": "None", + "optional": true + }, + { + "name": "std_dev_1y", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings over the last 1 year", + "default": "None", + "optional": true + }, + { + "name": "gain_count_2y", + "type": "int", + "description": "The number of ratings that have gained value over the last 2 years", + "default": "None", + "optional": true + }, + { + "name": "loss_count_2y", + "type": "int", + "description": "The number of ratings that have lost value over the last 2 years", + "default": "None", + "optional": true + }, + { + "name": "average_return_2y", + "type": "float", + "description": "The average percent (normalized) price difference per rating over the last 2 years", + "default": "None", + "optional": true + }, + { + "name": "std_dev_2y", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings over the last 2 years", + "default": "None", + "optional": true + }, + { + "name": "gain_count_3y", + "type": "int", + "description": "The number of ratings that have gained value over the last 3 years", + "default": "None", + "optional": true + }, + { + "name": "loss_count_3y", + "type": "int", + "description": "The number of ratings that have lost value over the last 3 years", + "default": "None", + "optional": true + }, + { + "name": "average_return_3y", + "type": "float", + "description": "The average percent (normalized) price difference per rating over the last 3 years", + "default": "None", + "optional": true + }, + { + "name": "std_dev_3y", + "type": "float", + "description": "The standard deviation in percent (normalized) price difference in the analyst's ratings over the last 3 years", + "default": "None", + "optional": true + } + ] + }, + "model": "AnalystSearch" + }, + "/equity/discovery/gainers": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the top price gainers in the stock market.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.gainers(provider='yfinance')\nobb.equity.discovery.gainers(sort='desc', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order. Possible values: 'asc', 'desc'. Default: 'desc'.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityGainers\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Last price.", + "default": "", + "optional": false + }, + { + "name": "change", + "type": "float", + "description": "Change in price value.", + "default": "", + "optional": false + }, + { + "name": "percent_change", + "type": "float", + "description": "Percent change.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "market_cap", + "type": "float", + "description": "Market Cap.", + "default": "", + "optional": false + }, + { + "name": "avg_volume_3_months", + "type": "float", + "description": "Average volume over the last 3 months in millions.", + "default": "", + "optional": false + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "PE Ratio (TTM).", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityGainers" + }, + "/equity/discovery/losers": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the top price losers in the stock market.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.losers(provider='yfinance')\nobb.equity.discovery.losers(sort='desc', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order. Possible values: 'asc', 'desc'. Default: 'desc'.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityLosers\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Last price.", + "default": "", + "optional": false + }, + { + "name": "change", + "type": "float", + "description": "Change in price value.", + "default": "", + "optional": false + }, + { + "name": "percent_change", + "type": "float", + "description": "Percent change.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "market_cap", + "type": "float", + "description": "Market Cap.", + "default": "", + "optional": false + }, + { + "name": "avg_volume_3_months", + "type": "float", + "description": "Average volume over the last 3 months in millions.", + "default": "", + "optional": false + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "PE Ratio (TTM).", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityLosers" + }, + "/equity/discovery/active": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the most actively traded stocks based on volume.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.active(provider='yfinance')\nobb.equity.discovery.active(sort='desc', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order. Possible values: 'asc', 'desc'. Default: 'desc'.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityActive\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Last price.", + "default": "", + "optional": false + }, + { + "name": "change", + "type": "float", + "description": "Change in price value.", + "default": "", + "optional": false + }, + { + "name": "percent_change", + "type": "float", + "description": "Percent change.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "market_cap", + "type": "float", + "description": "Market Cap displayed in billions.", + "default": "", + "optional": false + }, + { + "name": "avg_volume_3_months", + "type": "float", + "description": "Average volume over the last 3 months in millions.", + "default": "", + "optional": false + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "PE Ratio (TTM).", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityActive" + }, + "/equity/discovery/undervalued_large_caps": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get potentially undervalued large cap stocks.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.undervalued_large_caps(provider='yfinance')\nobb.equity.discovery.undervalued_large_caps(sort='desc', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order. Possible values: 'asc', 'desc'. Default: 'desc'.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityUndervaluedLargeCaps\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Last price.", + "default": "", + "optional": false + }, + { + "name": "change", + "type": "float", + "description": "Change in price value.", + "default": "", + "optional": false + }, + { + "name": "percent_change", + "type": "float", + "description": "Percent change.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "market_cap", + "type": "float", + "description": "Market Cap.", + "default": "None", + "optional": true + }, + { + "name": "avg_volume_3_months", + "type": "float", + "description": "Average volume over the last 3 months in millions.", + "default": "None", + "optional": true + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "PE Ratio (TTM).", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityUndervaluedLargeCaps" + }, + "/equity/discovery/undervalued_growth": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get potentially undervalued growth stocks.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.undervalued_growth(provider='yfinance')\nobb.equity.discovery.undervalued_growth(sort='desc', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order. Possible values: 'asc', 'desc'. Default: 'desc'.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityUndervaluedGrowth\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Last price.", + "default": "", + "optional": false + }, + { + "name": "change", + "type": "float", + "description": "Change in price value.", + "default": "", + "optional": false + }, + { + "name": "percent_change", + "type": "float", + "description": "Percent change.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "market_cap", + "type": "float", + "description": "Market Cap.", + "default": "None", + "optional": true + }, + { + "name": "avg_volume_3_months", + "type": "float", + "description": "Average volume over the last 3 months in millions.", + "default": "None", + "optional": true + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "PE Ratio (TTM).", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityUndervaluedGrowth" + }, + "/equity/discovery/aggressive_small_caps": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get top small cap stocks based on earnings growth.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.aggressive_small_caps(provider='yfinance')\nobb.equity.discovery.aggressive_small_caps(sort='desc', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order. Possible values: 'asc', 'desc'. Default: 'desc'.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityAggressiveSmallCaps\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Last price.", + "default": "", + "optional": false + }, + { + "name": "change", + "type": "float", + "description": "Change in price value.", + "default": "", + "optional": false + }, + { + "name": "percent_change", + "type": "float", + "description": "Percent change.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "market_cap", + "type": "float", + "description": "Market Cap.", + "default": "None", + "optional": true + }, + { + "name": "avg_volume_3_months", + "type": "float", + "description": "Average volume over the last 3 months in millions.", + "default": "None", + "optional": true + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "PE Ratio (TTM).", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityAggressiveSmallCaps" + }, + "/equity/discovery/growth_tech": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get top tech stocks based on revenue and earnings growth.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.growth_tech(provider='yfinance')\nobb.equity.discovery.growth_tech(sort='desc', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order. Possible values: 'asc', 'desc'. Default: 'desc'.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'yfinance' if there is no default.", + "default": "yfinance", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : GrowthTechEquities\n Serializable results.\n provider : Literal['yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the entity.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Last price.", + "default": "", + "optional": false + }, + { + "name": "change", + "type": "float", + "description": "Change in price value.", + "default": "", + "optional": false + }, + { + "name": "percent_change", + "type": "float", + "description": "Percent change.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "float", + "description": "The trading volume.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "market_cap", + "type": "float", + "description": "Market Cap.", + "default": "None", + "optional": true + }, + { + "name": "avg_volume_3_months", + "type": "float", + "description": "Average volume over the last 3 months in millions.", + "default": "None", + "optional": true + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "PE Ratio (TTM).", + "default": "None", + "optional": true + } + ] + }, + "model": "GrowthTechEquities" + }, + "/equity/discovery/filings": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the URLs to SEC filings reported to EDGAR database, such as 10-K, 10-Q, 8-K, and more. SEC\nfilings include Form 10-K, Form 10-Q, Form 8-K, the proxy statement, Forms 3, 4, and 5, Schedule 13, Form 114,\nForeign Investment Disclosures and others. The annual 10-K report is required to be\nfiled annually and includes the company's financial statements, management discussion and analysis,\nand audited financial statements.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.discovery.filings(provider='fmp')\n# Get filings for the year 2023, limited to 100 results\nobb.equity.discovery.filings(start_date='2023-01-01', end_date='2023-12-31', limit=100, provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "form_type", + "type": "str", + "description": "Filter by form type. Visit https://www.sec.gov/forms for a list of supported form types.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "100", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "is_done", + "type": "bool", + "description": "Flag for whether or not the filing is done.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : DiscoveryFilings\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "cik", + "type": "str", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "", + "optional": false + }, + { + "name": "title", + "type": "str", + "description": "Title of the filing.", + "default": "", + "optional": false + }, + { + "name": "date", + "type": "datetime", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "form_type", + "type": "str", + "description": "The form type of the filing", + "default": "", + "optional": false + }, + { + "name": "link", + "type": "str", + "description": "URL to the filing page on the SEC site.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "DiscoveryFilings" + }, + "/equity/fundamental/multiples": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get equity valuation multiples for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.multiples(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityValuationMultiples\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "revenue_per_share_ttm", + "type": "float", + "description": "Revenue per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "net_income_per_share_ttm", + "type": "float", + "description": "Net income per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "operating_cash_flow_per_share_ttm", + "type": "float", + "description": "Operating cash flow per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_per_share_ttm", + "type": "float", + "description": "Free cash flow per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "cash_per_share_ttm", + "type": "float", + "description": "Cash per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "book_value_per_share_ttm", + "type": "float", + "description": "Book value per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "tangible_book_value_per_share_ttm", + "type": "float", + "description": "Tangible book value per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "shareholders_equity_per_share_ttm", + "type": "float", + "description": "Shareholders equity per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "interest_debt_per_share_ttm", + "type": "float", + "description": "Interest debt per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "market_cap_ttm", + "type": "float", + "description": "Market capitalization calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "enterprise_value_ttm", + "type": "float", + "description": "Enterprise value calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "pe_ratio_ttm", + "type": "float", + "description": "Price-to-earnings ratio (P/E ratio) calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "price_to_sales_ratio_ttm", + "type": "float", + "description": "Price-to-sales ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "pocf_ratio_ttm", + "type": "float", + "description": "Price-to-operating cash flow ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "pfcf_ratio_ttm", + "type": "float", + "description": "Price-to-free cash flow ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "pb_ratio_ttm", + "type": "float", + "description": "Price-to-book ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "ptb_ratio_ttm", + "type": "float", + "description": "Price-to-tangible book ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "ev_to_sales_ttm", + "type": "float", + "description": "Enterprise value-to-sales ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "enterprise_value_over_ebitda_ttm", + "type": "float", + "description": "Enterprise value-to-EBITDA ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "ev_to_operating_cash_flow_ttm", + "type": "float", + "description": "Enterprise value-to-operating cash flow ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "ev_to_free_cash_flow_ttm", + "type": "float", + "description": "Enterprise value-to-free cash flow ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "earnings_yield_ttm", + "type": "float", + "description": "Earnings yield calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_yield_ttm", + "type": "float", + "description": "Free cash flow yield calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "debt_to_equity_ttm", + "type": "float", + "description": "Debt-to-equity ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "debt_to_assets_ttm", + "type": "float", + "description": "Debt-to-assets ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "net_debt_to_ebitda_ttm", + "type": "float", + "description": "Net debt-to-EBITDA ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "current_ratio_ttm", + "type": "float", + "description": "Current ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "interest_coverage_ttm", + "type": "float", + "description": "Interest coverage calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "income_quality_ttm", + "type": "float", + "description": "Income quality calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield_ttm", + "type": "float", + "description": "Dividend yield calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield_percentage_ttm", + "type": "float", + "description": "Dividend yield percentage calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "dividend_to_market_cap_ttm", + "type": "float", + "description": "Dividend to market capitalization ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "dividend_per_share_ttm", + "type": "float", + "description": "Dividend per share calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "payout_ratio_ttm", + "type": "float", + "description": "Payout ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "sales_general_and_administrative_to_revenue_ttm", + "type": "float", + "description": "Sales general and administrative expenses-to-revenue ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "research_and_development_to_revenue_ttm", + "type": "float", + "description": "Research and development expenses-to-revenue ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "intangibles_to_total_assets_ttm", + "type": "float", + "description": "Intangibles-to-total assets ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "capex_to_operating_cash_flow_ttm", + "type": "float", + "description": "Capital expenditures-to-operating cash flow ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "capex_to_revenue_ttm", + "type": "float", + "description": "Capital expenditures-to-revenue ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "capex_to_depreciation_ttm", + "type": "float", + "description": "Capital expenditures-to-depreciation ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "stock_based_compensation_to_revenue_ttm", + "type": "float", + "description": "Stock-based compensation-to-revenue ratio calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "graham_number_ttm", + "type": "float", + "description": "Graham number calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "roic_ttm", + "type": "float", + "description": "Return on invested capital calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "return_on_tangible_assets_ttm", + "type": "float", + "description": "Return on tangible assets calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "graham_net_net_ttm", + "type": "float", + "description": "Graham net-net working capital calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "working_capital_ttm", + "type": "float", + "description": "Working capital calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "tangible_asset_value_ttm", + "type": "float", + "description": "Tangible asset value calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "net_current_asset_value_ttm", + "type": "float", + "description": "Net current asset value calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "invested_capital_ttm", + "type": "float", + "description": "Invested capital calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "average_receivables_ttm", + "type": "float", + "description": "Average receivables calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "average_payables_ttm", + "type": "float", + "description": "Average payables calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "average_inventory_ttm", + "type": "float", + "description": "Average inventory calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "days_sales_outstanding_ttm", + "type": "float", + "description": "Days sales outstanding calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "days_payables_outstanding_ttm", + "type": "float", + "description": "Days payables outstanding calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "days_of_inventory_on_hand_ttm", + "type": "float", + "description": "Days of inventory on hand calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "receivables_turnover_ttm", + "type": "float", + "description": "Receivables turnover calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "payables_turnover_ttm", + "type": "float", + "description": "Payables turnover calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "inventory_turnover_ttm", + "type": "float", + "description": "Inventory turnover calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "roe_ttm", + "type": "float", + "description": "Return on equity calculated as trailing twelve months.", + "default": "None", + "optional": true + }, + { + "name": "capex_per_share_ttm", + "type": "float", + "description": "Capital expenditures per share calculated as trailing twelve months.", + "default": "None", + "optional": true + } + ], + "fmp": [] + }, + "model": "EquityValuationMultiples" + }, + "/equity/fundamental/balance": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the balance sheet for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.balance(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.balance(symbol='AAPL', period='annual', limit=5, provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "limit", + "type": "int, Ge(ge=0)", + "description": "The number of data entries to return.", + "default": "5", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "fiscal_year", + "type": "int", + "description": "The specific fiscal year. Reports do not go beyond 2008.", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "filing_date", + "type": "date", + "description": "Filing date of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_lt", + "type": "date", + "description": "Filing date less than the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_lte", + "type": "date", + "description": "Filing date less than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_gt", + "type": "date", + "description": "Filing date greater than the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_gte", + "type": "date", + "description": "Filing date greater than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date", + "type": "date", + "description": "Period of report date of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_lt", + "type": "date", + "description": "Period of report date less than the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_lte", + "type": "date", + "description": "Period of report date less than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_gt", + "type": "date", + "description": "Period of report date greater than the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_gte", + "type": "date", + "description": "Period of report date greater than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "include_sources", + "type": "bool", + "description": "Whether to include the sources of the financial statement.", + "default": "True", + "optional": true + }, + { + "name": "order", + "type": "Literal['asc', 'desc']", + "description": "Order of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "sort", + "type": "Literal['filing_date', 'period_of_report_date']", + "description": "Sort of the financial statement.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : BalanceSheet\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "date", + "description": "The end date of the reporting period.", + "default": "", + "optional": false + }, + { + "name": "fiscal_period", + "type": "str", + "description": "The fiscal period of the report.", + "default": "None", + "optional": true + }, + { + "name": "fiscal_year", + "type": "int", + "description": "The fiscal year of the fiscal period.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "filing_date", + "type": "date", + "description": "The date when the filing was made.", + "default": "None", + "optional": true + }, + { + "name": "accepted_date", + "type": "datetime", + "description": "The date and time when the filing was accepted.", + "default": "None", + "optional": true + }, + { + "name": "reported_currency", + "type": "str", + "description": "The currency in which the balance sheet was reported.", + "default": "None", + "optional": true + }, + { + "name": "cash_and_cash_equivalents", + "type": "float", + "description": "Cash and cash equivalents.", + "default": "None", + "optional": true + }, + { + "name": "short_term_investments", + "type": "float", + "description": "Short term investments.", + "default": "None", + "optional": true + }, + { + "name": "cash_and_short_term_investments", + "type": "float", + "description": "Cash and short term investments.", + "default": "None", + "optional": true + }, + { + "name": "net_receivables", + "type": "float", + "description": "Net receivables.", + "default": "None", + "optional": true + }, + { + "name": "inventory", + "type": "float", + "description": "Inventory.", + "default": "None", + "optional": true + }, + { + "name": "other_current_assets", + "type": "float", + "description": "Other current assets.", + "default": "None", + "optional": true + }, + { + "name": "total_current_assets", + "type": "float", + "description": "Total current assets.", + "default": "None", + "optional": true + }, + { + "name": "plant_property_equipment_net", + "type": "float", + "description": "Plant property equipment net.", + "default": "None", + "optional": true + }, + { + "name": "goodwill", + "type": "float", + "description": "Goodwill.", + "default": "None", + "optional": true + }, + { + "name": "intangible_assets", + "type": "float", + "description": "Intangible assets.", + "default": "None", + "optional": true + }, + { + "name": "goodwill_and_intangible_assets", + "type": "float", + "description": "Goodwill and intangible assets.", + "default": "None", + "optional": true + }, + { + "name": "long_term_investments", + "type": "float", + "description": "Long term investments.", + "default": "None", + "optional": true + }, + { + "name": "tax_assets", + "type": "float", + "description": "Tax assets.", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_assets", + "type": "float", + "description": "Other non current assets.", + "default": "None", + "optional": true + }, + { + "name": "non_current_assets", + "type": "float", + "description": "Total non current assets.", + "default": "None", + "optional": true + }, + { + "name": "other_assets", + "type": "float", + "description": "Other assets.", + "default": "None", + "optional": true + }, + { + "name": "total_assets", + "type": "float", + "description": "Total assets.", + "default": "None", + "optional": true + }, + { + "name": "accounts_payable", + "type": "float", + "description": "Accounts payable.", + "default": "None", + "optional": true + }, + { + "name": "short_term_debt", + "type": "float", + "description": "Short term debt.", + "default": "None", + "optional": true + }, + { + "name": "tax_payables", + "type": "float", + "description": "Tax payables.", + "default": "None", + "optional": true + }, + { + "name": "current_deferred_revenue", + "type": "float", + "description": "Current deferred revenue.", + "default": "None", + "optional": true + }, + { + "name": "other_current_liabilities", + "type": "float", + "description": "Other current liabilities.", + "default": "None", + "optional": true + }, + { + "name": "total_current_liabilities", + "type": "float", + "description": "Total current liabilities.", + "default": "None", + "optional": true + }, + { + "name": "long_term_debt", + "type": "float", + "description": "Long term debt.", + "default": "None", + "optional": true + }, + { + "name": "deferred_revenue_non_current", + "type": "float", + "description": "Non current deferred revenue.", + "default": "None", + "optional": true + }, + { + "name": "deferred_tax_liabilities_non_current", + "type": "float", + "description": "Deferred tax liabilities non current.", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_liabilities", + "type": "float", + "description": "Other non current liabilities.", + "default": "None", + "optional": true + }, + { + "name": "total_non_current_liabilities", + "type": "float", + "description": "Total non current liabilities.", + "default": "None", + "optional": true + }, + { + "name": "other_liabilities", + "type": "float", + "description": "Other liabilities.", + "default": "None", + "optional": true + }, + { + "name": "capital_lease_obligations", + "type": "float", + "description": "Capital lease obligations.", + "default": "None", + "optional": true + }, + { + "name": "total_liabilities", + "type": "float", + "description": "Total liabilities.", + "default": "None", + "optional": true + }, + { + "name": "preferred_stock", + "type": "float", + "description": "Preferred stock.", + "default": "None", + "optional": true + }, + { + "name": "common_stock", + "type": "float", + "description": "Common stock.", + "default": "None", + "optional": true + }, + { + "name": "retained_earnings", + "type": "float", + "description": "Retained earnings.", + "default": "None", + "optional": true + }, + { + "name": "accumulated_other_comprehensive_income", + "type": "float", + "description": "Accumulated other comprehensive income (loss).", + "default": "None", + "optional": true + }, + { + "name": "other_shareholders_equity", + "type": "float", + "description": "Other shareholders equity.", + "default": "None", + "optional": true + }, + { + "name": "other_total_shareholders_equity", + "type": "float", + "description": "Other total shareholders equity.", + "default": "None", + "optional": true + }, + { + "name": "total_common_equity", + "type": "float", + "description": "Total common equity.", + "default": "None", + "optional": true + }, + { + "name": "total_equity_non_controlling_interests", + "type": "float", + "description": "Total equity non controlling interests.", + "default": "None", + "optional": true + }, + { + "name": "total_liabilities_and_shareholders_equity", + "type": "float", + "description": "Total liabilities and shareholders equity.", + "default": "None", + "optional": true + }, + { + "name": "minority_interest", + "type": "float", + "description": "Minority interest.", + "default": "None", + "optional": true + }, + { + "name": "total_liabilities_and_total_equity", + "type": "float", + "description": "Total liabilities and total equity.", + "default": "None", + "optional": true + }, + { + "name": "total_investments", + "type": "float", + "description": "Total investments.", + "default": "None", + "optional": true + }, + { + "name": "total_debt", + "type": "float", + "description": "Total debt.", + "default": "None", + "optional": true + }, + { + "name": "net_debt", + "type": "float", + "description": "Net debt.", + "default": "None", + "optional": true + }, + { + "name": "link", + "type": "str", + "description": "Link to the filing.", + "default": "None", + "optional": true + }, + { + "name": "final_link", + "type": "str", + "description": "Link to the filing document.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "reported_currency", + "type": "str", + "description": "The currency in which the balance sheet is reported.", + "default": "None", + "optional": true + }, + { + "name": "cash_and_cash_equivalents", + "type": "float", + "description": "Cash and cash equivalents.", + "default": "None", + "optional": true + }, + { + "name": "cash_and_due_from_banks", + "type": "float", + "description": "Cash and due from banks.", + "default": "None", + "optional": true + }, + { + "name": "restricted_cash", + "type": "float", + "description": "Restricted cash.", + "default": "None", + "optional": true + }, + { + "name": "short_term_investments", + "type": "float", + "description": "Short term investments.", + "default": "None", + "optional": true + }, + { + "name": "federal_funds_sold", + "type": "float", + "description": "Federal funds sold.", + "default": "None", + "optional": true + }, + { + "name": "accounts_receivable", + "type": "float", + "description": "Accounts receivable.", + "default": "None", + "optional": true + }, + { + "name": "note_and_lease_receivable", + "type": "float", + "description": "Note and lease receivable. (Vendor non-trade receivables)", + "default": "None", + "optional": true + }, + { + "name": "inventories", + "type": "float", + "description": "Net Inventories.", + "default": "None", + "optional": true + }, + { + "name": "customer_and_other_receivables", + "type": "float", + "description": "Customer and other receivables.", + "default": "None", + "optional": true + }, + { + "name": "interest_bearing_deposits_at_other_banks", + "type": "float", + "description": "Interest bearing deposits at other banks.", + "default": "None", + "optional": true + }, + { + "name": "time_deposits_placed_and_other_short_term_investments", + "type": "float", + "description": "Time deposits placed and other short term investments.", + "default": "None", + "optional": true + }, + { + "name": "trading_account_securities", + "type": "float", + "description": "Trading account securities.", + "default": "None", + "optional": true + }, + { + "name": "loans_and_leases", + "type": "float", + "description": "Loans and leases.", + "default": "None", + "optional": true + }, + { + "name": "allowance_for_loan_and_lease_losses", + "type": "float", + "description": "Allowance for loan and lease losses.", + "default": "None", + "optional": true + }, + { + "name": "current_deferred_refundable_income_taxes", + "type": "float", + "description": "Current deferred refundable income taxes.", + "default": "None", + "optional": true + }, + { + "name": "other_current_assets", + "type": "float", + "description": "Other current assets.", + "default": "None", + "optional": true + }, + { + "name": "loans_and_leases_net_of_allowance", + "type": "float", + "description": "Loans and leases net of allowance.", + "default": "None", + "optional": true + }, + { + "name": "accrued_investment_income", + "type": "float", + "description": "Accrued investment income.", + "default": "None", + "optional": true + }, + { + "name": "other_current_non_operating_assets", + "type": "float", + "description": "Other current non-operating assets.", + "default": "None", + "optional": true + }, + { + "name": "loans_held_for_sale", + "type": "float", + "description": "Loans held for sale.", + "default": "None", + "optional": true + }, + { + "name": "prepaid_expenses", + "type": "float", + "description": "Prepaid expenses.", + "default": "None", + "optional": true + }, + { + "name": "total_current_assets", + "type": "float", + "description": "Total current assets.", + "default": "None", + "optional": true + }, + { + "name": "plant_property_equipment_gross", + "type": "float", + "description": "Plant property equipment gross.", + "default": "None", + "optional": true + }, + { + "name": "accumulated_depreciation", + "type": "float", + "description": "Accumulated depreciation.", + "default": "None", + "optional": true + }, + { + "name": "premises_and_equipment_net", + "type": "float", + "description": "Net premises and equipment.", + "default": "None", + "optional": true + }, + { + "name": "plant_property_equipment_net", + "type": "float", + "description": "Net plant property equipment.", + "default": "None", + "optional": true + }, + { + "name": "long_term_investments", + "type": "float", + "description": "Long term investments.", + "default": "None", + "optional": true + }, + { + "name": "mortgage_servicing_rights", + "type": "float", + "description": "Mortgage servicing rights.", + "default": "None", + "optional": true + }, + { + "name": "unearned_premiums_asset", + "type": "float", + "description": "Unearned premiums asset.", + "default": "None", + "optional": true + }, + { + "name": "non_current_note_lease_receivables", + "type": "float", + "description": "Non-current note lease receivables.", + "default": "None", + "optional": true + }, + { + "name": "deferred_acquisition_cost", + "type": "float", + "description": "Deferred acquisition cost.", + "default": "None", + "optional": true + }, + { + "name": "goodwill", + "type": "float", + "description": "Goodwill.", + "default": "None", + "optional": true + }, + { + "name": "separate_account_business_assets", + "type": "float", + "description": "Separate account business assets.", + "default": "None", + "optional": true + }, + { + "name": "non_current_deferred_refundable_income_taxes", + "type": "float", + "description": "Noncurrent deferred refundable income taxes.", + "default": "None", + "optional": true + }, + { + "name": "intangible_assets", + "type": "float", + "description": "Intangible assets.", + "default": "None", + "optional": true + }, + { + "name": "employee_benefit_assets", + "type": "float", + "description": "Employee benefit assets.", + "default": "None", + "optional": true + }, + { + "name": "other_assets", + "type": "float", + "description": "Other assets.", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_operating_assets", + "type": "float", + "description": "Other noncurrent operating assets.", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_non_operating_assets", + "type": "float", + "description": "Other noncurrent non-operating assets.", + "default": "None", + "optional": true + }, + { + "name": "interest_bearing_deposits", + "type": "float", + "description": "Interest bearing deposits.", + "default": "None", + "optional": true + }, + { + "name": "total_non_current_assets", + "type": "float", + "description": "Total noncurrent assets.", + "default": "None", + "optional": true + }, + { + "name": "total_assets", + "type": "float", + "description": "Total assets.", + "default": "None", + "optional": true + }, + { + "name": "non_interest_bearing_deposits", + "type": "float", + "description": "Non interest bearing deposits.", + "default": "None", + "optional": true + }, + { + "name": "federal_funds_purchased_and_securities_sold", + "type": "float", + "description": "Federal funds purchased and securities sold.", + "default": "None", + "optional": true + }, + { + "name": "bankers_acceptance_outstanding", + "type": "float", + "description": "Bankers acceptance outstanding.", + "default": "None", + "optional": true + }, + { + "name": "short_term_debt", + "type": "float", + "description": "Short term debt.", + "default": "None", + "optional": true + }, + { + "name": "accounts_payable", + "type": "float", + "description": "Accounts payable.", + "default": "None", + "optional": true + }, + { + "name": "current_deferred_revenue", + "type": "float", + "description": "Current deferred revenue.", + "default": "None", + "optional": true + }, + { + "name": "current_deferred_payable_income_tax_liabilities", + "type": "float", + "description": "Current deferred payable income tax liabilities.", + "default": "None", + "optional": true + }, + { + "name": "accrued_interest_payable", + "type": "float", + "description": "Accrued interest payable.", + "default": "None", + "optional": true + }, + { + "name": "accrued_expenses", + "type": "float", + "description": "Accrued expenses.", + "default": "None", + "optional": true + }, + { + "name": "other_short_term_payables", + "type": "float", + "description": "Other short term payables.", + "default": "None", + "optional": true + }, + { + "name": "customer_deposits", + "type": "float", + "description": "Customer deposits.", + "default": "None", + "optional": true + }, + { + "name": "dividends_payable", + "type": "float", + "description": "Dividends payable.", + "default": "None", + "optional": true + }, + { + "name": "claims_and_claim_expense", + "type": "float", + "description": "Claims and claim expense.", + "default": "None", + "optional": true + }, + { + "name": "future_policy_benefits", + "type": "float", + "description": "Future policy benefits.", + "default": "None", + "optional": true + }, + { + "name": "current_employee_benefit_liabilities", + "type": "float", + "description": "Current employee benefit liabilities.", + "default": "None", + "optional": true + }, + { + "name": "unearned_premiums_liability", + "type": "float", + "description": "Unearned premiums liability.", + "default": "None", + "optional": true + }, + { + "name": "other_taxes_payable", + "type": "float", + "description": "Other taxes payable.", + "default": "None", + "optional": true + }, + { + "name": "policy_holder_funds", + "type": "float", + "description": "Policy holder funds.", + "default": "None", + "optional": true + }, + { + "name": "other_current_liabilities", + "type": "float", + "description": "Other current liabilities.", + "default": "None", + "optional": true + }, + { + "name": "other_current_non_operating_liabilities", + "type": "float", + "description": "Other current non-operating liabilities.", + "default": "None", + "optional": true + }, + { + "name": "separate_account_business_liabilities", + "type": "float", + "description": "Separate account business liabilities.", + "default": "None", + "optional": true + }, + { + "name": "total_current_liabilities", + "type": "float", + "description": "Total current liabilities.", + "default": "None", + "optional": true + }, + { + "name": "long_term_debt", + "type": "float", + "description": "Long term debt.", + "default": "None", + "optional": true + }, + { + "name": "other_long_term_liabilities", + "type": "float", + "description": "Other long term liabilities.", + "default": "None", + "optional": true + }, + { + "name": "non_current_deferred_revenue", + "type": "float", + "description": "Non-current deferred revenue.", + "default": "None", + "optional": true + }, + { + "name": "non_current_deferred_payable_income_tax_liabilities", + "type": "float", + "description": "Non-current deferred payable income tax liabilities.", + "default": "None", + "optional": true + }, + { + "name": "non_current_employee_benefit_liabilities", + "type": "float", + "description": "Non-current employee benefit liabilities.", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_operating_liabilities", + "type": "float", + "description": "Other non-current operating liabilities.", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_non_operating_liabilities", + "type": "float", + "description": "Other non-current, non-operating liabilities.", + "default": "None", + "optional": true + }, + { + "name": "total_non_current_liabilities", + "type": "float", + "description": "Total non-current liabilities.", + "default": "None", + "optional": true + }, + { + "name": "capital_lease_obligations", + "type": "float", + "description": "Capital lease obligations.", + "default": "None", + "optional": true + }, + { + "name": "asset_retirement_reserve_litigation_obligation", + "type": "float", + "description": "Asset retirement reserve litigation obligation.", + "default": "None", + "optional": true + }, + { + "name": "total_liabilities", + "type": "float", + "description": "Total liabilities.", + "default": "None", + "optional": true + }, + { + "name": "commitments_contingencies", + "type": "float", + "description": "Commitments contingencies.", + "default": "None", + "optional": true + }, + { + "name": "redeemable_non_controlling_interest", + "type": "float", + "description": "Redeemable non-controlling interest.", + "default": "None", + "optional": true + }, + { + "name": "preferred_stock", + "type": "float", + "description": "Preferred stock.", + "default": "None", + "optional": true + }, + { + "name": "common_stock", + "type": "float", + "description": "Common stock.", + "default": "None", + "optional": true + }, + { + "name": "retained_earnings", + "type": "float", + "description": "Retained earnings.", + "default": "None", + "optional": true + }, + { + "name": "treasury_stock", + "type": "float", + "description": "Treasury stock.", + "default": "None", + "optional": true + }, + { + "name": "accumulated_other_comprehensive_income", + "type": "float", + "description": "Accumulated other comprehensive income.", + "default": "None", + "optional": true + }, + { + "name": "participating_policy_holder_equity", + "type": "float", + "description": "Participating policy holder equity.", + "default": "None", + "optional": true + }, + { + "name": "other_equity_adjustments", + "type": "float", + "description": "Other equity adjustments.", + "default": "None", + "optional": true + }, + { + "name": "total_common_equity", + "type": "float", + "description": "Total common equity.", + "default": "None", + "optional": true + }, + { + "name": "total_preferred_common_equity", + "type": "float", + "description": "Total preferred common equity.", + "default": "None", + "optional": true + }, + { + "name": "non_controlling_interest", + "type": "float", + "description": "Non-controlling interest.", + "default": "None", + "optional": true + }, + { + "name": "total_equity_non_controlling_interests", + "type": "float", + "description": "Total equity non-controlling interests.", + "default": "None", + "optional": true + }, + { + "name": "total_liabilities_shareholders_equity", + "type": "float", + "description": "Total liabilities and shareholders equity.", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "accounts_receivable", + "type": "int", + "description": "Accounts receivable", + "default": "None", + "optional": true + }, + { + "name": "marketable_securities", + "type": "int", + "description": "Marketable securities", + "default": "None", + "optional": true + }, + { + "name": "prepaid_expenses", + "type": "int", + "description": "Prepaid expenses", + "default": "None", + "optional": true + }, + { + "name": "other_current_assets", + "type": "int", + "description": "Other current assets", + "default": "None", + "optional": true + }, + { + "name": "total_current_assets", + "type": "int", + "description": "Total current assets", + "default": "None", + "optional": true + }, + { + "name": "property_plant_equipment_net", + "type": "int", + "description": "Property plant and equipment net", + "default": "None", + "optional": true + }, + { + "name": "inventory", + "type": "int", + "description": "Inventory", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_assets", + "type": "int", + "description": "Other non-current assets", + "default": "None", + "optional": true + }, + { + "name": "total_non_current_assets", + "type": "int", + "description": "Total non-current assets", + "default": "None", + "optional": true + }, + { + "name": "intangible_assets", + "type": "int", + "description": "Intangible assets", + "default": "None", + "optional": true + }, + { + "name": "total_assets", + "type": "int", + "description": "Total assets", + "default": "None", + "optional": true + }, + { + "name": "accounts_payable", + "type": "int", + "description": "Accounts payable", + "default": "None", + "optional": true + }, + { + "name": "employee_wages", + "type": "int", + "description": "Employee wages", + "default": "None", + "optional": true + }, + { + "name": "other_current_liabilities", + "type": "int", + "description": "Other current liabilities", + "default": "None", + "optional": true + }, + { + "name": "total_current_liabilities", + "type": "int", + "description": "Total current liabilities", + "default": "None", + "optional": true + }, + { + "name": "other_non_current_liabilities", + "type": "int", + "description": "Other non-current liabilities", + "default": "None", + "optional": true + }, + { + "name": "total_non_current_liabilities", + "type": "int", + "description": "Total non-current liabilities", + "default": "None", + "optional": true + }, + { + "name": "long_term_debt", + "type": "int", + "description": "Long term debt", + "default": "None", + "optional": true + }, + { + "name": "total_liabilities", + "type": "int", + "description": "Total liabilities", + "default": "None", + "optional": true + }, + { + "name": "minority_interest", + "type": "int", + "description": "Minority interest", + "default": "None", + "optional": true + }, + { + "name": "temporary_equity_attributable_to_parent", + "type": "int", + "description": "Temporary equity attributable to parent", + "default": "None", + "optional": true + }, + { + "name": "equity_attributable_to_parent", + "type": "int", + "description": "Equity attributable to parent", + "default": "None", + "optional": true + }, + { + "name": "temporary_equity", + "type": "int", + "description": "Temporary equity", + "default": "None", + "optional": true + }, + { + "name": "preferred_stock", + "type": "int", + "description": "Preferred stock", + "default": "None", + "optional": true + }, + { + "name": "redeemable_non_controlling_interest", + "type": "int", + "description": "Redeemable non-controlling interest", + "default": "None", + "optional": true + }, + { + "name": "redeemable_non_controlling_interest_other", + "type": "int", + "description": "Redeemable non-controlling interest other", + "default": "None", + "optional": true + }, + { + "name": "total_stock_holders_equity", + "type": "int", + "description": "Total stock holders equity", + "default": "None", + "optional": true + }, + { + "name": "total_liabilities_and_stock_holders_equity", + "type": "int", + "description": "Total liabilities and stockholders equity", + "default": "None", + "optional": true + }, + { + "name": "total_equity", + "type": "int", + "description": "Total equity", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "BalanceSheet" + }, + "/equity/fundamental/balance_growth": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the growth of a company's balance sheet items over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.balance_growth(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.balance_growth(symbol='AAPL', limit=10, provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "10", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : BalanceSheetGrowth\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Reporting period.", + "default": "", + "optional": false + }, + { + "name": "growth_cash_and_cash_equivalents", + "type": "float", + "description": "Growth rate of cash and cash equivalents.", + "default": "", + "optional": false + }, + { + "name": "growth_short_term_investments", + "type": "float", + "description": "Growth rate of short-term investments.", + "default": "", + "optional": false + }, + { + "name": "growth_cash_and_short_term_investments", + "type": "float", + "description": "Growth rate of cash and short-term investments.", + "default": "", + "optional": false + }, + { + "name": "growth_net_receivables", + "type": "float", + "description": "Growth rate of net receivables.", + "default": "", + "optional": false + }, + { + "name": "growth_inventory", + "type": "float", + "description": "Growth rate of inventory.", + "default": "", + "optional": false + }, + { + "name": "growth_other_current_assets", + "type": "float", + "description": "Growth rate of other current assets.", + "default": "", + "optional": false + }, + { + "name": "growth_total_current_assets", + "type": "float", + "description": "Growth rate of total current assets.", + "default": "", + "optional": false + }, + { + "name": "growth_property_plant_equipment_net", + "type": "float", + "description": "Growth rate of net property, plant, and equipment.", + "default": "", + "optional": false + }, + { + "name": "growth_goodwill", + "type": "float", + "description": "Growth rate of goodwill.", + "default": "", + "optional": false + }, + { + "name": "growth_intangible_assets", + "type": "float", + "description": "Growth rate of intangible assets.", + "default": "", + "optional": false + }, + { + "name": "growth_goodwill_and_intangible_assets", + "type": "float", + "description": "Growth rate of goodwill and intangible assets.", + "default": "", + "optional": false + }, + { + "name": "growth_long_term_investments", + "type": "float", + "description": "Growth rate of long-term investments.", + "default": "", + "optional": false + }, + { + "name": "growth_tax_assets", + "type": "float", + "description": "Growth rate of tax assets.", + "default": "", + "optional": false + }, + { + "name": "growth_other_non_current_assets", + "type": "float", + "description": "Growth rate of other non-current assets.", + "default": "", + "optional": false + }, + { + "name": "growth_total_non_current_assets", + "type": "float", + "description": "Growth rate of total non-current assets.", + "default": "", + "optional": false + }, + { + "name": "growth_other_assets", + "type": "float", + "description": "Growth rate of other assets.", + "default": "", + "optional": false + }, + { + "name": "growth_total_assets", + "type": "float", + "description": "Growth rate of total assets.", + "default": "", + "optional": false + }, + { + "name": "growth_account_payables", + "type": "float", + "description": "Growth rate of accounts payable.", + "default": "", + "optional": false + }, + { + "name": "growth_short_term_debt", + "type": "float", + "description": "Growth rate of short-term debt.", + "default": "", + "optional": false + }, + { + "name": "growth_tax_payables", + "type": "float", + "description": "Growth rate of tax payables.", + "default": "", + "optional": false + }, + { + "name": "growth_deferred_revenue", + "type": "float", + "description": "Growth rate of deferred revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_other_current_liabilities", + "type": "float", + "description": "Growth rate of other current liabilities.", + "default": "", + "optional": false + }, + { + "name": "growth_total_current_liabilities", + "type": "float", + "description": "Growth rate of total current liabilities.", + "default": "", + "optional": false + }, + { + "name": "growth_long_term_debt", + "type": "float", + "description": "Growth rate of long-term debt.", + "default": "", + "optional": false + }, + { + "name": "growth_deferred_revenue_non_current", + "type": "float", + "description": "Growth rate of non-current deferred revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_deferrred_tax_liabilities_non_current", + "type": "float", + "description": "Growth rate of non-current deferred tax liabilities.", + "default": "", + "optional": false + }, + { + "name": "growth_other_non_current_liabilities", + "type": "float", + "description": "Growth rate of other non-current liabilities.", + "default": "", + "optional": false + }, + { + "name": "growth_total_non_current_liabilities", + "type": "float", + "description": "Growth rate of total non-current liabilities.", + "default": "", + "optional": false + }, + { + "name": "growth_other_liabilities", + "type": "float", + "description": "Growth rate of other liabilities.", + "default": "", + "optional": false + }, + { + "name": "growth_total_liabilities", + "type": "float", + "description": "Growth rate of total liabilities.", + "default": "", + "optional": false + }, + { + "name": "growth_common_stock", + "type": "float", + "description": "Growth rate of common stock.", + "default": "", + "optional": false + }, + { + "name": "growth_retained_earnings", + "type": "float", + "description": "Growth rate of retained earnings.", + "default": "", + "optional": false + }, + { + "name": "growth_accumulated_other_comprehensive_income_loss", + "type": "float", + "description": "Growth rate of accumulated other comprehensive income/loss.", + "default": "", + "optional": false + }, + { + "name": "growth_othertotal_stockholders_equity", + "type": "float", + "description": "Growth rate of other total stockholders' equity.", + "default": "", + "optional": false + }, + { + "name": "growth_total_stockholders_equity", + "type": "float", + "description": "Growth rate of total stockholders' equity.", + "default": "", + "optional": false + }, + { + "name": "growth_total_liabilities_and_stockholders_equity", + "type": "float", + "description": "Growth rate of total liabilities and stockholders' equity.", + "default": "", + "optional": false + }, + { + "name": "growth_total_investments", + "type": "float", + "description": "Growth rate of total investments.", + "default": "", + "optional": false + }, + { + "name": "growth_total_debt", + "type": "float", + "description": "Growth rate of total debt.", + "default": "", + "optional": false + }, + { + "name": "growth_net_debt", + "type": "float", + "description": "Growth rate of net debt.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "BalanceSheetGrowth" + }, + "/equity/fundamental/cash": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the cash flow statement for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.cash(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.cash(symbol='AAPL', period='annual', limit=5, provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "limit", + "type": "int, Ge(ge=0)", + "description": "The number of data entries to return.", + "default": "5", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "fiscal_year", + "type": "int", + "description": "The specific fiscal year. Reports do not go beyond 2008.", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "filing_date", + "type": "date", + "description": "Filing date of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_lt", + "type": "date", + "description": "Filing date less than the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_lte", + "type": "date", + "description": "Filing date less than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_gt", + "type": "date", + "description": "Filing date greater than the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_gte", + "type": "date", + "description": "Filing date greater than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date", + "type": "date", + "description": "Period of report date of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_lt", + "type": "date", + "description": "Period of report date less than the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_lte", + "type": "date", + "description": "Period of report date less than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_gt", + "type": "date", + "description": "Period of report date greater than the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_gte", + "type": "date", + "description": "Period of report date greater than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "include_sources", + "type": "bool", + "description": "Whether to include the sources of the financial statement.", + "default": "False", + "optional": true + }, + { + "name": "order", + "type": "Literal[None, 'asc', 'desc']", + "description": "Order of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "sort", + "type": "Literal[None, 'filing_date', 'period_of_report_date']", + "description": "Sort of the financial statement.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : CashFlowStatement\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "date", + "description": "The end date of the reporting period.", + "default": "", + "optional": false + }, + { + "name": "fiscal_period", + "type": "str", + "description": "The fiscal period of the report.", + "default": "None", + "optional": true + }, + { + "name": "fiscal_year", + "type": "int", + "description": "The fiscal year of the fiscal period.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "filing_date", + "type": "date", + "description": "The date of the filing.", + "default": "None", + "optional": true + }, + { + "name": "accepted_date", + "type": "datetime", + "description": "The date the filing was accepted.", + "default": "None", + "optional": true + }, + { + "name": "reported_currency", + "type": "str", + "description": "The currency in which the cash flow statement was reported.", + "default": "None", + "optional": true + }, + { + "name": "net_income", + "type": "float", + "description": "Net income.", + "default": "None", + "optional": true + }, + { + "name": "depreciation_and_amortization", + "type": "float", + "description": "Depreciation and amortization.", + "default": "None", + "optional": true + }, + { + "name": "deferred_income_tax", + "type": "float", + "description": "Deferred income tax.", + "default": "None", + "optional": true + }, + { + "name": "stock_based_compensation", + "type": "float", + "description": "Stock-based compensation.", + "default": "None", + "optional": true + }, + { + "name": "change_in_working_capital", + "type": "float", + "description": "Change in working capital.", + "default": "None", + "optional": true + }, + { + "name": "change_in_account_receivables", + "type": "float", + "description": "Change in account receivables.", + "default": "None", + "optional": true + }, + { + "name": "change_in_inventory", + "type": "float", + "description": "Change in inventory.", + "default": "None", + "optional": true + }, + { + "name": "change_in_account_payable", + "type": "float", + "description": "Change in account payable.", + "default": "None", + "optional": true + }, + { + "name": "change_in_other_working_capital", + "type": "float", + "description": "Change in other working capital.", + "default": "None", + "optional": true + }, + { + "name": "change_in_other_non_cash_items", + "type": "float", + "description": "Change in other non-cash items.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_operating_activities", + "type": "float", + "description": "Net cash from operating activities.", + "default": "None", + "optional": true + }, + { + "name": "purchase_of_property_plant_and_equipment", + "type": "float", + "description": "Purchase of property, plant and equipment.", + "default": "None", + "optional": true + }, + { + "name": "acquisitions", + "type": "float", + "description": "Acquisitions.", + "default": "None", + "optional": true + }, + { + "name": "purchase_of_investment_securities", + "type": "float", + "description": "Purchase of investment securities.", + "default": "None", + "optional": true + }, + { + "name": "sale_and_maturity_of_investments", + "type": "float", + "description": "Sale and maturity of investments.", + "default": "None", + "optional": true + }, + { + "name": "other_investing_activities", + "type": "float", + "description": "Other investing activities.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_investing_activities", + "type": "float", + "description": "Net cash from investing activities.", + "default": "None", + "optional": true + }, + { + "name": "repayment_of_debt", + "type": "float", + "description": "Repayment of debt.", + "default": "None", + "optional": true + }, + { + "name": "issuance_of_common_equity", + "type": "float", + "description": "Issuance of common equity.", + "default": "None", + "optional": true + }, + { + "name": "repurchase_of_common_equity", + "type": "float", + "description": "Repurchase of common equity.", + "default": "None", + "optional": true + }, + { + "name": "payment_of_dividends", + "type": "float", + "description": "Payment of dividends.", + "default": "None", + "optional": true + }, + { + "name": "other_financing_activities", + "type": "float", + "description": "Other financing activities.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_financing_activities", + "type": "float", + "description": "Net cash from financing activities.", + "default": "None", + "optional": true + }, + { + "name": "effect_of_exchange_rate_changes_on_cash", + "type": "float", + "description": "Effect of exchange rate changes on cash.", + "default": "None", + "optional": true + }, + { + "name": "net_change_in_cash_and_equivalents", + "type": "float", + "description": "Net change in cash and equivalents.", + "default": "None", + "optional": true + }, + { + "name": "cash_at_beginning_of_period", + "type": "float", + "description": "Cash at beginning of period.", + "default": "None", + "optional": true + }, + { + "name": "cash_at_end_of_period", + "type": "float", + "description": "Cash at end of period.", + "default": "None", + "optional": true + }, + { + "name": "operating_cash_flow", + "type": "float", + "description": "Operating cash flow.", + "default": "None", + "optional": true + }, + { + "name": "capital_expenditure", + "type": "float", + "description": "Capital expenditure.", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow", + "type": "float", + "description": "None", + "default": "None", + "optional": true + }, + { + "name": "link", + "type": "str", + "description": "Link to the filing.", + "default": "None", + "optional": true + }, + { + "name": "final_link", + "type": "str", + "description": "Link to the filing document.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "reported_currency", + "type": "str", + "description": "The currency in which the balance sheet is reported.", + "default": "None", + "optional": true + }, + { + "name": "net_income_continuing_operations", + "type": "float", + "description": "Net Income (Continuing Operations)", + "default": "None", + "optional": true + }, + { + "name": "net_income_discontinued_operations", + "type": "float", + "description": "Net Income (Discontinued Operations)", + "default": "None", + "optional": true + }, + { + "name": "net_income", + "type": "float", + "description": "Consolidated Net Income.", + "default": "None", + "optional": true + }, + { + "name": "provision_for_loan_losses", + "type": "float", + "description": "Provision for Loan Losses", + "default": "None", + "optional": true + }, + { + "name": "provision_for_credit_losses", + "type": "float", + "description": "Provision for credit losses", + "default": "None", + "optional": true + }, + { + "name": "depreciation_expense", + "type": "float", + "description": "Depreciation Expense.", + "default": "None", + "optional": true + }, + { + "name": "amortization_expense", + "type": "float", + "description": "Amortization Expense.", + "default": "None", + "optional": true + }, + { + "name": "share_based_compensation", + "type": "float", + "description": "Share-based compensation.", + "default": "None", + "optional": true + }, + { + "name": "non_cash_adjustments_to_reconcile_net_income", + "type": "float", + "description": "Non-Cash Adjustments to Reconcile Net Income.", + "default": "None", + "optional": true + }, + { + "name": "changes_in_operating_assets_and_liabilities", + "type": "float", + "description": "Changes in Operating Assets and Liabilities (Net)", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_continuing_operating_activities", + "type": "float", + "description": "Net Cash from Continuing Operating Activities", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_discontinued_operating_activities", + "type": "float", + "description": "Net Cash from Discontinued Operating Activities", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_operating_activities", + "type": "float", + "description": "Net Cash from Operating Activities", + "default": "None", + "optional": true + }, + { + "name": "divestitures", + "type": "float", + "description": "Divestitures", + "default": "None", + "optional": true + }, + { + "name": "sale_of_property_plant_and_equipment", + "type": "float", + "description": "Sale of Property, Plant, and Equipment", + "default": "None", + "optional": true + }, + { + "name": "acquisitions", + "type": "float", + "description": "Acquisitions", + "default": "None", + "optional": true + }, + { + "name": "purchase_of_investments", + "type": "float", + "description": "Purchase of Investments", + "default": "None", + "optional": true + }, + { + "name": "purchase_of_investment_securities", + "type": "float", + "description": "Purchase of Investment Securities", + "default": "None", + "optional": true + }, + { + "name": "sale_and_maturity_of_investments", + "type": "float", + "description": "Sale and Maturity of Investments", + "default": "None", + "optional": true + }, + { + "name": "loans_held_for_sale", + "type": "float", + "description": "Loans Held for Sale (Net)", + "default": "None", + "optional": true + }, + { + "name": "purchase_of_property_plant_and_equipment", + "type": "float", + "description": "Purchase of Property, Plant, and Equipment", + "default": "None", + "optional": true + }, + { + "name": "other_investing_activities", + "type": "float", + "description": "Other Investing Activities (Net)", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_continuing_investing_activities", + "type": "float", + "description": "Net Cash from Continuing Investing Activities", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_discontinued_investing_activities", + "type": "float", + "description": "Net Cash from Discontinued Investing Activities", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_investing_activities", + "type": "float", + "description": "Net Cash from Investing Activities", + "default": "None", + "optional": true + }, + { + "name": "payment_of_dividends", + "type": "float", + "description": "Payment of Dividends", + "default": "None", + "optional": true + }, + { + "name": "repurchase_of_common_equity", + "type": "float", + "description": "Repurchase of Common Equity", + "default": "None", + "optional": true + }, + { + "name": "repurchase_of_preferred_equity", + "type": "float", + "description": "Repurchase of Preferred Equity", + "default": "None", + "optional": true + }, + { + "name": "issuance_of_common_equity", + "type": "float", + "description": "Issuance of Common Equity", + "default": "None", + "optional": true + }, + { + "name": "issuance_of_preferred_equity", + "type": "float", + "description": "Issuance of Preferred Equity", + "default": "None", + "optional": true + }, + { + "name": "issuance_of_debt", + "type": "float", + "description": "Issuance of Debt", + "default": "None", + "optional": true + }, + { + "name": "repayment_of_debt", + "type": "float", + "description": "Repayment of Debt", + "default": "None", + "optional": true + }, + { + "name": "other_financing_activities", + "type": "float", + "description": "Other Financing Activities (Net)", + "default": "None", + "optional": true + }, + { + "name": "cash_interest_received", + "type": "float", + "description": "Cash Interest Received", + "default": "None", + "optional": true + }, + { + "name": "net_change_in_deposits", + "type": "float", + "description": "Net Change in Deposits", + "default": "None", + "optional": true + }, + { + "name": "net_increase_in_fed_funds_sold", + "type": "float", + "description": "Net Increase in Fed Funds Sold", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_continuing_financing_activities", + "type": "float", + "description": "Net Cash from Continuing Financing Activities", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_discontinued_financing_activities", + "type": "float", + "description": "Net Cash from Discontinued Financing Activities", + "default": "None", + "optional": true + }, + { + "name": "net_cash_from_financing_activities", + "type": "float", + "description": "Net Cash from Financing Activities", + "default": "None", + "optional": true + }, + { + "name": "effect_of_exchange_rate_changes", + "type": "float", + "description": "Effect of Exchange Rate Changes", + "default": "None", + "optional": true + }, + { + "name": "other_net_changes_in_cash", + "type": "float", + "description": "Other Net Changes in Cash", + "default": "None", + "optional": true + }, + { + "name": "net_change_in_cash_and_equivalents", + "type": "float", + "description": "Net Change in Cash and Equivalents", + "default": "None", + "optional": true + }, + { + "name": "cash_income_taxes_paid", + "type": "float", + "description": "Cash Income Taxes Paid", + "default": "None", + "optional": true + }, + { + "name": "cash_interest_paid", + "type": "float", + "description": "Cash Interest Paid", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "net_cash_flow_from_operating_activities_continuing", + "type": "int", + "description": "Net cash flow from operating activities continuing.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_operating_activities_discontinued", + "type": "int", + "description": "Net cash flow from operating activities discontinued.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_operating_activities", + "type": "int", + "description": "Net cash flow from operating activities.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_investing_activities_continuing", + "type": "int", + "description": "Net cash flow from investing activities continuing.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_investing_activities_discontinued", + "type": "int", + "description": "Net cash flow from investing activities discontinued.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_investing_activities", + "type": "int", + "description": "Net cash flow from investing activities.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_financing_activities_continuing", + "type": "int", + "description": "Net cash flow from financing activities continuing.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_financing_activities_discontinued", + "type": "int", + "description": "Net cash flow from financing activities discontinued.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_from_financing_activities", + "type": "int", + "description": "Net cash flow from financing activities.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_continuing", + "type": "int", + "description": "Net cash flow continuing.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow_discontinued", + "type": "int", + "description": "Net cash flow discontinued.", + "default": "None", + "optional": true + }, + { + "name": "exchange_gains_losses", + "type": "int", + "description": "Exchange gains losses.", + "default": "None", + "optional": true + }, + { + "name": "net_cash_flow", + "type": "int", + "description": "Net cash flow.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "CashFlowStatement" + }, + "/equity/fundamental/reported_financials": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get financial statements as reported by the company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.reported_financials(symbol='AAPL', provider='intrinio')\n# Get AAPL balance sheet with a limit of 10 items.\nobb.equity.fundamental.reported_financials(symbol='AAPL', period='annual', statement_type='balance', limit=10, provider='intrinio')\n# Get reported income statement\nobb.equity.fundamental.reported_financials(symbol='AAPL', statement_type='income', provider='intrinio')\n# Get reported cash flow statement\nobb.equity.fundamental.reported_financials(symbol='AAPL', statement_type='cash', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "statement_type", + "type": "str", + "description": "The type of financial statement - i.e, balance, income, cash.", + "default": "balance", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return. Although the response object contains multiple results, because of the variance in the fields, year-to-year and quarter-to-quarter, it is recommended to view results in small chunks.", + "default": "100", + "optional": true + }, + { + "name": "provider", + "type": "Literal['intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [ + { + "name": "fiscal_year", + "type": "int", + "description": "The specific fiscal year. Reports do not go beyond 2008.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : ReportedFinancials\n Serializable results.\n provider : Literal['intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "date", + "description": "The ending date of the reporting period.", + "default": "", + "optional": false + }, + { + "name": "fiscal_period", + "type": "str", + "description": "The fiscal period of the report (e.g. FY, Q1, etc.).", + "default": "", + "optional": false + }, + { + "name": "fiscal_year", + "type": "int", + "description": "The fiscal year of the fiscal period.", + "default": "None", + "optional": true + } + ], + "intrinio": [] + }, + "model": "ReportedFinancials" + }, + "/equity/fundamental/cash_growth": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the growth of a company's cash flow statement items over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.cash_growth(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.cash_growth(symbol='AAPL', limit=10, provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "10", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : CashFlowStatementGrowth\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Period the statement is returned for.", + "default": "", + "optional": false + }, + { + "name": "growth_net_income", + "type": "float", + "description": "Growth rate of net income.", + "default": "", + "optional": false + }, + { + "name": "growth_depreciation_and_amortization", + "type": "float", + "description": "Growth rate of depreciation and amortization.", + "default": "", + "optional": false + }, + { + "name": "growth_deferred_income_tax", + "type": "float", + "description": "Growth rate of deferred income tax.", + "default": "", + "optional": false + }, + { + "name": "growth_stock_based_compensation", + "type": "float", + "description": "Growth rate of stock-based compensation.", + "default": "", + "optional": false + }, + { + "name": "growth_change_in_working_capital", + "type": "float", + "description": "Growth rate of change in working capital.", + "default": "", + "optional": false + }, + { + "name": "growth_accounts_receivables", + "type": "float", + "description": "Growth rate of accounts receivables.", + "default": "", + "optional": false + }, + { + "name": "growth_inventory", + "type": "float", + "description": "Growth rate of inventory.", + "default": "", + "optional": false + }, + { + "name": "growth_accounts_payables", + "type": "float", + "description": "Growth rate of accounts payables.", + "default": "", + "optional": false + }, + { + "name": "growth_other_working_capital", + "type": "float", + "description": "Growth rate of other working capital.", + "default": "", + "optional": false + }, + { + "name": "growth_other_non_cash_items", + "type": "float", + "description": "Growth rate of other non-cash items.", + "default": "", + "optional": false + }, + { + "name": "growth_net_cash_provided_by_operating_activities", + "type": "float", + "description": "Growth rate of net cash provided by operating activities.", + "default": "", + "optional": false + }, + { + "name": "growth_investments_in_property_plant_and_equipment", + "type": "float", + "description": "Growth rate of investments in property, plant, and equipment.", + "default": "", + "optional": false + }, + { + "name": "growth_acquisitions_net", + "type": "float", + "description": "Growth rate of net acquisitions.", + "default": "", + "optional": false + }, + { + "name": "growth_purchases_of_investments", + "type": "float", + "description": "Growth rate of purchases of investments.", + "default": "", + "optional": false + }, + { + "name": "growth_sales_maturities_of_investments", + "type": "float", + "description": "Growth rate of sales maturities of investments.", + "default": "", + "optional": false + }, + { + "name": "growth_other_investing_activities", + "type": "float", + "description": "Growth rate of other investing activities.", + "default": "", + "optional": false + }, + { + "name": "growth_net_cash_used_for_investing_activities", + "type": "float", + "description": "Growth rate of net cash used for investing activities.", + "default": "", + "optional": false + }, + { + "name": "growth_debt_repayment", + "type": "float", + "description": "Growth rate of debt repayment.", + "default": "", + "optional": false + }, + { + "name": "growth_common_stock_issued", + "type": "float", + "description": "Growth rate of common stock issued.", + "default": "", + "optional": false + }, + { + "name": "growth_common_stock_repurchased", + "type": "float", + "description": "Growth rate of common stock repurchased.", + "default": "", + "optional": false + }, + { + "name": "growth_dividends_paid", + "type": "float", + "description": "Growth rate of dividends paid.", + "default": "", + "optional": false + }, + { + "name": "growth_other_financing_activities", + "type": "float", + "description": "Growth rate of other financing activities.", + "default": "", + "optional": false + }, + { + "name": "growth_net_cash_used_provided_by_financing_activities", + "type": "float", + "description": "Growth rate of net cash used/provided by financing activities.", + "default": "", + "optional": false + }, + { + "name": "growth_effect_of_forex_changes_on_cash", + "type": "float", + "description": "Growth rate of the effect of foreign exchange changes on cash.", + "default": "", + "optional": false + }, + { + "name": "growth_net_change_in_cash", + "type": "float", + "description": "Growth rate of net change in cash.", + "default": "", + "optional": false + }, + { + "name": "growth_cash_at_end_of_period", + "type": "float", + "description": "Growth rate of cash at the end of the period.", + "default": "", + "optional": false + }, + { + "name": "growth_cash_at_beginning_of_period", + "type": "float", + "description": "Growth rate of cash at the beginning of the period.", + "default": "", + "optional": false + }, + { + "name": "growth_operating_cash_flow", + "type": "float", + "description": "Growth rate of operating cash flow.", + "default": "", + "optional": false + }, + { + "name": "growth_capital_expenditure", + "type": "float", + "description": "Growth rate of capital expenditure.", + "default": "", + "optional": false + }, + { + "name": "growth_free_cash_flow", + "type": "float", + "description": "Growth rate of free cash flow.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "CashFlowStatementGrowth" + }, + "/equity/fundamental/dividends": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical dividend data for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.dividends(symbol='AAPL', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "100", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : HistoricalDividends\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "ex_dividend_date", + "type": "date", + "description": "The ex-dividend date - the date on which the stock begins trading without rights to the dividend.", + "default": "", + "optional": false + }, + { + "name": "amount", + "type": "float", + "description": "The dividend amount per share.", + "default": "", + "optional": false + } + ], + "fmp": [ + { + "name": "label", + "type": "str", + "description": "Label of the historical dividends.", + "default": "", + "optional": false + }, + { + "name": "adj_dividend", + "type": "float", + "description": "Adjusted dividend of the historical dividends.", + "default": "", + "optional": false + }, + { + "name": "record_date", + "type": "date", + "description": "Record date of the historical dividends.", + "default": "None", + "optional": true + }, + { + "name": "payment_date", + "type": "date", + "description": "Payment date of the historical dividends.", + "default": "None", + "optional": true + }, + { + "name": "declaration_date", + "type": "date", + "description": "Declaration date of the historical dividends.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "factor", + "type": "float", + "description": "factor by which to multiply stock prices before this date, in order to calculate historically-adjusted stock prices.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "The currency in which the dividend is paid.", + "default": "None", + "optional": true + }, + { + "name": "split_ratio", + "type": "float", + "description": "The ratio of the stock split, if a stock split occurred.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "HistoricalDividends" + }, + "/equity/fundamental/historical_eps": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical earnings per share data for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.historical_eps(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : HistoricalEps\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "announce_time", + "type": "str", + "description": "Timing of the earnings announcement.", + "default": "None", + "optional": true + }, + { + "name": "eps_actual", + "type": "float", + "description": "Actual EPS from the earnings date.", + "default": "None", + "optional": true + }, + { + "name": "eps_estimated", + "type": "float", + "description": "Estimated EPS for the earnings date.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "revenue_estimated", + "type": "float", + "description": "Estimated consensus revenue for the reporting period.", + "default": "None", + "optional": true + }, + { + "name": "revenue_actual", + "type": "float", + "description": "The actual reported revenue.", + "default": "None", + "optional": true + }, + { + "name": "reporting_time", + "type": "str", + "description": "The reporting time - e.g. after market close.", + "default": "None", + "optional": true + }, + { + "name": "updated_at", + "type": "date", + "description": "The date when the data was last updated.", + "default": "None", + "optional": true + }, + { + "name": "period_ending", + "type": "date", + "description": "The fiscal period end date.", + "default": "None", + "optional": true + } + ] + }, + "model": "HistoricalEps" + }, + "/equity/fundamental/employee_count": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical employee count data for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.employee_count(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : HistoricalEmployees\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "cik", + "type": "int", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "", + "optional": false + }, + { + "name": "acceptance_time", + "type": "datetime", + "description": "Time of acceptance of the company employee.", + "default": "", + "optional": false + }, + { + "name": "period_of_report", + "type": "date", + "description": "Date of reporting of the company employee.", + "default": "", + "optional": false + }, + { + "name": "company_name", + "type": "str", + "description": "Registered name of the company to retrieve the historical employees of.", + "default": "", + "optional": false + }, + { + "name": "form_type", + "type": "str", + "description": "Form type of the company employee.", + "default": "", + "optional": false + }, + { + "name": "filing_date", + "type": "date", + "description": "Filing date of the company employee", + "default": "", + "optional": false + }, + { + "name": "employee_count", + "type": "int", + "description": "Count of employees of the company.", + "default": "", + "optional": false + }, + { + "name": "source", + "type": "str", + "description": "Source URL which retrieves this data for the company.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "HistoricalEmployees" + }, + "/equity/fundamental/search_attributes": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search Intrinio data tags to search in latest or historical attributes.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.search_attributes(query='ebitda', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Query to search for.", + "default": "", + "optional": false + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "1000", + "optional": true + }, + { + "name": "provider", + "type": "Literal['intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [] + }, + "returns": { + "OBBject": "OBBject\n results : SearchAttributes\n Serializable results.\n provider : Literal['intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "id", + "type": "str", + "description": "ID of the financial attribute.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the financial attribute.", + "default": "", + "optional": false + }, + { + "name": "tag", + "type": "str", + "description": "Tag of the financial attribute.", + "default": "", + "optional": false + }, + { + "name": "statement_code", + "type": "str", + "description": "Code of the financial statement.", + "default": "", + "optional": false + }, + { + "name": "statement_type", + "type": "str", + "description": "Type of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "parent_name", + "type": "str", + "description": "Parent's name of the financial attribute.", + "default": "None", + "optional": true + }, + { + "name": "sequence", + "type": "int", + "description": "Sequence of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "factor", + "type": "str", + "description": "Unit of the financial attribute.", + "default": "None", + "optional": true + }, + { + "name": "transaction", + "type": "str", + "description": "Transaction type (credit/debit) of the financial attribute.", + "default": "None", + "optional": true + }, + { + "name": "type", + "type": "str", + "description": "Type of the financial attribute.", + "default": "None", + "optional": true + }, + { + "name": "unit", + "type": "str", + "description": "Unit of the financial attribute.", + "default": "None", + "optional": true + } + ], + "intrinio": [] + }, + "model": "SearchAttributes" + }, + "/equity/fundamental/latest_attributes": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the latest value of a data tag from Intrinio.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.latest_attributes(symbol='AAPL', tag='ceo', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): intrinio.", + "default": "", + "optional": false + }, + { + "name": "tag", + "type": "Union[str, List[str]]", + "description": "Intrinio data tag ID or code. Multiple items allowed for provider(s): intrinio.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [] + }, + "returns": { + "OBBject": "OBBject\n results : LatestAttributes\n Serializable results.\n provider : Literal['intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "tag", + "type": "str", + "description": "Tag name for the fetched data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "Union[str, float]", + "description": "The value of the data.", + "default": "None", + "optional": true + } + ], + "intrinio": [] + }, + "model": "LatestAttributes" + }, + "/equity/fundamental/historical_attributes": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the historical values of a data tag from Intrinio.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.historical_attributes(symbol='AAPL', tag='ebitda', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): intrinio.", + "default": "", + "optional": false + }, + { + "name": "tag", + "type": "Union[str, List[str]]", + "description": "Intrinio data tag ID or code. Multiple items allowed for provider(s): intrinio.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "frequency", + "type": "Literal['daily', 'weekly', 'monthly', 'quarterly', 'yearly']", + "description": "The frequency of the data.", + "default": "yearly", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "1000", + "optional": true + }, + { + "name": "tag_type", + "type": "str", + "description": "Filter by type, when applicable.", + "default": "None", + "optional": true + }, + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order.", + "default": "desc", + "optional": true + }, + { + "name": "provider", + "type": "Literal['intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [] + }, + "returns": { + "OBBject": "OBBject\n results : HistoricalAttributes\n Serializable results.\n provider : Literal['intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "tag", + "type": "str", + "description": "Tag name for the fetched data.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "The value of the data.", + "default": "None", + "optional": true + } + ], + "intrinio": [] + }, + "model": "HistoricalAttributes" + }, + "/equity/fundamental/income": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the income statement for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.income(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.income(symbol='AAPL', period='annual', limit=5, provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "limit", + "type": "int, Ge(ge=0)", + "description": "The number of data entries to return.", + "default": "5", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "fiscal_year", + "type": "int", + "description": "The specific fiscal year. Reports do not go beyond 2008.", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "filing_date", + "type": "date", + "description": "Filing date of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_lt", + "type": "date", + "description": "Filing date less than the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_lte", + "type": "date", + "description": "Filing date less than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_gt", + "type": "date", + "description": "Filing date greater than the given date.", + "default": "None", + "optional": true + }, + { + "name": "filing_date_gte", + "type": "date", + "description": "Filing date greater than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date", + "type": "date", + "description": "Period of report date of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_lt", + "type": "date", + "description": "Period of report date less than the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_lte", + "type": "date", + "description": "Period of report date less than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_gt", + "type": "date", + "description": "Period of report date greater than the given date.", + "default": "None", + "optional": true + }, + { + "name": "period_of_report_date_gte", + "type": "date", + "description": "Period of report date greater than or equal to the given date.", + "default": "None", + "optional": true + }, + { + "name": "include_sources", + "type": "bool", + "description": "Whether to include the sources of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "order", + "type": "Literal['asc', 'desc']", + "description": "Order of the financial statement.", + "default": "None", + "optional": true + }, + { + "name": "sort", + "type": "Literal['filing_date', 'period_of_report_date']", + "description": "Sort of the financial statement.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : IncomeStatement\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "date", + "description": "The end date of the reporting period.", + "default": "", + "optional": false + }, + { + "name": "fiscal_period", + "type": "str", + "description": "The fiscal period of the report.", + "default": "None", + "optional": true + }, + { + "name": "fiscal_year", + "type": "int", + "description": "The fiscal year of the fiscal period.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "filing_date", + "type": "date", + "description": "The date when the filing was made.", + "default": "None", + "optional": true + }, + { + "name": "accepted_date", + "type": "datetime", + "description": "The date and time when the filing was accepted.", + "default": "None", + "optional": true + }, + { + "name": "reported_currency", + "type": "str", + "description": "The currency in which the balance sheet was reported.", + "default": "None", + "optional": true + }, + { + "name": "revenue", + "type": "float", + "description": "Total revenue.", + "default": "None", + "optional": true + }, + { + "name": "cost_of_revenue", + "type": "float", + "description": "Cost of revenue.", + "default": "None", + "optional": true + }, + { + "name": "gross_profit", + "type": "float", + "description": "Gross profit.", + "default": "None", + "optional": true + }, + { + "name": "gross_profit_margin", + "type": "float", + "description": "Gross profit margin.", + "default": "None", + "optional": true + }, + { + "name": "general_and_admin_expense", + "type": "float", + "description": "General and administrative expenses.", + "default": "None", + "optional": true + }, + { + "name": "research_and_development_expense", + "type": "float", + "description": "Research and development expenses.", + "default": "None", + "optional": true + }, + { + "name": "selling_and_marketing_expense", + "type": "float", + "description": "Selling and marketing expenses.", + "default": "None", + "optional": true + }, + { + "name": "selling_general_and_admin_expense", + "type": "float", + "description": "Selling, general and administrative expenses.", + "default": "None", + "optional": true + }, + { + "name": "other_expenses", + "type": "float", + "description": "Other expenses.", + "default": "None", + "optional": true + }, + { + "name": "total_operating_expenses", + "type": "float", + "description": "Total operating expenses.", + "default": "None", + "optional": true + }, + { + "name": "cost_and_expenses", + "type": "float", + "description": "Cost and expenses.", + "default": "None", + "optional": true + }, + { + "name": "interest_income", + "type": "float", + "description": "Interest income.", + "default": "None", + "optional": true + }, + { + "name": "total_interest_expense", + "type": "float", + "description": "Total interest expenses.", + "default": "None", + "optional": true + }, + { + "name": "depreciation_and_amortization", + "type": "float", + "description": "Depreciation and amortization.", + "default": "None", + "optional": true + }, + { + "name": "ebitda", + "type": "float", + "description": "EBITDA.", + "default": "None", + "optional": true + }, + { + "name": "ebitda_margin", + "type": "float", + "description": "EBITDA margin.", + "default": "None", + "optional": true + }, + { + "name": "total_operating_income", + "type": "float", + "description": "Total operating income.", + "default": "None", + "optional": true + }, + { + "name": "operating_income_margin", + "type": "float", + "description": "Operating income margin.", + "default": "None", + "optional": true + }, + { + "name": "total_other_income_expenses", + "type": "float", + "description": "Total other income and expenses.", + "default": "None", + "optional": true + }, + { + "name": "total_pre_tax_income", + "type": "float", + "description": "Total pre-tax income.", + "default": "None", + "optional": true + }, + { + "name": "pre_tax_income_margin", + "type": "float", + "description": "Pre-tax income margin.", + "default": "None", + "optional": true + }, + { + "name": "income_tax_expense", + "type": "float", + "description": "Income tax expense.", + "default": "None", + "optional": true + }, + { + "name": "consolidated_net_income", + "type": "float", + "description": "Consolidated net income.", + "default": "None", + "optional": true + }, + { + "name": "net_income_margin", + "type": "float", + "description": "Net income margin.", + "default": "None", + "optional": true + }, + { + "name": "basic_earnings_per_share", + "type": "float", + "description": "Basic earnings per share.", + "default": "None", + "optional": true + }, + { + "name": "diluted_earnings_per_share", + "type": "float", + "description": "Diluted earnings per share.", + "default": "None", + "optional": true + }, + { + "name": "weighted_average_basic_shares_outstanding", + "type": "float", + "description": "Weighted average basic shares outstanding.", + "default": "None", + "optional": true + }, + { + "name": "weighted_average_diluted_shares_outstanding", + "type": "float", + "description": "Weighted average diluted shares outstanding.", + "default": "None", + "optional": true + }, + { + "name": "link", + "type": "str", + "description": "Link to the filing.", + "default": "None", + "optional": true + }, + { + "name": "final_link", + "type": "str", + "description": "Link to the filing document.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "reported_currency", + "type": "str", + "description": "The currency in which the balance sheet is reported.", + "default": "None", + "optional": true + }, + { + "name": "revenue", + "type": "float", + "description": "Total revenue", + "default": "None", + "optional": true + }, + { + "name": "operating_revenue", + "type": "float", + "description": "Total operating revenue", + "default": "None", + "optional": true + }, + { + "name": "cost_of_revenue", + "type": "float", + "description": "Total cost of revenue", + "default": "None", + "optional": true + }, + { + "name": "operating_cost_of_revenue", + "type": "float", + "description": "Total operating cost of revenue", + "default": "None", + "optional": true + }, + { + "name": "gross_profit", + "type": "float", + "description": "Total gross profit", + "default": "None", + "optional": true + }, + { + "name": "gross_profit_margin", + "type": "float", + "description": "Gross margin ratio.", + "default": "None", + "optional": true + }, + { + "name": "provision_for_credit_losses", + "type": "float", + "description": "Provision for credit losses", + "default": "None", + "optional": true + }, + { + "name": "research_and_development_expense", + "type": "float", + "description": "Research and development expense", + "default": "None", + "optional": true + }, + { + "name": "selling_general_and_admin_expense", + "type": "float", + "description": "Selling, general, and admin expense", + "default": "None", + "optional": true + }, + { + "name": "salaries_and_employee_benefits", + "type": "float", + "description": "Salaries and employee benefits", + "default": "None", + "optional": true + }, + { + "name": "marketing_expense", + "type": "float", + "description": "Marketing expense", + "default": "None", + "optional": true + }, + { + "name": "net_occupancy_and_equipment_expense", + "type": "float", + "description": "Net occupancy and equipment expense", + "default": "None", + "optional": true + }, + { + "name": "other_operating_expenses", + "type": "float", + "description": "Other operating expenses", + "default": "None", + "optional": true + }, + { + "name": "depreciation_expense", + "type": "float", + "description": "Depreciation expense", + "default": "None", + "optional": true + }, + { + "name": "amortization_expense", + "type": "float", + "description": "Amortization expense", + "default": "None", + "optional": true + }, + { + "name": "amortization_of_deferred_policy_acquisition_costs", + "type": "float", + "description": "Amortization of deferred policy acquisition costs", + "default": "None", + "optional": true + }, + { + "name": "exploration_expense", + "type": "float", + "description": "Exploration expense", + "default": "None", + "optional": true + }, + { + "name": "depletion_expense", + "type": "float", + "description": "Depletion expense", + "default": "None", + "optional": true + }, + { + "name": "total_operating_expenses", + "type": "float", + "description": "Total operating expenses", + "default": "None", + "optional": true + }, + { + "name": "total_operating_income", + "type": "float", + "description": "Total operating income", + "default": "None", + "optional": true + }, + { + "name": "deposits_and_money_market_investments_interest_income", + "type": "float", + "description": "Deposits and money market investments interest income", + "default": "None", + "optional": true + }, + { + "name": "federal_funds_sold_and_securities_borrowed_interest_income", + "type": "float", + "description": "Federal funds sold and securities borrowed interest income", + "default": "None", + "optional": true + }, + { + "name": "investment_securities_interest_income", + "type": "float", + "description": "Investment securities interest income", + "default": "None", + "optional": true + }, + { + "name": "loans_and_leases_interest_income", + "type": "float", + "description": "Loans and leases interest income", + "default": "None", + "optional": true + }, + { + "name": "trading_account_interest_income", + "type": "float", + "description": "Trading account interest income", + "default": "None", + "optional": true + }, + { + "name": "other_interest_income", + "type": "float", + "description": "Other interest income", + "default": "None", + "optional": true + }, + { + "name": "total_non_interest_income", + "type": "float", + "description": "Total non-interest income", + "default": "None", + "optional": true + }, + { + "name": "interest_and_investment_income", + "type": "float", + "description": "Interest and investment income", + "default": "None", + "optional": true + }, + { + "name": "short_term_borrowings_interest_expense", + "type": "float", + "description": "Short-term borrowings interest expense", + "default": "None", + "optional": true + }, + { + "name": "long_term_debt_interest_expense", + "type": "float", + "description": "Long-term debt interest expense", + "default": "None", + "optional": true + }, + { + "name": "capitalized_lease_obligations_interest_expense", + "type": "float", + "description": "Capitalized lease obligations interest expense", + "default": "None", + "optional": true + }, + { + "name": "deposits_interest_expense", + "type": "float", + "description": "Deposits interest expense", + "default": "None", + "optional": true + }, + { + "name": "federal_funds_purchased_and_securities_sold_interest_expense", + "type": "float", + "description": "Federal funds purchased and securities sold interest expense", + "default": "None", + "optional": true + }, + { + "name": "other_interest_expense", + "type": "float", + "description": "Other interest expense", + "default": "None", + "optional": true + }, + { + "name": "total_interest_expense", + "type": "float", + "description": "Total interest expense", + "default": "None", + "optional": true + }, + { + "name": "net_interest_income", + "type": "float", + "description": "Net interest income", + "default": "None", + "optional": true + }, + { + "name": "other_non_interest_income", + "type": "float", + "description": "Other non-interest income", + "default": "None", + "optional": true + }, + { + "name": "investment_banking_income", + "type": "float", + "description": "Investment banking income", + "default": "None", + "optional": true + }, + { + "name": "trust_fees_by_commissions", + "type": "float", + "description": "Trust fees by commissions", + "default": "None", + "optional": true + }, + { + "name": "premiums_earned", + "type": "float", + "description": "Premiums earned", + "default": "None", + "optional": true + }, + { + "name": "insurance_policy_acquisition_costs", + "type": "float", + "description": "Insurance policy acquisition costs", + "default": "None", + "optional": true + }, + { + "name": "current_and_future_benefits", + "type": "float", + "description": "Current and future benefits", + "default": "None", + "optional": true + }, + { + "name": "property_and_liability_insurance_claims", + "type": "float", + "description": "Property and liability insurance claims", + "default": "None", + "optional": true + }, + { + "name": "total_non_interest_expense", + "type": "float", + "description": "Total non-interest expense", + "default": "None", + "optional": true + }, + { + "name": "net_realized_and_unrealized_capital_gains_on_investments", + "type": "float", + "description": "Net realized and unrealized capital gains on investments", + "default": "None", + "optional": true + }, + { + "name": "other_gains", + "type": "float", + "description": "Other gains", + "default": "None", + "optional": true + }, + { + "name": "non_operating_income", + "type": "float", + "description": "Non-operating income", + "default": "None", + "optional": true + }, + { + "name": "other_income", + "type": "float", + "description": "Other income", + "default": "None", + "optional": true + }, + { + "name": "other_revenue", + "type": "float", + "description": "Other revenue", + "default": "None", + "optional": true + }, + { + "name": "extraordinary_income", + "type": "float", + "description": "Extraordinary income", + "default": "None", + "optional": true + }, + { + "name": "total_other_income", + "type": "float", + "description": "Total other income", + "default": "None", + "optional": true + }, + { + "name": "ebitda", + "type": "float", + "description": "Earnings Before Interest, Taxes, Depreciation and Amortization.", + "default": "None", + "optional": true + }, + { + "name": "ebitda_margin", + "type": "float", + "description": "Margin on Earnings Before Interest, Taxes, Depreciation and Amortization.", + "default": "None", + "optional": true + }, + { + "name": "total_pre_tax_income", + "type": "float", + "description": "Total pre-tax income", + "default": "None", + "optional": true + }, + { + "name": "ebit", + "type": "float", + "description": "Earnings Before Interest and Taxes.", + "default": "None", + "optional": true + }, + { + "name": "pre_tax_income_margin", + "type": "float", + "description": "Pre-Tax Income Margin.", + "default": "None", + "optional": true + }, + { + "name": "income_tax_expense", + "type": "float", + "description": "Income tax expense", + "default": "None", + "optional": true + }, + { + "name": "impairment_charge", + "type": "float", + "description": "Impairment charge", + "default": "None", + "optional": true + }, + { + "name": "restructuring_charge", + "type": "float", + "description": "Restructuring charge", + "default": "None", + "optional": true + }, + { + "name": "service_charges_on_deposit_accounts", + "type": "float", + "description": "Service charges on deposit accounts", + "default": "None", + "optional": true + }, + { + "name": "other_service_charges", + "type": "float", + "description": "Other service charges", + "default": "None", + "optional": true + }, + { + "name": "other_special_charges", + "type": "float", + "description": "Other special charges", + "default": "None", + "optional": true + }, + { + "name": "other_cost_of_revenue", + "type": "float", + "description": "Other cost of revenue", + "default": "None", + "optional": true + }, + { + "name": "net_income_continuing_operations", + "type": "float", + "description": "Net income (continuing operations)", + "default": "None", + "optional": true + }, + { + "name": "net_income_discontinued_operations", + "type": "float", + "description": "Net income (discontinued operations)", + "default": "None", + "optional": true + }, + { + "name": "consolidated_net_income", + "type": "float", + "description": "Consolidated net income", + "default": "None", + "optional": true + }, + { + "name": "other_adjustments_to_consolidated_net_income", + "type": "float", + "description": "Other adjustments to consolidated net income", + "default": "None", + "optional": true + }, + { + "name": "other_adjustment_to_net_income_attributable_to_common_shareholders", + "type": "float", + "description": "Other adjustment to net income attributable to common shareholders", + "default": "None", + "optional": true + }, + { + "name": "net_income_attributable_to_noncontrolling_interest", + "type": "float", + "description": "Net income attributable to noncontrolling interest", + "default": "None", + "optional": true + }, + { + "name": "net_income_attributable_to_common_shareholders", + "type": "float", + "description": "Net income attributable to common shareholders", + "default": "None", + "optional": true + }, + { + "name": "basic_earnings_per_share", + "type": "float", + "description": "Basic earnings per share", + "default": "None", + "optional": true + }, + { + "name": "diluted_earnings_per_share", + "type": "float", + "description": "Diluted earnings per share", + "default": "None", + "optional": true + }, + { + "name": "basic_and_diluted_earnings_per_share", + "type": "float", + "description": "Basic and diluted earnings per share", + "default": "None", + "optional": true + }, + { + "name": "cash_dividends_to_common_per_share", + "type": "float", + "description": "Cash dividends to common per share", + "default": "None", + "optional": true + }, + { + "name": "preferred_stock_dividends_declared", + "type": "float", + "description": "Preferred stock dividends declared", + "default": "None", + "optional": true + }, + { + "name": "weighted_average_basic_shares_outstanding", + "type": "float", + "description": "Weighted average basic shares outstanding", + "default": "None", + "optional": true + }, + { + "name": "weighted_average_diluted_shares_outstanding", + "type": "float", + "description": "Weighted average diluted shares outstanding", + "default": "None", + "optional": true + }, + { + "name": "weighted_average_basic_and_diluted_shares_outstanding", + "type": "float", + "description": "Weighted average basic and diluted shares outstanding", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "revenue", + "type": "float", + "description": "Total Revenue", + "default": "None", + "optional": true + }, + { + "name": "cost_of_revenue_goods", + "type": "float", + "description": "Cost of Revenue - Goods", + "default": "None", + "optional": true + }, + { + "name": "cost_of_revenue_services", + "type": "float", + "description": "Cost of Revenue - Services", + "default": "None", + "optional": true + }, + { + "name": "cost_of_revenue", + "type": "float", + "description": "Cost of Revenue", + "default": "None", + "optional": true + }, + { + "name": "gross_profit", + "type": "float", + "description": "Gross Profit", + "default": "None", + "optional": true + }, + { + "name": "provisions_for_loan_lease_and_other_losses", + "type": "float", + "description": "Provisions for loan lease and other losses", + "default": "None", + "optional": true + }, + { + "name": "depreciation_and_amortization", + "type": "float", + "description": "Depreciation and Amortization", + "default": "None", + "optional": true + }, + { + "name": "income_tax_expense_benefit_current", + "type": "float", + "description": "Income tax expense benefit current", + "default": "None", + "optional": true + }, + { + "name": "deferred_tax_benefit", + "type": "float", + "description": "Deferred tax benefit", + "default": "None", + "optional": true + }, + { + "name": "benefits_costs_expenses", + "type": "float", + "description": "Benefits, costs and expenses", + "default": "None", + "optional": true + }, + { + "name": "selling_general_and_administrative_expense", + "type": "float", + "description": "Selling, general and administrative expense", + "default": "None", + "optional": true + }, + { + "name": "research_and_development", + "type": "float", + "description": "Research and development", + "default": "None", + "optional": true + }, + { + "name": "costs_and_expenses", + "type": "float", + "description": "Costs and expenses", + "default": "None", + "optional": true + }, + { + "name": "other_operating_expenses", + "type": "float", + "description": "Other Operating Expenses", + "default": "None", + "optional": true + }, + { + "name": "operating_expenses", + "type": "float", + "description": "Operating expenses", + "default": "None", + "optional": true + }, + { + "name": "operating_income", + "type": "float", + "description": "Operating Income/Loss", + "default": "None", + "optional": true + }, + { + "name": "non_operating_income", + "type": "float", + "description": "Non Operating Income/Loss", + "default": "None", + "optional": true + }, + { + "name": "interest_and_dividend_income", + "type": "float", + "description": "Interest and Dividend Income", + "default": "None", + "optional": true + }, + { + "name": "total_interest_expense", + "type": "float", + "description": "Interest Expense", + "default": "None", + "optional": true + }, + { + "name": "interest_and_debt_expense", + "type": "float", + "description": "Interest and Debt Expense", + "default": "None", + "optional": true + }, + { + "name": "net_interest_income", + "type": "float", + "description": "Interest Income Net", + "default": "None", + "optional": true + }, + { + "name": "interest_income_after_provision_for_losses", + "type": "float", + "description": "Interest Income After Provision for Losses", + "default": "None", + "optional": true + }, + { + "name": "non_interest_expense", + "type": "float", + "description": "Non-Interest Expense", + "default": "None", + "optional": true + }, + { + "name": "non_interest_income", + "type": "float", + "description": "Non-Interest Income", + "default": "None", + "optional": true + }, + { + "name": "income_from_discontinued_operations_net_of_tax_on_disposal", + "type": "float", + "description": "Income From Discontinued Operations Net of Tax on Disposal", + "default": "None", + "optional": true + }, + { + "name": "income_from_discontinued_operations_net_of_tax", + "type": "float", + "description": "Income From Discontinued Operations Net of Tax", + "default": "None", + "optional": true + }, + { + "name": "income_before_equity_method_investments", + "type": "float", + "description": "Income Before Equity Method Investments", + "default": "None", + "optional": true + }, + { + "name": "income_from_equity_method_investments", + "type": "float", + "description": "Income From Equity Method Investments", + "default": "None", + "optional": true + }, + { + "name": "total_pre_tax_income", + "type": "float", + "description": "Income Before Tax", + "default": "None", + "optional": true + }, + { + "name": "income_tax_expense", + "type": "float", + "description": "Income Tax Expense", + "default": "None", + "optional": true + }, + { + "name": "income_after_tax", + "type": "float", + "description": "Income After Tax", + "default": "None", + "optional": true + }, + { + "name": "consolidated_net_income", + "type": "float", + "description": "Net Income/Loss", + "default": "None", + "optional": true + }, + { + "name": "net_income_attributable_noncontrolling_interest", + "type": "float", + "description": "Net income (loss) attributable to noncontrolling interest", + "default": "None", + "optional": true + }, + { + "name": "net_income_attributable_to_parent", + "type": "float", + "description": "Net income (loss) attributable to parent", + "default": "None", + "optional": true + }, + { + "name": "net_income_attributable_to_common_shareholders", + "type": "float", + "description": "Net Income/Loss Available To Common Stockholders Basic", + "default": "None", + "optional": true + }, + { + "name": "participating_securities_earnings", + "type": "float", + "description": "Participating Securities Distributed And Undistributed Earnings Loss Basic", + "default": "None", + "optional": true + }, + { + "name": "undistributed_earnings_allocated_to_participating_securities", + "type": "float", + "description": "Undistributed Earnings Allocated To Participating Securities", + "default": "None", + "optional": true + }, + { + "name": "common_stock_dividends", + "type": "float", + "description": "Common Stock Dividends", + "default": "None", + "optional": true + }, + { + "name": "preferred_stock_dividends_and_other_adjustments", + "type": "float", + "description": "Preferred stock dividends and other adjustments", + "default": "None", + "optional": true + }, + { + "name": "basic_earnings_per_share", + "type": "float", + "description": "Earnings Per Share", + "default": "None", + "optional": true + }, + { + "name": "diluted_earnings_per_share", + "type": "float", + "description": "Diluted Earnings Per Share", + "default": "None", + "optional": true + }, + { + "name": "weighted_average_basic_shares_outstanding", + "type": "float", + "description": "Basic Average Shares", + "default": "None", + "optional": true + }, + { + "name": "weighted_average_diluted_shares_outstanding", + "type": "float", + "description": "Diluted Average Shares", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "IncomeStatement" + }, + "/equity/fundamental/income_growth": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the growth of a company's income statement items over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.income_growth(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.income_growth(symbol='AAPL', limit=10, period='annual', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "10", + "optional": true + }, + { + "name": "period", + "type": "Literal['annual', 'quarter']", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : IncomeStatementGrowth\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Period the statement is returned for.", + "default": "", + "optional": false + }, + { + "name": "growth_revenue", + "type": "float", + "description": "Growth rate of total revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_cost_of_revenue", + "type": "float", + "description": "Growth rate of cost of goods sold.", + "default": "", + "optional": false + }, + { + "name": "growth_gross_profit", + "type": "float", + "description": "Growth rate of gross profit.", + "default": "", + "optional": false + }, + { + "name": "growth_gross_profit_ratio", + "type": "float", + "description": "Growth rate of gross profit as a percentage of revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_research_and_development_expenses", + "type": "float", + "description": "Growth rate of expenses on research and development.", + "default": "", + "optional": false + }, + { + "name": "growth_general_and_administrative_expenses", + "type": "float", + "description": "Growth rate of general and administrative expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_selling_and_marketing_expenses", + "type": "float", + "description": "Growth rate of expenses on selling and marketing activities.", + "default": "", + "optional": false + }, + { + "name": "growth_other_expenses", + "type": "float", + "description": "Growth rate of other operating expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_operating_expenses", + "type": "float", + "description": "Growth rate of total operating expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_cost_and_expenses", + "type": "float", + "description": "Growth rate of total costs and expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_interest_expense", + "type": "float", + "description": "Growth rate of interest expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_depreciation_and_amortization", + "type": "float", + "description": "Growth rate of depreciation and amortization expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_ebitda", + "type": "float", + "description": "Growth rate of Earnings Before Interest, Taxes, Depreciation, and Amortization.", + "default": "", + "optional": false + }, + { + "name": "growth_ebitda_ratio", + "type": "float", + "description": "Growth rate of EBITDA as a percentage of revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_operating_income", + "type": "float", + "description": "Growth rate of operating income.", + "default": "", + "optional": false + }, + { + "name": "growth_operating_income_ratio", + "type": "float", + "description": "Growth rate of operating income as a percentage of revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_total_other_income_expenses_net", + "type": "float", + "description": "Growth rate of net total other income and expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_income_before_tax", + "type": "float", + "description": "Growth rate of income before taxes.", + "default": "", + "optional": false + }, + { + "name": "growth_income_before_tax_ratio", + "type": "float", + "description": "Growth rate of income before taxes as a percentage of revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_income_tax_expense", + "type": "float", + "description": "Growth rate of income tax expenses.", + "default": "", + "optional": false + }, + { + "name": "growth_net_income", + "type": "float", + "description": "Growth rate of net income.", + "default": "", + "optional": false + }, + { + "name": "growth_net_income_ratio", + "type": "float", + "description": "Growth rate of net income as a percentage of revenue.", + "default": "", + "optional": false + }, + { + "name": "growth_eps", + "type": "float", + "description": "Growth rate of Earnings Per Share (EPS).", + "default": "", + "optional": false + }, + { + "name": "growth_eps_diluted", + "type": "float", + "description": "Growth rate of diluted Earnings Per Share (EPS).", + "default": "", + "optional": false + }, + { + "name": "growth_weighted_average_shs_out", + "type": "float", + "description": "Growth rate of weighted average shares outstanding.", + "default": "", + "optional": false + }, + { + "name": "growth_weighted_average_shs_out_dil", + "type": "float", + "description": "Growth rate of diluted weighted average shares outstanding.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "IncomeStatementGrowth" + }, + "/equity/fundamental/metrics": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get fundamental metrics for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.metrics(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.metrics(symbol='AAPL', period='annual', limit=100, provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp, intrinio, yfinance.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "Literal['annual', 'quarter']", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "100", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "with_ttm", + "type": "bool", + "description": "Include trailing twelve months (TTM) data.", + "default": "False", + "optional": true + } + ], + "intrinio": [], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : KeyMetrics\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "market_cap", + "type": "float", + "description": "Market capitalization", + "default": "None", + "optional": true + }, + { + "name": "pe_ratio", + "type": "float", + "description": "Price-to-earnings ratio (P/E ratio)", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Period of the data.", + "default": "", + "optional": false + }, + { + "name": "calendar_year", + "type": "int", + "description": "Calendar year.", + "default": "None", + "optional": true + }, + { + "name": "revenue_per_share", + "type": "float", + "description": "Revenue per share", + "default": "None", + "optional": true + }, + { + "name": "net_income_per_share", + "type": "float", + "description": "Net income per share", + "default": "None", + "optional": true + }, + { + "name": "operating_cash_flow_per_share", + "type": "float", + "description": "Operating cash flow per share", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_per_share", + "type": "float", + "description": "Free cash flow per share", + "default": "None", + "optional": true + }, + { + "name": "cash_per_share", + "type": "float", + "description": "Cash per share", + "default": "None", + "optional": true + }, + { + "name": "book_value_per_share", + "type": "float", + "description": "Book value per share", + "default": "None", + "optional": true + }, + { + "name": "tangible_book_value_per_share", + "type": "float", + "description": "Tangible book value per share", + "default": "None", + "optional": true + }, + { + "name": "shareholders_equity_per_share", + "type": "float", + "description": "Shareholders equity per share", + "default": "None", + "optional": true + }, + { + "name": "interest_debt_per_share", + "type": "float", + "description": "Interest debt per share", + "default": "None", + "optional": true + }, + { + "name": "enterprise_value", + "type": "float", + "description": "Enterprise value", + "default": "None", + "optional": true + }, + { + "name": "price_to_sales_ratio", + "type": "float", + "description": "Price-to-sales ratio", + "default": "None", + "optional": true + }, + { + "name": "pocf_ratio", + "type": "float", + "description": "Price-to-operating cash flow ratio", + "default": "None", + "optional": true + }, + { + "name": "pfcf_ratio", + "type": "float", + "description": "Price-to-free cash flow ratio", + "default": "None", + "optional": true + }, + { + "name": "pb_ratio", + "type": "float", + "description": "Price-to-book ratio", + "default": "None", + "optional": true + }, + { + "name": "ptb_ratio", + "type": "float", + "description": "Price-to-tangible book ratio", + "default": "None", + "optional": true + }, + { + "name": "ev_to_sales", + "type": "float", + "description": "Enterprise value-to-sales ratio", + "default": "None", + "optional": true + }, + { + "name": "enterprise_value_over_ebitda", + "type": "float", + "description": "Enterprise value-to-EBITDA ratio", + "default": "None", + "optional": true + }, + { + "name": "ev_to_operating_cash_flow", + "type": "float", + "description": "Enterprise value-to-operating cash flow ratio", + "default": "None", + "optional": true + }, + { + "name": "ev_to_free_cash_flow", + "type": "float", + "description": "Enterprise value-to-free cash flow ratio", + "default": "None", + "optional": true + }, + { + "name": "earnings_yield", + "type": "float", + "description": "Earnings yield", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_yield", + "type": "float", + "description": "Free cash flow yield", + "default": "None", + "optional": true + }, + { + "name": "debt_to_equity", + "type": "float", + "description": "Debt-to-equity ratio", + "default": "None", + "optional": true + }, + { + "name": "debt_to_assets", + "type": "float", + "description": "Debt-to-assets ratio", + "default": "None", + "optional": true + }, + { + "name": "net_debt_to_ebitda", + "type": "float", + "description": "Net debt-to-EBITDA ratio", + "default": "None", + "optional": true + }, + { + "name": "current_ratio", + "type": "float", + "description": "Current ratio", + "default": "None", + "optional": true + }, + { + "name": "interest_coverage", + "type": "float", + "description": "Interest coverage", + "default": "None", + "optional": true + }, + { + "name": "income_quality", + "type": "float", + "description": "Income quality", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield", + "type": "float", + "description": "Dividend yield, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "payout_ratio", + "type": "float", + "description": "Payout ratio", + "default": "None", + "optional": true + }, + { + "name": "sales_general_and_administrative_to_revenue", + "type": "float", + "description": "Sales general and administrative expenses-to-revenue ratio", + "default": "None", + "optional": true + }, + { + "name": "research_and_development_to_revenue", + "type": "float", + "description": "Research and development expenses-to-revenue ratio", + "default": "None", + "optional": true + }, + { + "name": "intangibles_to_total_assets", + "type": "float", + "description": "Intangibles-to-total assets ratio", + "default": "None", + "optional": true + }, + { + "name": "capex_to_operating_cash_flow", + "type": "float", + "description": "Capital expenditures-to-operating cash flow ratio", + "default": "None", + "optional": true + }, + { + "name": "capex_to_revenue", + "type": "float", + "description": "Capital expenditures-to-revenue ratio", + "default": "None", + "optional": true + }, + { + "name": "capex_to_depreciation", + "type": "float", + "description": "Capital expenditures-to-depreciation ratio", + "default": "None", + "optional": true + }, + { + "name": "stock_based_compensation_to_revenue", + "type": "float", + "description": "Stock-based compensation-to-revenue ratio", + "default": "None", + "optional": true + }, + { + "name": "graham_number", + "type": "float", + "description": "Graham number", + "default": "None", + "optional": true + }, + { + "name": "roic", + "type": "float", + "description": "Return on invested capital", + "default": "None", + "optional": true + }, + { + "name": "return_on_tangible_assets", + "type": "float", + "description": "Return on tangible assets", + "default": "None", + "optional": true + }, + { + "name": "graham_net_net", + "type": "float", + "description": "Graham net-net working capital", + "default": "None", + "optional": true + }, + { + "name": "working_capital", + "type": "float", + "description": "Working capital", + "default": "None", + "optional": true + }, + { + "name": "tangible_asset_value", + "type": "float", + "description": "Tangible asset value", + "default": "None", + "optional": true + }, + { + "name": "net_current_asset_value", + "type": "float", + "description": "Net current asset value", + "default": "None", + "optional": true + }, + { + "name": "invested_capital", + "type": "float", + "description": "Invested capital", + "default": "None", + "optional": true + }, + { + "name": "average_receivables", + "type": "float", + "description": "Average receivables", + "default": "None", + "optional": true + }, + { + "name": "average_payables", + "type": "float", + "description": "Average payables", + "default": "None", + "optional": true + }, + { + "name": "average_inventory", + "type": "float", + "description": "Average inventory", + "default": "None", + "optional": true + }, + { + "name": "days_sales_outstanding", + "type": "float", + "description": "Days sales outstanding", + "default": "None", + "optional": true + }, + { + "name": "days_payables_outstanding", + "type": "float", + "description": "Days payables outstanding", + "default": "None", + "optional": true + }, + { + "name": "days_of_inventory_on_hand", + "type": "float", + "description": "Days of inventory on hand", + "default": "None", + "optional": true + }, + { + "name": "receivables_turnover", + "type": "float", + "description": "Receivables turnover", + "default": "None", + "optional": true + }, + { + "name": "payables_turnover", + "type": "float", + "description": "Payables turnover", + "default": "None", + "optional": true + }, + { + "name": "inventory_turnover", + "type": "float", + "description": "Inventory turnover", + "default": "None", + "optional": true + }, + { + "name": "roe", + "type": "float", + "description": "Return on equity", + "default": "None", + "optional": true + }, + { + "name": "capex_per_share", + "type": "float", + "description": "Capital expenditures per share", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "price_to_book", + "type": "float", + "description": "Price to book ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_to_tangible_book", + "type": "float", + "description": "Price to tangible book ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_to_revenue", + "type": "float", + "description": "Price to revenue ratio.", + "default": "None", + "optional": true + }, + { + "name": "quick_ratio", + "type": "float", + "description": "Quick ratio.", + "default": "None", + "optional": true + }, + { + "name": "gross_margin", + "type": "float", + "description": "Gross margin, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "ebit_margin", + "type": "float", + "description": "EBIT margin, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "profit_margin", + "type": "float", + "description": "Profit margin, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "eps", + "type": "float", + "description": "Basic earnings per share.", + "default": "None", + "optional": true + }, + { + "name": "eps_growth", + "type": "float", + "description": "EPS growth, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "revenue_growth", + "type": "float", + "description": "Revenue growth, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "ebitda_growth", + "type": "float", + "description": "EBITDA growth, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "ebit_growth", + "type": "float", + "description": "EBIT growth, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "net_income_growth", + "type": "float", + "description": "Net income growth, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_to_firm_growth", + "type": "float", + "description": "Free cash flow to firm growth, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "invested_capital_growth", + "type": "float", + "description": "Invested capital growth, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "return_on_assets", + "type": "float", + "description": "Return on assets, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "return_on_equity", + "type": "float", + "description": "Return on equity, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "return_on_invested_capital", + "type": "float", + "description": "Return on invested capital, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "ebitda", + "type": "int", + "description": "Earnings before interest, taxes, depreciation, and amortization.", + "default": "None", + "optional": true + }, + { + "name": "ebit", + "type": "int", + "description": "Earnings before interest and taxes.", + "default": "None", + "optional": true + }, + { + "name": "long_term_debt", + "type": "int", + "description": "Long-term debt.", + "default": "None", + "optional": true + }, + { + "name": "total_debt", + "type": "int", + "description": "Total debt.", + "default": "None", + "optional": true + }, + { + "name": "total_capital", + "type": "int", + "description": "The sum of long-term debt and total shareholder equity.", + "default": "None", + "optional": true + }, + { + "name": "enterprise_value", + "type": "int", + "description": "Enterprise value.", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_to_firm", + "type": "int", + "description": "Free cash flow to firm.", + "default": "None", + "optional": true + }, + { + "name": "altman_z_score", + "type": "float", + "description": "Altman Z-score.", + "default": "None", + "optional": true + }, + { + "name": "beta", + "type": "float", + "description": "Beta relative to the broad market (rolling three-year).", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield", + "type": "float", + "description": "Dividend yield, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "earnings_yield", + "type": "float", + "description": "Earnings yield, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "last_price", + "type": "float", + "description": "Last price of the stock.", + "default": "None", + "optional": true + }, + { + "name": "year_high", + "type": "float", + "description": "52 week high", + "default": "None", + "optional": true + }, + { + "name": "year_low", + "type": "float", + "description": "52 week low", + "default": "None", + "optional": true + }, + { + "name": "volume_avg", + "type": "int", + "description": "Average daily volume.", + "default": "None", + "optional": true + }, + { + "name": "short_interest", + "type": "int", + "description": "Number of shares reported as sold short.", + "default": "None", + "optional": true + }, + { + "name": "shares_outstanding", + "type": "int", + "description": "Weighted average shares outstanding (TTM).", + "default": "None", + "optional": true + }, + { + "name": "days_to_cover", + "type": "float", + "description": "Days to cover short interest, based on average daily volume.", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "forward_pe", + "type": "float", + "description": "Forward price-to-earnings ratio.", + "default": "None", + "optional": true + }, + { + "name": "peg_ratio", + "type": "float", + "description": "PEG ratio (5-year expected).", + "default": "None", + "optional": true + }, + { + "name": "peg_ratio_ttm", + "type": "float", + "description": "PEG ratio (TTM).", + "default": "None", + "optional": true + }, + { + "name": "eps_ttm", + "type": "float", + "description": "Earnings per share (TTM).", + "default": "None", + "optional": true + }, + { + "name": "eps_forward", + "type": "float", + "description": "Forward earnings per share.", + "default": "None", + "optional": true + }, + { + "name": "enterprise_to_ebitda", + "type": "float", + "description": "Enterprise value to EBITDA ratio.", + "default": "None", + "optional": true + }, + { + "name": "earnings_growth", + "type": "float", + "description": "Earnings growth (Year Over Year), as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "earnings_growth_quarterly", + "type": "float", + "description": "Quarterly earnings growth (Year Over Year), as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "revenue_per_share", + "type": "float", + "description": "Revenue per share (TTM).", + "default": "None", + "optional": true + }, + { + "name": "revenue_growth", + "type": "float", + "description": "Revenue growth (Year Over Year), as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "enterprise_to_revenue", + "type": "float", + "description": "Enterprise value to revenue ratio.", + "default": "None", + "optional": true + }, + { + "name": "cash_per_share", + "type": "float", + "description": "Cash per share.", + "default": "None", + "optional": true + }, + { + "name": "quick_ratio", + "type": "float", + "description": "Quick ratio.", + "default": "None", + "optional": true + }, + { + "name": "current_ratio", + "type": "float", + "description": "Current ratio.", + "default": "None", + "optional": true + }, + { + "name": "debt_to_equity", + "type": "float", + "description": "Debt-to-equity ratio.", + "default": "None", + "optional": true + }, + { + "name": "gross_margin", + "type": "float", + "description": "Gross margin, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "operating_margin", + "type": "float", + "description": "Operating margin, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "ebitda_margin", + "type": "float", + "description": "EBITDA margin, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "profit_margin", + "type": "float", + "description": "Profit margin, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "return_on_assets", + "type": "float", + "description": "Return on assets, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "return_on_equity", + "type": "float", + "description": "Return on equity, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield", + "type": "float", + "description": "Dividend yield, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield_5y_avg", + "type": "float", + "description": "5-year average dividend yield, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "payout_ratio", + "type": "float", + "description": "Payout ratio.", + "default": "None", + "optional": true + }, + { + "name": "book_value", + "type": "float", + "description": "Book value per share.", + "default": "None", + "optional": true + }, + { + "name": "price_to_book", + "type": "float", + "description": "Price-to-book ratio.", + "default": "None", + "optional": true + }, + { + "name": "enterprise_value", + "type": "int", + "description": "Enterprise value.", + "default": "None", + "optional": true + }, + { + "name": "overall_risk", + "type": "float", + "description": "Overall risk score.", + "default": "None", + "optional": true + }, + { + "name": "audit_risk", + "type": "float", + "description": "Audit risk score.", + "default": "None", + "optional": true + }, + { + "name": "board_risk", + "type": "float", + "description": "Board risk score.", + "default": "None", + "optional": true + }, + { + "name": "compensation_risk", + "type": "float", + "description": "Compensation risk score.", + "default": "None", + "optional": true + }, + { + "name": "shareholder_rights_risk", + "type": "float", + "description": "Shareholder rights risk score.", + "default": "None", + "optional": true + }, + { + "name": "beta", + "type": "float", + "description": "Beta relative to the broad market (5-year monthly).", + "default": "None", + "optional": true + }, + { + "name": "price_return_1y", + "type": "float", + "description": "One-year price return, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency in which the data is presented.", + "default": "None", + "optional": true + } + ] + }, + "model": "KeyMetrics" + }, + "/equity/fundamental/management": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get executive management team data for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.management(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : KeyExecutives\n Serializable results.\n provider : Literal['fmp', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "title", + "type": "str", + "description": "Designation of the key executive.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the key executive.", + "default": "", + "optional": false + }, + { + "name": "pay", + "type": "int", + "description": "Pay of the key executive.", + "default": "None", + "optional": true + }, + { + "name": "currency_pay", + "type": "str", + "description": "Currency of the pay.", + "default": "None", + "optional": true + }, + { + "name": "gender", + "type": "str", + "description": "Gender of the key executive.", + "default": "None", + "optional": true + }, + { + "name": "year_born", + "type": "int", + "description": "Birth year of the key executive.", + "default": "None", + "optional": true + }, + { + "name": "title_since", + "type": "int", + "description": "Date the tile was held since.", + "default": "None", + "optional": true + } + ], + "fmp": [], + "yfinance": [ + { + "name": "exercised_value", + "type": "int", + "description": "Value of shares exercised.", + "default": "None", + "optional": true + }, + { + "name": "unexercised_value", + "type": "int", + "description": "Value of shares not exercised.", + "default": "None", + "optional": true + } + ] + }, + "model": "KeyExecutives" + }, + "/equity/fundamental/management_compensation": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get executive management team compensation for a given company over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.management_compensation(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : ExecutiveCompensation\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "cik", + "type": "str", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "None", + "optional": true + }, + { + "name": "filing_date", + "type": "date", + "description": "Date of the filing.", + "default": "", + "optional": false + }, + { + "name": "accepted_date", + "type": "datetime", + "description": "Date the filing was accepted.", + "default": "", + "optional": false + }, + { + "name": "name_and_position", + "type": "str", + "description": "Name and position of the executive.", + "default": "", + "optional": false + }, + { + "name": "year", + "type": "int", + "description": "Year of the compensation.", + "default": "", + "optional": false + }, + { + "name": "salary", + "type": "float", + "description": "Salary of the executive.", + "default": "", + "optional": false + }, + { + "name": "bonus", + "type": "float", + "description": "Bonus of the executive.", + "default": "", + "optional": false + }, + { + "name": "stock_award", + "type": "float", + "description": "Stock award of the executive.", + "default": "", + "optional": false + }, + { + "name": "incentive_plan_compensation", + "type": "float", + "description": "Incentive plan compensation of the executive.", + "default": "", + "optional": false + }, + { + "name": "all_other_compensation", + "type": "float", + "description": "All other compensation of the executive.", + "default": "", + "optional": false + }, + { + "name": "total", + "type": "float", + "description": "Total compensation of the executive.", + "default": "", + "optional": false + }, + { + "name": "url", + "type": "str", + "description": "URL of the filing data.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "ExecutiveCompensation" + }, + "/equity/fundamental/overview": { + "deprecated": { + "flag": true, + "message": "This endpoint is deprecated; use `/equity/profile` instead. Deprecated in OpenBB Platform V4.1 to be removed in V4.3." + }, + "description": "Get company general business and stock data for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.overview(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : CompanyOverview\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "price", + "type": "float", + "description": "Price of the company.", + "default": "None", + "optional": true + }, + { + "name": "beta", + "type": "float", + "description": "Beta of the company.", + "default": "None", + "optional": true + }, + { + "name": "vol_avg", + "type": "int", + "description": "Volume average of the company.", + "default": "None", + "optional": true + }, + { + "name": "mkt_cap", + "type": "int", + "description": "Market capitalization of the company.", + "default": "None", + "optional": true + }, + { + "name": "last_div", + "type": "float", + "description": "Last dividend of the company.", + "default": "None", + "optional": true + }, + { + "name": "range", + "type": "str", + "description": "Range of the company.", + "default": "None", + "optional": true + }, + { + "name": "changes", + "type": "float", + "description": "Changes of the company.", + "default": "None", + "optional": true + }, + { + "name": "company_name", + "type": "str", + "description": "Company name of the company.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency of the company.", + "default": "None", + "optional": true + }, + { + "name": "cik", + "type": "str", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "None", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "ISIN of the company.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "CUSIP of the company.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "Exchange of the company.", + "default": "None", + "optional": true + }, + { + "name": "exchange_short_name", + "type": "str", + "description": "Exchange short name of the company.", + "default": "None", + "optional": true + }, + { + "name": "industry", + "type": "str", + "description": "Industry of the company.", + "default": "None", + "optional": true + }, + { + "name": "website", + "type": "str", + "description": "Website of the company.", + "default": "None", + "optional": true + }, + { + "name": "description", + "type": "str", + "description": "Description of the company.", + "default": "None", + "optional": true + }, + { + "name": "ceo", + "type": "str", + "description": "CEO of the company.", + "default": "None", + "optional": true + }, + { + "name": "sector", + "type": "str", + "description": "Sector of the company.", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "Country of the company.", + "default": "None", + "optional": true + }, + { + "name": "full_time_employees", + "type": "str", + "description": "Full time employees of the company.", + "default": "None", + "optional": true + }, + { + "name": "phone", + "type": "str", + "description": "Phone of the company.", + "default": "None", + "optional": true + }, + { + "name": "address", + "type": "str", + "description": "Address of the company.", + "default": "None", + "optional": true + }, + { + "name": "city", + "type": "str", + "description": "City of the company.", + "default": "None", + "optional": true + }, + { + "name": "state", + "type": "str", + "description": "State of the company.", + "default": "None", + "optional": true + }, + { + "name": "zip", + "type": "str", + "description": "Zip of the company.", + "default": "None", + "optional": true + }, + { + "name": "dcf_diff", + "type": "float", + "description": "Discounted cash flow difference of the company.", + "default": "None", + "optional": true + }, + { + "name": "dcf", + "type": "float", + "description": "Discounted cash flow of the company.", + "default": "None", + "optional": true + }, + { + "name": "image", + "type": "str", + "description": "Image of the company.", + "default": "None", + "optional": true + }, + { + "name": "ipo_date", + "type": "date", + "description": "IPO date of the company.", + "default": "None", + "optional": true + }, + { + "name": "default_image", + "type": "bool", + "description": "If the image is the default image.", + "default": "", + "optional": false + }, + { + "name": "is_etf", + "type": "bool", + "description": "If the company is an ETF.", + "default": "", + "optional": false + }, + { + "name": "is_actively_trading", + "type": "bool", + "description": "If the company is actively trading.", + "default": "", + "optional": false + }, + { + "name": "is_adr", + "type": "bool", + "description": "If the company is an ADR.", + "default": "", + "optional": false + }, + { + "name": "is_fund", + "type": "bool", + "description": "If the company is a fund.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "CompanyOverview" + }, + "/equity/fundamental/ratios": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get an extensive set of financial and accounting ratios for a given company over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.ratios(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.ratios(symbol='AAPL', period='annual', limit=12, provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "str", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "12", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "fiscal_year", + "type": "int", + "description": "The specific fiscal year. Reports do not go beyond 2008.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : FinancialRatios\n Serializable results.\n provider : Literal['fmp', 'intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "str", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "fiscal_period", + "type": "str", + "description": "Period of the financial ratios.", + "default": "", + "optional": false + }, + { + "name": "fiscal_year", + "type": "int", + "description": "Fiscal year.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "current_ratio", + "type": "float", + "description": "Current ratio.", + "default": "None", + "optional": true + }, + { + "name": "quick_ratio", + "type": "float", + "description": "Quick ratio.", + "default": "None", + "optional": true + }, + { + "name": "cash_ratio", + "type": "float", + "description": "Cash ratio.", + "default": "None", + "optional": true + }, + { + "name": "days_of_sales_outstanding", + "type": "float", + "description": "Days of sales outstanding.", + "default": "None", + "optional": true + }, + { + "name": "days_of_inventory_outstanding", + "type": "float", + "description": "Days of inventory outstanding.", + "default": "None", + "optional": true + }, + { + "name": "operating_cycle", + "type": "float", + "description": "Operating cycle.", + "default": "None", + "optional": true + }, + { + "name": "days_of_payables_outstanding", + "type": "float", + "description": "Days of payables outstanding.", + "default": "None", + "optional": true + }, + { + "name": "cash_conversion_cycle", + "type": "float", + "description": "Cash conversion cycle.", + "default": "None", + "optional": true + }, + { + "name": "gross_profit_margin", + "type": "float", + "description": "Gross profit margin.", + "default": "None", + "optional": true + }, + { + "name": "operating_profit_margin", + "type": "float", + "description": "Operating profit margin.", + "default": "None", + "optional": true + }, + { + "name": "pretax_profit_margin", + "type": "float", + "description": "Pretax profit margin.", + "default": "None", + "optional": true + }, + { + "name": "net_profit_margin", + "type": "float", + "description": "Net profit margin.", + "default": "None", + "optional": true + }, + { + "name": "effective_tax_rate", + "type": "float", + "description": "Effective tax rate.", + "default": "None", + "optional": true + }, + { + "name": "return_on_assets", + "type": "float", + "description": "Return on assets.", + "default": "None", + "optional": true + }, + { + "name": "return_on_equity", + "type": "float", + "description": "Return on equity.", + "default": "None", + "optional": true + }, + { + "name": "return_on_capital_employed", + "type": "float", + "description": "Return on capital employed.", + "default": "None", + "optional": true + }, + { + "name": "net_income_per_ebt", + "type": "float", + "description": "Net income per EBT.", + "default": "None", + "optional": true + }, + { + "name": "ebt_per_ebit", + "type": "float", + "description": "EBT per EBIT.", + "default": "None", + "optional": true + }, + { + "name": "ebit_per_revenue", + "type": "float", + "description": "EBIT per revenue.", + "default": "None", + "optional": true + }, + { + "name": "debt_ratio", + "type": "float", + "description": "Debt ratio.", + "default": "None", + "optional": true + }, + { + "name": "debt_equity_ratio", + "type": "float", + "description": "Debt equity ratio.", + "default": "None", + "optional": true + }, + { + "name": "long_term_debt_to_capitalization", + "type": "float", + "description": "Long term debt to capitalization.", + "default": "None", + "optional": true + }, + { + "name": "total_debt_to_capitalization", + "type": "float", + "description": "Total debt to capitalization.", + "default": "None", + "optional": true + }, + { + "name": "interest_coverage", + "type": "float", + "description": "Interest coverage.", + "default": "None", + "optional": true + }, + { + "name": "cash_flow_to_debt_ratio", + "type": "float", + "description": "Cash flow to debt ratio.", + "default": "None", + "optional": true + }, + { + "name": "company_equity_multiplier", + "type": "float", + "description": "Company equity multiplier.", + "default": "None", + "optional": true + }, + { + "name": "receivables_turnover", + "type": "float", + "description": "Receivables turnover.", + "default": "None", + "optional": true + }, + { + "name": "payables_turnover", + "type": "float", + "description": "Payables turnover.", + "default": "None", + "optional": true + }, + { + "name": "inventory_turnover", + "type": "float", + "description": "Inventory turnover.", + "default": "None", + "optional": true + }, + { + "name": "fixed_asset_turnover", + "type": "float", + "description": "Fixed asset turnover.", + "default": "None", + "optional": true + }, + { + "name": "asset_turnover", + "type": "float", + "description": "Asset turnover.", + "default": "None", + "optional": true + }, + { + "name": "operating_cash_flow_per_share", + "type": "float", + "description": "Operating cash flow per share.", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_per_share", + "type": "float", + "description": "Free cash flow per share.", + "default": "None", + "optional": true + }, + { + "name": "cash_per_share", + "type": "float", + "description": "Cash per share.", + "default": "None", + "optional": true + }, + { + "name": "payout_ratio", + "type": "float", + "description": "Payout ratio.", + "default": "None", + "optional": true + }, + { + "name": "operating_cash_flow_sales_ratio", + "type": "float", + "description": "Operating cash flow sales ratio.", + "default": "None", + "optional": true + }, + { + "name": "free_cash_flow_operating_cash_flow_ratio", + "type": "float", + "description": "Free cash flow operating cash flow ratio.", + "default": "None", + "optional": true + }, + { + "name": "cash_flow_coverage_ratios", + "type": "float", + "description": "Cash flow coverage ratios.", + "default": "None", + "optional": true + }, + { + "name": "short_term_coverage_ratios", + "type": "float", + "description": "Short term coverage ratios.", + "default": "None", + "optional": true + }, + { + "name": "capital_expenditure_coverage_ratio", + "type": "float", + "description": "Capital expenditure coverage ratio.", + "default": "None", + "optional": true + }, + { + "name": "dividend_paid_and_capex_coverage_ratio", + "type": "float", + "description": "Dividend paid and capex coverage ratio.", + "default": "None", + "optional": true + }, + { + "name": "dividend_payout_ratio", + "type": "float", + "description": "Dividend payout ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_book_value_ratio", + "type": "float", + "description": "Price book value ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_to_book_ratio", + "type": "float", + "description": "Price to book ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_to_sales_ratio", + "type": "float", + "description": "Price to sales ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_earnings_ratio", + "type": "float", + "description": "Price earnings ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_to_free_cash_flows_ratio", + "type": "float", + "description": "Price to free cash flows ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_to_operating_cash_flows_ratio", + "type": "float", + "description": "Price to operating cash flows ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_cash_flow_ratio", + "type": "float", + "description": "Price cash flow ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_earnings_to_growth_ratio", + "type": "float", + "description": "Price earnings to growth ratio.", + "default": "None", + "optional": true + }, + { + "name": "price_sales_ratio", + "type": "float", + "description": "Price sales ratio.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield", + "type": "float", + "description": "Dividend yield.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield_percentage", + "type": "float", + "description": "Dividend yield percentage.", + "default": "None", + "optional": true + }, + { + "name": "dividend_per_share", + "type": "float", + "description": "Dividend per share.", + "default": "None", + "optional": true + }, + { + "name": "enterprise_value_multiple", + "type": "float", + "description": "Enterprise value multiple.", + "default": "None", + "optional": true + }, + { + "name": "price_fair_value", + "type": "float", + "description": "Price fair value.", + "default": "None", + "optional": true + } + ], + "intrinio": [] + }, + "model": "FinancialRatios" + }, + "/equity/fundamental/revenue_per_geography": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the revenue geographic breakdown for a given company over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.revenue_per_geography(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.revenue_per_geography(symbol='AAPL', period='annual', structure='flat', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "Literal['quarter', 'annual']", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "structure", + "type": "Literal['hierarchical', 'flat']", + "description": "Structure of the returned data.", + "default": "flat", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : RevenueGeographic\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "date", + "description": "The end date of the reporting period.", + "default": "", + "optional": false + }, + { + "name": "fiscal_period", + "type": "str", + "description": "The fiscal period of the reporting period.", + "default": "None", + "optional": true + }, + { + "name": "fiscal_year", + "type": "int", + "description": "The fiscal year of the reporting period.", + "default": "None", + "optional": true + }, + { + "name": "filing_date", + "type": "date", + "description": "The filing date of the report.", + "default": "None", + "optional": true + }, + { + "name": "geographic_segment", + "type": "int", + "description": "Dictionary of the revenue by geographic segment.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "RevenueGeographic" + }, + "/equity/fundamental/revenue_per_segment": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the revenue breakdown by business segment for a given company over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.revenue_per_segment(symbol='AAPL', provider='fmp')\nobb.equity.fundamental.revenue_per_segment(symbol='AAPL', period='annual', structure='flat', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "period", + "type": "Literal['quarter', 'annual']", + "description": "Time period of the data to return.", + "default": "annual", + "optional": true + }, + { + "name": "structure", + "type": "Literal['hierarchical', 'flat']", + "description": "Structure of the returned data.", + "default": "flat", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : RevenueBusinessLine\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "date", + "description": "The end date of the reporting period.", + "default": "", + "optional": false + }, + { + "name": "fiscal_period", + "type": "str", + "description": "The fiscal period of the reporting period.", + "default": "None", + "optional": true + }, + { + "name": "fiscal_year", + "type": "int", + "description": "The fiscal year of the reporting period.", + "default": "None", + "optional": true + }, + { + "name": "filing_date", + "type": "date", + "description": "The filing date of the report.", + "default": "None", + "optional": true + }, + { + "name": "business_line", + "type": "int", + "description": "Dictionary containing the revenue of the business line.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "RevenueBusinessLine" + }, + "/equity/fundamental/filings": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the URLs to SEC filings reported to EDGAR database, such as 10-K, 10-Q, 8-K, and more. SEC\nfilings include Form 10-K, Form 10-Q, Form 8-K, the proxy statement, Forms 3, 4, and 5, Schedule 13, Form 114,\nForeign Investment Disclosures and others. The annual 10-K report is required to be\nfiled annually and includes the company's financial statements, management discussion and analysis,\nand audited financial statements.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.filings(provider='fmp')\nobb.equity.fundamental.filings(limit=100, provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "None", + "optional": true + }, + { + "name": "form_type", + "type": "str", + "description": "Filter by form type. Check the data provider for available types.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "100", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "thea_enabled", + "type": "bool", + "description": "Return filings that have been read by Intrinio's Thea NLP.", + "default": "None", + "optional": true + } + ], + "sec": [ + { + "name": "cik", + "type": "Union[int, str]", + "description": "Lookup filings by Central Index Key (CIK) instead of by symbol.", + "default": "None", + "optional": true + }, + { + "name": "type", + "type": "Literal['1', '1-A', '1-A POS', '1-A-W', '1-E', '1-E AD', '1-K', '1-SA', '1-U', '1-Z', '1-Z-W', '10-12B', '10-12G', '10-D', '10-K', '10-KT', '10-Q', '10-QT', '11-K', '11-KT', '13F-HR', '13F-NT', '13FCONP', '144', '15-12B', '15-12G', '15-15D', '15F-12B', '15F-12G', '15F-15D', '18-12B', '18-K', '19B-4E', '2-A', '2-AF', '2-E', '20-F', '20FR12B', '20FR12G', '24F-2NT', '25', '25-NSE', '253G1', '253G2', '253G3', '253G4', '3', '305B2', '34-12H', '4', '40-17F1', '40-17F2', '40-17G', '40-17GCS', '40-202A', '40-203A', '40-206A', '40-24B2', '40-33', '40-6B', '40-8B25', '40-8F-2', '40-APP', '40-F', '40-OIP', '40FR12B', '40FR12G', '424A', '424B1', '424B2', '424B3', '424B4', '424B5', '424B7', '424B8', '424H', '425', '485APOS', '485BPOS', '485BXT', '486APOS', '486BPOS', '486BXT', '487', '497', '497AD', '497H2', '497J', '497K', '497VPI', '497VPU', '5', '6-K', '6B NTC', '6B ORDR', '8-A12B', '8-A12G', '8-K', '8-K12B', '8-K12G3', '8-K15D5', '8-M', '8F-2 NTC', '8F-2 ORDR', '9-M', 'ABS-15G', 'ABS-EE', 'ADN-MTL', 'ADV-E', 'ADV-H-C', 'ADV-H-T', 'ADV-NR', 'ANNLRPT', 'APP NTC', 'APP ORDR', 'APP WD', 'APP WDG', 'ARS', 'ATS-N', 'ATS-N-C', 'ATS-N/UA', 'AW', 'AW WD', 'C', 'C-AR', 'C-AR-W', 'C-TR', 'C-TR-W', 'C-U', 'C-U-W', 'C-W', 'CB', 'CERT', 'CERTARCA', 'CERTBATS', 'CERTCBO', 'CERTNAS', 'CERTNYS', 'CERTPAC', 'CFPORTAL', 'CFPORTAL-W', 'CORRESP', 'CT ORDER', 'D', 'DEF 14A', 'DEF 14C', 'DEFA14A', 'DEFA14C', 'DEFC14A', 'DEFC14C', 'DEFM14A', 'DEFM14C', 'DEFN14A', 'DEFR14A', 'DEFR14C', 'DEL AM', 'DFAN14A', 'DFRN14A', 'DOS', 'DOSLTR', 'DRS', 'DRSLTR', 'DSTRBRPT', 'EFFECT', 'F-1', 'F-10', 'F-10EF', 'F-10POS', 'F-1MEF', 'F-3', 'F-3ASR', 'F-3D', 'F-3DPOS', 'F-3MEF', 'F-4', 'F-4 POS', 'F-4MEF', 'F-6', 'F-6 POS', 'F-6EF', 'F-7', 'F-7 POS', 'F-8', 'F-8 POS', 'F-80', 'F-80POS', 'F-9', 'F-9 POS', 'F-N', 'F-X', 'FOCUSN', 'FWP', 'G-405', 'G-405N', 'G-FIN', 'G-FINW', 'IRANNOTICE', 'MA', 'MA-A', 'MA-I', 'MA-W', 'MSD', 'MSDCO', 'MSDW', 'N-1', 'N-14', 'N-14 8C', 'N-14MEF', 'N-18F1', 'N-1A', 'N-2', 'N-2 POSASR', 'N-23C-2', 'N-23C3A', 'N-23C3B', 'N-23C3C', 'N-2ASR', 'N-2MEF', 'N-30B-2', 'N-30D', 'N-4', 'N-5', 'N-54A', 'N-54C', 'N-6', 'N-6F', 'N-8A', 'N-8B-2', 'N-8F', 'N-8F NTC', 'N-8F ORDR', 'N-CEN', 'N-CR', 'N-CSR', 'N-CSRS', 'N-MFP', 'N-MFP1', 'N-MFP2', 'N-PX', 'N-Q', 'N-VP', 'N-VPFS', 'NO ACT', 'NPORT-EX', 'NPORT-NP', 'NPORT-P', 'NRSRO-CE', 'NRSRO-UPD', 'NSAR-A', 'NSAR-AT', 'NSAR-B', 'NSAR-BT', 'NSAR-U', 'NT 10-D', 'NT 10-K', 'NT 10-Q', 'NT 11-K', 'NT 20-F', 'NT N-CEN', 'NT N-MFP', 'NT N-MFP1', 'NT N-MFP2', 'NT NPORT-EX', 'NT NPORT-P', 'NT-NCEN', 'NT-NCSR', 'NT-NSAR', 'NTFNCEN', 'NTFNCSR', 'NTFNSAR', 'NTN 10D', 'NTN 10K', 'NTN 10Q', 'NTN 20F', 'OIP NTC', 'OIP ORDR', 'POS 8C', 'POS AM', 'POS AMI', 'POS EX', 'POS462B', 'POS462C', 'POSASR', 'PRE 14A', 'PRE 14C', 'PREC14A', 'PREC14C', 'PREM14A', 'PREM14C', 'PREN14A', 'PRER14A', 'PRER14C', 'PRRN14A', 'PX14A6G', 'PX14A6N', 'QRTLYRPT', 'QUALIF', 'REG-NR', 'REVOKED', 'RW', 'RW WD', 'S-1', 'S-11', 'S-11MEF', 'S-1MEF', 'S-20', 'S-3', 'S-3ASR', 'S-3D', 'S-3DPOS', 'S-3MEF', 'S-4', 'S-4 POS', 'S-4EF', 'S-4MEF', 'S-6', 'S-8', 'S-8 POS', 'S-B', 'S-BMEF', 'SBSE', 'SBSE-A', 'SBSE-BD', 'SBSE-C', 'SBSE-W', 'SC 13D', 'SC 13E1', 'SC 13E3', 'SC 13G', 'SC 14D9', 'SC 14F1', 'SC 14N', 'SC TO-C', 'SC TO-I', 'SC TO-T', 'SC13E4F', 'SC14D1F', 'SC14D9C', 'SC14D9F', 'SD', 'SDR', 'SE', 'SEC ACTION', 'SEC STAFF ACTION', 'SEC STAFF LETTER', 'SF-1', 'SF-3', 'SL', 'SP 15D2', 'STOP ORDER', 'SUPPL', 'T-3', 'TA-1', 'TA-2', 'TA-W', 'TACO', 'TH', 'TTW', 'UNDER', 'UPLOAD', 'WDL-REQ', 'X-17A-5']", + "description": "Type of the SEC filing form.", + "default": "None", + "optional": true + }, + { + "name": "use_cache", + "type": "bool", + "description": "Whether or not to use cache. If True, cache will store for one day.", + "default": "True", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : CompanyFilings\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "filing_date", + "type": "date", + "description": "The date of the filing.", + "default": "", + "optional": false + }, + { + "name": "accepted_date", + "type": "datetime", + "description": "Accepted date of the filing.", + "default": "None", + "optional": true + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "cik", + "type": "str", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "None", + "optional": true + }, + { + "name": "report_type", + "type": "str", + "description": "Type of filing.", + "default": "None", + "optional": true + }, + { + "name": "filing_url", + "type": "str", + "description": "URL to the filing page.", + "default": "None", + "optional": true + }, + { + "name": "report_url", + "type": "str", + "description": "URL to the actual report.", + "default": "", + "optional": false + } + ], + "fmp": [], + "intrinio": [ + { + "name": "id", + "type": "str", + "description": "Intrinio ID of the filing.", + "default": "", + "optional": false + }, + { + "name": "period_end_date", + "type": "date", + "description": "Ending date of the fiscal period for the filing.", + "default": "None", + "optional": true + }, + { + "name": "sec_unique_id", + "type": "str", + "description": "SEC unique ID of the filing.", + "default": "", + "optional": false + }, + { + "name": "instance_url", + "type": "str", + "description": "URL for the XBRL filing for the report.", + "default": "None", + "optional": true + }, + { + "name": "industry_group", + "type": "str", + "description": "Industry group of the company.", + "default": "", + "optional": false + }, + { + "name": "industry_category", + "type": "str", + "description": "Industry category of the company.", + "default": "", + "optional": false + } + ], + "sec": [ + { + "name": "report_date", + "type": "date", + "description": "The date of the filing.", + "default": "None", + "optional": true + }, + { + "name": "act", + "type": "Union[int, str]", + "description": "The SEC Act number.", + "default": "None", + "optional": true + }, + { + "name": "items", + "type": "Union[str, float]", + "description": "The SEC Item numbers.", + "default": "None", + "optional": true + }, + { + "name": "primary_doc_description", + "type": "str", + "description": "The description of the primary document.", + "default": "None", + "optional": true + }, + { + "name": "primary_doc", + "type": "str", + "description": "The filename of the primary document.", + "default": "None", + "optional": true + }, + { + "name": "accession_number", + "type": "Union[int, str]", + "description": "The accession number.", + "default": "None", + "optional": true + }, + { + "name": "file_number", + "type": "Union[int, str]", + "description": "The file number.", + "default": "None", + "optional": true + }, + { + "name": "film_number", + "type": "Union[int, str]", + "description": "The film number.", + "default": "None", + "optional": true + }, + { + "name": "is_inline_xbrl", + "type": "Union[int, str]", + "description": "Whether the filing is an inline XBRL filing.", + "default": "None", + "optional": true + }, + { + "name": "is_xbrl", + "type": "Union[int, str]", + "description": "Whether the filing is an XBRL filing.", + "default": "None", + "optional": true + }, + { + "name": "size", + "type": "Union[int, str]", + "description": "The size of the filing.", + "default": "None", + "optional": true + }, + { + "name": "complete_submission_url", + "type": "str", + "description": "The URL to the complete filing submission.", + "default": "None", + "optional": true + }, + { + "name": "filing_detail_url", + "type": "str", + "description": "The URL to the filing details.", + "default": "None", + "optional": true + } + ] + }, + "model": "CompanyFilings" + }, + "/equity/fundamental/historical_splits": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical stock splits for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.historical_splits(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : HistoricalSplits\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "label", + "type": "str", + "description": "Label of the historical stock splits.", + "default": "", + "optional": false + }, + { + "name": "numerator", + "type": "float", + "description": "Numerator of the historical stock splits.", + "default": "", + "optional": false + }, + { + "name": "denominator", + "type": "float", + "description": "Denominator of the historical stock splits.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "HistoricalSplits" + }, + "/equity/fundamental/transcript": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get earnings call transcripts for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.transcript(symbol='AAPL', year=2020, provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "year", + "type": "int", + "description": "Year of the earnings call transcript.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EarningsCallTranscript\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "quarter", + "type": "int", + "description": "Quarter of the earnings call transcript.", + "default": "", + "optional": false + }, + { + "name": "year", + "type": "int", + "description": "Year of the earnings call transcript.", + "default": "", + "optional": false + }, + { + "name": "date", + "type": "datetime", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "content", + "type": "str", + "description": "Content of the earnings call transcript.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "EarningsCallTranscript" + }, + "/equity/fundamental/trailing_dividend_yield": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the 1 year trailing dividend yield for a given company over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.fundamental.trailing_dividend_yield(symbol='AAPL', provider='tiingo')\nobb.equity.fundamental.trailing_dividend_yield(symbol='AAPL', limit=252, provider='tiingo')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return. Default is 252, the number of trading days in a year.", + "default": "252", + "optional": true + }, + { + "name": "provider", + "type": "Literal['tiingo']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'tiingo' if there is no default.", + "default": "tiingo", + "optional": true + } + ], + "tiingo": [] + }, + "returns": { + "OBBject": "OBBject\n results : TrailingDividendYield\n Serializable results.\n provider : Literal['tiingo']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "trailing_dividend_yield", + "type": "float", + "description": "Trailing dividend yield.", + "default": "", + "optional": false + } + ], + "tiingo": [] + }, + "model": "TrailingDividendYield" + }, + "/equity/ownership/major_holders": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get data about major holders for a given company over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.ownership.major_holders(symbol='AAPL', provider='fmp')\nobb.equity.ownership.major_holders(symbol='AAPL', page=0, provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for.", + "default": "None", + "optional": true + }, + { + "name": "page", + "type": "int", + "description": "Page number of the data to fetch.", + "default": "0", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityOwnership\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "cik", + "type": "int", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "", + "optional": false + }, + { + "name": "filing_date", + "type": "date", + "description": "Filing date of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "investor_name", + "type": "str", + "description": "Investor name of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "security_name", + "type": "str", + "description": "Security name of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "type_of_security", + "type": "str", + "description": "Type of security of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "security_cusip", + "type": "str", + "description": "Security cusip of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "shares_type", + "type": "str", + "description": "Shares type of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "put_call_share", + "type": "str", + "description": "Put call share of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "investment_discretion", + "type": "str", + "description": "Investment discretion of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "industry_title", + "type": "str", + "description": "Industry title of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "weight", + "type": "float", + "description": "Weight of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "last_weight", + "type": "float", + "description": "Last weight of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "change_in_weight", + "type": "float", + "description": "Change in weight of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "change_in_weight_percentage", + "type": "float", + "description": "Change in weight percentage of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "market_value", + "type": "int", + "description": "Market value of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "last_market_value", + "type": "int", + "description": "Last market value of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "change_in_market_value", + "type": "int", + "description": "Change in market value of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "change_in_market_value_percentage", + "type": "float", + "description": "Change in market value percentage of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "shares_number", + "type": "int", + "description": "Shares number of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "last_shares_number", + "type": "int", + "description": "Last shares number of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "change_in_shares_number", + "type": "float", + "description": "Change in shares number of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "change_in_shares_number_percentage", + "type": "float", + "description": "Change in shares number percentage of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "quarter_end_price", + "type": "float", + "description": "Quarter end price of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "avg_price_paid", + "type": "float", + "description": "Average price paid of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "is_new", + "type": "bool", + "description": "Is the stock ownership new.", + "default": "", + "optional": false + }, + { + "name": "is_sold_out", + "type": "bool", + "description": "Is the stock ownership sold out.", + "default": "", + "optional": false + }, + { + "name": "ownership", + "type": "float", + "description": "How much is the ownership.", + "default": "", + "optional": false + }, + { + "name": "last_ownership", + "type": "float", + "description": "Last ownership amount.", + "default": "", + "optional": false + }, + { + "name": "change_in_ownership", + "type": "float", + "description": "Change in ownership amount.", + "default": "", + "optional": false + }, + { + "name": "change_in_ownership_percentage", + "type": "float", + "description": "Change in ownership percentage.", + "default": "", + "optional": false + }, + { + "name": "holding_period", + "type": "int", + "description": "Holding period of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "first_added", + "type": "date", + "description": "First added date of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "performance", + "type": "float", + "description": "Performance of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "performance_percentage", + "type": "float", + "description": "Performance percentage of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "last_performance", + "type": "float", + "description": "Last performance of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "change_in_performance", + "type": "float", + "description": "Change in performance of the stock ownership.", + "default": "", + "optional": false + }, + { + "name": "is_counted_for_performance", + "type": "bool", + "description": "Is the stock ownership counted for performance.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "EquityOwnership" + }, + "/equity/ownership/institutional": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get data about institutional ownership for a given company over time.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.ownership.institutional(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "include_current_quarter", + "type": "bool", + "description": "Include current quarter data.", + "default": "False", + "optional": true + }, + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : InstitutionalOwnership\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "cik", + "type": "str", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "None", + "optional": true + }, + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + } + ], + "fmp": [ + { + "name": "investors_holding", + "type": "int", + "description": "Number of investors holding the stock.", + "default": "", + "optional": false + }, + { + "name": "last_investors_holding", + "type": "int", + "description": "Number of investors holding the stock in the last quarter.", + "default": "", + "optional": false + }, + { + "name": "investors_holding_change", + "type": "int", + "description": "Change in the number of investors holding the stock.", + "default": "", + "optional": false + }, + { + "name": "number_of_13f_shares", + "type": "int", + "description": "Number of 13F shares.", + "default": "None", + "optional": true + }, + { + "name": "last_number_of_13f_shares", + "type": "int", + "description": "Number of 13F shares in the last quarter.", + "default": "None", + "optional": true + }, + { + "name": "number_of_13f_shares_change", + "type": "int", + "description": "Change in the number of 13F shares.", + "default": "None", + "optional": true + }, + { + "name": "total_invested", + "type": "float", + "description": "Total amount invested.", + "default": "", + "optional": false + }, + { + "name": "last_total_invested", + "type": "float", + "description": "Total amount invested in the last quarter.", + "default": "", + "optional": false + }, + { + "name": "total_invested_change", + "type": "float", + "description": "Change in the total amount invested.", + "default": "", + "optional": false + }, + { + "name": "ownership_percent", + "type": "float", + "description": "Ownership percent.", + "default": "", + "optional": false + }, + { + "name": "last_ownership_percent", + "type": "float", + "description": "Ownership percent in the last quarter.", + "default": "", + "optional": false + }, + { + "name": "ownership_percent_change", + "type": "float", + "description": "Change in the ownership percent.", + "default": "", + "optional": false + }, + { + "name": "new_positions", + "type": "int", + "description": "Number of new positions.", + "default": "", + "optional": false + }, + { + "name": "last_new_positions", + "type": "int", + "description": "Number of new positions in the last quarter.", + "default": "", + "optional": false + }, + { + "name": "new_positions_change", + "type": "int", + "description": "Change in the number of new positions.", + "default": "", + "optional": false + }, + { + "name": "increased_positions", + "type": "int", + "description": "Number of increased positions.", + "default": "", + "optional": false + }, + { + "name": "last_increased_positions", + "type": "int", + "description": "Number of increased positions in the last quarter.", + "default": "", + "optional": false + }, + { + "name": "increased_positions_change", + "type": "int", + "description": "Change in the number of increased positions.", + "default": "", + "optional": false + }, + { + "name": "closed_positions", + "type": "int", + "description": "Number of closed positions.", + "default": "", + "optional": false + }, + { + "name": "last_closed_positions", + "type": "int", + "description": "Number of closed positions in the last quarter.", + "default": "", + "optional": false + }, + { + "name": "closed_positions_change", + "type": "int", + "description": "Change in the number of closed positions.", + "default": "", + "optional": false + }, + { + "name": "reduced_positions", + "type": "int", + "description": "Number of reduced positions.", + "default": "", + "optional": false + }, + { + "name": "last_reduced_positions", + "type": "int", + "description": "Number of reduced positions in the last quarter.", + "default": "", + "optional": false + }, + { + "name": "reduced_positions_change", + "type": "int", + "description": "Change in the number of reduced positions.", + "default": "", + "optional": false + }, + { + "name": "total_calls", + "type": "int", + "description": "Total number of call options contracts traded for Apple Inc. on the specified date.", + "default": "", + "optional": false + }, + { + "name": "last_total_calls", + "type": "int", + "description": "Total number of call options contracts traded for Apple Inc. on the previous reporting date.", + "default": "", + "optional": false + }, + { + "name": "total_calls_change", + "type": "int", + "description": "Change in the total number of call options contracts traded between the current and previous reporting dates.", + "default": "", + "optional": false + }, + { + "name": "total_puts", + "type": "int", + "description": "Total number of put options contracts traded for Apple Inc. on the specified date.", + "default": "", + "optional": false + }, + { + "name": "last_total_puts", + "type": "int", + "description": "Total number of put options contracts traded for Apple Inc. on the previous reporting date.", + "default": "", + "optional": false + }, + { + "name": "total_puts_change", + "type": "int", + "description": "Change in the total number of put options contracts traded between the current and previous reporting dates.", + "default": "", + "optional": false + }, + { + "name": "put_call_ratio", + "type": "float", + "description": "Put-call ratio, which is the ratio of the total number of put options to call options traded on the specified date.", + "default": "", + "optional": false + }, + { + "name": "last_put_call_ratio", + "type": "float", + "description": "Put-call ratio on the previous reporting date.", + "default": "", + "optional": false + }, + { + "name": "put_call_ratio_change", + "type": "float", + "description": "Change in the put-call ratio between the current and previous reporting dates.", + "default": "", + "optional": false + } + ] + }, + "model": "InstitutionalOwnership" + }, + "/equity/ownership/insider_trading": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get data about trading by a company's management team and board of directors.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.ownership.insider_trading(symbol='AAPL', provider='fmp')\nobb.equity.ownership.insider_trading(symbol='AAPL', limit=500, provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "500", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "transaction_type", + "type": "Literal[None, 'award', 'conversion', 'return', 'expire_short', 'in_kind', 'gift', 'expire_long', 'discretionary', 'other', 'small', 'exempt', 'otm', 'purchase', 'sale', 'tender', 'will', 'itm', 'trust']", + "description": "Type of the transaction.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "", + "optional": false + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "", + "optional": false + }, + { + "name": "ownership_type", + "type": "Literal['D', 'I']", + "description": "Type of ownership.", + "default": "None", + "optional": true + }, + { + "name": "sort_by", + "type": "Literal['filing_date', 'updated_on']", + "description": "Field to sort by.", + "default": "updated_on", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : InsiderTrading\n Serializable results.\n provider : Literal['fmp', 'intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "company_cik", + "type": "Union[int, str]", + "description": "CIK number of the company.", + "default": "None", + "optional": true + }, + { + "name": "filing_date", + "type": "Union[date, datetime]", + "description": "Filing date of the trade.", + "default": "None", + "optional": true + }, + { + "name": "transaction_date", + "type": "date", + "description": "Date of the transaction.", + "default": "None", + "optional": true + }, + { + "name": "owner_cik", + "type": "Union[int, str]", + "description": "Reporting individual's CIK.", + "default": "None", + "optional": true + }, + { + "name": "owner_name", + "type": "str", + "description": "Name of the reporting individual.", + "default": "None", + "optional": true + }, + { + "name": "owner_title", + "type": "str", + "description": "The title held by the reporting individual.", + "default": "None", + "optional": true + }, + { + "name": "transaction_type", + "type": "str", + "description": "Type of transaction being reported.", + "default": "None", + "optional": true + }, + { + "name": "acquisition_or_disposition", + "type": "str", + "description": "Acquisition or disposition of the shares.", + "default": "None", + "optional": true + }, + { + "name": "security_type", + "type": "str", + "description": "The type of security transacted.", + "default": "None", + "optional": true + }, + { + "name": "securities_owned", + "type": "float", + "description": "Number of securities owned by the reporting individual.", + "default": "None", + "optional": true + }, + { + "name": "securities_transacted", + "type": "float", + "description": "Number of securities transacted by the reporting individual.", + "default": "None", + "optional": true + }, + { + "name": "transaction_price", + "type": "float", + "description": "The price of the transaction.", + "default": "None", + "optional": true + }, + { + "name": "filing_url", + "type": "str", + "description": "Link to the filing.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "form_type", + "type": "str", + "description": "Form type of the insider trading.", + "default": "", + "optional": false + } + ], + "intrinio": [ + { + "name": "company_name", + "type": "str", + "description": "Name of the company.", + "default": "", + "optional": false + }, + { + "name": "conversion_exercise_price", + "type": "float", + "description": "Conversion/Exercise price of the shares.", + "default": "None", + "optional": true + }, + { + "name": "deemed_execution_date", + "type": "date", + "description": "Deemed execution date of the trade.", + "default": "None", + "optional": true + }, + { + "name": "exercise_date", + "type": "date", + "description": "Exercise date of the trade.", + "default": "None", + "optional": true + }, + { + "name": "expiration_date", + "type": "date", + "description": "Expiration date of the derivative.", + "default": "None", + "optional": true + }, + { + "name": "underlying_security_title", + "type": "str", + "description": "Name of the underlying non-derivative security related to this derivative transaction.", + "default": "None", + "optional": true + }, + { + "name": "underlying_shares", + "type": "Union[float, int]", + "description": "Number of underlying shares related to this derivative transaction.", + "default": "None", + "optional": true + }, + { + "name": "nature_of_ownership", + "type": "str", + "description": "Nature of ownership of the insider trading.", + "default": "None", + "optional": true + }, + { + "name": "director", + "type": "bool", + "description": "Whether the owner is a director.", + "default": "None", + "optional": true + }, + { + "name": "officer", + "type": "bool", + "description": "Whether the owner is an officer.", + "default": "None", + "optional": true + }, + { + "name": "ten_percent_owner", + "type": "bool", + "description": "Whether the owner is a 10% owner.", + "default": "None", + "optional": true + }, + { + "name": "other_relation", + "type": "bool", + "description": "Whether the owner is having another relation.", + "default": "None", + "optional": true + }, + { + "name": "derivative_transaction", + "type": "bool", + "description": "Whether the owner is having a derivative transaction.", + "default": "None", + "optional": true + }, + { + "name": "report_line_number", + "type": "int", + "description": "Report line number of the insider trading.", + "default": "None", + "optional": true + } + ] + }, + "model": "InsiderTrading" + }, + "/equity/ownership/share_statistics": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get data about share float for a given company.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.ownership.share_statistics(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): yfinance.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : ShareStatistics\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "None", + "optional": true + }, + { + "name": "free_float", + "type": "float", + "description": "Percentage of unrestricted shares of a publicly-traded company.", + "default": "None", + "optional": true + }, + { + "name": "float_shares", + "type": "float", + "description": "Number of shares available for trading by the general public.", + "default": "None", + "optional": true + }, + { + "name": "outstanding_shares", + "type": "float", + "description": "Total number of shares of a publicly-traded company.", + "default": "None", + "optional": true + }, + { + "name": "source", + "type": "str", + "description": "Source of the received data.", + "default": "None", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "adjusted_outstanding_shares", + "type": "float", + "description": "Total number of shares of a publicly-traded company, adjusted for splits.", + "default": "None", + "optional": true + }, + { + "name": "public_float", + "type": "float", + "description": "Aggregate market value of the shares of a publicly-traded company.", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "implied_shares_outstanding", + "type": "int", + "description": "Implied Shares Outstanding of common equity, assuming the conversion of all convertible subsidiary equity into common.", + "default": "None", + "optional": true + }, + { + "name": "short_interest", + "type": "int", + "description": "Number of shares that are reported short.", + "default": "None", + "optional": true + }, + { + "name": "short_percent_of_float", + "type": "float", + "description": "Percentage of shares that are reported short, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "days_to_cover", + "type": "float", + "description": "Number of days to repurchase the shares as a ratio of average daily volume", + "default": "None", + "optional": true + }, + { + "name": "short_interest_prev_month", + "type": "int", + "description": "Number of shares that were reported short in the previous month.", + "default": "None", + "optional": true + }, + { + "name": "short_interest_prev_date", + "type": "date", + "description": "Date of the previous month's report.", + "default": "None", + "optional": true + }, + { + "name": "insider_ownership", + "type": "float", + "description": "Percentage of shares held by insiders, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "institution_ownership", + "type": "float", + "description": "Percentage of shares held by institutions, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "institution_float_ownership", + "type": "float", + "description": "Percentage of float held by institutions, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "institutions_count", + "type": "int", + "description": "Number of institutions holding shares.", + "default": "None", + "optional": true + } + ] + }, + "model": "ShareStatistics" + }, + "/equity/ownership/form_13f": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "The Securities and Exchange Commission's (SEC) Form 13F is a quarterly report\nthat is required to be filed by all institutional investment managers with at least\n$100 million in assets under management.\nManagers are required to file Form 13F within 45 days after the last day of the calendar quarter.\nMost funds wait until the end of this period in order to conceal\ntheir investment strategy from competitors and the public.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.ownership.form_13f(symbol='NVDA', provider='sec')\n# Enter a date (calendar quarter ending) for a specific report.\nobb.equity.ownership.form_13f(symbol='BRK-A', date='2016-09-30', provider='sec')\n# Example finding Michael Burry's filings.\ncik = obb.regulators.sec.institutions_search(\"Scion Asset Management\").results[0].cik\n# Use the `limit` parameter to return N number of reports from the most recent.\nobb.equity.ownership.form_13f(cik, limit=2).to_df()\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for. A CIK or Symbol can be used.", + "default": "", + "optional": false + }, + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for. The date represents the end of the reporting period. All form 13F-HR filings are based on the calendar year and are reported quarterly. If a date is not supplied, the most recent filing is returned. Submissions beginning 2013-06-30 are supported.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return. The number of previous filings to return. The date parameter takes priority over this parameter.", + "default": "1", + "optional": true + }, + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [] + }, + "returns": { + "OBBject": "OBBject\n results : Form13FHR\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "period_ending", + "type": "date", + "description": "The end-of-quarter date of the filing.", + "default": "", + "optional": false + }, + { + "name": "issuer", + "type": "str", + "description": "The name of the issuer.", + "default": "", + "optional": false + }, + { + "name": "cusip", + "type": "str", + "description": "The CUSIP of the security.", + "default": "", + "optional": false + }, + { + "name": "asset_class", + "type": "str", + "description": "The title of the asset class for the security.", + "default": "", + "optional": false + }, + { + "name": "security_type", + "type": "Literal['SH', 'PRN']", + "description": "The total number of shares of the class of security or the principal amount of such class. 'SH' for shares. 'PRN' for principal amount. Convertible debt securities are reported as 'PRN'.", + "default": "None", + "optional": true + }, + { + "name": "option_type", + "type": "Literal['call', 'put']", + "description": "Defined when the holdings being reported are put or call options. Only long positions are reported.", + "default": "None", + "optional": true + }, + { + "name": "voting_authority_sole", + "type": "int", + "description": "The number of shares for which the Manager exercises sole voting authority (none).", + "default": "None", + "optional": true + }, + { + "name": "voting_authority_shared", + "type": "int", + "description": "The number of shares for which the Manager exercises a defined shared voting authority (none).", + "default": "None", + "optional": true + }, + { + "name": "voting_authority_other", + "type": "int", + "description": "The number of shares for which the Manager exercises other shared voting authority (none).", + "default": "None", + "optional": true + }, + { + "name": "principal_amount", + "type": "int", + "description": "The total number of shares of the class of security or the principal amount of such class. Only long positions are reported", + "default": "", + "optional": false + }, + { + "name": "value", + "type": "int", + "description": "The fair market value of the holding of the particular class of security. The value reported for options is the fair market value of the underlying security with respect to the number of shares controlled. Values are rounded to the nearest US dollar and use the closing price of the last trading day of the calendar year or quarter.", + "default": "", + "optional": false + } + ], + "sec": [ + { + "name": "weight", + "type": "float", + "description": "The weight of the security relative to the market value of all securities in the filing , as a normalized percent.", + "default": "", + "optional": false + } + ] + }, + "model": "Form13FHR" + }, + "/equity/price/quote": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the latest quote for a given stock. Quote includes price, volume, and other data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.price.quote(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. This endpoint will accept multiple symbols separated by commas. Multiple items allowed for provider(s): fmp, intrinio, yfinance.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "source", + "type": "Literal['iex', 'bats', 'bats_delayed', 'utp_delayed', 'cta_a_delayed', 'cta_b_delayed', 'intrinio_mx', 'intrinio_mx_plus', 'delayed_sip']", + "description": "Source of the data.", + "default": "iex", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityQuote\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "asset_type", + "type": "str", + "description": "Type of asset - i.e, stock, ETF, etc.", + "default": "None", + "optional": true + }, + { + "name": "name", + "type": "str", + "description": "Name of the company or asset.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The name or symbol of the venue where the data is from.", + "default": "None", + "optional": true + }, + { + "name": "bid", + "type": "float", + "description": "Price of the top bid order.", + "default": "None", + "optional": true + }, + { + "name": "bid_size", + "type": "int", + "description": "This represents the number of round lot orders at the given price. The normal round lot size is 100 shares. A size of 2 means there are 200 shares available at the given price.", + "default": "None", + "optional": true + }, + { + "name": "bid_exchange", + "type": "str", + "description": "The specific trading venue where the purchase order was placed.", + "default": "None", + "optional": true + }, + { + "name": "ask", + "type": "float", + "description": "Price of the top ask order.", + "default": "None", + "optional": true + }, + { + "name": "ask_size", + "type": "int", + "description": "This represents the number of round lot orders at the given price. The normal round lot size is 100 shares. A size of 2 means there are 200 shares available at the given price.", + "default": "None", + "optional": true + }, + { + "name": "ask_exchange", + "type": "str", + "description": "The specific trading venue where the sale order was placed.", + "default": "None", + "optional": true + }, + { + "name": "quote_conditions", + "type": "Union[str, int, List[str], List[int]]", + "description": "Conditions or condition codes applicable to the quote.", + "default": "None", + "optional": true + }, + { + "name": "quote_indicators", + "type": "Union[str, int, List[str], List[int]]", + "description": "Indicators or indicator codes applicable to the participant quote related to the price bands for the issue, or the affect the quote has on the NBBO.", + "default": "None", + "optional": true + }, + { + "name": "sales_conditions", + "type": "Union[str, int, List[str], List[int]]", + "description": "Conditions or condition codes applicable to the sale.", + "default": "None", + "optional": true + }, + { + "name": "sequence_number", + "type": "int", + "description": "The sequence number represents the sequence in which message events happened. These are increasing and unique per ticker symbol, but will not always be sequential (e.g., 1, 2, 6, 9, 10, 11).", + "default": "None", + "optional": true + }, + { + "name": "market_center", + "type": "str", + "description": "The ID of the UTP participant that originated the message.", + "default": "None", + "optional": true + }, + { + "name": "participant_timestamp", + "type": "datetime", + "description": "Timestamp for when the quote was generated by the exchange.", + "default": "None", + "optional": true + }, + { + "name": "trf_timestamp", + "type": "datetime", + "description": "Timestamp for when the TRF (Trade Reporting Facility) received the message.", + "default": "None", + "optional": true + }, + { + "name": "sip_timestamp", + "type": "datetime", + "description": "Timestamp for when the SIP (Security Information Processor) received the message from the exchange.", + "default": "None", + "optional": true + }, + { + "name": "last_price", + "type": "float", + "description": "Price of the last trade.", + "default": "None", + "optional": true + }, + { + "name": "last_tick", + "type": "str", + "description": "Whether the last sale was an up or down tick.", + "default": "None", + "optional": true + }, + { + "name": "last_size", + "type": "int", + "description": "Size of the last trade.", + "default": "None", + "optional": true + }, + { + "name": "last_timestamp", + "type": "datetime", + "description": "Date and Time when the last price was recorded.", + "default": "None", + "optional": true + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "None", + "optional": true + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "None", + "optional": true + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "None", + "optional": true + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "Union[float, int]", + "description": "The trading volume.", + "default": "None", + "optional": true + }, + { + "name": "exchange_volume", + "type": "Union[float, int]", + "description": "Volume of shares exchanged during the trading day on the specific exchange.", + "default": "None", + "optional": true + }, + { + "name": "prev_close", + "type": "float", + "description": "The previous close price.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in price from previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change in price as a normalized percentage.", + "default": "None", + "optional": true + }, + { + "name": "year_high", + "type": "float", + "description": "The one year high (52W High).", + "default": "None", + "optional": true + }, + { + "name": "year_low", + "type": "float", + "description": "The one year low (52W Low).", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "price_avg50", + "type": "float", + "description": "50 day moving average price.", + "default": "None", + "optional": true + }, + { + "name": "price_avg200", + "type": "float", + "description": "200 day moving average price.", + "default": "None", + "optional": true + }, + { + "name": "avg_volume", + "type": "int", + "description": "Average volume over the last 10 trading days.", + "default": "None", + "optional": true + }, + { + "name": "market_cap", + "type": "float", + "description": "Market cap of the company.", + "default": "None", + "optional": true + }, + { + "name": "shares_outstanding", + "type": "int", + "description": "Number of shares outstanding.", + "default": "None", + "optional": true + }, + { + "name": "eps", + "type": "float", + "description": "Earnings per share.", + "default": "None", + "optional": true + }, + { + "name": "pe", + "type": "float", + "description": "Price earnings ratio.", + "default": "None", + "optional": true + }, + { + "name": "earnings_announcement", + "type": "Union[datetime, str]", + "description": "Upcoming earnings announcement date.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "is_darkpool", + "type": "bool", + "description": "Whether or not the current trade is from a darkpool.", + "default": "None", + "optional": true + }, + { + "name": "source", + "type": "str", + "description": "Source of the Intrinio data.", + "default": "None", + "optional": true + }, + { + "name": "updated_on", + "type": "datetime", + "description": "Date and Time when the data was last updated.", + "default": "", + "optional": false + }, + { + "name": "security", + "type": "openbb_intrinio.utils.references.IntrinioSecurity", + "description": "Security details related to the quote.", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "ma_50d", + "type": "float", + "description": "50-day moving average price.", + "default": "None", + "optional": true + }, + { + "name": "ma_200d", + "type": "float", + "description": "200-day moving average price.", + "default": "None", + "optional": true + }, + { + "name": "volume_average", + "type": "float", + "description": "Average daily trading volume.", + "default": "None", + "optional": true + }, + { + "name": "volume_average_10d", + "type": "float", + "description": "Average daily trading volume in the last 10 days.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency of the price.", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityQuote" + }, + "/equity/price/nbbo": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the National Best Bid and Offer for a given stock.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.price.nbbo(symbol='AAPL', provider='polygon')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['polygon']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'polygon' if there is no default.", + "default": "polygon", + "optional": true + } + ], + "polygon": [ + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return. Up to ten million records will be returned. Pagination occurs in groups of 50,000. Remaining limit values will always return 50,000 more records unless it is the last page. High volume tickers will require multiple max requests for a single day's NBBO records. Expect stocks, like SPY, to approach 1GB in size, per day, as a raw CSV. Splitting large requests into chunks is recommended for full-day requests of high-volume symbols.", + "default": "50000", + "optional": true + }, + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for. Use bracketed the timestamp parameters to specify exact time ranges.", + "default": "None", + "optional": true + }, + { + "name": "timestamp_lt", + "type": "Union[datetime, str]", + "description": "Query by datetime, less than. Either a date with the format YYYY-MM-DD or a TZ-aware timestamp string, YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour.", + "default": "None", + "optional": true + }, + { + "name": "timestamp_gt", + "type": "Union[datetime, str]", + "description": "Query by datetime, greater than. Either a date with the format YYYY-MM-DD or a TZ-aware timestamp string, YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour.", + "default": "None", + "optional": true + }, + { + "name": "timestamp_lte", + "type": "Union[datetime, str]", + "description": "Query by datetime, less than or equal to. Either a date with the format YYYY-MM-DD or a TZ-aware timestamp string, YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour.", + "default": "None", + "optional": true + }, + { + "name": "timestamp_gte", + "type": "Union[datetime, str]", + "description": "Query by datetime, greater than or equal to. Either a date with the format YYYY-MM-DD or a TZ-aware timestamp string, YYYY-MM-DDTH:M:S.000000000-04:00'. Include all nanoseconds and the 'T' between the day and hour.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EquityNBBO\n Serializable results.\n provider : Literal['polygon']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "ask_exchange", + "type": "str", + "description": "The exchange ID for the ask.", + "default": "", + "optional": false + }, + { + "name": "ask", + "type": "float", + "description": "The last ask price.", + "default": "", + "optional": false + }, + { + "name": "ask_size", + "type": "int", + "description": "The ask size. This represents the number of round lot orders at the given ask price. The normal round lot size is 100 shares. An ask size of 2 means there are 200 shares available to purchase at the given ask price.", + "default": "", + "optional": false + }, + { + "name": "bid_size", + "type": "int", + "description": "The bid size in round lots.", + "default": "", + "optional": false + }, + { + "name": "bid", + "type": "float", + "description": "The last bid price.", + "default": "", + "optional": false + }, + { + "name": "bid_exchange", + "type": "str", + "description": "The exchange ID for the bid.", + "default": "", + "optional": false + } + ], + "polygon": [ + { + "name": "tape", + "type": "str", + "description": "The exchange tape.", + "default": "None", + "optional": true + }, + { + "name": "conditions", + "type": "Union[str, List[int], List[str]]", + "description": "A list of condition codes.", + "default": "None", + "optional": true + }, + { + "name": "indicators", + "type": "List[int]", + "description": "A list of indicator codes.", + "default": "None", + "optional": true + }, + { + "name": "sequence_num", + "type": "int", + "description": "The sequence number represents the sequence in which message events happened. These are increasing and unique per ticker symbol, but will not always be sequential (e.g., 1, 2, 6, 9, 10, 11)", + "default": "None", + "optional": true + }, + { + "name": "participant_timestamp", + "type": "datetime", + "description": "The nanosecond accuracy Participant/Exchange Unix Timestamp. This is the timestamp of when the quote was actually generated at the exchange.", + "default": "None", + "optional": true + }, + { + "name": "sip_timestamp", + "type": "datetime", + "description": "The nanosecond accuracy SIP Unix Timestamp. This is the timestamp of when the SIP received this quote from the exchange which produced it.", + "default": "None", + "optional": true + }, + { + "name": "trf_timestamp", + "type": "datetime", + "description": "The nanosecond accuracy TRF (Trade Reporting Facility) Unix Timestamp. This is the timestamp of when the trade reporting facility received this quote.", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityNBBO" + }, + "/equity/price/historical": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get historical price data for a given stock. This includes open, high, low, close, and volume.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.price.historical(symbol='AAPL', provider='fmp')\nobb.equity.price.historical(symbol='AAPL', interval='1d', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp, polygon, tiingo, yfinance.", + "default": "", + "optional": false + }, + { + "name": "interval", + "type": "str", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon', 'tiingo', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "start_time", + "type": "datetime.time", + "description": "Return intervals starting at the specified time on the `start_date` formatted as 'HH:MM:SS'.", + "default": "None", + "optional": true + }, + { + "name": "end_time", + "type": "datetime.time", + "description": "Return intervals stopping at the specified time on the `end_date` formatted as 'HH:MM:SS'.", + "default": "None", + "optional": true + }, + { + "name": "timezone", + "type": "str", + "description": "Timezone of the data, in the IANA format (Continent/City).", + "default": "America/New_York", + "optional": true + }, + { + "name": "source", + "type": "Literal['realtime', 'delayed', 'nasdaq_basic']", + "description": "The source of the data.", + "default": "realtime", + "optional": true + } + ], + "polygon": [ + { + "name": "adjustment", + "type": "Literal['splits_only', 'unadjusted']", + "description": "The adjustment factor to apply. Default is splits only.", + "default": "splits_only", + "optional": true + }, + { + "name": "extended_hours", + "type": "bool", + "description": "Include Pre and Post market data.", + "default": "False", + "optional": true + }, + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date.", + "default": "asc", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "49999", + "optional": true + } + ], + "tiingo": [], + "yfinance": [ + { + "name": "extended_hours", + "type": "bool", + "description": "Include Pre and Post market data.", + "default": "False", + "optional": true + }, + { + "name": "include_actions", + "type": "bool", + "description": "Include dividends and stock splits in results.", + "default": "True", + "optional": true + }, + { + "name": "adjustment", + "type": "Literal['splits_only', 'splits_and_dividends']", + "description": "The adjustment factor to apply. Default is splits only.", + "default": "splits_only", + "optional": true + }, + { + "name": "adjusted", + "type": "bool", + "description": "This field is deprecated (4.1.5) and will be removed in a future version. Use 'adjustment' set as 'splits_and_dividends' instead.", + "default": "False", + "optional": true + }, + { + "name": "prepost", + "type": "bool", + "description": "This field is deprecated (4.1.5) and will be removed in a future version. Use 'extended_hours' as True instead.", + "default": "False", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EquityHistorical\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon', 'tiingo', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "Union[date, datetime]", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "", + "optional": false + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "", + "optional": false + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "", + "optional": false + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "Union[float, int]", + "description": "The trading volume.", + "default": "None", + "optional": true + }, + { + "name": "vwap", + "type": "float", + "description": "Volume Weighted Average Price over the period.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "unadjusted_volume", + "type": "float", + "description": "Unadjusted volume of the symbol.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change in the price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "average", + "type": "float", + "description": "Average trade price of an individual equity during the interval.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price of the symbol from the previous day.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Percent change in the price of the symbol from the previous day.", + "default": "None", + "optional": true + }, + { + "name": "adj_open", + "type": "float", + "description": "The adjusted open price.", + "default": "None", + "optional": true + }, + { + "name": "adj_high", + "type": "float", + "description": "The adjusted high price.", + "default": "None", + "optional": true + }, + { + "name": "adj_low", + "type": "float", + "description": "The adjusted low price.", + "default": "None", + "optional": true + }, + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "adj_volume", + "type": "float", + "description": "The adjusted volume.", + "default": "None", + "optional": true + }, + { + "name": "fifty_two_week_high", + "type": "float", + "description": "52 week high price for the symbol.", + "default": "None", + "optional": true + }, + { + "name": "fifty_two_week_low", + "type": "float", + "description": "52 week low price for the symbol.", + "default": "None", + "optional": true + }, + { + "name": "factor", + "type": "float", + "description": "factor by which to multiply equity prices before this date, in order to calculate historically-adjusted equity prices.", + "default": "None", + "optional": true + }, + { + "name": "split_ratio", + "type": "float", + "description": "Ratio of the equity split, if a split occurred.", + "default": "None", + "optional": true + }, + { + "name": "dividend", + "type": "float", + "description": "Dividend amount, if a dividend was paid.", + "default": "None", + "optional": true + }, + { + "name": "close_time", + "type": "datetime", + "description": "The timestamp that represents the end of the interval span.", + "default": "None", + "optional": true + }, + { + "name": "interval", + "type": "str", + "description": "The data time frequency.", + "default": "None", + "optional": true + }, + { + "name": "intra_period", + "type": "bool", + "description": "If true, the equity price represents an unfinished period (be it day, week, quarter, month, or year), meaning that the close price is the latest price available, not the official close price for the period", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "transactions", + "type": "int, Gt(gt=0)", + "description": "Number of transactions for the symbol in the time period.", + "default": "None", + "optional": true + } + ], + "tiingo": [ + { + "name": "adj_open", + "type": "float", + "description": "The adjusted open price.", + "default": "None", + "optional": true + }, + { + "name": "adj_high", + "type": "float", + "description": "The adjusted high price.", + "default": "None", + "optional": true + }, + { + "name": "adj_low", + "type": "float", + "description": "The adjusted low price.", + "default": "None", + "optional": true + }, + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "adj_volume", + "type": "float", + "description": "The adjusted volume.", + "default": "None", + "optional": true + }, + { + "name": "split_ratio", + "type": "float", + "description": "Ratio of the equity split, if a split occurred.", + "default": "None", + "optional": true + }, + { + "name": "dividend", + "type": "float", + "description": "Dividend amount, if a dividend was paid.", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "split_ratio", + "type": "float", + "description": "Ratio of the equity split, if a split occurred.", + "default": "None", + "optional": true + }, + { + "name": "dividend", + "type": "float", + "description": "Dividend amount (split-adjusted), if a dividend was paid.", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityHistorical" + }, + "/equity/price/performance": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get price performance data for a given stock. This includes price changes for different time periods.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.price.performance(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : PricePerformance\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "one_day", + "type": "float", + "description": "One-day return.", + "default": "None", + "optional": true + }, + { + "name": "wtd", + "type": "float", + "description": "Week to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_week", + "type": "float", + "description": "One-week return.", + "default": "None", + "optional": true + }, + { + "name": "mtd", + "type": "float", + "description": "Month to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_month", + "type": "float", + "description": "One-month return.", + "default": "None", + "optional": true + }, + { + "name": "qtd", + "type": "float", + "description": "Quarter to date return.", + "default": "None", + "optional": true + }, + { + "name": "three_month", + "type": "float", + "description": "Three-month return.", + "default": "None", + "optional": true + }, + { + "name": "six_month", + "type": "float", + "description": "Six-month return.", + "default": "None", + "optional": true + }, + { + "name": "ytd", + "type": "float", + "description": "Year to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_year", + "type": "float", + "description": "One-year return.", + "default": "None", + "optional": true + }, + { + "name": "three_year", + "type": "float", + "description": "Three-year return.", + "default": "None", + "optional": true + }, + { + "name": "five_year", + "type": "float", + "description": "Five-year return.", + "default": "None", + "optional": true + }, + { + "name": "ten_year", + "type": "float", + "description": "Ten-year return.", + "default": "None", + "optional": true + }, + { + "name": "max", + "type": "float", + "description": "Return from the beginning of the time series.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "symbol", + "type": "str", + "description": "The ticker symbol.", + "default": "", + "optional": false + } + ] + }, + "model": "PricePerformance" + }, + "/equity/shorts/fails_to_deliver": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get reported Fail-to-deliver (FTD) data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.shorts.fails_to_deliver(symbol='AAPL', provider='sec')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [ + { + "name": "limit", + "type": "int", + "description": "Limit the number of reports to parse, from most recent. Approximately 24 reports per year, going back to 2009.", + "default": "24", + "optional": true + }, + { + "name": "skip_reports", + "type": "int", + "description": "Skip N number of reports from current. A value of 1 will skip the most recent report.", + "default": "0", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EquityFTD\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "settlement_date", + "type": "date", + "description": "The settlement date of the fail.", + "default": "None", + "optional": true + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "CUSIP of the Security.", + "default": "None", + "optional": true + }, + { + "name": "quantity", + "type": "int", + "description": "The number of fails on that settlement date.", + "default": "None", + "optional": true + }, + { + "name": "price", + "type": "float", + "description": "The price at the previous closing price from the settlement date.", + "default": "None", + "optional": true + }, + { + "name": "description", + "type": "str", + "description": "The description of the Security.", + "default": "None", + "optional": true + } + ], + "sec": [] + }, + "model": "EquityFTD" + }, + "/equity/search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search for stock symbol, CIK, LEI, or company name.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.search(provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Search query.", + "default": "", + "optional": true + }, + { + "name": "is_symbol", + "type": "bool", + "description": "Whether to search by ticker symbol.", + "default": "False", + "optional": true + }, + { + "name": "use_cache", + "type": "bool", + "description": "Whether to use the cache or not.", + "default": "True", + "optional": true + }, + { + "name": "provider", + "type": "Literal['intrinio', 'sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'intrinio' if there is no default.", + "default": "intrinio", + "optional": true + } + ], + "intrinio": [ + { + "name": "active", + "type": "bool", + "description": "When true, return companies that are actively traded (having stock prices within the past 14 days). When false, return companies that are not actively traded or never have been traded.", + "default": "True", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "10000", + "optional": true + } + ], + "sec": [ + { + "name": "is_fund", + "type": "bool", + "description": "Whether to direct the search to the list of mutual funds and ETFs.", + "default": "False", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EquitySearch\n Serializable results.\n provider : Literal['intrinio', 'sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "None", + "optional": true + }, + { + "name": "name", + "type": "str", + "description": "Name of the company.", + "default": "", + "optional": false + } + ], + "intrinio": [ + { + "name": "cik", + "type": "str", + "description": "", + "default": "", + "optional": false + }, + { + "name": "lei", + "type": "str", + "description": "The Legal Entity Identifier (LEI) of the company.", + "default": "", + "optional": false + }, + { + "name": "intrinio_id", + "type": "str", + "description": "The Intrinio ID of the company.", + "default": "", + "optional": false + } + ], + "sec": [ + { + "name": "cik", + "type": "str", + "description": "Central Index Key", + "default": "", + "optional": false + } + ] + }, + "model": "EquitySearch" + }, + "/equity/screener": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Screen for companies meeting various criteria. These criteria include\nmarket cap, price, beta, volume, and dividend yield.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.screener(provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "mktcap_min", + "type": "int", + "description": "Filter by market cap greater than this value.", + "default": "None", + "optional": true + }, + { + "name": "mktcap_max", + "type": "int", + "description": "Filter by market cap less than this value.", + "default": "None", + "optional": true + }, + { + "name": "price_min", + "type": "float", + "description": "Filter by price greater than this value.", + "default": "None", + "optional": true + }, + { + "name": "price_max", + "type": "float", + "description": "Filter by price less than this value.", + "default": "None", + "optional": true + }, + { + "name": "beta_min", + "type": "float", + "description": "Filter by a beta greater than this value.", + "default": "None", + "optional": true + }, + { + "name": "beta_max", + "type": "float", + "description": "Filter by a beta less than this value.", + "default": "None", + "optional": true + }, + { + "name": "volume_min", + "type": "int", + "description": "Filter by volume greater than this value.", + "default": "None", + "optional": true + }, + { + "name": "volume_max", + "type": "int", + "description": "Filter by volume less than this value.", + "default": "None", + "optional": true + }, + { + "name": "dividend_min", + "type": "float", + "description": "Filter by dividend amount greater than this value.", + "default": "None", + "optional": true + }, + { + "name": "dividend_max", + "type": "float", + "description": "Filter by dividend amount less than this value.", + "default": "None", + "optional": true + }, + { + "name": "is_etf", + "type": "bool", + "description": "If true, returns only ETFs.", + "default": "False", + "optional": true + }, + { + "name": "is_active", + "type": "bool", + "description": "If false, returns only inactive tickers.", + "default": "True", + "optional": true + }, + { + "name": "sector", + "type": "Literal['Consumer Cyclical', 'Energy', 'Technology', 'Industrials', 'Financial Services', 'Basic Materials', 'Communication Services', 'Consumer Defensive', 'Healthcare', 'Real Estate', 'Utilities', 'Industrial Goods', 'Financial', 'Services', 'Conglomerates']", + "description": "Filter by sector.", + "default": "None", + "optional": true + }, + { + "name": "industry", + "type": "str", + "description": "Filter by industry.", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "Filter by country, as a two-letter country code.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "Literal['amex', 'ams', 'ase', 'asx', 'ath', 'bme', 'bru', 'bud', 'bue', 'cai', 'cnq', 'cph', 'dfm', 'doh', 'etf', 'euronext', 'hel', 'hkse', 'ice', 'iob', 'ist', 'jkt', 'jnb', 'jpx', 'kls', 'koe', 'ksc', 'kuw', 'lse', 'mex', 'mutual_fund', 'nasdaq', 'neo', 'nse', 'nyse', 'nze', 'osl', 'otc', 'pnk', 'pra', 'ris', 'sao', 'sau', 'set', 'sgo', 'shh', 'shz', 'six', 'sto', 'tai', 'tlv', 'tsx', 'two', 'vie', 'wse', 'xetra']", + "description": "Filter by exchange.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "Limit the number of results to return.", + "default": "50000", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EquityScreener\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the company.", + "default": "", + "optional": false + } + ], + "fmp": [ + { + "name": "market_cap", + "type": "int", + "description": "The market cap of ticker.", + "default": "None", + "optional": true + }, + { + "name": "sector", + "type": "str", + "description": "The sector the ticker belongs to.", + "default": "None", + "optional": true + }, + { + "name": "industry", + "type": "str", + "description": "The industry ticker belongs to.", + "default": "None", + "optional": true + }, + { + "name": "beta", + "type": "float", + "description": "The beta of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "price", + "type": "float", + "description": "The current price.", + "default": "None", + "optional": true + }, + { + "name": "last_annual_dividend", + "type": "float", + "description": "The last annual amount dividend paid.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The current trading volume.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The exchange code the asset trades on.", + "default": "None", + "optional": true + }, + { + "name": "exchange_name", + "type": "str", + "description": "The full name of the primary exchange.", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "The two-letter country abbreviation where the head office is located.", + "default": "None", + "optional": true + }, + { + "name": "is_etf", + "type": "Literal[True, False]", + "description": "Whether the ticker is an ETF.", + "default": "None", + "optional": true + }, + { + "name": "actively_trading", + "type": "Literal[True, False]", + "description": "Whether the ETF is actively trading.", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityScreener" + }, + "/equity/profile": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get general information about a company. This includes company name, industry, sector and price data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.profile(symbol='AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp, intrinio, yfinance.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EquityInfo\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Common name of the company.", + "default": "None", + "optional": true + }, + { + "name": "cik", + "type": "str", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "CUSIP identifier for the company.", + "default": "None", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "International Securities Identification Number.", + "default": "None", + "optional": true + }, + { + "name": "lei", + "type": "str", + "description": "Legal Entity Identifier assigned to the company.", + "default": "None", + "optional": true + }, + { + "name": "legal_name", + "type": "str", + "description": "Official legal name of the company.", + "default": "None", + "optional": true + }, + { + "name": "stock_exchange", + "type": "str", + "description": "Stock exchange where the company is traded.", + "default": "None", + "optional": true + }, + { + "name": "sic", + "type": "int", + "description": "Standard Industrial Classification code for the company.", + "default": "None", + "optional": true + }, + { + "name": "short_description", + "type": "str", + "description": "Short description of the company.", + "default": "None", + "optional": true + }, + { + "name": "long_description", + "type": "str", + "description": "Long description of the company.", + "default": "None", + "optional": true + }, + { + "name": "ceo", + "type": "str", + "description": "Chief Executive Officer of the company.", + "default": "None", + "optional": true + }, + { + "name": "company_url", + "type": "str", + "description": "URL of the company's website.", + "default": "None", + "optional": true + }, + { + "name": "business_address", + "type": "str", + "description": "Address of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "mailing_address", + "type": "str", + "description": "Mailing address of the company.", + "default": "None", + "optional": true + }, + { + "name": "business_phone_no", + "type": "str", + "description": "Phone number of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "hq_address1", + "type": "str", + "description": "Address of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "hq_address2", + "type": "str", + "description": "Address of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "hq_address_city", + "type": "str", + "description": "City of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "hq_address_postal_code", + "type": "str", + "description": "Zip code of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "hq_state", + "type": "str", + "description": "State of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "hq_country", + "type": "str", + "description": "Country of the company's headquarters.", + "default": "None", + "optional": true + }, + { + "name": "inc_state", + "type": "str", + "description": "State in which the company is incorporated.", + "default": "None", + "optional": true + }, + { + "name": "inc_country", + "type": "str", + "description": "Country in which the company is incorporated.", + "default": "None", + "optional": true + }, + { + "name": "employees", + "type": "int", + "description": "Number of employees working for the company.", + "default": "None", + "optional": true + }, + { + "name": "entity_legal_form", + "type": "str", + "description": "Legal form of the company.", + "default": "None", + "optional": true + }, + { + "name": "entity_status", + "type": "str", + "description": "Status of the company.", + "default": "None", + "optional": true + }, + { + "name": "latest_filing_date", + "type": "date", + "description": "Date of the company's latest filing.", + "default": "None", + "optional": true + }, + { + "name": "irs_number", + "type": "str", + "description": "IRS number assigned to the company.", + "default": "None", + "optional": true + }, + { + "name": "sector", + "type": "str", + "description": "Sector in which the company operates.", + "default": "None", + "optional": true + }, + { + "name": "industry_category", + "type": "str", + "description": "Category of industry in which the company operates.", + "default": "None", + "optional": true + }, + { + "name": "industry_group", + "type": "str", + "description": "Group of industry in which the company operates.", + "default": "None", + "optional": true + }, + { + "name": "template", + "type": "str", + "description": "Template used to standardize the company's financial statements.", + "default": "None", + "optional": true + }, + { + "name": "standardized_active", + "type": "bool", + "description": "Whether the company is active or not.", + "default": "None", + "optional": true + }, + { + "name": "first_fundamental_date", + "type": "date", + "description": "Date of the company's first fundamental.", + "default": "None", + "optional": true + }, + { + "name": "last_fundamental_date", + "type": "date", + "description": "Date of the company's last fundamental.", + "default": "None", + "optional": true + }, + { + "name": "first_stock_price_date", + "type": "date", + "description": "Date of the company's first stock price.", + "default": "None", + "optional": true + }, + { + "name": "last_stock_price_date", + "type": "date", + "description": "Date of the company's last stock price.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "is_etf", + "type": "bool", + "description": "If the symbol is an ETF.", + "default": "", + "optional": false + }, + { + "name": "is_actively_trading", + "type": "bool", + "description": "If the company is actively trading.", + "default": "", + "optional": false + }, + { + "name": "is_adr", + "type": "bool", + "description": "If the stock is an ADR.", + "default": "", + "optional": false + }, + { + "name": "is_fund", + "type": "bool", + "description": "If the company is a fund.", + "default": "", + "optional": false + }, + { + "name": "image", + "type": "str", + "description": "Image of the company.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency in which the stock is traded.", + "default": "None", + "optional": true + }, + { + "name": "market_cap", + "type": "int", + "description": "Market capitalization of the company.", + "default": "None", + "optional": true + }, + { + "name": "last_price", + "type": "float", + "description": "The last traded price.", + "default": "None", + "optional": true + }, + { + "name": "year_high", + "type": "float", + "description": "The one-year high of the price.", + "default": "None", + "optional": true + }, + { + "name": "year_low", + "type": "float", + "description": "The one-year low of the price.", + "default": "None", + "optional": true + }, + { + "name": "volume_avg", + "type": "int", + "description": "Average daily trading volume.", + "default": "None", + "optional": true + }, + { + "name": "annualized_dividend_amount", + "type": "float", + "description": "The annualized dividend payment based on the most recent regular dividend payment.", + "default": "None", + "optional": true + }, + { + "name": "beta", + "type": "float", + "description": "Beta of the stock relative to the market.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "id", + "type": "str", + "description": "Intrinio ID for the company.", + "default": "None", + "optional": true + }, + { + "name": "thea_enabled", + "type": "bool", + "description": "Whether the company has been enabled for Thea.", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "exchange_timezone", + "type": "str", + "description": "The timezone of the exchange.", + "default": "None", + "optional": true + }, + { + "name": "issue_type", + "type": "str", + "description": "The issuance type of the asset.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "The currency in which the asset is traded.", + "default": "None", + "optional": true + }, + { + "name": "market_cap", + "type": "int", + "description": "The market capitalization of the asset.", + "default": "None", + "optional": true + }, + { + "name": "shares_outstanding", + "type": "int", + "description": "The number of listed shares outstanding.", + "default": "None", + "optional": true + }, + { + "name": "shares_float", + "type": "int", + "description": "The number of shares in the public float.", + "default": "None", + "optional": true + }, + { + "name": "shares_implied_outstanding", + "type": "int", + "description": "Implied shares outstanding of common equityassuming the conversion of all convertible subsidiary equity into common.", + "default": "None", + "optional": true + }, + { + "name": "shares_short", + "type": "int", + "description": "The reported number of shares short.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield", + "type": "float", + "description": "The dividend yield of the asset, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "beta", + "type": "float", + "description": "The beta of the asset relative to the broad market.", + "default": "None", + "optional": true + } + ] + }, + "model": "EquityInfo" + }, + "/equity/market_snapshots": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get an updated equity market snapshot. This includes price data for thousands of stocks.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.equity.market_snapshots(provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "provider", + "type": "Literal['fmp', 'polygon']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "market", + "type": "Literal['amex', 'ams', 'ase', 'asx', 'ath', 'bme', 'bru', 'bud', 'bue', 'cai', 'cnq', 'cph', 'dfm', 'doh', 'etf', 'euronext', 'hel', 'hkse', 'ice', 'iob', 'ist', 'jkt', 'jnb', 'jpx', 'kls', 'koe', 'ksc', 'kuw', 'lse', 'mex', 'mutual_fund', 'nasdaq', 'neo', 'nse', 'nyse', 'nze', 'osl', 'otc', 'pnk', 'pra', 'ris', 'sao', 'sau', 'set', 'sgo', 'shh', 'shz', 'six', 'sto', 'tai', 'tlv', 'tsx', 'two', 'vie', 'wse', 'xetra']", + "description": "The market to fetch data for.", + "default": "nasdaq", + "optional": true + } + ], + "polygon": [] + }, + "returns": { + "OBBject": "OBBject\n results : MarketSnapshots\n Serializable results.\n provider : Literal['fmp', 'polygon']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "None", + "optional": true + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "None", + "optional": true + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "None", + "optional": true + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The trading volume.", + "default": "None", + "optional": true + }, + { + "name": "prev_close", + "type": "float", + "description": "The previous close price.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "The change in price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "The change in price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "last_price", + "type": "float", + "description": "The last price of the stock.", + "default": "None", + "optional": true + }, + { + "name": "last_price_timestamp", + "type": "Union[date, datetime]", + "description": "The timestamp of the last price.", + "default": "None", + "optional": true + }, + { + "name": "ma50", + "type": "float", + "description": "The 50-day moving average.", + "default": "None", + "optional": true + }, + { + "name": "ma200", + "type": "float", + "description": "The 200-day moving average.", + "default": "None", + "optional": true + }, + { + "name": "year_high", + "type": "float", + "description": "The 52-week high.", + "default": "None", + "optional": true + }, + { + "name": "year_low", + "type": "float", + "description": "The 52-week low.", + "default": "None", + "optional": true + }, + { + "name": "volume_avg", + "type": "int", + "description": "Average daily trading volume.", + "default": "None", + "optional": true + }, + { + "name": "market_cap", + "type": "int", + "description": "Market cap of the stock.", + "default": "None", + "optional": true + }, + { + "name": "eps", + "type": "float", + "description": "Earnings per share.", + "default": "None", + "optional": true + }, + { + "name": "pe", + "type": "float", + "description": "Price to earnings ratio.", + "default": "None", + "optional": true + }, + { + "name": "shares_outstanding", + "type": "int", + "description": "Number of shares outstanding.", + "default": "None", + "optional": true + }, + { + "name": "name", + "type": "str", + "description": "The company name associated with the symbol.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The exchange of the stock.", + "default": "None", + "optional": true + }, + { + "name": "earnings_date", + "type": "Union[date, datetime]", + "description": "The upcoming earnings announcement date.", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "vwap", + "type": "float", + "description": "The volume weighted average price of the stock on the current trading day.", + "default": "None", + "optional": true + }, + { + "name": "prev_open", + "type": "float", + "description": "The previous trading session opening price.", + "default": "None", + "optional": true + }, + { + "name": "prev_high", + "type": "float", + "description": "The previous trading session high price.", + "default": "None", + "optional": true + }, + { + "name": "prev_low", + "type": "float", + "description": "The previous trading session low price.", + "default": "None", + "optional": true + }, + { + "name": "prev_volume", + "type": "float", + "description": "The previous trading session volume.", + "default": "None", + "optional": true + }, + { + "name": "prev_vwap", + "type": "float", + "description": "The previous trading session VWAP.", + "default": "None", + "optional": true + }, + { + "name": "last_updated", + "type": "datetime", + "description": "The last time the data was updated.", + "default": "", + "optional": false + }, + { + "name": "bid", + "type": "float", + "description": "The current bid price.", + "default": "None", + "optional": true + }, + { + "name": "bid_size", + "type": "int", + "description": "The current bid size.", + "default": "None", + "optional": true + }, + { + "name": "ask_size", + "type": "int", + "description": "The current ask size.", + "default": "None", + "optional": true + }, + { + "name": "ask", + "type": "float", + "description": "The current ask price.", + "default": "None", + "optional": true + }, + { + "name": "quote_timestamp", + "type": "datetime", + "description": "The timestamp of the last quote.", + "default": "None", + "optional": true + }, + { + "name": "last_trade_price", + "type": "float", + "description": "The last trade price.", + "default": "None", + "optional": true + }, + { + "name": "last_trade_size", + "type": "int", + "description": "The last trade size.", + "default": "None", + "optional": true + }, + { + "name": "last_trade_conditions", + "type": "List[int]", + "description": "The last trade condition codes.", + "default": "None", + "optional": true + }, + { + "name": "last_trade_exchange", + "type": "int", + "description": "The last trade exchange ID code.", + "default": "None", + "optional": true + }, + { + "name": "last_trade_timestamp", + "type": "datetime", + "description": "The last trade timestamp.", + "default": "None", + "optional": true + } + ] + }, + "model": "MarketSnapshots" + }, + "/etf/search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search for ETFs.\n\nAn empty query returns the full list of ETFs from the provider.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\n# An empty query returns the full list of ETFs from the provider.\nobb.etf.search(provider='fmp')\n# The query will return results from text-based fields containing the term.\nobb.etf.search(query='commercial real estate', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Search query.", + "default": "", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "exchange", + "type": "Literal['AMEX', 'NYSE', 'NASDAQ', 'ETF', 'TSX', 'EURONEXT']", + "description": "The exchange code the ETF trades on.", + "default": "None", + "optional": true + }, + { + "name": "is_active", + "type": "Literal[True, False]", + "description": "Whether the ETF is actively trading.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "exchange", + "type": "Literal['xnas', 'arcx', 'bats', 'xnys', 'bvmf', 'xshg', 'xshe', 'xhkg', 'xbom', 'xnse', 'xidx', 'tase', 'xkrx', 'xkls', 'xmex', 'xses', 'roco', 'xtai', 'xbkk', 'xist']", + "description": "Target a specific exchange by providing the MIC code.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EtfSearch\n Serializable results.\n provider : Literal['fmp', 'intrinio']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.(ETF)", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the ETF.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "market_cap", + "type": "float", + "description": "The market cap of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "sector", + "type": "str", + "description": "The sector of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "industry", + "type": "str", + "description": "The industry of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "beta", + "type": "float", + "description": "The beta of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "price", + "type": "float", + "description": "The current price of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "last_annual_dividend", + "type": "float", + "description": "The last annual dividend paid.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "float", + "description": "The current trading volume of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The exchange code the ETF trades on.", + "default": "None", + "optional": true + }, + { + "name": "exchange_name", + "type": "str", + "description": "The full name of the exchange the ETF trades on.", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "The country the ETF is registered in.", + "default": "None", + "optional": true + }, + { + "name": "actively_trading", + "type": "Literal[True, False]", + "description": "Whether the ETF is actively trading.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "exchange", + "type": "str", + "description": "The exchange MIC code.", + "default": "None", + "optional": true + }, + { + "name": "figi_ticker", + "type": "str", + "description": "The OpenFIGI ticker.", + "default": "None", + "optional": true + }, + { + "name": "ric", + "type": "str", + "description": "The Reuters Instrument Code.", + "default": "None", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "The International Securities Identification Number.", + "default": "None", + "optional": true + }, + { + "name": "sedol", + "type": "str", + "description": "The Stock Exchange Daily Official List.", + "default": "None", + "optional": true + }, + { + "name": "intrinio_id", + "type": "str", + "description": "The unique Intrinio ID for the security.", + "default": "None", + "optional": true + } + ] + }, + "model": "EtfSearch" + }, + "/etf/historical": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "ETF Historical Market Price.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.historical(symbol='SPY', provider='fmp')\nobb.etf.historical(symbol='SPY', provider='yfinance')\n# This function accepts multiple tickers.\nobb.etf.historical(symbol='SPY,IWM,QQQ,DJIA', provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp, polygon, tiingo, yfinance.", + "default": "", + "optional": false + }, + { + "name": "interval", + "type": "str", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon', 'tiingo', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "start_time", + "type": "datetime.time", + "description": "Return intervals starting at the specified time on the `start_date` formatted as 'HH:MM:SS'.", + "default": "None", + "optional": true + }, + { + "name": "end_time", + "type": "datetime.time", + "description": "Return intervals stopping at the specified time on the `end_date` formatted as 'HH:MM:SS'.", + "default": "None", + "optional": true + }, + { + "name": "timezone", + "type": "str", + "description": "Timezone of the data, in the IANA format (Continent/City).", + "default": "America/New_York", + "optional": true + }, + { + "name": "source", + "type": "Literal['realtime', 'delayed', 'nasdaq_basic']", + "description": "The source of the data.", + "default": "realtime", + "optional": true + } + ], + "polygon": [ + { + "name": "adjustment", + "type": "Literal['splits_only', 'unadjusted']", + "description": "The adjustment factor to apply. Default is splits only.", + "default": "splits_only", + "optional": true + }, + { + "name": "extended_hours", + "type": "bool", + "description": "Include Pre and Post market data.", + "default": "False", + "optional": true + }, + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date.", + "default": "asc", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "49999", + "optional": true + } + ], + "tiingo": [], + "yfinance": [ + { + "name": "extended_hours", + "type": "bool", + "description": "Include Pre and Post market data.", + "default": "False", + "optional": true + }, + { + "name": "include_actions", + "type": "bool", + "description": "Include dividends and stock splits in results.", + "default": "True", + "optional": true + }, + { + "name": "adjustment", + "type": "Literal['splits_only', 'splits_and_dividends']", + "description": "The adjustment factor to apply. Default is splits only.", + "default": "splits_only", + "optional": true + }, + { + "name": "adjusted", + "type": "bool", + "description": "This field is deprecated (4.1.5) and will be removed in a future version. Use 'adjustment' set as 'splits_and_dividends' instead.", + "default": "False", + "optional": true + }, + { + "name": "prepost", + "type": "bool", + "description": "This field is deprecated (4.1.5) and will be removed in a future version. Use 'extended_hours' as True instead.", + "default": "False", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EtfHistorical\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon', 'tiingo', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "Union[date, datetime]", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float", + "description": "The open price.", + "default": "", + "optional": false + }, + { + "name": "high", + "type": "float", + "description": "The high price.", + "default": "", + "optional": false + }, + { + "name": "low", + "type": "float", + "description": "The low price.", + "default": "", + "optional": false + }, + { + "name": "close", + "type": "float", + "description": "The close price.", + "default": "", + "optional": false + }, + { + "name": "volume", + "type": "Union[float, int]", + "description": "The trading volume.", + "default": "None", + "optional": true + }, + { + "name": "vwap", + "type": "float", + "description": "Volume Weighted Average Price over the period.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "unadjusted_volume", + "type": "float", + "description": "Unadjusted volume of the symbol.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change in the price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "average", + "type": "float", + "description": "Average trade price of an individual equity during the interval.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price of the symbol from the previous day.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Percent change in the price of the symbol from the previous day.", + "default": "None", + "optional": true + }, + { + "name": "adj_open", + "type": "float", + "description": "The adjusted open price.", + "default": "None", + "optional": true + }, + { + "name": "adj_high", + "type": "float", + "description": "The adjusted high price.", + "default": "None", + "optional": true + }, + { + "name": "adj_low", + "type": "float", + "description": "The adjusted low price.", + "default": "None", + "optional": true + }, + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "adj_volume", + "type": "float", + "description": "The adjusted volume.", + "default": "None", + "optional": true + }, + { + "name": "fifty_two_week_high", + "type": "float", + "description": "52 week high price for the symbol.", + "default": "None", + "optional": true + }, + { + "name": "fifty_two_week_low", + "type": "float", + "description": "52 week low price for the symbol.", + "default": "None", + "optional": true + }, + { + "name": "factor", + "type": "float", + "description": "factor by which to multiply equity prices before this date, in order to calculate historically-adjusted equity prices.", + "default": "None", + "optional": true + }, + { + "name": "split_ratio", + "type": "float", + "description": "Ratio of the equity split, if a split occurred.", + "default": "None", + "optional": true + }, + { + "name": "dividend", + "type": "float", + "description": "Dividend amount, if a dividend was paid.", + "default": "None", + "optional": true + }, + { + "name": "close_time", + "type": "datetime", + "description": "The timestamp that represents the end of the interval span.", + "default": "None", + "optional": true + }, + { + "name": "interval", + "type": "str", + "description": "The data time frequency.", + "default": "None", + "optional": true + }, + { + "name": "intra_period", + "type": "bool", + "description": "If true, the equity price represents an unfinished period (be it day, week, quarter, month, or year), meaning that the close price is the latest price available, not the official close price for the period", + "default": "None", + "optional": true + } + ], + "polygon": [ + { + "name": "transactions", + "type": "int, Gt(gt=0)", + "description": "Number of transactions for the symbol in the time period.", + "default": "None", + "optional": true + } + ], + "tiingo": [ + { + "name": "adj_open", + "type": "float", + "description": "The adjusted open price.", + "default": "None", + "optional": true + }, + { + "name": "adj_high", + "type": "float", + "description": "The adjusted high price.", + "default": "None", + "optional": true + }, + { + "name": "adj_low", + "type": "float", + "description": "The adjusted low price.", + "default": "None", + "optional": true + }, + { + "name": "adj_close", + "type": "float", + "description": "The adjusted close price.", + "default": "None", + "optional": true + }, + { + "name": "adj_volume", + "type": "float", + "description": "The adjusted volume.", + "default": "None", + "optional": true + }, + { + "name": "split_ratio", + "type": "float", + "description": "Ratio of the equity split, if a split occurred.", + "default": "None", + "optional": true + }, + { + "name": "dividend", + "type": "float", + "description": "Dividend amount, if a dividend was paid.", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "split_ratio", + "type": "float", + "description": "Ratio of the equity split, if a split occurred.", + "default": "None", + "optional": true + }, + { + "name": "dividend", + "type": "float", + "description": "Dividend amount (split-adjusted), if a dividend was paid.", + "default": "None", + "optional": true + } + ] + }, + "model": "EtfHistorical" + }, + "/etf/info": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "ETF Information Overview.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.info(symbol='SPY', provider='fmp')\n# This function accepts multiple tickers.\nobb.etf.info(symbol='SPY,IWM,QQQ,DJIA', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. (ETF) Multiple items allowed for provider(s): fmp, intrinio, yfinance.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : EtfInfo\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data. (ETF)", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the ETF.", + "default": "", + "optional": false + }, + { + "name": "description", + "type": "str", + "description": "Description of the fund.", + "default": "None", + "optional": true + }, + { + "name": "inception_date", + "type": "str", + "description": "Inception date of the ETF.", + "default": "", + "optional": false + } + ], + "fmp": [ + { + "name": "issuer", + "type": "str", + "description": "Company of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "CUSIP of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "ISIN of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "domicile", + "type": "str", + "description": "Domicile of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "asset_class", + "type": "str", + "description": "Asset class of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "aum", + "type": "float", + "description": "Assets under management.", + "default": "None", + "optional": true + }, + { + "name": "nav", + "type": "float", + "description": "Net asset value of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "nav_currency", + "type": "str", + "description": "Currency of the ETF's net asset value.", + "default": "None", + "optional": true + }, + { + "name": "expense_ratio", + "type": "float", + "description": "The expense ratio, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "holdings_count", + "type": "int", + "description": "Number of holdings.", + "default": "None", + "optional": true + }, + { + "name": "avg_volume", + "type": "float", + "description": "Average daily trading volume.", + "default": "None", + "optional": true + }, + { + "name": "website", + "type": "str", + "description": "Website of the issuer.", + "default": "None", + "optional": true + } + ], + "intrinio": [ + { + "name": "fund_listing_date", + "type": "date", + "description": "The date on which the Exchange Traded Product (ETP) or share class of the ETP is listed on a specific exchange.", + "default": "None", + "optional": true + }, + { + "name": "data_change_date", + "type": "date", + "description": "The last date on which there was a change in a classifications data field for this ETF.", + "default": "None", + "optional": true + }, + { + "name": "etn_maturity_date", + "type": "date", + "description": "If the product is an ETN, this field identifies the maturity date for the ETN.", + "default": "None", + "optional": true + }, + { + "name": "is_listed", + "type": "bool", + "description": "If true, the ETF is still listed on an exchange.", + "default": "None", + "optional": true + }, + { + "name": "close_date", + "type": "date", + "description": "The date on which the ETF was de-listed if it is no longer listed.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The exchange Market Identifier Code (MIC).", + "default": "None", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "International Securities Identification Number (ISIN).", + "default": "None", + "optional": true + }, + { + "name": "ric", + "type": "str", + "description": "Reuters Instrument Code (RIC).", + "default": "None", + "optional": true + }, + { + "name": "sedol", + "type": "str", + "description": "Stock Exchange Daily Official List (SEDOL).", + "default": "None", + "optional": true + }, + { + "name": "figi_symbol", + "type": "str", + "description": "Financial Instrument Global Identifier (FIGI) symbol.", + "default": "None", + "optional": true + }, + { + "name": "share_class_figi", + "type": "str", + "description": "Financial Instrument Global Identifier (FIGI).", + "default": "None", + "optional": true + }, + { + "name": "firstbridge_id", + "type": "str", + "description": "The FirstBridge unique identifier for the Exchange Traded Fund (ETF).", + "default": "None", + "optional": true + }, + { + "name": "firstbridge_parent_id", + "type": "str", + "description": "The FirstBridge unique identifier for the parent Exchange Traded Fund (ETF), if applicable.", + "default": "None", + "optional": true + }, + { + "name": "intrinio_id", + "type": "str", + "description": "Intrinio unique identifier for the security.", + "default": "None", + "optional": true + }, + { + "name": "intraday_nav_symbol", + "type": "str", + "description": "Intraday Net Asset Value (NAV) symbol.", + "default": "None", + "optional": true + }, + { + "name": "primary_symbol", + "type": "str", + "description": "The primary ticker field is used for Exchange Traded Products (ETPs) that have multiple listings and share classes. If an ETP has multiple listings or share classes, the same primary ticker is assigned to all the listings and share classes.", + "default": "None", + "optional": true + }, + { + "name": "etp_structure_type", + "type": "str", + "description": "Classifies Exchange Traded Products (ETPs) into very broad categories based on its legal structure.", + "default": "None", + "optional": true + }, + { + "name": "legal_structure", + "type": "str", + "description": "Legal structure of the fund.", + "default": "None", + "optional": true + }, + { + "name": "issuer", + "type": "str", + "description": "Issuer of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "etn_issuing_bank", + "type": "str", + "description": "If the product is an Exchange Traded Note (ETN), this field identifies the issuing bank.", + "default": "None", + "optional": true + }, + { + "name": "fund_family", + "type": "str", + "description": "This field identifies the fund family to which the ETF belongs, as categorized by the ETF Sponsor.", + "default": "None", + "optional": true + }, + { + "name": "investment_style", + "type": "str", + "description": "Investment style of the ETF.", + "default": "None", + "optional": true + }, + { + "name": "derivatives_based", + "type": "str", + "description": "This field is populated if the ETF holds either listed or over-the-counter derivatives in its portfolio.", + "default": "None", + "optional": true + }, + { + "name": "income_category", + "type": "str", + "description": "Identifies if an Exchange Traded Fund (ETF) falls into a category that is specifically designed to provide a high yield or income", + "default": "None", + "optional": true + }, + { + "name": "asset_class", + "type": "str", + "description": "Captures the underlying nature of the securities in the Exchanged Traded Product (ETP).", + "default": "None", + "optional": true + }, + { + "name": "other_asset_types", + "type": "str", + "description": "If 'asset_class' field is classified as 'Other Asset Types' this field captures the specific category of the underlying assets.", + "default": "None", + "optional": true + }, + { + "name": "single_category_designation", + "type": "str", + "description": "This categorization is created for those users who want every ETF to be 'forced' into a single bucket, so that the assets for all categories will always sum to the total market.", + "default": "None", + "optional": true + }, + { + "name": "beta_type", + "type": "str", + "description": "This field identifies whether an ETF provides 'Traditional' beta exposure or 'Smart' beta exposure. ETFs that are active (i.e. non-indexed), leveraged / inverse or have a proprietary quant model (i.e. that don't provide indexed exposure to a targeted factor) are classified separately.", + "default": "None", + "optional": true + }, + { + "name": "beta_details", + "type": "str", + "description": "This field provides further detail within the traditional and smart beta categories.", + "default": "None", + "optional": true + }, + { + "name": "market_cap_range", + "type": "str", + "description": "Equity ETFs are classified as falling into categories based on the description of their investment strategy in the prospectus. Examples ('Mega Cap', 'Large Cap', 'Mid Cap', etc.)", + "default": "None", + "optional": true + }, + { + "name": "market_cap_weighting_type", + "type": "str", + "description": "For ETFs that take the value 'Market Cap Weighted' in the 'index_weighting_scheme' field, this field provides detail on the market cap weighting type.", + "default": "None", + "optional": true + }, + { + "name": "index_weighting_scheme", + "type": "str", + "description": "For ETFs that track an underlying index, this field provides detail on the index weighting type.", + "default": "None", + "optional": true + }, + { + "name": "index_linked", + "type": "str", + "description": "This field identifies whether an ETF is index linked or active.", + "default": "None", + "optional": true + }, + { + "name": "index_name", + "type": "str", + "description": "This field identifies the name of the underlying index tracked by the ETF, if applicable.", + "default": "None", + "optional": true + }, + { + "name": "index_symbol", + "type": "str", + "description": "This field identifies the OpenFIGI ticker for the Index underlying the ETF.", + "default": "None", + "optional": true + }, + { + "name": "parent_index", + "type": "str", + "description": "This field identifies the name of the parent index, which represents the broader universe from which the index underlying the ETF is created, if applicable.", + "default": "None", + "optional": true + }, + { + "name": "index_family", + "type": "str", + "description": "This field identifies the index family to which the index underlying the ETF belongs. The index family is represented as categorized by the index provider.", + "default": "None", + "optional": true + }, + { + "name": "broader_index_family", + "type": "str", + "description": "This field identifies the broader index family to which the index underlying the ETF belongs. The broader index family is represented as categorized by the index provider.", + "default": "None", + "optional": true + }, + { + "name": "index_provider", + "type": "str", + "description": "This field identifies the Index provider for the index underlying the ETF, if applicable.", + "default": "None", + "optional": true + }, + { + "name": "index_provider_code", + "type": "str", + "description": "This field provides the First Bridge code for each Index provider, corresponding to the index underlying the ETF if applicable.", + "default": "None", + "optional": true + }, + { + "name": "replication_structure", + "type": "str", + "description": "The replication structure of the Exchange Traded Product (ETP).", + "default": "None", + "optional": true + }, + { + "name": "growth_value_tilt", + "type": "str", + "description": "Classifies equity ETFs as either 'Growth' or Value' based on the stated style tilt in the ETF prospectus. Equity ETFs that do not have a stated style tilt are classified as 'Core / Blend'.", + "default": "None", + "optional": true + }, + { + "name": "growth_type", + "type": "str", + "description": "For ETFs that are classified as 'Growth' in 'growth_value_tilt', this field further identifies those where the stocks in the ETF are both selected and weighted based on their growth (style factor) scores.", + "default": "None", + "optional": true + }, + { + "name": "value_type", + "type": "str", + "description": "For ETFs that are classified as 'Value' in 'growth_value_tilt', this field further identifies those where the stocks in the ETF are both selected and weighted based on their value (style factor) scores.", + "default": "None", + "optional": true + }, + { + "name": "sector", + "type": "str", + "description": "For equity ETFs that aim to provide targeted exposure to a sector or industry, this field identifies the Sector that it provides the exposure to.", + "default": "None", + "optional": true + }, + { + "name": "industry", + "type": "str", + "description": "For equity ETFs that aim to provide targeted exposure to an industry, this field identifies the Industry that it provides the exposure to.", + "default": "None", + "optional": true + }, + { + "name": "industry_group", + "type": "str", + "description": "For equity ETFs that aim to provide targeted exposure to a sub-industry, this field identifies the sub-Industry that it provides the exposure to.", + "default": "None", + "optional": true + }, + { + "name": "cross_sector_theme", + "type": "str", + "description": "For equity ETFs that aim to provide targeted exposure to a specific investment theme that cuts across GICS sectors, this field identifies the specific cross-sector theme. Examples ('Agri-business', 'Natural Resources', 'Green Investing', etc.)", + "default": "None", + "optional": true + }, + { + "name": "natural_resources_type", + "type": "str", + "description": "For ETFs that are classified as 'Natural Resources' in the 'cross_sector_theme' field, this field provides further detail on the type of Natural Resources exposure.", + "default": "None", + "optional": true + }, + { + "name": "us_or_excludes_us", + "type": "str", + "description": "Takes the value of 'Domestic' for US exposure, 'International' for non-US exposure and 'Global' for exposure that includes all regions including the US.", + "default": "None", + "optional": true + }, + { + "name": "developed_emerging", + "type": "str", + "description": "This field identifies the stage of development of the markets that the ETF provides exposure to.", + "default": "None", + "optional": true + }, + { + "name": "specialized_region", + "type": "str", + "description": "This field is populated if the ETF provides targeted exposure to a specific type of geography-based grouping that does not fall into a specific country or continent grouping. Examples ('BRIC', 'Chindia', etc.)", + "default": "None", + "optional": true + }, + { + "name": "continent", + "type": "str", + "description": "This field is populated if the ETF provides targeted exposure to a specific continent or country within that Continent.", + "default": "None", + "optional": true + }, + { + "name": "latin_america_sub_group", + "type": "str", + "description": "For ETFs that are classified as 'Latin America' in the 'continent' field, this field provides further detail on the type of regional exposure.", + "default": "None", + "optional": true + }, + { + "name": "europe_sub_group", + "type": "str", + "description": "For ETFs that are classified as 'Europe' in the 'continent' field, this field provides further detail on the type of regional exposure.", + "default": "None", + "optional": true + }, + { + "name": "asia_sub_group", + "type": "str", + "description": "For ETFs that are classified as 'Asia' in the 'continent' field, this field provides further detail on the type of regional exposure.", + "default": "None", + "optional": true + }, + { + "name": "specific_country", + "type": "str", + "description": "This field is populated if the ETF provides targeted exposure to a specific country.", + "default": "None", + "optional": true + }, + { + "name": "china_listing_location", + "type": "str", + "description": "For ETFs that are classified as 'China' in the 'country' field, this field provides further detail on the type of exposure in the underlying securities.", + "default": "None", + "optional": true + }, + { + "name": "us_state", + "type": "str", + "description": "Takes the value of a US state if the ETF provides targeted exposure to the municipal bonds or equities of companies.", + "default": "None", + "optional": true + }, + { + "name": "real_estate", + "type": "str", + "description": "For ETFs that provide targeted real estate exposure, this field is populated if the ETF provides targeted exposure to a specific segment of the real estate market.", + "default": "None", + "optional": true + }, + { + "name": "fundamental_weighting_type", + "type": "str", + "description": "For ETFs that take the value 'Fundamental Weighted' in the 'index_weighting_scheme' field, this field provides detail on the fundamental weighting methodology.", + "default": "None", + "optional": true + }, + { + "name": "dividend_weighting_type", + "type": "str", + "description": "For ETFs that take the value 'Dividend Weighted' in the 'index_weighting_scheme' field, this field provides detail on the dividend weighting methodology.", + "default": "None", + "optional": true + }, + { + "name": "bond_type", + "type": "str", + "description": "For ETFs where 'asset_class_type' is 'Bonds', this field provides detail on the type of bonds held in the ETF.", + "default": "None", + "optional": true + }, + { + "name": "government_bond_types", + "type": "str", + "description": "For bond ETFs that take the value 'Treasury & Government' in 'bond_type', this field provides detail on the exposure.", + "default": "None", + "optional": true + }, + { + "name": "municipal_bond_region", + "type": "str", + "description": "For bond ETFs that take the value 'Municipal' in 'bond_type', this field provides additional detail on the geographic exposure.", + "default": "None", + "optional": true + }, + { + "name": "municipal_vrdo", + "type": "bool", + "description": "For bond ETFs that take the value 'Municipal' in 'bond_type', this field identifies those ETFs that specifically provide exposure to Variable Rate Demand Obligations.", + "default": "None", + "optional": true + }, + { + "name": "mortgage_bond_types", + "type": "str", + "description": "For bond ETFs that take the value 'Mortgage' in 'bond_type', this field provides additional detail on the type of underlying securities.", + "default": "None", + "optional": true + }, + { + "name": "bond_tax_status", + "type": "str", + "description": "For all US bond ETFs, this field provides additional detail on the tax treatment of the underlying securities.", + "default": "None", + "optional": true + }, + { + "name": "credit_quality", + "type": "str", + "description": "For all bond ETFs, this field helps to identify if the ETF provides targeted exposure to securities of a specific credit quality range.", + "default": "None", + "optional": true + }, + { + "name": "average_maturity", + "type": "str", + "description": "For all bond ETFs, this field helps to identify if the ETF provides targeted exposure to securities of a specific maturity range.", + "default": "None", + "optional": true + }, + { + "name": "specific_maturity_year", + "type": "int", + "description": "For all bond ETFs that take the value 'Specific Maturity Year' in the 'average_maturity' field, this field specifies the calendar year.", + "default": "None", + "optional": true + }, + { + "name": "commodity_types", + "type": "str", + "description": "For ETFs where 'asset_class_type' is 'Commodities', this field provides detail on the type of commodities held in the ETF.", + "default": "None", + "optional": true + }, + { + "name": "energy_type", + "type": "str", + "description": "For ETFs where 'commodity_type' is 'Energy', this field provides detail on the type of energy exposure provided by the ETF.", + "default": "None", + "optional": true + }, + { + "name": "agricultural_type", + "type": "str", + "description": "For ETFs where 'commodity_type' is 'Agricultural', this field provides detail on the type of agricultural exposure provided by the ETF.", + "default": "None", + "optional": true + }, + { + "name": "livestock_type", + "type": "str", + "description": "For ETFs where 'commodity_type' is 'Livestock', this field provides detail on the type of livestock exposure provided by the ETF.", + "default": "None", + "optional": true + }, + { + "name": "metal_type", + "type": "str", + "description": "For ETFs where 'commodity_type' is 'Gold & Metals', this field provides detail on the type of exposure provided by the ETF.", + "default": "None", + "optional": true + }, + { + "name": "inverse_leveraged", + "type": "str", + "description": "This field is populated if the ETF provides inverse or leveraged exposure.", + "default": "None", + "optional": true + }, + { + "name": "target_date_multi_asset_type", + "type": "str", + "description": "For ETFs where 'asset_class_type' is 'Target Date / MultiAsset', this field provides detail on the type of commodities held in the ETF.", + "default": "None", + "optional": true + }, + { + "name": "currency_pair", + "type": "str", + "description": "This field is populated if the ETF's strategy involves providing exposure to the movements of a currency or involves hedging currency exposure.", + "default": "None", + "optional": true + }, + { + "name": "social_environmental_type", + "type": "str", + "description": "This field is populated if the ETF's strategy involves providing exposure to a specific social or environmental theme.", + "default": "None", + "optional": true + }, + { + "name": "clean_energy_type", + "type": "str", + "description": "This field is populated if the ETF has a value of 'Clean Energy' in the 'social_environmental_type' field.", + "default": "None", + "optional": true + }, + { + "name": "dividend_type", + "type": "str", + "description": "This field is populated if the ETF has an intended investment objective of holding dividend-oriented stocks as stated in the prospectus.", + "default": "None", + "optional": true + }, + { + "name": "regular_dividend_payor_type", + "type": "str", + "description": "This field is populated if the ETF has a value of'Dividend - Regular Payors' in the 'dividend_type' field.", + "default": "None", + "optional": true + }, + { + "name": "quant_strategies_type", + "type": "str", + "description": "This field is populated if the ETF has either an index-linked or active strategy that is based on a proprietary quantitative strategy.", + "default": "None", + "optional": true + }, + { + "name": "other_quant_models", + "type": "str", + "description": "For ETFs where 'quant_strategies_type' is 'Other Quant Model', this field provides the name of the specific proprietary quant model used as the underlying strategy for the ETF.", + "default": "None", + "optional": true + }, + { + "name": "hedge_fund_type", + "type": "str", + "description": "For ETFs where 'other_asset_types' is 'Hedge Fund Replication', this field provides detail on the type of hedge fund replication strategy.", + "default": "None", + "optional": true + }, + { + "name": "excludes_financials", + "type": "bool", + "description": "For equity ETFs, identifies those ETFs where the underlying fund holdings will not hold financials stocks, based on the funds intended objective.", + "default": "None", + "optional": true + }, + { + "name": "excludes_technology", + "type": "bool", + "description": "For equity ETFs, identifies those ETFs where the underlying fund holdings will not hold technology stocks, based on the funds intended objective.", + "default": "None", + "optional": true + }, + { + "name": "holds_only_nyse_stocks", + "type": "bool", + "description": "If true, the ETF is an equity ETF and holds only stocks listed on NYSE.", + "default": "None", + "optional": true + }, + { + "name": "holds_only_nasdaq_stocks", + "type": "bool", + "description": "If true, the ETF is an equity ETF and holds only stocks listed on Nasdaq.", + "default": "None", + "optional": true + }, + { + "name": "holds_mlp", + "type": "bool", + "description": "If true, the ETF's investment objective explicitly specifies that it holds MLPs as an intended part of its investment strategy.", + "default": "None", + "optional": true + }, + { + "name": "holds_preferred_stock", + "type": "bool", + "description": "If true, the ETF's investment objective explicitly specifies that it holds preferred stock as an intended part of its investment strategy.", + "default": "None", + "optional": true + }, + { + "name": "holds_closed_end_funds", + "type": "bool", + "description": "If true, the ETF's investment objective explicitly specifies that it holds closed end funds as an intended part of its investment strategy.", + "default": "None", + "optional": true + }, + { + "name": "holds_adr", + "type": "bool", + "description": "If true, he ETF's investment objective explicitly specifies that it holds American Depositary Receipts (ADRs) as an intended part of its investment strategy.", + "default": "None", + "optional": true + }, + { + "name": "laddered", + "type": "bool", + "description": "For bond ETFs, this field identifies those ETFs that specifically hold bonds in a laddered structure, where the bonds are scheduled to mature in an annual, sequential structure.", + "default": "None", + "optional": true + }, + { + "name": "zero_coupon", + "type": "bool", + "description": "For bond ETFs, this field identifies those ETFs that specifically hold zero coupon Treasury Bills.", + "default": "None", + "optional": true + }, + { + "name": "floating_rate", + "type": "bool", + "description": "For bond ETFs, this field identifies those ETFs that specifically hold floating rate bonds.", + "default": "None", + "optional": true + }, + { + "name": "build_america_bonds", + "type": "bool", + "description": "For municipal bond ETFs, this field identifies those ETFs that specifically hold Build America Bonds.", + "default": "None", + "optional": true + }, + { + "name": "dynamic_futures_roll", + "type": "bool", + "description": "If the product holds futures contracts, this field identifies those products where the roll strategy is dynamic (rather than entirely rules based), so as to minimize roll costs.", + "default": "None", + "optional": true + }, + { + "name": "currency_hedged", + "type": "bool", + "description": "This field is populated if the ETF's strategy involves hedging currency exposure.", + "default": "None", + "optional": true + }, + { + "name": "includes_short_exposure", + "type": "bool", + "description": "This field is populated if the ETF has short exposure in any of its holdings e.g. in a long/short or inverse ETF.", + "default": "None", + "optional": true + }, + { + "name": "ucits", + "type": "bool", + "description": "If true, the Exchange Traded Product (ETP) is Undertakings for the Collective Investment in Transferable Securities (UCITS) compliant", + "default": "None", + "optional": true + }, + { + "name": "registered_countries", + "type": "str", + "description": "The list of countries where the ETF is legally registered for sale. This may differ from where the ETF is domiciled or traded, particularly in Europe.", + "default": "None", + "optional": true + }, + { + "name": "issuer_country", + "type": "str", + "description": "2 letter ISO country code for the country where the issuer is located.", + "default": "None", + "optional": true + }, + { + "name": "domicile", + "type": "str", + "description": "2 letter ISO country code for the country where the ETP is domiciled.", + "default": "None", + "optional": true + }, + { + "name": "listing_country", + "type": "str", + "description": "2 letter ISO country code for the country of the primary listing.", + "default": "None", + "optional": true + }, + { + "name": "listing_region", + "type": "str", + "description": "Geographic region in the country of the primary listing falls.", + "default": "None", + "optional": true + }, + { + "name": "bond_currency_denomination", + "type": "str", + "description": "For all bond ETFs, this field provides additional detail on the currency denomination of the underlying securities.", + "default": "None", + "optional": true + }, + { + "name": "base_currency", + "type": "str", + "description": "Base currency in which NAV is reported.", + "default": "None", + "optional": true + }, + { + "name": "listing_currency", + "type": "str", + "description": "Listing currency of the Exchange Traded Product (ETP) in which it is traded. Reported using the 3-digit ISO currency code.", + "default": "None", + "optional": true + }, + { + "name": "number_of_holdings", + "type": "int", + "description": "The number of holdings in the ETF.", + "default": "None", + "optional": true + }, + { + "name": "month_end_assets", + "type": "float", + "description": "Net assets in millions of dollars as of the most recent month end.", + "default": "None", + "optional": true + }, + { + "name": "net_expense_ratio", + "type": "float", + "description": "Gross expense net of Fee Waivers, as a percentage of net assets as published by the ETF issuer.", + "default": "None", + "optional": true + }, + { + "name": "etf_portfolio_turnover", + "type": "float", + "description": "The percentage of positions turned over in the last 12 months.", + "default": "None", + "optional": true + } + ], + "yfinance": [ + { + "name": "fund_type", + "type": "str", + "description": "The legal type of fund.", + "default": "None", + "optional": true + }, + { + "name": "fund_family", + "type": "str", + "description": "The fund family.", + "default": "None", + "optional": true + }, + { + "name": "category", + "type": "str", + "description": "The fund category.", + "default": "None", + "optional": true + }, + { + "name": "exchange", + "type": "str", + "description": "The exchange the fund is listed on.", + "default": "None", + "optional": true + }, + { + "name": "exchange_timezone", + "type": "str", + "description": "The timezone of the exchange.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "The currency in which the fund is listed.", + "default": "None", + "optional": true + }, + { + "name": "nav_price", + "type": "float", + "description": "The net asset value per unit of the fund.", + "default": "None", + "optional": true + }, + { + "name": "total_assets", + "type": "int", + "description": "The total value of assets held by the fund.", + "default": "None", + "optional": true + }, + { + "name": "trailing_pe", + "type": "float", + "description": "The trailing twelve month P/E ratio of the fund's assets.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield", + "type": "float", + "description": "The dividend yield of the fund, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "dividend_rate_ttm", + "type": "float", + "description": "The trailing twelve month annual dividend rate of the fund, in currency units.", + "default": "None", + "optional": true + }, + { + "name": "dividend_yield_ttm", + "type": "float", + "description": "The trailing twelve month annual dividend yield of the fund, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "year_high", + "type": "float", + "description": "The fifty-two week high price.", + "default": "None", + "optional": true + }, + { + "name": "year_low", + "type": "float", + "description": "The fifty-two week low price.", + "default": "None", + "optional": true + }, + { + "name": "ma_50d", + "type": "float", + "description": "50-day moving average price.", + "default": "None", + "optional": true + }, + { + "name": "ma_200d", + "type": "float", + "description": "200-day moving average price.", + "default": "None", + "optional": true + }, + { + "name": "return_ytd", + "type": "float", + "description": "The year-to-date return of the fund, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "return_3y_avg", + "type": "float", + "description": "The three year average return of the fund, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "return_5y_avg", + "type": "float", + "description": "The five year average return of the fund, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "beta_3y_avg", + "type": "float", + "description": "The three year average beta of the fund.", + "default": "None", + "optional": true + }, + { + "name": "volume_avg", + "type": "float", + "description": "The average daily trading volume of the fund.", + "default": "None", + "optional": true + }, + { + "name": "volume_avg_10d", + "type": "float", + "description": "The average daily trading volume of the fund over the past ten days.", + "default": "None", + "optional": true + }, + { + "name": "bid", + "type": "float", + "description": "The current bid price.", + "default": "None", + "optional": true + }, + { + "name": "bid_size", + "type": "float", + "description": "The current bid size.", + "default": "None", + "optional": true + }, + { + "name": "ask", + "type": "float", + "description": "The current ask price.", + "default": "None", + "optional": true + }, + { + "name": "ask_size", + "type": "float", + "description": "The current ask size.", + "default": "None", + "optional": true + }, + { + "name": "open", + "type": "float", + "description": "The open price of the most recent trading session.", + "default": "None", + "optional": true + }, + { + "name": "high", + "type": "float", + "description": "The highest price of the most recent trading session.", + "default": "None", + "optional": true + }, + { + "name": "low", + "type": "float", + "description": "The lowest price of the most recent trading session.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The trading volume of the most recent trading session.", + "default": "None", + "optional": true + }, + { + "name": "prev_close", + "type": "float", + "description": "The previous closing price.", + "default": "None", + "optional": true + } + ] + }, + "model": "EtfInfo" + }, + "/etf/sectors": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "ETF Sector weighting.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.sectors(symbol='SPY', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for. (ETF)", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EtfSectors\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "sector", + "type": "str", + "description": "Sector of exposure.", + "default": "", + "optional": false + }, + { + "name": "weight", + "type": "float", + "description": "Exposure of the ETF to the sector in normalized percentage points.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "EtfSectors" + }, + "/etf/countries": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "ETF Country weighting.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.countries(symbol='VT', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. (ETF) Multiple items allowed for provider(s): fmp.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EtfCountries\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "country", + "type": "str", + "description": "The country of the exposure. Corresponding values are normalized percentage points.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "EtfCountries" + }, + "/etf/price_performance": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Price performance as a return, over different periods. This is a proxy for `equity.price.performance`.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.price_performance(symbol='QQQ', provider='fmp')\nobb.etf.price_performance(symbol='SPY,QQQ,IWM,DJIA', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : PricePerformance\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "one_day", + "type": "float", + "description": "One-day return.", + "default": "None", + "optional": true + }, + { + "name": "wtd", + "type": "float", + "description": "Week to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_week", + "type": "float", + "description": "One-week return.", + "default": "None", + "optional": true + }, + { + "name": "mtd", + "type": "float", + "description": "Month to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_month", + "type": "float", + "description": "One-month return.", + "default": "None", + "optional": true + }, + { + "name": "qtd", + "type": "float", + "description": "Quarter to date return.", + "default": "None", + "optional": true + }, + { + "name": "three_month", + "type": "float", + "description": "Three-month return.", + "default": "None", + "optional": true + }, + { + "name": "six_month", + "type": "float", + "description": "Six-month return.", + "default": "None", + "optional": true + }, + { + "name": "ytd", + "type": "float", + "description": "Year to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_year", + "type": "float", + "description": "One-year return.", + "default": "None", + "optional": true + }, + { + "name": "three_year", + "type": "float", + "description": "Three-year return.", + "default": "None", + "optional": true + }, + { + "name": "five_year", + "type": "float", + "description": "Five-year return.", + "default": "None", + "optional": true + }, + { + "name": "ten_year", + "type": "float", + "description": "Ten-year return.", + "default": "None", + "optional": true + }, + { + "name": "max", + "type": "float", + "description": "Return from the beginning of the time series.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "symbol", + "type": "str", + "description": "The ticker symbol.", + "default": "", + "optional": false + } + ] + }, + "model": "PricePerformance" + }, + "/etf/holdings": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the holdings for an individual ETF.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.holdings(symbol='XLK', provider='fmp')\n# Including a date (FMP, SEC) will return the holdings as per NPORT-P filings.\nobb.etf.holdings(symbol='XLK', date=2022-03-31, provider='fmp')\n# The same data can be returned from the SEC directly.\nobb.etf.holdings(symbol='XLK', date=2022-03-31, provider='sec')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for. (ETF)", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp', 'sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "date", + "type": "Union[Union[str, date], str]", + "description": "A specific date to get data for. Entering a date will attempt to return the NPORT-P filing for the entered date. This needs to be _exactly_ the date of the filing. Use the holdings_date command/endpoint to find available filing dates for the ETF.", + "default": "None", + "optional": true + }, + { + "name": "cik", + "type": "str", + "description": "The CIK of the filing entity. Overrides symbol.", + "default": "None", + "optional": true + } + ], + "sec": [ + { + "name": "date", + "type": "Union[Union[str, date], str]", + "description": "A specific date to get data for. The date represents the period ending. The date entered will return the closest filing.", + "default": "None", + "optional": true + }, + { + "name": "use_cache", + "type": "bool", + "description": "Whether or not to use cache for the request.", + "default": "True", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EtfHoldings\n Serializable results.\n provider : Literal['fmp', 'sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data. (ETF)", + "default": "None", + "optional": true + }, + { + "name": "name", + "type": "str", + "description": "Name of the ETF holding.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "lei", + "type": "str", + "description": "The LEI of the holding.", + "default": "None", + "optional": true + }, + { + "name": "title", + "type": "str", + "description": "The title of the holding.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "The CUSIP of the holding.", + "default": "None", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "The ISIN of the holding.", + "default": "None", + "optional": true + }, + { + "name": "balance", + "type": "int", + "description": "The balance of the holding, in shares or units.", + "default": "None", + "optional": true + }, + { + "name": "units", + "type": "Union[str, float]", + "description": "The type of units.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "The currency of the holding.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "The value of the holding, in dollars.", + "default": "None", + "optional": true + }, + { + "name": "weight", + "type": "float", + "description": "The weight of the holding, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "payoff_profile", + "type": "str", + "description": "The payoff profile of the holding.", + "default": "None", + "optional": true + }, + { + "name": "asset_category", + "type": "str", + "description": "The asset category of the holding.", + "default": "None", + "optional": true + }, + { + "name": "issuer_category", + "type": "str", + "description": "The issuer category of the holding.", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "The country of the holding.", + "default": "None", + "optional": true + }, + { + "name": "is_restricted", + "type": "str", + "description": "Whether the holding is restricted.", + "default": "None", + "optional": true + }, + { + "name": "fair_value_level", + "type": "int", + "description": "The fair value level of the holding.", + "default": "None", + "optional": true + }, + { + "name": "is_cash_collateral", + "type": "str", + "description": "Whether the holding is cash collateral.", + "default": "None", + "optional": true + }, + { + "name": "is_non_cash_collateral", + "type": "str", + "description": "Whether the holding is non-cash collateral.", + "default": "None", + "optional": true + }, + { + "name": "is_loan_by_fund", + "type": "str", + "description": "Whether the holding is loan by fund.", + "default": "None", + "optional": true + }, + { + "name": "cik", + "type": "str", + "description": "The CIK of the filing.", + "default": "None", + "optional": true + }, + { + "name": "acceptance_datetime", + "type": "str", + "description": "The acceptance datetime of the filing.", + "default": "None", + "optional": true + }, + { + "name": "updated", + "type": "Union[date, datetime]", + "description": "The date the data was updated.", + "default": "None", + "optional": true + } + ], + "sec": [ + { + "name": "lei", + "type": "str", + "description": "The LEI of the holding.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "The CUSIP of the holding.", + "default": "None", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "The ISIN of the holding.", + "default": "None", + "optional": true + }, + { + "name": "other_id", + "type": "str", + "description": "Internal identifier for the holding.", + "default": "None", + "optional": true + }, + { + "name": "balance", + "type": "float", + "description": "The balance of the holding.", + "default": "None", + "optional": true + }, + { + "name": "weight", + "type": "float", + "description": "The weight of the holding in ETF in %.", + "default": "None", + "optional": true + }, + { + "name": "value", + "type": "float", + "description": "The value of the holding in USD.", + "default": "None", + "optional": true + }, + { + "name": "payoff_profile", + "type": "str", + "description": "The payoff profile of the holding.", + "default": "None", + "optional": true + }, + { + "name": "units", + "type": "Union[str, float]", + "description": "The units of the holding.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "The currency of the holding.", + "default": "None", + "optional": true + }, + { + "name": "asset_category", + "type": "str", + "description": "The asset category of the holding.", + "default": "None", + "optional": true + }, + { + "name": "issuer_category", + "type": "str", + "description": "The issuer category of the holding.", + "default": "None", + "optional": true + }, + { + "name": "country", + "type": "str", + "description": "The country of the holding.", + "default": "None", + "optional": true + }, + { + "name": "is_restricted", + "type": "str", + "description": "Whether the holding is restricted.", + "default": "None", + "optional": true + }, + { + "name": "fair_value_level", + "type": "int", + "description": "The fair value level of the holding.", + "default": "None", + "optional": true + }, + { + "name": "is_cash_collateral", + "type": "str", + "description": "Whether the holding is cash collateral.", + "default": "None", + "optional": true + }, + { + "name": "is_non_cash_collateral", + "type": "str", + "description": "Whether the holding is non-cash collateral.", + "default": "None", + "optional": true + }, + { + "name": "is_loan_by_fund", + "type": "str", + "description": "Whether the holding is loan by fund.", + "default": "None", + "optional": true + }, + { + "name": "loan_value", + "type": "float", + "description": "The loan value of the holding.", + "default": "None", + "optional": true + }, + { + "name": "issuer_conditional", + "type": "str", + "description": "The issuer conditions of the holding.", + "default": "None", + "optional": true + }, + { + "name": "asset_conditional", + "type": "str", + "description": "The asset conditions of the holding.", + "default": "None", + "optional": true + }, + { + "name": "maturity_date", + "type": "date", + "description": "The maturity date of the debt security.", + "default": "None", + "optional": true + }, + { + "name": "coupon_kind", + "type": "str", + "description": "The type of coupon for the debt security.", + "default": "None", + "optional": true + }, + { + "name": "rate_type", + "type": "str", + "description": "The type of rate for the debt security, floating or fixed.", + "default": "None", + "optional": true + }, + { + "name": "annualized_return", + "type": "float", + "description": "The annualized return on the debt security.", + "default": "None", + "optional": true + }, + { + "name": "is_default", + "type": "str", + "description": "If the debt security is defaulted.", + "default": "None", + "optional": true + }, + { + "name": "in_arrears", + "type": "str", + "description": "If the debt security is in arrears.", + "default": "None", + "optional": true + }, + { + "name": "is_paid_kind", + "type": "str", + "description": "If the debt security payments are paid in kind.", + "default": "None", + "optional": true + }, + { + "name": "derivative_category", + "type": "str", + "description": "The derivative category of the holding.", + "default": "None", + "optional": true + }, + { + "name": "counterparty", + "type": "str", + "description": "The counterparty of the derivative.", + "default": "None", + "optional": true + }, + { + "name": "underlying_name", + "type": "str", + "description": "The name of the underlying asset associated with the derivative.", + "default": "None", + "optional": true + }, + { + "name": "option_type", + "type": "str", + "description": "The type of option.", + "default": "None", + "optional": true + }, + { + "name": "derivative_payoff", + "type": "str", + "description": "The payoff profile of the derivative.", + "default": "None", + "optional": true + }, + { + "name": "expiry_date", + "type": "date", + "description": "The expiry or termination date of the derivative.", + "default": "None", + "optional": true + }, + { + "name": "exercise_price", + "type": "float", + "description": "The exercise price of the option.", + "default": "None", + "optional": true + }, + { + "name": "exercise_currency", + "type": "str", + "description": "The currency of the option exercise price.", + "default": "None", + "optional": true + }, + { + "name": "shares_per_contract", + "type": "float", + "description": "The number of shares per contract.", + "default": "None", + "optional": true + }, + { + "name": "delta", + "type": "Union[str, float]", + "description": "The delta of the option.", + "default": "None", + "optional": true + }, + { + "name": "rate_type_rec", + "type": "str", + "description": "The type of rate for reveivable portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "receive_currency", + "type": "str", + "description": "The receive currency of the swap.", + "default": "None", + "optional": true + }, + { + "name": "upfront_receive", + "type": "float", + "description": "The upfront amount received of the swap.", + "default": "None", + "optional": true + }, + { + "name": "floating_rate_index_rec", + "type": "str", + "description": "The floating rate index for reveivable portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "floating_rate_spread_rec", + "type": "float", + "description": "The floating rate spread for reveivable portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "rate_tenor_rec", + "type": "str", + "description": "The rate tenor for reveivable portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "rate_tenor_unit_rec", + "type": "Union[int, str]", + "description": "The rate tenor unit for reveivable portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "reset_date_rec", + "type": "str", + "description": "The reset date for reveivable portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "reset_date_unit_rec", + "type": "Union[int, str]", + "description": "The reset date unit for reveivable portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "rate_type_pmnt", + "type": "str", + "description": "The type of rate for payment portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "payment_currency", + "type": "str", + "description": "The payment currency of the swap.", + "default": "None", + "optional": true + }, + { + "name": "upfront_payment", + "type": "float", + "description": "The upfront amount received of the swap.", + "default": "None", + "optional": true + }, + { + "name": "floating_rate_index_pmnt", + "type": "str", + "description": "The floating rate index for payment portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "floating_rate_spread_pmnt", + "type": "float", + "description": "The floating rate spread for payment portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "rate_tenor_pmnt", + "type": "str", + "description": "The rate tenor for payment portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "rate_tenor_unit_pmnt", + "type": "Union[int, str]", + "description": "The rate tenor unit for payment portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "reset_date_pmnt", + "type": "str", + "description": "The reset date for payment portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "reset_date_unit_pmnt", + "type": "Union[int, str]", + "description": "The reset date unit for payment portion of the swap.", + "default": "None", + "optional": true + }, + { + "name": "repo_type", + "type": "str", + "description": "The type of repo.", + "default": "None", + "optional": true + }, + { + "name": "is_cleared", + "type": "str", + "description": "If the repo is cleared.", + "default": "None", + "optional": true + }, + { + "name": "is_tri_party", + "type": "str", + "description": "If the repo is tri party.", + "default": "None", + "optional": true + }, + { + "name": "principal_amount", + "type": "float", + "description": "The principal amount of the repo.", + "default": "None", + "optional": true + }, + { + "name": "principal_currency", + "type": "str", + "description": "The currency of the principal amount.", + "default": "None", + "optional": true + }, + { + "name": "collateral_type", + "type": "str", + "description": "The collateral type of the repo.", + "default": "None", + "optional": true + }, + { + "name": "collateral_amount", + "type": "float", + "description": "The collateral amount of the repo.", + "default": "None", + "optional": true + }, + { + "name": "collateral_currency", + "type": "str", + "description": "The currency of the collateral amount.", + "default": "None", + "optional": true + }, + { + "name": "exchange_currency", + "type": "str", + "description": "The currency of the exchange rate.", + "default": "None", + "optional": true + }, + { + "name": "exchange_rate", + "type": "float", + "description": "The exchange rate.", + "default": "None", + "optional": true + }, + { + "name": "currency_sold", + "type": "str", + "description": "The currency sold in a Forward Derivative.", + "default": "None", + "optional": true + }, + { + "name": "currency_amount_sold", + "type": "float", + "description": "The amount of currency sold in a Forward Derivative.", + "default": "None", + "optional": true + }, + { + "name": "currency_bought", + "type": "str", + "description": "The currency bought in a Forward Derivative.", + "default": "None", + "optional": true + }, + { + "name": "currency_amount_bought", + "type": "float", + "description": "The amount of currency bought in a Forward Derivative.", + "default": "None", + "optional": true + }, + { + "name": "notional_amount", + "type": "float", + "description": "The notional amount of the derivative.", + "default": "None", + "optional": true + }, + { + "name": "notional_currency", + "type": "str", + "description": "The currency of the derivative's notional amount.", + "default": "None", + "optional": true + }, + { + "name": "unrealized_gain", + "type": "float", + "description": "The unrealized gain or loss on the derivative.", + "default": "None", + "optional": true + } + ] + }, + "model": "EtfHoldings" + }, + "/etf/holdings_date": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Use this function to get the holdings dates, if available.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.holdings_date(symbol='XLK', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for. (ETF)", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [ + { + "name": "cik", + "type": "str", + "description": "The CIK of the filing entity. Overrides symbol.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : EtfHoldingsDate\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + } + ], + "fmp": [] + }, + "model": "EtfHoldingsDate" + }, + "/etf/holdings_performance": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the recent price performance of each ticker held in the ETF.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.holdings_performance(symbol='XLK', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EtfHoldingsPerformance\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "one_day", + "type": "float", + "description": "One-day return.", + "default": "None", + "optional": true + }, + { + "name": "wtd", + "type": "float", + "description": "Week to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_week", + "type": "float", + "description": "One-week return.", + "default": "None", + "optional": true + }, + { + "name": "mtd", + "type": "float", + "description": "Month to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_month", + "type": "float", + "description": "One-month return.", + "default": "None", + "optional": true + }, + { + "name": "qtd", + "type": "float", + "description": "Quarter to date return.", + "default": "None", + "optional": true + }, + { + "name": "three_month", + "type": "float", + "description": "Three-month return.", + "default": "None", + "optional": true + }, + { + "name": "six_month", + "type": "float", + "description": "Six-month return.", + "default": "None", + "optional": true + }, + { + "name": "ytd", + "type": "float", + "description": "Year to date return.", + "default": "None", + "optional": true + }, + { + "name": "one_year", + "type": "float", + "description": "One-year return.", + "default": "None", + "optional": true + }, + { + "name": "three_year", + "type": "float", + "description": "Three-year return.", + "default": "None", + "optional": true + }, + { + "name": "five_year", + "type": "float", + "description": "Five-year return.", + "default": "None", + "optional": true + }, + { + "name": "ten_year", + "type": "float", + "description": "Ten-year return.", + "default": "None", + "optional": true + }, + { + "name": "max", + "type": "float", + "description": "Return from the beginning of the time series.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "symbol", + "type": "str", + "description": "The ticker symbol.", + "default": "", + "optional": false + } + ] + }, + "model": "EtfHoldingsPerformance" + }, + "/etf/equity_exposure": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Get the exposure to ETFs for a specific stock.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.etf.equity_exposure(symbol='MSFT', provider='fmp')\n# This function accepts multiple tickers.\nobb.etf.equity_exposure(symbol='MSFT,AAPL', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. (Stock) Multiple items allowed for provider(s): fmp.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : EtfEquityExposure\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "equity_symbol", + "type": "str", + "description": "The symbol of the equity requested.", + "default": "", + "optional": false + }, + { + "name": "etf_symbol", + "type": "str", + "description": "The symbol of the ETF with exposure to the requested equity.", + "default": "", + "optional": false + }, + { + "name": "shares", + "type": "int", + "description": "The number of shares held in the ETF.", + "default": "None", + "optional": true + }, + { + "name": "weight", + "type": "float", + "description": "The weight of the equity in the ETF, as a normalized percent.", + "default": "None", + "optional": true + }, + { + "name": "market_value", + "type": "Union[float, int]", + "description": "The market value of the equity position in the ETF.", + "default": "None", + "optional": true + } + ], + "fmp": [] + }, + "model": "EtfEquityExposure" + }, + "/fixedincome/rate/ameribor": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Ameribor.\n\nAmeribor (short for the American interbank offered rate) is a benchmark interest rate that reflects the true cost of\nshort-term interbank borrowing. This rate is based on transactions in overnight unsecured loans conducted on the\nAmerican Financial Exchange (AFX).", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.ameribor(provider='fred')\nobb.fixedincome.rate.ameribor(parameter=30_day_ma, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "parameter", + "type": "Literal['overnight', 'term_30', 'term_90', '1_week_term_structure', '1_month_term_structure', '3_month_term_structure', '6_month_term_structure', '1_year_term_structure', '2_year_term_structure', '30_day_ma', '90_day_ma']", + "description": "Period of AMERIBOR rate.", + "default": "overnight", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : AMERIBOR\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "AMERIBOR rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "AMERIBOR" + }, + "/fixedincome/rate/sonia": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Sterling Overnight Index Average.\n\nSONIA (Sterling Overnight Index Average) is an important interest rate benchmark. SONIA is based on actual\ntransactions and reflects the average of the interest rates that banks pay to borrow sterling overnight from other\nfinancial institutions and other institutional investors.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.sonia(provider='fred')\nobb.fixedincome.rate.sonia(parameter=total_nominal_value, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "parameter", + "type": "Literal['rate', 'index', '10th_percentile', '25th_percentile', '75th_percentile', '90th_percentile', 'total_nominal_value']", + "description": "Period of SONIA rate.", + "default": "rate", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : SONIA\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "SONIA rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "SONIA" + }, + "/fixedincome/rate/iorb": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Interest on Reserve Balances.\n\nGet Interest Rate on Reserve Balances data A bank rate is the interest rate a nation's central bank charges to its\ndomestic banks to borrow money. The rates central banks charge are set to stabilize the economy. In the\nUnited States, the Federal Reserve System's Board of Governors set the bank rate, also known as the discount rate.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.iorb(provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : IORB\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "IORB rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "IORB" + }, + "/fixedincome/rate/effr": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Fed Funds Rate.\n\nGet Effective Federal Funds Rate data. A bank rate is the interest rate a nation's central bank charges to its\ndomestic banks to borrow money. The rates central banks charge are set to stabilize the economy. In the\nUnited States, the Federal Reserve System's Board of Governors set the bank rate, also known as the discount rate.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.effr(provider='fred')\nobb.fixedincome.rate.effr(parameter=daily, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['federal_reserve', 'fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'federal_reserve' if there is no default.", + "default": "federal_reserve", + "optional": true + } + ], + "federal_reserve": [], + "fred": [ + { + "name": "parameter", + "type": "Literal['monthly', 'daily', 'weekly', 'daily_excl_weekend', 'annual', 'biweekly', 'volume']", + "description": "Period of FED rate.", + "default": "weekly", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : FEDFUNDS\n Serializable results.\n provider : Literal['federal_reserve', 'fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "FED rate.", + "default": "", + "optional": false + } + ], + "federal_reserve": [], + "fred": [] + }, + "model": "FEDFUNDS" + }, + "/fixedincome/rate/effr_forecast": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Fed Funds Rate Projections.\n\nThe projections for the federal funds rate are the value of the midpoint of the\nprojected appropriate target range for the federal funds rate or the projected\nappropriate target level for the federal funds rate at the end of the specified\ncalendar year or over the longer run.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.effr_forecast(provider='fred')\nobb.fixedincome.rate.effr_forecast(long_run=True, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "long_run", + "type": "bool", + "description": "Flag to show long run projections", + "default": "False", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : PROJECTIONS\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "range_high", + "type": "float", + "description": "High projection of rates.", + "default": "", + "optional": false + }, + { + "name": "central_tendency_high", + "type": "float", + "description": "Central tendency of high projection of rates.", + "default": "", + "optional": false + }, + { + "name": "median", + "type": "float", + "description": "Median projection of rates.", + "default": "", + "optional": false + }, + { + "name": "range_midpoint", + "type": "float", + "description": "Midpoint projection of rates.", + "default": "", + "optional": false + }, + { + "name": "central_tendency_midpoint", + "type": "float", + "description": "Central tendency of midpoint projection of rates.", + "default": "", + "optional": false + }, + { + "name": "range_low", + "type": "float", + "description": "Low projection of rates.", + "default": "", + "optional": false + }, + { + "name": "central_tendency_low", + "type": "float", + "description": "Central tendency of low projection of rates.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "PROJECTIONS" + }, + "/fixedincome/rate/estr": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Euro Short-Term Rate.\n\nThe euro short-term rate (\u20acSTR) reflects the wholesale euro unsecured overnight borrowing costs of banks located in\nthe euro area. The \u20acSTR is published on each TARGET2 business day based on transactions conducted and settled on\nthe previous TARGET2 business day (the reporting date \u201cT\u201d) with a maturity date of T+1 which are deemed to have been\nexecuted at arm\u2019s length and thus reflect market rates in an unbiased way.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.estr(provider='fred')\nobb.fixedincome.rate.estr(parameter=number_of_active_banks, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "parameter", + "type": "Literal['volume_weighted_trimmed_mean_rate', 'number_of_transactions', 'number_of_active_banks', 'total_volume', 'share_of_volume_of_the_5_largest_active_banks', 'rate_at_75th_percentile_of_volume', 'rate_at_25th_percentile_of_volume']", + "description": "Period of ESTR rate.", + "default": "volume_weighted_trimmed_mean_rate", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : ESTR\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "ESTR rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "ESTR" + }, + "/fixedincome/rate/ecb": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "European Central Bank Interest Rates.\n\nThe Governing Council of the ECB sets the key interest rates for the euro area:\n\n- The interest rate on the main refinancing operations (MRO), which provide\nthe bulk of liquidity to the banking system.\n- The rate on the deposit facility, which banks may use to make overnight deposits with the Eurosystem.\n- The rate on the marginal lending facility, which offers overnight credit to banks from the Eurosystem.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.ecb(provider='fred')\nobb.fixedincome.rate.ecb(interest_rate_type='refinancing', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "interest_rate_type", + "type": "Literal['deposit', 'lending', 'refinancing']", + "description": "The type of interest rate.", + "default": "lending", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : EuropeanCentralBankInterestRates\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "European Central Bank Interest Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "EuropeanCentralBankInterestRates" + }, + "/fixedincome/rate/dpcredit": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Discount Window Primary Credit Rate.\n\nA bank rate is the interest rate a nation's central bank charges to its domestic banks to borrow money.\nThe rates central banks charge are set to stabilize the economy.\nIn the United States, the Federal Reserve System's Board of Governors set the bank rate,\nalso known as the discount rate.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.rate.dpcredit(provider='fred')\nobb.fixedincome.rate.dpcredit(start_date='2023-02-01', end_date='2023-05-01', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "parameter", + "type": "Literal['daily_excl_weekend', 'monthly', 'weekly', 'daily', 'annual']", + "description": "FRED series ID of DWPCR data.", + "default": "daily_excl_weekend", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : DiscountWindowPrimaryCreditRate\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "Discount Window Primary Credit Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "DiscountWindowPrimaryCreditRate" + }, + "/fixedincome/spreads/tcm": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Treasury Constant Maturity.\n\nGet data for 10-Year Treasury Constant Maturity Minus Selected Treasury Constant Maturity.\nConstant maturity is the theoretical value of a U.S. Treasury that is based on recent values of auctioned U.S.\nTreasuries. The value is obtained by the U.S. Treasury on a daily basis through interpolation of the Treasury\nyield curve which, in turn, is based on closing bid-yields of actively-traded Treasury securities.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.spreads.tcm(provider='fred')\nobb.fixedincome.spreads.tcm(maturity='2y', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "maturity", + "type": "Literal['3m', '2y']", + "description": "The maturity", + "default": "3m", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : TreasuryConstantMaturity\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "TreasuryConstantMaturity Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "TreasuryConstantMaturity" + }, + "/fixedincome/spreads/tcm_effr": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Select Treasury Constant Maturity.\n\nGet data for Selected Treasury Constant Maturity Minus Federal Funds Rate\nConstant maturity is the theoretical value of a U.S. Treasury that is based on recent values of auctioned U.S.\nTreasuries. The value is obtained by the U.S. Treasury on a daily basis through interpolation of the Treasury\nyield curve which, in turn, is based on closing bid-yields of actively-traded Treasury securities.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.spreads.tcm_effr(provider='fred')\nobb.fixedincome.spreads.tcm_effr(maturity='10y', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "maturity", + "type": "Literal['10y', '5y', '1y', '6m', '3m']", + "description": "The maturity", + "default": "10y", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : SelectedTreasuryConstantMaturity\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "Selected Treasury Constant Maturity Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "SelectedTreasuryConstantMaturity" + }, + "/fixedincome/spreads/treasury_effr": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Select Treasury Bill.\n\nGet Selected Treasury Bill Minus Federal Funds Rate.\nConstant maturity is the theoretical value of a U.S. Treasury that is based on recent values of\nauctioned U.S. Treasuries.\nThe value is obtained by the U.S. Treasury on a daily basis through interpolation of the Treasury\nyield curve which, in turn, is based on closing bid-yields of actively-traded Treasury securities.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.spreads.treasury_effr(provider='fred')\nobb.fixedincome.spreads.treasury_effr(maturity='6m', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "maturity", + "type": "Literal['3m', '6m']", + "description": "The maturity", + "default": "3m", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : SelectedTreasuryBill\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "SelectedTreasuryBill Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "SelectedTreasuryBill" + }, + "/fixedincome/government/us_yield_curve": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "US Yield Curve. Get United States yield curve.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.government.us_yield_curve(provider='fred')\nobb.fixedincome.government.us_yield_curve(inflation_adjusted=True, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for. Defaults to the most recent FRED entry.", + "default": "None", + "optional": true + }, + { + "name": "inflation_adjusted", + "type": "bool", + "description": "Get inflation adjusted rates.", + "default": "False", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : USYieldCurve\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "maturity", + "type": "float", + "description": "Maturity of the treasury rate in years.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "Associated rate given in decimal form (0.05 is 5%)", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "USYieldCurve" + }, + "/fixedincome/government/treasury_rates": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Government Treasury Rates.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.government.treasury_rates(provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['federal_reserve', 'fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'federal_reserve' if there is no default.", + "default": "federal_reserve", + "optional": true + } + ], + "federal_reserve": [], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : TreasuryRates\n Serializable results.\n provider : Literal['federal_reserve', 'fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "week_4", + "type": "float", + "description": "4 week Treasury bills rate (secondary market).", + "default": "None", + "optional": true + }, + { + "name": "month_1", + "type": "float", + "description": "1 month Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "month_2", + "type": "float", + "description": "2 month Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "month_3", + "type": "float", + "description": "3 month Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "month_6", + "type": "float", + "description": "6 month Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_1", + "type": "float", + "description": "1 year Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_2", + "type": "float", + "description": "2 year Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_3", + "type": "float", + "description": "3 year Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_5", + "type": "float", + "description": "5 year Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_7", + "type": "float", + "description": "7 year Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_10", + "type": "float", + "description": "10 year Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_20", + "type": "float", + "description": "20 year Treasury rate.", + "default": "None", + "optional": true + }, + { + "name": "year_30", + "type": "float", + "description": "30 year Treasury rate.", + "default": "None", + "optional": true + } + ], + "federal_reserve": [], + "fmp": [] + }, + "model": "TreasuryRates" + }, + "/fixedincome/corporate/ice_bofa": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "ICE BofA US Corporate Bond Indices.\n\nThe ICE BofA US Corporate Index tracks the performance of US dollar denominated investment grade corporate debt\npublicly issued in the US domestic market. Qualifying securities must have an investment grade rating (based on an\naverage of Moody\u2019s, S&P and Fitch), at least 18 months to final maturity at the time of issuance, at least one year\nremaining term to final maturity as of the rebalance date, a fixed coupon schedule and a minimum amount\noutstanding of $250 million. The ICE BofA US Corporate Index is a component of the US Corporate Master Index.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.corporate.ice_bofa(provider='fred')\nobb.fixedincome.corporate.ice_bofa(index_type='yield_to_worst', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "index_type", + "type": "Literal['yield', 'yield_to_worst', 'total_return', 'spread']", + "description": "The type of series.", + "default": "yield", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "category", + "type": "Literal['all', 'duration', 'eur', 'usd']", + "description": "The type of category.", + "default": "all", + "optional": true + }, + { + "name": "area", + "type": "Literal['asia', 'emea', 'eu', 'ex_g10', 'latin_america', 'us']", + "description": "The type of area.", + "default": "us", + "optional": true + }, + { + "name": "grade", + "type": "Literal['a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'ccc', 'crossover', 'high_grade', 'high_yield', 'non_financial', 'non_sovereign', 'private_sector', 'public_sector']", + "description": "The type of grade.", + "default": "non_sovereign", + "optional": true + }, + { + "name": "options", + "type": "bool", + "description": "Whether to include options in the results.", + "default": "False", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : ICEBofA\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "ICE BofA US Corporate Bond Indices Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "ICEBofA" + }, + "/fixedincome/corporate/moody": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Moody Corporate Bond Index.\n\nMoody's Aaa and Baa are investment bonds that acts as an index of\nthe performance of all bonds given an Aaa or Baa rating by Moody's Investors Service respectively.\nThese corporate bonds often are used in macroeconomics as an alternative to the federal ten-year\nTreasury Bill as an indicator of the interest rate.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.corporate.moody(provider='fred')\nobb.fixedincome.corporate.moody(index_type='baa', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "index_type", + "type": "Literal['aaa', 'baa']", + "description": "The type of series.", + "default": "aaa", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "spread", + "type": "Literal['treasury', 'fed_funds']", + "description": "The type of spread.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : MoodyCorporateBondIndex\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "Moody Corporate Bond Index Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "MoodyCorporateBondIndex" + }, + "/fixedincome/corporate/hqm": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "High Quality Market Corporate Bond.\n\nThe HQM yield curve represents the high quality corporate bond market, i.e.,\ncorporate bonds rated AAA, AA, or A. The HQM curve contains two regression terms.\nThese terms are adjustment factors that blend AAA, AA, and A bonds into a single HQM yield curve\nthat is the market-weighted average (MWA) quality of high quality bonds.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.corporate.hqm(provider='fred')\nobb.fixedincome.corporate.hqm(yield_curve='par', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for.", + "default": "None", + "optional": true + }, + { + "name": "yield_curve", + "type": "Literal['spot', 'par']", + "description": "The yield curve type.", + "default": "spot", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : HighQualityMarketCorporateBond\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "HighQualityMarketCorporateBond Rate.", + "default": "", + "optional": false + }, + { + "name": "maturity", + "type": "str", + "description": "Maturity.", + "default": "", + "optional": false + }, + { + "name": "yield_curve", + "type": "Literal['spot', 'par']", + "description": "The yield curve type.", + "default": "", + "optional": false + } + ], + "fred": [ + { + "name": "series_id", + "type": "str", + "description": "FRED series id.", + "default": "", + "optional": false + } + ] + }, + "model": "HighQualityMarketCorporateBond" + }, + "/fixedincome/corporate/spot_rates": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Spot Rates.\n\nThe spot rates for any maturity is the yield on a bond that provides a single payment at that maturity.\nThis is a zero coupon bond.\nBecause each spot rate pertains to a single cashflow, it is the relevant interest rate\nconcept for discounting a pension liability at the same maturity.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.corporate.spot_rates(provider='fred')\nobb.fixedincome.corporate.spot_rates(maturity='10,20,30,50', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "maturity", + "type": "Union[Union[float, str], List[Union[float, str]]]", + "description": "Maturities in years. Multiple items allowed for provider(s): fred.", + "default": "10.0", + "optional": true + }, + { + "name": "category", + "type": "Union[str, List[str]]", + "description": "Rate category. Options: spot_rate, par_yield. Multiple items allowed for provider(s): fred.", + "default": "spot_rate", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : SpotRate\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "Spot Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "SpotRate" + }, + "/fixedincome/corporate/commercial_paper": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Commercial Paper.\n\nCommercial paper (CP) consists of short-term, promissory notes issued primarily by corporations.\nMaturities range up to 270 days but average about 30 days.\nMany companies use CP to raise cash needed for current transactions,\nand many find it to be a lower-cost alternative to bank loans.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.corporate.commercial_paper(provider='fred')\nobb.fixedincome.corporate.commercial_paper(maturity='15d', provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "maturity", + "type": "Literal['overnight', '7d', '15d', '30d', '60d', '90d']", + "description": "The maturity.", + "default": "30d", + "optional": true + }, + { + "name": "category", + "type": "Literal['asset_backed', 'financial', 'nonfinancial']", + "description": "The category.", + "default": "financial", + "optional": true + }, + { + "name": "grade", + "type": "Literal['aa', 'a2_p2']", + "description": "The grade.", + "default": "aa", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [] + }, + "returns": { + "OBBject": "OBBject\n results : CommercialPaper\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "Commercial Paper Rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "CommercialPaper" + }, + "/fixedincome/sofr": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Secured Overnight Financing Rate.\n\nThe Secured Overnight Financing Rate (SOFR) is a broad measure of the cost of\nborrowing cash overnight collateralizing by Treasury securities.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.fixedincome.sofr(provider='fred')\nobb.fixedincome.sofr(period=overnight, provider='fred')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fred']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fred' if there is no default.", + "default": "fred", + "optional": true + } + ], + "fred": [ + { + "name": "period", + "type": "Literal['overnight', '30_day', '90_day', '180_day', 'index']", + "description": "Period of SOFR rate.", + "default": "overnight", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : SOFR\n Serializable results.\n provider : Literal['fred']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "date", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "rate", + "type": "float", + "description": "SOFR rate.", + "default": "", + "optional": false + } + ], + "fred": [] + }, + "model": "SOFR" + }, + "/index/price/historical": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Historical Index Levels.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.index.price.historical(symbol='^GSPC', provider='fmp')\n# Not all providers have the same symbols.\nobb.index.price.historical(symbol='SPX', provider='intrinio')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp, intrinio, polygon, yfinance.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "interval", + "type": "str", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "10000", + "optional": true + } + ], + "polygon": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date.", + "default": "asc", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "49999", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : IndexHistorical\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "Union[date, datetime]", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float, Strict(strict=True)", + "description": "The open price.", + "default": "None", + "optional": true + }, + { + "name": "high", + "type": "float, Strict(strict=True)", + "description": "The high price.", + "default": "None", + "optional": true + }, + { + "name": "low", + "type": "float, Strict(strict=True)", + "description": "The low price.", + "default": "None", + "optional": true + }, + { + "name": "close", + "type": "float, Strict(strict=True)", + "description": "The close price.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The trading volume.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "vwap", + "type": "float", + "description": "Volume Weighted Average Price over the period.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change in the price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + } + ], + "intrinio": [], + "polygon": [ + { + "name": "transactions", + "type": "int, Gt(gt=0)", + "description": "Number of transactions for the symbol in the time period.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "IndexHistorical" + }, + "/index/market": { + "deprecated": { + "flag": true, + "message": "This endpoint is deprecated; use `/index/price/historical` instead. Deprecated in OpenBB Platform V4.1 to be removed in V4.3." + }, + "description": "Historical Market Indices.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.index.market(symbol='^IBEX', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. Multiple items allowed for provider(s): fmp, intrinio, polygon, yfinance.", + "default": "", + "optional": false + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "interval", + "type": "str", + "description": "Time interval of the data to return.", + "default": "1d", + "optional": true + }, + { + "name": "provider", + "type": "Literal['fmp', 'intrinio', 'polygon', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "intrinio": [ + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "10000", + "optional": true + } + ], + "polygon": [ + { + "name": "sort", + "type": "Literal['asc', 'desc']", + "description": "Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date.", + "default": "asc", + "optional": true + }, + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return.", + "default": "49999", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : MarketIndices\n Serializable results.\n provider : Literal['fmp', 'intrinio', 'polygon', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "Union[date, datetime]", + "description": "The date of the data.", + "default": "", + "optional": false + }, + { + "name": "open", + "type": "float, Strict(strict=True)", + "description": "The open price.", + "default": "None", + "optional": true + }, + { + "name": "high", + "type": "float, Strict(strict=True)", + "description": "The high price.", + "default": "None", + "optional": true + }, + { + "name": "low", + "type": "float, Strict(strict=True)", + "description": "The low price.", + "default": "None", + "optional": true + }, + { + "name": "close", + "type": "float, Strict(strict=True)", + "description": "The close price.", + "default": "None", + "optional": true + }, + { + "name": "volume", + "type": "int", + "description": "The trading volume.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "vwap", + "type": "float", + "description": "Volume Weighted Average Price over the period.", + "default": "None", + "optional": true + }, + { + "name": "change", + "type": "float", + "description": "Change in the price from the previous close.", + "default": "None", + "optional": true + }, + { + "name": "change_percent", + "type": "float", + "description": "Change in the price from the previous close, as a normalized percent.", + "default": "None", + "optional": true + } + ], + "intrinio": [], + "polygon": [ + { + "name": "transactions", + "type": "int, Gt(gt=0)", + "description": "Number of transactions for the symbol in the time period.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "model": "MarketIndices" + }, + "/index/constituents": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Index Constituents.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.index.constituents(symbol='dowjones', provider='fmp')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['fmp']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [] + }, + "returns": { + "OBBject": "OBBject\n results : IndexConstituents\n Serializable results.\n provider : Literal['fmp']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + }, + { + "name": "name", + "type": "str", + "description": "Name of the constituent company in the index.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "sector", + "type": "str", + "description": "Sector the constituent company in the index belongs to.", + "default": "", + "optional": false + }, + { + "name": "sub_sector", + "type": "str", + "description": "Sub-sector the constituent company in the index belongs to.", + "default": "None", + "optional": true + }, + { + "name": "headquarter", + "type": "str", + "description": "Location of the headquarter of the constituent company in the index.", + "default": "None", + "optional": true + }, + { + "name": "date_first_added", + "type": "Union[str, date]", + "description": "Date the constituent company was added to the index.", + "default": "None", + "optional": true + }, + { + "name": "cik", + "type": "int", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "None", + "optional": true + }, + { + "name": "founded", + "type": "Union[str, date]", + "description": "Founding year of the constituent company in the index.", + "default": "None", + "optional": true + } + ] + }, + "model": "IndexConstituents" + }, + "/index/available": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "All indices available from a given provider.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.index.available(provider='fmp')\nobb.index.available(provider='yfinance')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "provider", + "type": "Literal['fmp', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default.", + "default": "fmp", + "optional": true + } + ], + "fmp": [], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : AvailableIndices\n Serializable results.\n provider : Literal['fmp', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "name", + "type": "str", + "description": "Name of the index.", + "default": "None", + "optional": true + }, + { + "name": "currency", + "type": "str", + "description": "Currency the index is traded in.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "stock_exchange", + "type": "str", + "description": "Stock exchange where the index is listed.", + "default": "", + "optional": false + }, + { + "name": "exchange_short_name", + "type": "str", + "description": "Short name of the stock exchange where the index is listed.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "code", + "type": "str", + "description": "ID code for keying the index in the OpenBB Terminal.", + "default": "", + "optional": false + }, + { + "name": "symbol", + "type": "str", + "description": "Symbol for the index.", + "default": "", + "optional": false + } + ] + }, + "model": "AvailableIndices" + }, + "/news/world": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "World News. Global news data.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.news.world(provider='fmp')\nobb.news.world(limit=100, provider='intrinio')\n# Get news on the specified dates.\nobb.news.world(start_date='2024-02-01', end_date='2024-02-07', provider='intrinio')\n# Display the headlines of the news.\nobb.news.world(display=headline, provider='benzinga')\n# Get news by topics.\nobb.news.world(topics=finance, provider='benzinga')\n# Get news by source using 'tingo' as provider.\nobb.news.world(provider='tiingo', source=bloomberg)\n```\n\n", + "parameters": { + "standard": [ + { + "name": "limit", + "type": "int", + "description": "The number of data entries to return. The number of articles to return.", + "default": "2500", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "provider", + "type": "Literal['benzinga', 'fmp', 'intrinio', 'tiingo']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'benzinga' if there is no default.", + "default": "benzinga", + "optional": true + } + ], + "benzinga": [ + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for.", + "default": "None", + "optional": true + }, + { + "name": "display", + "type": "Literal['headline', 'abstract', 'full']", + "description": "Specify headline only (headline), headline + teaser (abstract), or headline + full body (full).", + "default": "full", + "optional": true + }, + { + "name": "updated_since", + "type": "int", + "description": "Number of seconds since the news was updated.", + "default": "None", + "optional": true + }, + { + "name": "published_since", + "type": "int", + "description": "Number of seconds since the news was published.", + "default": "None", + "optional": true + }, + { + "name": "sort", + "type": "Literal['id', 'created', 'updated']", + "description": "Key to sort the news by.", + "default": "created", + "optional": true + }, + { + "name": "order", + "type": "Literal['asc', 'desc']", + "description": "Order to sort the news by.", + "default": "desc", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "The ISIN of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "The CUSIP of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "channels", + "type": "str", + "description": "Channels of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "topics", + "type": "str", + "description": "Topics of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "authors", + "type": "str", + "description": "Authors of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "content_types", + "type": "str", + "description": "Content types of the news to retrieve.", + "default": "None", + "optional": true + } + ], + "fmp": [], + "intrinio": [], + "tiingo": [ + { + "name": "offset", + "type": "int", + "description": "Page offset, used in conjunction with limit.", + "default": "0", + "optional": true + }, + { + "name": "source", + "type": "str", + "description": "A comma-separated list of the domains requested.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : WorldNews\n Serializable results.\n provider : Literal['benzinga', 'fmp', 'intrinio', 'tiingo']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "datetime", + "description": "The date of the data. The published date of the article.", + "default": "", + "optional": false + }, + { + "name": "title", + "type": "str", + "description": "Title of the article.", + "default": "", + "optional": false + }, + { + "name": "images", + "type": "List[Dict[str, str]]", + "description": "Images associated with the article.", + "default": "None", + "optional": true + }, + { + "name": "text", + "type": "str", + "description": "Text/body of the article.", + "default": "None", + "optional": true + }, + { + "name": "url", + "type": "str", + "description": "URL to the article.", + "default": "None", + "optional": true + } + ], + "benzinga": [ + { + "name": "id", + "type": "str", + "description": "Article ID.", + "default": "", + "optional": false + }, + { + "name": "author", + "type": "str", + "description": "Author of the news.", + "default": "None", + "optional": true + }, + { + "name": "teaser", + "type": "str", + "description": "Teaser of the news.", + "default": "None", + "optional": true + }, + { + "name": "channels", + "type": "str", + "description": "Channels associated with the news.", + "default": "None", + "optional": true + }, + { + "name": "stocks", + "type": "str", + "description": "Stocks associated with the news.", + "default": "None", + "optional": true + }, + { + "name": "tags", + "type": "str", + "description": "Tags associated with the news.", + "default": "None", + "optional": true + }, + { + "name": "updated", + "type": "datetime", + "description": "Updated date of the news.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "site", + "type": "str", + "description": "News source.", + "default": "", + "optional": false + } + ], + "intrinio": [ + { + "name": "id", + "type": "str", + "description": "Article ID.", + "default": "", + "optional": false + }, + { + "name": "company", + "type": "Dict[str, Any]", + "description": "Company details related to the news article.", + "default": "", + "optional": false + } + ], + "tiingo": [ + { + "name": "symbols", + "type": "str", + "description": "Ticker tagged in the fetched news.", + "default": "None", + "optional": true + }, + { + "name": "article_id", + "type": "int", + "description": "Unique ID of the news article.", + "default": "", + "optional": false + }, + { + "name": "site", + "type": "str", + "description": "News source.", + "default": "", + "optional": false + }, + { + "name": "tags", + "type": "str", + "description": "Tags associated with the news article.", + "default": "None", + "optional": true + }, + { + "name": "crawl_date", + "type": "datetime", + "description": "Date the news article was crawled.", + "default": "", + "optional": false + } + ] + }, + "model": "WorldNews" + }, + "/news/company": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Company News. Get news for one or more companies.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.news.company(provider='benzinga')\nobb.news.company(limit=100, provider='benzinga')\n# Get news on the specified dates.\nobb.news.company(symbol='AAPL', start_date='2024-02-01', end_date='2024-02-07', provider='intrinio')\n# Display the headlines of the news.\nobb.news.company(symbol='AAPL', display=headline, provider='benzinga')\n# Get news for multiple symbols.\nobb.news.company(symbol='aapl,tsla', provider='fmp')\n# Get news company's ISIN.\nobb.news.company(symbol='NVDA', isin=US0378331005, provider='benzinga')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "Union[str, List[str]]", + "description": "Symbol to get data for. This endpoint will accept multiple symbols separated by commas. Multiple items allowed for provider(s): benzinga, fmp, intrinio, polygon, tiingo, yfinance.", + "default": "None", + "optional": true + }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": "None", + "optional": true + }, + { + "name": "limit", + "type": "int, Ge(ge=0)", + "description": "The number of data entries to return.", + "default": "2500", + "optional": true + }, + { + "name": "provider", + "type": "Literal['benzinga', 'fmp', 'intrinio', 'polygon', 'tiingo', 'yfinance']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'benzinga' if there is no default.", + "default": "benzinga", + "optional": true + } + ], + "benzinga": [ + { + "name": "date", + "type": "Union[date, str]", + "description": "A specific date to get data for.", + "default": "None", + "optional": true + }, + { + "name": "display", + "type": "Literal['headline', 'abstract', 'full']", + "description": "Specify headline only (headline), headline + teaser (abstract), or headline + full body (full).", + "default": "full", + "optional": true + }, + { + "name": "updated_since", + "type": "int", + "description": "Number of seconds since the news was updated.", + "default": "None", + "optional": true + }, + { + "name": "published_since", + "type": "int", + "description": "Number of seconds since the news was published.", + "default": "None", + "optional": true + }, + { + "name": "sort", + "type": "Literal['id', 'created', 'updated']", + "description": "Key to sort the news by.", + "default": "created", + "optional": true + }, + { + "name": "order", + "type": "Literal['asc', 'desc']", + "description": "Order to sort the news by.", + "default": "desc", + "optional": true + }, + { + "name": "isin", + "type": "str", + "description": "The company's ISIN.", + "default": "None", + "optional": true + }, + { + "name": "cusip", + "type": "str", + "description": "The company's CUSIP.", + "default": "None", + "optional": true + }, + { + "name": "channels", + "type": "str", + "description": "Channels of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "topics", + "type": "str", + "description": "Topics of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "authors", + "type": "str", + "description": "Authors of the news to retrieve.", + "default": "None", + "optional": true + }, + { + "name": "content_types", + "type": "str", + "description": "Content types of the news to retrieve.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "page", + "type": "int", + "description": "Page number of the results. Use in combination with limit.", + "default": "0", + "optional": true + } + ], + "intrinio": [], + "polygon": [ + { + "name": "order", + "type": "Literal['asc', 'desc']", + "description": "Sort order of the articles.", + "default": "desc", + "optional": true + } + ], + "tiingo": [ + { + "name": "offset", + "type": "int", + "description": "Page offset, used in conjunction with limit.", + "default": "0", + "optional": true + }, + { + "name": "source", + "type": "str", + "description": "A comma-separated list of the domains requested.", + "default": "None", + "optional": true + } + ], + "yfinance": [] + }, + "returns": { + "OBBject": "OBBject\n results : CompanyNews\n Serializable results.\n provider : Literal['benzinga', 'fmp', 'intrinio', 'polygon', 'tiingo', 'yfinance']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "date", + "type": "datetime", + "description": "The date of the data. Here it is the published date of the article.", + "default": "", + "optional": false + }, + { + "name": "title", + "type": "str", + "description": "Title of the article.", + "default": "", + "optional": false + }, + { + "name": "text", + "type": "str", + "description": "Text/body of the article.", + "default": "None", + "optional": true + }, + { + "name": "images", + "type": "List[Dict[str, str]]", + "description": "Images associated with the article.", + "default": "None", + "optional": true + }, + { + "name": "url", + "type": "str", + "description": "URL to the article.", + "default": "", + "optional": false + }, + { + "name": "symbols", + "type": "str", + "description": "Symbols associated with the article.", + "default": "None", + "optional": true + } + ], + "benzinga": [ + { + "name": "id", + "type": "str", + "description": "Article ID.", + "default": "", + "optional": false + }, + { + "name": "author", + "type": "str", + "description": "Author of the article.", + "default": "None", + "optional": true + }, + { + "name": "teaser", + "type": "str", + "description": "Teaser of the news.", + "default": "None", + "optional": true + }, + { + "name": "channels", + "type": "str", + "description": "Channels associated with the news.", + "default": "None", + "optional": true + }, + { + "name": "stocks", + "type": "str", + "description": "Stocks associated with the news.", + "default": "None", + "optional": true + }, + { + "name": "tags", + "type": "str", + "description": "Tags associated with the news.", + "default": "None", + "optional": true + }, + { + "name": "updated", + "type": "datetime", + "description": "Updated date of the news.", + "default": "None", + "optional": true + } + ], + "fmp": [ + { + "name": "source", + "type": "str", + "description": "Name of the news source.", + "default": "", + "optional": false + } + ], + "intrinio": [ + { + "name": "id", + "type": "str", + "description": "Article ID.", + "default": "", + "optional": false + } + ], + "polygon": [ + { + "name": "source", + "type": "str", + "description": "Source of the article.", + "default": "None", + "optional": true + }, + { + "name": "tags", + "type": "str", + "description": "Keywords/tags in the article", + "default": "None", + "optional": true + }, + { + "name": "id", + "type": "str", + "description": "Article ID.", + "default": "", + "optional": false + }, + { + "name": "amp_url", + "type": "str", + "description": "AMP URL.", + "default": "None", + "optional": true + }, + { + "name": "publisher", + "type": "openbb_polygon.models.company_news.PolygonPublisher", + "description": "Publisher of the article.", + "default": "", + "optional": false + } + ], + "tiingo": [ + { + "name": "tags", + "type": "str", + "description": "Tags associated with the news article.", + "default": "None", + "optional": true + }, + { + "name": "article_id", + "type": "int", + "description": "Unique ID of the news article.", + "default": "", + "optional": false + }, + { + "name": "source", + "type": "str", + "description": "News source.", + "default": "", + "optional": false + }, + { + "name": "crawl_date", + "type": "datetime", + "description": "Date the news article was crawled.", + "default": "", + "optional": false + } + ], + "yfinance": [ + { + "name": "source", + "type": "str", + "description": "Source of the news article", + "default": "", + "optional": false + } + ] + }, + "model": "CompanyNews" + }, + "/regulators/sec/cik_map": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Map a ticker symbol to a CIK number.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.regulators.sec.cik_map(symbol='MSFT', provider='sec')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol to get data for.", + "default": "", + "optional": false + }, + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [] + }, + "returns": { + "OBBject": "OBBject\n results : CikMap\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [ + { + "name": "cik", + "type": "Union[int, str]", + "description": "Central Index Key (CIK) for the requested entity.", + "default": "None", + "optional": true + } + ], + "sec": [] + }, + "model": "CikMap" + }, + "/regulators/sec/institutions_search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search SEC-regulated institutions by name and return a list of results with CIK numbers.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.regulators.sec.institutions_search(provider='sec')\nobb.regulators.sec.institutions_search(query='blackstone real estate', provider='sec')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Search query.", + "default": "", + "optional": true + }, + { + "name": "use_cache", + "type": "bool", + "description": "Whether or not to use cache. If True, cache will store for seven days.", + "default": "True", + "optional": true + }, + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [] + }, + "returns": { + "OBBject": "OBBject\n results : InstitutionsSearch\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [], + "sec": [ + { + "name": "name", + "type": "str", + "description": "The name of the institution.", + "default": "None", + "optional": true + }, + { + "name": "cik", + "type": "Union[int, str]", + "description": "Central Index Key (CIK)", + "default": "None", + "optional": true + } + ] + }, + "model": "InstitutionsSearch" + }, + "/regulators/sec/schema_files": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "A tool for navigating the directory of SEC XML schema files by year.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.regulators.sec.schema_files(provider='sec')\n# Get a list of schema files.\ndata = obb.regulators.sec.schema_files().results\ndata.files[0]\n'https://xbrl.fasb.org/us-gaap/'\n# The directory structure can be navigated by constructing a URL from the 'results' list.\nurl = data.files[0]+data.files[-1]\n# The URL base will always be the 0 position in the list, feed the URL back in as a parameter.\nobb.regulators.sec.schema_files(url=url).results.files\n['https://xbrl.fasb.org/us-gaap/2024/'\n'USGAAP2024FileList.xml'\n'dis/'\n'dqcrules/'\n'ebp/'\n'elts/'\n'entire/'\n'meta/'\n'stm/'\n'us-gaap-2024.zip']\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Search query.", + "default": "", + "optional": true + }, + { + "name": "use_cache", + "type": "bool", + "description": "Whether or not to use cache. If True, cache will store for seven days.", + "default": "True", + "optional": true + }, + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [ + { + "name": "url", + "type": "str", + "description": "Enter an optional URL path to fetch the next level.", + "default": "None", + "optional": true + } + ] + }, + "returns": { + "OBBject": "OBBject\n results : SchemaFiles\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [], + "sec": [ + { + "name": "files", + "type": "List[str]", + "description": "Dictionary of URLs to SEC Schema Files", + "default": "", + "optional": false + } + ] + }, + "model": "SchemaFiles" + }, + "/regulators/sec/symbol_map": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Map a CIK number to a ticker symbol, leading 0s can be omitted or included.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.regulators.sec.symbol_map(query='0000789019', provider='sec')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Search query.", + "default": "", + "optional": false + }, + { + "name": "use_cache", + "type": "bool", + "description": "Whether or not to use cache. If True, cache will store for seven days.", + "default": "True", + "optional": true + }, + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [] + }, + "returns": { + "OBBject": "OBBject\n results : SymbolMap\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [], + "sec": [ + { + "name": "symbol", + "type": "str", + "description": "Symbol representing the entity requested in the data.", + "default": "", + "optional": false + } + ] + }, + "model": "SymbolMap" + }, + "/regulators/sec/rss_litigation": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "The RSS feed provides links to litigation releases concerning civil lawsuits brought by the Commission in federal court.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.regulators.sec.rss_litigation(provider='sec')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [] + }, + "returns": { + "OBBject": "OBBject\n results : RssLitigation\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [], + "sec": [ + { + "name": "published", + "type": "datetime", + "description": "The date of publication.", + "default": "", + "optional": false + }, + { + "name": "title", + "type": "str", + "description": "The title of the release.", + "default": "", + "optional": false + }, + { + "name": "summary", + "type": "str", + "description": "Short summary of the release.", + "default": "", + "optional": false + }, + { + "name": "id", + "type": "str", + "description": "The identifier associated with the release.", + "default": "", + "optional": false + }, + { + "name": "link", + "type": "str", + "description": "URL to the release.", + "default": "", + "optional": false + } + ] + }, + "model": "RssLitigation" + }, + "/regulators/sec/sic_search": { + "deprecated": { + "flag": null, + "message": null + }, + "description": "Search for Industry Titles, Reporting Office, and SIC Codes. An empty query string returns all results.", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.regulators.sec.sic_search(provider='sec')\nobb.regulators.sec.sic_search(query='real estate investment trusts', provider='sec')\n```\n\n", + "parameters": { + "standard": [ + { + "name": "query", + "type": "str", + "description": "Search query.", + "default": "", + "optional": true + }, + { + "name": "use_cache", + "type": "bool", + "description": "Whether or not to use cache. If True, cache will store for seven days.", + "default": "True", + "optional": true + }, + { + "name": "provider", + "type": "Literal['sec']", + "description": "The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'sec' if there is no default.", + "default": "sec", + "optional": true + } + ], + "sec": [] + }, + "returns": { + "OBBject": "OBBject\n results : SicSearch\n Serializable results.\n provider : Literal['sec']\n Provider name.\n warnings : Optional[List[Warning_]]\n List of warnings.\n chart : Optional[Chart]\n Chart object.\n extra : Dict[str, Any]\n Extra info.\n" + }, + "data": { + "standard": [], + "sec": [ + { + "name": "sic", + "type": "int", + "description": "Sector Industrial Code (SIC)", + "default": "", + "optional": false + }, + { + "name": "industry", + "type": "str", + "description": "Industry title.", + "default": "", + "optional": false + }, + { + "name": "office", + "type": "str", + "description": "Reporting office within the Corporate Finance Office", + "default": "", + "optional": false + } + ] + }, + "model": "SicSearch" + } +} \ No newline at end of file diff --git a/openbb_platform/openbb/package/etf.py b/openbb_platform/openbb/package/etf.py index b34a947e0922..663014c576d3 100644 --- a/openbb_platform/openbb/package/etf.py +++ b/openbb_platform/openbb/package/etf.py @@ -778,11 +778,11 @@ def info( symbol: Annotated[ Union[str, List[str]], OpenBBCustomParameter( - description="Symbol to get data for. (ETF) Multiple items allowed for provider(s): fmp, yfinance." + description="Symbol to get data for. (ETF) Multiple items allowed for provider(s): fmp, intrinio, yfinance." ), ], provider: Annotated[ - Optional[Literal["fmp", "yfinance"]], + Optional[Literal["fmp", "intrinio", "yfinance"]], OpenBBCustomParameter( description="The provider to use for the query, by default None.\n If None, the provider specified in defaults is selected or 'fmp' if there is\n no default." ), @@ -794,8 +794,8 @@ def info( Parameters ---------- symbol : Union[str, List[str]] - Symbol to get data for. (ETF) Multiple items allowed for provider(s): fmp, yfinance. - provider : Optional[Literal['fmp', 'yfinance']] + Symbol to get data for. (ETF) Multiple items allowed for provider(s): fmp, intrinio, yfinance. + provider : Optional[Literal['fmp', 'intrinio', 'yfinance']] The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default. @@ -805,7 +805,7 @@ def info( OBBject results : List[EtfInfo] Serializable results. - provider : Optional[Literal['fmp', 'yfinance']] + provider : Optional[Literal['fmp', 'intrinio', 'yfinance']] Provider name. warnings : Optional[List[Warning_]] List of warnings. @@ -825,15 +825,19 @@ def info( inception_date : Optional[str] Inception date of the ETF. issuer : Optional[str] - Company of the ETF. (provider: fmp) + Company of the ETF. (provider: fmp); + Issuer of the ETF. (provider: intrinio) cusip : Optional[str] CUSIP of the ETF. (provider: fmp) isin : Optional[str] - ISIN of the ETF. (provider: fmp) + ISIN of the ETF. (provider: fmp); + International Securities Identification Number (ISIN). (provider: intrinio) domicile : Optional[str] - Domicile of the ETF. (provider: fmp) + Domicile of the ETF. (provider: fmp); + 2 letter ISO country code for the country where the ETP is domiciled. (provider: intrinio) asset_class : Optional[str] - Asset class of the ETF. (provider: fmp) + Asset class of the ETF. (provider: fmp); + Captures the underlying nature of the securities in the Exchanged Traded Product (ETP). (provider: intrinio) aum : Optional[float] Assets under management. (provider: fmp) nav : Optional[float] @@ -848,14 +852,232 @@ def info( Average daily trading volume. (provider: fmp) website : Optional[str] Website of the issuer. (provider: fmp) - fund_type : Optional[str] - The legal type of fund. (provider: yfinance) + fund_listing_date : Optional[date] + The date on which the Exchange Traded Product (ETP) or share class of the ETP is listed on a specific exchange. (provider: intrinio) + data_change_date : Optional[date] + The last date on which there was a change in a classifications data field for this ETF. (provider: intrinio) + etn_maturity_date : Optional[date] + If the product is an ETN, this field identifies the maturity date for the ETN. (provider: intrinio) + is_listed : Optional[bool] + If true, the ETF is still listed on an exchange. (provider: intrinio) + close_date : Optional[date] + The date on which the ETF was de-listed if it is no longer listed. (provider: intrinio) + exchange : Optional[str] + The exchange Market Identifier Code (MIC). (provider: intrinio); + The exchange the fund is listed on. (provider: yfinance) + ric : Optional[str] + Reuters Instrument Code (RIC). (provider: intrinio) + sedol : Optional[str] + Stock Exchange Daily Official List (SEDOL). (provider: intrinio) + figi_symbol : Optional[str] + Financial Instrument Global Identifier (FIGI) symbol. (provider: intrinio) + share_class_figi : Optional[str] + Financial Instrument Global Identifier (FIGI). (provider: intrinio) + firstbridge_id : Optional[str] + The FirstBridge unique identifier for the Exchange Traded Fund (ETF). (provider: intrinio) + firstbridge_parent_id : Optional[str] + The FirstBridge unique identifier for the parent Exchange Traded Fund (ETF), if applicable. (provider: intrinio) + intrinio_id : Optional[str] + Intrinio unique identifier for the security. (provider: intrinio) + intraday_nav_symbol : Optional[str] + Intraday Net Asset Value (NAV) symbol. (provider: intrinio) + primary_symbol : Optional[str] + The primary ticker field is used for Exchange Traded Products (ETPs) that have multiple listings and share classes. If an ETP has multiple listings or share classes, the same primary ticker is assigned to all the listings and share classes. (provider: intrinio) + etp_structure_type : Optional[str] + Classifies Exchange Traded Products (ETPs) into very broad categories based on its legal structure. (provider: intrinio) + legal_structure : Optional[str] + Legal structure of the fund. (provider: intrinio) + etn_issuing_bank : Optional[str] + If the product is an Exchange Traded Note (ETN), this field identifies the issuing bank. (provider: intrinio) fund_family : Optional[str] + This field identifies the fund family to which the ETF belongs, as categorized by the ETF Sponsor. (provider: intrinio); The fund family. (provider: yfinance) + investment_style : Optional[str] + Investment style of the ETF. (provider: intrinio) + derivatives_based : Optional[str] + This field is populated if the ETF holds either listed or over-the-counter derivatives in its portfolio. (provider: intrinio) + income_category : Optional[str] + Identifies if an Exchange Traded Fund (ETF) falls into a category that is specifically designed to provide a high yield or income (provider: intrinio) + other_asset_types : Optional[str] + If 'asset_class' field is classified as 'Other Asset Types' this field captures the specific category of the underlying assets. (provider: intrinio) + single_category_designation : Optional[str] + This categorization is created for those users who want every ETF to be 'forced' into a single bucket, so that the assets for all categories will always sum to the total market. (provider: intrinio) + beta_type : Optional[str] + This field identifies whether an ETF provides 'Traditional' beta exposure or 'Smart' beta exposure. ETFs that are active (i.e. non-indexed), leveraged / inverse or have a proprietary quant model (i.e. that don't provide indexed exposure to a targeted factor) are classified separately. (provider: intrinio) + beta_details : Optional[str] + This field provides further detail within the traditional and smart beta categories. (provider: intrinio) + market_cap_range : Optional[str] + Equity ETFs are classified as falling into categories based on the description of their investment strategy in the prospectus. Examples ('Mega Cap', 'Large Cap', 'Mid Cap', etc.) (provider: intrinio) + market_cap_weighting_type : Optional[str] + For ETFs that take the value 'Market Cap Weighted' in the 'index_weighting_scheme' field, this field provides detail on the market cap weighting type. (provider: intrinio) + index_weighting_scheme : Optional[str] + For ETFs that track an underlying index, this field provides detail on the index weighting type. (provider: intrinio) + index_linked : Optional[str] + This field identifies whether an ETF is index linked or active. (provider: intrinio) + index_name : Optional[str] + This field identifies the name of the underlying index tracked by the ETF, if applicable. (provider: intrinio) + index_symbol : Optional[str] + This field identifies the OpenFIGI ticker for the Index underlying the ETF. (provider: intrinio) + parent_index : Optional[str] + This field identifies the name of the parent index, which represents the broader universe from which the index underlying the ETF is created, if applicable. (provider: intrinio) + index_family : Optional[str] + This field identifies the index family to which the index underlying the ETF belongs. The index family is represented as categorized by the index provider. (provider: intrinio) + broader_index_family : Optional[str] + This field identifies the broader index family to which the index underlying the ETF belongs. The broader index family is represented as categorized by the index provider. (provider: intrinio) + index_provider : Optional[str] + This field identifies the Index provider for the index underlying the ETF, if applicable. (provider: intrinio) + index_provider_code : Optional[str] + This field provides the First Bridge code for each Index provider, corresponding to the index underlying the ETF if applicable. (provider: intrinio) + replication_structure : Optional[str] + The replication structure of the Exchange Traded Product (ETP). (provider: intrinio) + growth_value_tilt : Optional[str] + Classifies equity ETFs as either 'Growth' or Value' based on the stated style tilt in the ETF prospectus. Equity ETFs that do not have a stated style tilt are classified as 'Core / Blend'. (provider: intrinio) + growth_type : Optional[str] + For ETFs that are classified as 'Growth' in 'growth_value_tilt', this field further identifies those where the stocks in the ETF are both selected and weighted based on their growth (style factor) scores. (provider: intrinio) + value_type : Optional[str] + For ETFs that are classified as 'Value' in 'growth_value_tilt', this field further identifies those where the stocks in the ETF are both selected and weighted based on their value (style factor) scores. (provider: intrinio) + sector : Optional[str] + For equity ETFs that aim to provide targeted exposure to a sector or industry, this field identifies the Sector that it provides the exposure to. (provider: intrinio) + industry : Optional[str] + For equity ETFs that aim to provide targeted exposure to an industry, this field identifies the Industry that it provides the exposure to. (provider: intrinio) + industry_group : Optional[str] + For equity ETFs that aim to provide targeted exposure to a sub-industry, this field identifies the sub-Industry that it provides the exposure to. (provider: intrinio) + cross_sector_theme : Optional[str] + For equity ETFs that aim to provide targeted exposure to a specific investment theme that cuts across GICS sectors, this field identifies the specific cross-sector theme. Examples ('Agri-business', 'Natural Resources', 'Green Investing', etc.) (provider: intrinio) + natural_resources_type : Optional[str] + For ETFs that are classified as 'Natural Resources' in the 'cross_sector_theme' field, this field provides further detail on the type of Natural Resources exposure. (provider: intrinio) + us_or_excludes_us : Optional[str] + Takes the value of 'Domestic' for US exposure, 'International' for non-US exposure and 'Global' for exposure that includes all regions including the US. (provider: intrinio) + developed_emerging : Optional[str] + This field identifies the stage of development of the markets that the ETF provides exposure to. (provider: intrinio) + specialized_region : Optional[str] + This field is populated if the ETF provides targeted exposure to a specific type of geography-based grouping that does not fall into a specific country or continent grouping. Examples ('BRIC', 'Chindia', etc.) (provider: intrinio) + continent : Optional[str] + This field is populated if the ETF provides targeted exposure to a specific continent or country within that Continent. (provider: intrinio) + latin_america_sub_group : Optional[str] + For ETFs that are classified as 'Latin America' in the 'continent' field, this field provides further detail on the type of regional exposure. (provider: intrinio) + europe_sub_group : Optional[str] + For ETFs that are classified as 'Europe' in the 'continent' field, this field provides further detail on the type of regional exposure. (provider: intrinio) + asia_sub_group : Optional[str] + For ETFs that are classified as 'Asia' in the 'continent' field, this field provides further detail on the type of regional exposure. (provider: intrinio) + specific_country : Optional[str] + This field is populated if the ETF provides targeted exposure to a specific country. (provider: intrinio) + china_listing_location : Optional[str] + For ETFs that are classified as 'China' in the 'country' field, this field provides further detail on the type of exposure in the underlying securities. (provider: intrinio) + us_state : Optional[str] + Takes the value of a US state if the ETF provides targeted exposure to the municipal bonds or equities of companies. (provider: intrinio) + real_estate : Optional[str] + For ETFs that provide targeted real estate exposure, this field is populated if the ETF provides targeted exposure to a specific segment of the real estate market. (provider: intrinio) + fundamental_weighting_type : Optional[str] + For ETFs that take the value 'Fundamental Weighted' in the 'index_weighting_scheme' field, this field provides detail on the fundamental weighting methodology. (provider: intrinio) + dividend_weighting_type : Optional[str] + For ETFs that take the value 'Dividend Weighted' in the 'index_weighting_scheme' field, this field provides detail on the dividend weighting methodology. (provider: intrinio) + bond_type : Optional[str] + For ETFs where 'asset_class_type' is 'Bonds', this field provides detail on the type of bonds held in the ETF. (provider: intrinio) + government_bond_types : Optional[str] + For bond ETFs that take the value 'Treasury & Government' in 'bond_type', this field provides detail on the exposure. (provider: intrinio) + municipal_bond_region : Optional[str] + For bond ETFs that take the value 'Municipal' in 'bond_type', this field provides additional detail on the geographic exposure. (provider: intrinio) + municipal_vrdo : Optional[bool] + For bond ETFs that take the value 'Municipal' in 'bond_type', this field identifies those ETFs that specifically provide exposure to Variable Rate Demand Obligations. (provider: intrinio) + mortgage_bond_types : Optional[str] + For bond ETFs that take the value 'Mortgage' in 'bond_type', this field provides additional detail on the type of underlying securities. (provider: intrinio) + bond_tax_status : Optional[str] + For all US bond ETFs, this field provides additional detail on the tax treatment of the underlying securities. (provider: intrinio) + credit_quality : Optional[str] + For all bond ETFs, this field helps to identify if the ETF provides targeted exposure to securities of a specific credit quality range. (provider: intrinio) + average_maturity : Optional[str] + For all bond ETFs, this field helps to identify if the ETF provides targeted exposure to securities of a specific maturity range. (provider: intrinio) + specific_maturity_year : Optional[int] + For all bond ETFs that take the value 'Specific Maturity Year' in the 'average_maturity' field, this field specifies the calendar year. (provider: intrinio) + commodity_types : Optional[str] + For ETFs where 'asset_class_type' is 'Commodities', this field provides detail on the type of commodities held in the ETF. (provider: intrinio) + energy_type : Optional[str] + For ETFs where 'commodity_type' is 'Energy', this field provides detail on the type of energy exposure provided by the ETF. (provider: intrinio) + agricultural_type : Optional[str] + For ETFs where 'commodity_type' is 'Agricultural', this field provides detail on the type of agricultural exposure provided by the ETF. (provider: intrinio) + livestock_type : Optional[str] + For ETFs where 'commodity_type' is 'Livestock', this field provides detail on the type of livestock exposure provided by the ETF. (provider: intrinio) + metal_type : Optional[str] + For ETFs where 'commodity_type' is 'Gold & Metals', this field provides detail on the type of exposure provided by the ETF. (provider: intrinio) + inverse_leveraged : Optional[str] + This field is populated if the ETF provides inverse or leveraged exposure. (provider: intrinio) + target_date_multi_asset_type : Optional[str] + For ETFs where 'asset_class_type' is 'Target Date / MultiAsset', this field provides detail on the type of commodities held in the ETF. (provider: intrinio) + currency_pair : Optional[str] + This field is populated if the ETF's strategy involves providing exposure to the movements of a currency or involves hedging currency exposure. (provider: intrinio) + social_environmental_type : Optional[str] + This field is populated if the ETF's strategy involves providing exposure to a specific social or environmental theme. (provider: intrinio) + clean_energy_type : Optional[str] + This field is populated if the ETF has a value of 'Clean Energy' in the 'social_environmental_type' field. (provider: intrinio) + dividend_type : Optional[str] + This field is populated if the ETF has an intended investment objective of holding dividend-oriented stocks as stated in the prospectus. (provider: intrinio) + regular_dividend_payor_type : Optional[str] + This field is populated if the ETF has a value of'Dividend - Regular Payors' in the 'dividend_type' field. (provider: intrinio) + quant_strategies_type : Optional[str] + This field is populated if the ETF has either an index-linked or active strategy that is based on a proprietary quantitative strategy. (provider: intrinio) + other_quant_models : Optional[str] + For ETFs where 'quant_strategies_type' is 'Other Quant Model', this field provides the name of the specific proprietary quant model used as the underlying strategy for the ETF. (provider: intrinio) + hedge_fund_type : Optional[str] + For ETFs where 'other_asset_types' is 'Hedge Fund Replication', this field provides detail on the type of hedge fund replication strategy. (provider: intrinio) + excludes_financials : Optional[bool] + For equity ETFs, identifies those ETFs where the underlying fund holdings will not hold financials stocks, based on the funds intended objective. (provider: intrinio) + excludes_technology : Optional[bool] + For equity ETFs, identifies those ETFs where the underlying fund holdings will not hold technology stocks, based on the funds intended objective. (provider: intrinio) + holds_only_nyse_stocks : Optional[bool] + If true, the ETF is an equity ETF and holds only stocks listed on NYSE. (provider: intrinio) + holds_only_nasdaq_stocks : Optional[bool] + If true, the ETF is an equity ETF and holds only stocks listed on Nasdaq. (provider: intrinio) + holds_mlp : Optional[bool] + If true, the ETF's investment objective explicitly specifies that it holds MLPs as an intended part of its investment strategy. (provider: intrinio) + holds_preferred_stock : Optional[bool] + If true, the ETF's investment objective explicitly specifies that it holds preferred stock as an intended part of its investment strategy. (provider: intrinio) + holds_closed_end_funds : Optional[bool] + If true, the ETF's investment objective explicitly specifies that it holds closed end funds as an intended part of its investment strategy. (provider: intrinio) + holds_adr : Optional[bool] + If true, he ETF's investment objective explicitly specifies that it holds American Depositary Receipts (ADRs) as an intended part of its investment strategy. (provider: intrinio) + laddered : Optional[bool] + For bond ETFs, this field identifies those ETFs that specifically hold bonds in a laddered structure, where the bonds are scheduled to mature in an annual, sequential structure. (provider: intrinio) + zero_coupon : Optional[bool] + For bond ETFs, this field identifies those ETFs that specifically hold zero coupon Treasury Bills. (provider: intrinio) + floating_rate : Optional[bool] + For bond ETFs, this field identifies those ETFs that specifically hold floating rate bonds. (provider: intrinio) + build_america_bonds : Optional[bool] + For municipal bond ETFs, this field identifies those ETFs that specifically hold Build America Bonds. (provider: intrinio) + dynamic_futures_roll : Optional[bool] + If the product holds futures contracts, this field identifies those products where the roll strategy is dynamic (rather than entirely rules based), so as to minimize roll costs. (provider: intrinio) + currency_hedged : Optional[bool] + This field is populated if the ETF's strategy involves hedging currency exposure. (provider: intrinio) + includes_short_exposure : Optional[bool] + This field is populated if the ETF has short exposure in any of its holdings e.g. in a long/short or inverse ETF. (provider: intrinio) + ucits : Optional[bool] + If true, the Exchange Traded Product (ETP) is Undertakings for the Collective Investment in Transferable Securities (UCITS) compliant (provider: intrinio) + registered_countries : Optional[str] + The list of countries where the ETF is legally registered for sale. This may differ from where the ETF is domiciled or traded, particularly in Europe. (provider: intrinio) + issuer_country : Optional[str] + 2 letter ISO country code for the country where the issuer is located. (provider: intrinio) + listing_country : Optional[str] + 2 letter ISO country code for the country of the primary listing. (provider: intrinio) + listing_region : Optional[str] + Geographic region in the country of the primary listing falls. (provider: intrinio) + bond_currency_denomination : Optional[str] + For all bond ETFs, this field provides additional detail on the currency denomination of the underlying securities. (provider: intrinio) + base_currency : Optional[str] + Base currency in which NAV is reported. (provider: intrinio) + listing_currency : Optional[str] + Listing currency of the Exchange Traded Product (ETP) in which it is traded. Reported using the 3-digit ISO currency code. (provider: intrinio) + number_of_holdings : Optional[int] + The number of holdings in the ETF. (provider: intrinio) + month_end_assets : Optional[float] + Net assets in millions of dollars as of the most recent month end. (provider: intrinio) + net_expense_ratio : Optional[float] + Gross expense net of Fee Waivers, as a percentage of net assets as published by the ETF issuer. (provider: intrinio) + etf_portfolio_turnover : Optional[float] + The percentage of positions turned over in the last 12 months. (provider: intrinio) + fund_type : Optional[str] + The legal type of fund. (provider: yfinance) category : Optional[str] The fund category. (provider: yfinance) - exchange : Optional[str] - The exchange the fund is listed on. (provider: yfinance) exchange_timezone : Optional[str] The timezone of the exchange. (provider: yfinance) currency : Optional[str] @@ -926,14 +1148,18 @@ def info( "provider": self._get_provider( provider, "/etf/info", - ("fmp", "yfinance"), + ("fmp", "intrinio", "yfinance"), ) }, standard_params={ "symbol": symbol, }, extra_params=kwargs, - extra_info={"symbol": {"multiple_items_allowed": ["fmp", "yfinance"]}}, + extra_info={ + "symbol": { + "multiple_items_allowed": ["fmp", "intrinio", "yfinance"] + } + }, ) ) @@ -1046,7 +1272,7 @@ def search( Optional[str], OpenBBCustomParameter(description="Search query.") ] = "", provider: Annotated[ - Optional[Literal["fmp"]], + Optional[Literal["fmp", "intrinio"]], OpenBBCustomParameter( description="The provider to use for the query, by default None.\n If None, the provider specified in defaults is selected or 'fmp' if there is\n no default." ), @@ -1062,12 +1288,13 @@ def search( ---------- query : Optional[str] Search query. - provider : Optional[Literal['fmp']] + provider : Optional[Literal['fmp', 'intrinio']] The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default. - exchange : Optional[Literal['AMEX', 'NYSE', 'NASDAQ', 'ETF', 'TSX', 'EURONEXT']] - The exchange code the ETF trades on. (provider: fmp) + exchange : Optional[Union[Literal['AMEX', 'NYSE', 'NASDAQ', 'ETF', 'TSX', 'EURONEXT'], Literal['xnas', 'arcx', 'bats', 'xnys', 'bvmf', 'xshg', 'xshe', 'xhkg', 'xbom', 'xnse', 'xidx', 'tase', 'xkrx', 'xkls', 'xmex', 'xses', 'roco', 'xtai', 'xbkk', 'xist']]] + The exchange code the ETF trades on. (provider: fmp); + Target a specific exchange by providing the MIC code. (provider: intrinio) is_active : Optional[Literal[True, False]] Whether the ETF is actively trading. (provider: fmp) @@ -1076,7 +1303,7 @@ def search( OBBject results : List[EtfSearch] Serializable results. - provider : Optional[Literal['fmp']] + provider : Optional[Literal['fmp', 'intrinio']] Provider name. warnings : Optional[List[Warning_]] List of warnings. @@ -1106,13 +1333,24 @@ def search( volume : Optional[float] The current trading volume of the ETF. (provider: fmp) exchange : Optional[str] - The exchange code the ETF trades on. (provider: fmp) + The exchange code the ETF trades on. (provider: fmp); + The exchange MIC code. (provider: intrinio) exchange_name : Optional[str] The full name of the exchange the ETF trades on. (provider: fmp) country : Optional[str] The country the ETF is registered in. (provider: fmp) actively_trading : Optional[Literal[True, False]] Whether the ETF is actively trading. (provider: fmp) + figi_ticker : Optional[str] + The OpenFIGI ticker. (provider: intrinio) + ric : Optional[str] + The Reuters Instrument Code. (provider: intrinio) + isin : Optional[str] + The International Securities Identification Number. (provider: intrinio) + sedol : Optional[str] + The Stock Exchange Daily Official List. (provider: intrinio) + intrinio_id : Optional[str] + The unique Intrinio ID for the security. (provider: intrinio) Examples -------- @@ -1130,7 +1368,7 @@ def search( "provider": self._get_provider( provider, "/etf/search", - ("fmp",), + ("fmp", "intrinio"), ) }, standard_params={ diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/__init__.py b/openbb_platform/providers/intrinio/openbb_intrinio/__init__.py index 33f4fcca881e..be7cb40870d2 100644 --- a/openbb_platform/providers/intrinio/openbb_intrinio/__init__.py +++ b/openbb_platform/providers/intrinio/openbb_intrinio/__init__.py @@ -11,6 +11,8 @@ from openbb_intrinio.models.equity_info import IntrinioEquityInfoFetcher from openbb_intrinio.models.equity_quote import IntrinioEquityQuoteFetcher from openbb_intrinio.models.equity_search import IntrinioEquitySearchFetcher +from openbb_intrinio.models.etf_info import IntrinioEtfInfoFetcher +from openbb_intrinio.models.etf_search import IntrinioEtfSearchFetcher from openbb_intrinio.models.financial_ratios import IntrinioFinancialRatiosFetcher from openbb_intrinio.models.fred_series import IntrinioFredSeriesFetcher from openbb_intrinio.models.historical_attributes import ( @@ -55,6 +57,8 @@ "EquityQuote": IntrinioEquityQuoteFetcher, "EquitySearch": IntrinioEquitySearchFetcher, "EtfHistorical": IntrinioEquityHistoricalFetcher, + "EtfInfo": IntrinioEtfInfoFetcher, + "EtfSearch": IntrinioEtfSearchFetcher, "FinancialRatios": IntrinioFinancialRatiosFetcher, "FredSeries": IntrinioFredSeriesFetcher, "HistoricalAttributes": IntrinioHistoricalAttributesFetcher, diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/etf_info.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/etf_info.py new file mode 100644 index 000000000000..f5c275a571fe --- /dev/null +++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/etf_info.py @@ -0,0 +1,655 @@ +"""Intrinio ETF Info Model.""" + +# pylint: disable=unused-argument + +from datetime import date as dateType +from typing import Any, Dict, List, Optional +from warnings import warn + +from openbb_core.provider.abstract.fetcher import Fetcher +from openbb_core.provider.standard_models.etf_info import ( + EtfInfoData, + EtfInfoQueryParams, +) +from openbb_core.provider.utils.errors import EmptyDataError +from openbb_core.provider.utils.helpers import amake_requests +from pydantic import Field + + +class IntrinioEtfInfoQueryParams(EtfInfoQueryParams): + """ + Intrinio ETF Info Query Params. + + Source: https://docs.intrinio.com/documentation/web_api/get_etf_v2 + """ + + __json_schema_extra__ = {"symbol": ["multiple_items_allowed"]} + + +class IntrinioEtfInfoData(EtfInfoData): + """Intrinio ETF Info Data.""" + + __alias_dict__ = { + "symbol": "ticker", + "exchange": "exchange_mic", + "issuer": "sponsor", + "investment_style": "type", + "industry_group": "sub_industry", + "holds_mlp": "holds_ml_ps", + "holds_adr": "holds_ad_rs", + "index_symbol": "index_ticker", + "figi_symbol": "figi_ticker", + "intrinio_id": "id", + "is_listed": "is_live_listed", + "beta_type": "smartvs_traditional_beta", + "beta_details": "smartvs_traditional_beta_level2", + "listing_country": "primary_ticker_country_code", + "listing_region": "primary_listing_region", + "primary_symbol": "primary_ticker", + "intraday_nav_symbol": "intraday_nav_ticker", + "issuer_country": "issuing_entity_country_code", + "livestock_type": "livestock", + } + + fund_listing_date: Optional[dateType] = Field( + default=None, + description="The date on which the Exchange Traded Product (ETP)" + + " or share class of the ETP is listed on a specific exchange.", + ) + data_change_date: Optional[dateType] = Field( + default=None, + description="The last date on which there was a change in a classifications data field for this ETF.", + ) + etn_maturity_date: Optional[dateType] = Field( + default=None, + description="If the product is an ETN, this field identifies the maturity date for the ETN.", + ) + is_listed: Optional[bool] = Field( + default=None, + description="If true, the ETF is still listed on an exchange.", + ) + close_date: Optional[dateType] = Field( + default=None, + description="The date on which the ETF was de-listed if it is no longer listed.", + ) + exchange: Optional[str] = Field( + default=None, + description="The exchange Market Identifier Code (MIC).", + ) + isin: Optional[str] = Field( + default=None, + description="International Securities Identification Number (ISIN).", + ) + ric: Optional[str] = Field( + default=None, + description="Reuters Instrument Code (RIC).", + ) + sedol: Optional[str] = Field( + default=None, + description="Stock Exchange Daily Official List (SEDOL).", + ) + figi_symbol: Optional[str] = Field( + default=None, + description="Financial Instrument Global Identifier (FIGI) symbol.", + ) + share_class_figi: Optional[str] = Field( + default=None, + description="Financial Instrument Global Identifier (FIGI).", + ) + firstbridge_id: Optional[str] = Field( + default=None, + description="The FirstBridge unique identifier for the Exchange Traded Fund (ETF).", + ) + firstbridge_parent_id: Optional[str] = Field( + default=None, + description="The FirstBridge unique identifier for the parent Exchange Traded Fund (ETF), if applicable.", + ) + intrinio_id: Optional[str] = Field( + default=None, + description="Intrinio unique identifier for the security.", + ) + intraday_nav_symbol: Optional[str] = Field( + default=None, + description="Intraday Net Asset Value (NAV) symbol.", + ) + primary_symbol: Optional[str] = Field( + default=None, + description="The primary ticker field is used for Exchange Traded Products (ETPs)" + + " that have multiple listings and share classes." + + " If an ETP has multiple listings or share classes," + + " the same primary ticker is assigned to all the listings and share classes.", + ) + etp_structure_type: Optional[str] = Field( + default=None, + description="Classifies Exchange Traded Products (ETPs) into very broad categories based on its legal structure.", + ) + legal_structure: Optional[str] = Field( + default=None, + description="Legal structure of the fund.", + ) + issuer: Optional[str] = Field( + default=None, + description="Issuer of the ETF.", + ) + etn_issuing_bank: Optional[str] = Field( + default=None, + description="If the product is an Exchange Traded Note (ETN), this field identifies the issuing bank.", + ) + fund_family: Optional[str] = Field( + default=None, + description="This field identifies the fund family to which the ETF belongs, as categorized by the ETF Sponsor.", + ) + investment_style: Optional[str] = Field( + default=None, + description="Investment style of the ETF.", + ) + derivatives_based: Optional[str] = Field( + default=None, + description="This field is populated if the ETF holds either" + + " listed or over-the-counter derivatives in its portfolio.", + ) + income_category: Optional[str] = Field( + default=None, + description="Identifies if an Exchange Traded Fund (ETF) falls into a category" + + " that is specifically designed to provide a high yield or income", + ) + asset_class: Optional[str] = Field( + default=None, + description="Captures the underlying nature of the securities in the Exchanged Traded Product (ETP).", + ) + other_asset_types: Optional[str] = Field( + default=None, + description="If 'asset_class' field is classified as 'Other Asset Types'" + + " this field captures the specific category of the underlying assets.", + ) + single_category_designation: Optional[str] = Field( + default=None, + description="This categorization is created for those users who want every ETF to be 'forced'" + + " into a single bucket, so that the assets for all categories will always sum to the total market.", + ) + beta_type: Optional[str] = Field( + default=None, + description="This field identifies whether an ETF provides 'Traditional' beta exposure or 'Smart' beta exposure." + + " ETFs that are active (i.e. non-indexed), leveraged / inverse or have a proprietary quant model" + + " (i.e. that don't provide indexed exposure to a targeted factor) are classified separately.", + ) + beta_details: Optional[str] = Field( + default=None, + description="This field provides further detail within the traditional and smart beta categories.", + ) + market_cap_range: Optional[str] = Field( + default=None, + description="Equity ETFs are classified as falling into categories" + + " based on the description of their investment strategy in the prospectus." + + " Examples ('Mega Cap', 'Large Cap', 'Mid Cap', etc.)", + ) + market_cap_weighting_type: Optional[str] = Field( + default=None, + description="For ETFs that take the value 'Market Cap Weighted' in the 'index_weighting_scheme' field," + + " this field provides detail on the market cap weighting type.", + ) + index_weighting_scheme: Optional[str] = Field( + default=None, + description="For ETFs that track an underlying index," + + " this field provides detail on the index weighting type.", + ) + index_linked: Optional[str] = Field( + default=None, + description="This field identifies whether an ETF is index linked or active.", + ) + index_name: Optional[str] = Field( + default=None, + description="This field identifies the name of the underlying index tracked by the ETF, if applicable.", + ) + index_symbol: Optional[str] = Field( + default=None, + description="This field identifies the OpenFIGI ticker for the Index underlying the ETF.", + ) + parent_index: Optional[str] = Field( + default=None, + description="This field identifies the name of the parent index, which represents" + + " the broader universe from which the index underlying the ETF is created, if applicable.", + ) + index_family: Optional[str] = Field( + default=None, + description="This field identifies the index family to which the index underlying the ETF belongs." + + " The index family is represented as categorized by the index provider.", + ) + broader_index_family: Optional[str] = Field( + default=None, + description="This field identifies the broader index family to which the index underlying the ETF belongs." + + " The broader index family is represented as categorized by the index provider.", + ) + index_provider: Optional[str] = Field( + default=None, + description="This field identifies the Index provider for the index underlying the ETF, if applicable.", + ) + index_provider_code: Optional[str] = Field( + default=None, + description="This field provides the First Bridge code for each Index provider," + + " corresponding to the index underlying the ETF if applicable.", + ) + replication_structure: Optional[str] = Field( + default=None, + description="The replication structure of the Exchange Traded Product (ETP).", + ) + growth_value_tilt: Optional[str] = Field( + default=None, + description="Classifies equity ETFs as either 'Growth' or Value' based on the stated style tilt" + + " in the ETF prospectus. Equity ETFs that do not have a stated style tilt are classified as 'Core / Blend'.", + ) + growth_type: Optional[str] = Field( + default=None, + description="For ETFs that are classified as 'Growth' in 'growth_value_tilt'," + + " this field further identifies those where the stocks in the" + + " ETF are both selected and weighted based on their growth (style factor) scores.", + ) + value_type: Optional[str] = Field( + default=None, + description="For ETFs that are classified as 'Value' in 'growth_value_tilt'," + + " this field further identifies those where the stocks in the" + + " ETF are both selected and weighted based on their value (style factor) scores.", + ) + sector: Optional[str] = Field( + default=None, + description="For equity ETFs that aim to provide targeted exposure to a sector or industry," + + " this field identifies the Sector that it provides the exposure to.", + ) + industry: Optional[str] = Field( + default=None, + description="For equity ETFs that aim to provide targeted exposure to an industry," + + " this field identifies the Industry that it provides the exposure to.", + ) + industry_group: Optional[str] = Field( + default=None, + description="For equity ETFs that aim to provide targeted exposure to a sub-industry," + + " this field identifies the sub-Industry that it provides the exposure to.", + ) + cross_sector_theme: Optional[str] = Field( + default=None, + description="For equity ETFs that aim to provide targeted exposure to a specific investment theme" + + " that cuts across GICS sectors, this field identifies the specific cross-sector theme." + + " Examples ('Agri-business', 'Natural Resources', 'Green Investing', etc.)", + ) + natural_resources_type: Optional[str] = Field( + default=None, + description="For ETFs that are classified as 'Natural Resources' in the 'cross_sector_theme' field," + + " this field provides further detail on the type of Natural Resources exposure.", + ) + us_or_excludes_us: Optional[str] = Field( + default=None, + description="Takes the value of 'Domestic' for US exposure," + + " 'International' for non-US exposure and 'Global' for exposure that includes all regions including the US.", + ) + developed_emerging: Optional[str] = Field( + default=None, + description="This field identifies the stage of development of the markets that the ETF provides exposure to.", + ) + specialized_region: Optional[str] = Field( + default=None, + description="This field is populated if the ETF provides targeted" + + " exposure to a specific type of geography-based grouping" + + " that does not fall into a specific country or continent grouping." + + " Examples ('BRIC', 'Chindia', etc.)", + ) + continent: Optional[str] = Field( + default=None, + description="This field is populated if the ETF provides targeted exposure" + + " to a specific continent or country within that Continent.", + ) + latin_america_sub_group: Optional[str] = Field( + default=None, + description="For ETFs that are classified as 'Latin America' in the 'continent' field," + + " this field provides further detail on the type of regional exposure.", + ) + europe_sub_group: Optional[str] = Field( + default=None, + description="For ETFs that are classified as 'Europe' in the 'continent' field," + + " this field provides further detail on the type of regional exposure.", + ) + asia_sub_group: Optional[str] = Field( + default=None, + description="For ETFs that are classified as 'Asia' in the 'continent' field," + + " this field provides further detail on the type of regional exposure.", + ) + specific_country: Optional[str] = Field( + default=None, + description="This field is populated if the ETF provides targeted exposure to a specific country.", + ) + china_listing_location: Optional[str] = Field( + default=None, + description="For ETFs that are classified as 'China' in the 'country' field," + + " this field provides further detail on the type of exposure in the underlying securities.", + ) + us_state: Optional[str] = Field( + default=None, + description="Takes the value of a US state if the ETF provides" + + " targeted exposure to the municipal bonds or equities of companies.", + ) + real_estate: Optional[str] = Field( + default=None, + description="For ETFs that provide targeted real estate exposure," + + " this field is populated if the ETF provides targeted" + + " exposure to a specific segment of the real estate market.", + ) + + fundamental_weighting_type: Optional[str] = Field( + default=None, + description="For ETFs that take the value 'Fundamental Weighted' in the 'index_weighting_scheme' field," + + " this field provides detail on the fundamental weighting methodology.", + ) + dividend_weighting_type: Optional[str] = Field( + default=None, + description="For ETFs that take the value 'Dividend Weighted' in the 'index_weighting_scheme' field," + + " this field provides detail on the dividend weighting methodology.", + ) + bond_type: Optional[str] = Field( + default=None, + description="For ETFs where 'asset_class_type' is 'Bonds'," + + " this field provides detail on the type of bonds held in the ETF.", + ) + government_bond_types: Optional[str] = Field( + default=None, + description="For bond ETFs that take the value 'Treasury & Government' in 'bond_type'," + + " this field provides detail on the exposure.", + ) + municipal_bond_region: Optional[str] = Field( + default=None, + description="For bond ETFs that take the value 'Municipal' in 'bond_type'," + + " this field provides additional detail on the geographic exposure.", + ) + municipal_vrdo: Optional[bool] = Field( + default=None, + description="For bond ETFs that take the value 'Municipal' in 'bond_type'," + + " this field identifies those ETFs that specifically provide exposure to Variable Rate Demand Obligations.", + ) + mortgage_bond_types: Optional[str] = Field( + default=None, + description="For bond ETFs that take the value 'Mortgage' in 'bond_type'," + + " this field provides additional detail on the type of underlying securities.", + ) + bond_tax_status: Optional[str] = Field( + default=None, + description="For all US bond ETFs, this field provides additional" + + " detail on the tax treatment of the underlying securities.", + ) + credit_quality: Optional[str] = Field( + default=None, + description="For all bond ETFs, this field helps to identify if the ETF" + + " provides targeted exposure to securities of a specific credit quality range.", + ) + average_maturity: Optional[str] = Field( + default=None, + description="For all bond ETFs, this field helps to identify if the ETF" + + " provides targeted exposure to securities of a specific maturity range.", + ) + specific_maturity_year: Optional[int] = Field( + default=None, + description="For all bond ETFs that take the value 'Specific Maturity Year' in the 'average_maturity' field," + + " this field specifies the calendar year.", + ) + commodity_types: Optional[str] = Field( + default=None, + description="For ETFs where 'asset_class_type' is 'Commodities'," + + " this field provides detail on the type of commodities held in the ETF.", + ) + energy_type: Optional[str] = Field( + default=None, + description="For ETFs where 'commodity_type' is 'Energy'," + + " this field provides detail on the type of energy exposure provided by the ETF.", + ) + agricultural_type: Optional[str] = Field( + default=None, + description="For ETFs where 'commodity_type' is 'Agricultural'," + + " this field provides detail on the type of agricultural exposure provided by the ETF.", + ) + livestock_type: Optional[str] = Field( + default=None, + description="For ETFs where 'commodity_type' is 'Livestock'," + + " this field provides detail on the type of livestock exposure provided by the ETF.", + ) + metal_type: Optional[str] = Field( + default=None, + description="For ETFs where 'commodity_type' is 'Gold & Metals'," + + " this field provides detail on the type of exposure provided by the ETF.", + ) + inverse_leveraged: Optional[str] = Field( + default=None, + description="This field is populated if the ETF provides inverse or leveraged exposure.", + ) + target_date_multi_asset_type: Optional[str] = Field( + default=None, + description="For ETFs where 'asset_class_type' is 'Target Date / MultiAsset'," + + " this field provides detail on the type of commodities held in the ETF.", + ) + currency_pair: Optional[str] = Field( + default=None, + description="This field is populated if the ETF's strategy involves providing exposure to" + + " the movements of a currency or involves hedging currency exposure.", + ) + social_environmental_type: Optional[str] = Field( + default=None, + description="This field is populated if the ETF's strategy involves providing" + + " exposure to a specific social or environmental theme.", + ) + clean_energy_type: Optional[str] = Field( + default=None, + description="This field is populated if the ETF has a value of 'Clean Energy'" + + " in the 'social_environmental_type' field.", + ) + dividend_type: Optional[str] = Field( + default=None, + description="This field is populated if the ETF has an intended" + + " investment objective of holding dividend-oriented stocks as stated in the prospectus.", + ) + regular_dividend_payor_type: Optional[str] = Field( + default=None, + description="This field is populated if the ETF has a value of" + + "'Dividend - Regular Payors' in the 'dividend_type' field.", + ) + quant_strategies_type: Optional[str] = Field( + default=None, + description="This field is populated if the ETF has either an index-linked" + + " or active strategy that is based on a proprietary quantitative strategy.", + ) + other_quant_models: Optional[str] = Field( + default=None, + description="For ETFs where 'quant_strategies_type' is 'Other Quant Model'," + + " this field provides the name of the specific proprietary quant model" + + " used as the underlying strategy for the ETF.", + ) + hedge_fund_type: Optional[str] = Field( + default=None, + description="For ETFs where 'other_asset_types' is 'Hedge Fund Replication'," + + " this field provides detail on the type of hedge fund replication strategy.", + ) + excludes_financials: Optional[bool] = Field( + default=None, + description="For equity ETFs, identifies those ETFs" + + " where the underlying fund holdings will not hold financials stocks," + + " based on the funds intended objective.", + ) + excludes_technology: Optional[bool] = Field( + default=None, + description="For equity ETFs, identifies those ETFs" + + " where the underlying fund holdings will not hold technology stocks," + + " based on the funds intended objective.", + ) + holds_only_nyse_stocks: Optional[bool] = Field( + default=None, + description="If true, the ETF is an equity ETF and holds only stocks listed on NYSE.", + ) + holds_only_nasdaq_stocks: Optional[bool] = Field( + default=None, + description="If true, the ETF is an equity ETF and holds only stocks listed on Nasdaq.", + ) + holds_mlp: Optional[bool] = Field( + default=None, + description="If true, the ETF's investment objective explicitly specifies" + + " that it holds MLPs as an intended part of its investment strategy.", + ) + holds_preferred_stock: Optional[bool] = Field( + default=None, + description="If true, the ETF's investment objective explicitly specifies" + + " that it holds preferred stock as an intended part of its investment strategy.", + ) + holds_closed_end_funds: Optional[bool] = Field( + default=None, + description="If true, the ETF's investment objective explicitly specifies" + + " that it holds closed end funds as an intended part of its investment strategy.", + ) + holds_adr: Optional[bool] = Field( + default=None, + description="If true, he ETF's investment objective explicitly specifies that it holds" + + " American Depositary Receipts (ADRs) as an intended part of its investment strategy.", + ) + laddered: Optional[bool] = Field( + default=None, + description="For bond ETFs, this field identifies those ETFs that" + + " specifically hold bonds in a laddered structure," + + " where the bonds are scheduled to mature in an annual, sequential structure.", + ) + zero_coupon: Optional[bool] = Field( + default=None, + description="For bond ETFs, this field identifies those ETFs that specifically hold zero coupon Treasury Bills.", + ) + floating_rate: Optional[bool] = Field( + default=None, + description="For bond ETFs, this field identifies those ETFs that specifically hold floating rate bonds.", + ) + build_america_bonds: Optional[bool] = Field( + default=None, + description="For municipal bond ETFs, this field identifies those" + + " ETFs that specifically hold Build America Bonds.", + ) + dynamic_futures_roll: Optional[bool] = Field( + default=None, + description="If the product holds futures contracts, this field identifies those products where the roll strategy" + + " is dynamic (rather than entirely rules based), so as to minimize roll costs.", + ) + currency_hedged: Optional[bool] = Field( + default=None, + description="This field is populated if the ETF's strategy involves hedging currency exposure.", + ) + includes_short_exposure: Optional[bool] = Field( + default=None, + description="This field is populated if the ETF has short exposure" + + " in any of its holdings e.g. in a long/short or inverse ETF.", + ) + ucits: Optional[bool] = Field( + default=None, + description="If true, the Exchange Traded Product (ETP) is Undertakings for the Collective Investment" + + " in Transferable Securities (UCITS) compliant", + ) + registered_countries: Optional[str] = Field( + default=None, + description="The list of countries where the ETF is legally registered for sale." + + " This may differ from where the ETF is domiciled or traded, particularly in Europe.", + ) + issuer_country: Optional[str] = Field( + default=None, + description="2 letter ISO country code for the country where the issuer is located.", + ) + domicile: Optional[str] = Field( + default=None, + description="2 letter ISO country code for the country where the ETP is domiciled.", + ) + listing_country: Optional[str] = Field( + default=None, + description="2 letter ISO country code for the country of the primary listing.", + alias="listing_country_code", + ) + listing_region: Optional[str] = Field( + default=None, + description="Geographic region in the country of the primary listing falls.", + ) + bond_currency_denomination: Optional[str] = Field( + default=None, + description="For all bond ETFs, this field provides additional" + + " detail on the currency denomination of the underlying securities.", + ) + base_currency: Optional[str] = Field( + default=None, + description="Base currency in which NAV is reported.", + ) + listing_currency: Optional[str] = Field( + default=None, + description="Listing currency of the Exchange Traded Product (ETP) in which it is traded." + + " Reported using the 3-digit ISO currency code.", + ) + number_of_holdings: Optional[int] = Field( + default=None, + description="The number of holdings in the ETF.", + ) + month_end_assets: Optional[float] = Field( + default=None, + description="Net assets in millions of dollars as of the most recent month end.", + ) + net_expense_ratio: Optional[float] = Field( + default=None, + description="Gross expense net of Fee Waivers, as a percentage of net assets" + + " as published by the ETF issuer.", + json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100}, + ) + etf_portfolio_turnover: Optional[float] = Field( + default=None, + description="The percentage of positions turned over in the last 12 months.", + json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100}, + ) + + +class IntrinioEtfInfoFetcher( + Fetcher[IntrinioEtfInfoQueryParams, List[IntrinioEtfInfoData]] +): + """Intrinio ETF Info Fetcher.""" + + @staticmethod + def transform_query(params: Dict[str, Any]) -> IntrinioEtfInfoQueryParams: + """Transform query.""" + return IntrinioEtfInfoQueryParams(**params) + + @staticmethod + async def aextract_data( + query: IntrinioEtfInfoQueryParams, + credentials: Optional[Dict[str, str]], + **kwargs: Any, + ) -> List[Dict]: + """Return the raw data from the Intrinio endpoint.""" + + api_key = credentials.get("intrinio_api_key") if credentials else "" + base_url = "https://api-v2.intrinio.com/etfs/" + symbols = query.symbol.split(",") + symbols = [ + symbol + ":US" if ":" not in symbol else symbol for symbol in symbols + ] + urls = [f"{base_url}{symbol}?api_key={api_key}" for symbol in symbols] + + results = [] + + async def response_callback(response, _): + """Response callback.""" + result = await response.json() + if "error" in result: + warn(f"Symbol Error: {result['error']} for {response.url.parts[-1]}") + return + _ = result.pop("messages", None) + results.append(result) + + await amake_requests(urls, response_callback, **kwargs) # type: ignore + + if not results: + raise EmptyDataError("No data was returned.") + + return sorted( + results, + key=(lambda item: (symbols.index(item.get("figi_ticker", len(symbols))))), + ) + + @staticmethod + def transform_data( + query: IntrinioEtfInfoQueryParams, + data: List[Dict], + **kwargs: Any, + ) -> List[IntrinioEtfInfoData]: + """Transform data.""" + return [IntrinioEtfInfoData.model_validate(d) for d in data] diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/etf_search.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/etf_search.py new file mode 100644 index 000000000000..9668444ff46d --- /dev/null +++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/etf_search.py @@ -0,0 +1,144 @@ +"""Intrinio ETF Search Model.""" + +# pylint: disable=unused-argument +import re +from typing import Any, Dict, List, Optional, Union + +from openbb_core.provider.abstract.fetcher import Fetcher +from openbb_core.provider.standard_models.etf_search import ( + EtfSearchData, + EtfSearchQueryParams, +) +from openbb_core.provider.utils.errors import EmptyDataError +from openbb_core.provider.utils.helpers import ( + ClientResponse, + ClientSession, + amake_request, +) +from openbb_intrinio.utils.references import ETF_EXCHANGES +from pandas import DataFrame +from pydantic import Field + + +class IntrinioEtfSearchQueryParams(EtfSearchQueryParams): + """ + Intrinio ETF Search Query Params. + + Source: https://docs.intrinio.com/documentation/web_api/search_etfs_v2 + """ + + exchange: Union[None, ETF_EXCHANGES] = Field( + default=None, + description="Target a specific exchange by providing the MIC code.", + ) + + +class IntrinioEtfSearchData(EtfSearchData): + """Intrinio ETF Search Data.""" + + __alias_dict__ = { + "intrinio_id": "id", + "symbol": "ticker", + "exchange": "exchange_mic", + } + + exchange: Optional[str] = Field( + default=None, + description="The exchange MIC code.", + ) + figi_ticker: Optional[str] = Field( + None, + description="The OpenFIGI ticker.", + ) + ric: Optional[str] = Field( + None, + description="The Reuters Instrument Code.", + ) + isin: Optional[str] = Field( + None, + description="The International Securities Identification Number.", + ) + sedol: Optional[str] = Field( + None, + description="The Stock Exchange Daily Official List.", + ) + intrinio_id: Optional[str] = Field( + None, + description="The unique Intrinio ID for the security.", + ) + + +class IntrinioEtfSearchFetcher( + Fetcher[IntrinioEtfSearchQueryParams, List[IntrinioEtfSearchData]] +): + """Intrinio ETF Search Fetcher.""" + + @staticmethod + def transform_query(params: Dict[str, Any]) -> IntrinioEtfSearchQueryParams: + """Transform query.""" + return IntrinioEtfSearchQueryParams(**params) + + @staticmethod + async def aextract_data( + query: IntrinioEtfSearchQueryParams, + credentials: Optional[Dict[str, str]], + **kwargs: Any, + ) -> List[Dict]: + """Return the raw data from the Intrinio endpoint.""" + + api_key = credentials.get("intrinio_api_key") if credentials else "" + BASE = "https://api-v2.intrinio.com/etfs" + if query.exchange is not None: + url = f"{BASE}?exchange={query.exchange.upper()}&page_size=10000&api_key={api_key}" + elif query.query: + url = f"{BASE}/search?query={query.query}&page_size=10000&api_key={api_key}" + else: + url = f"{BASE}?page_size=10000&api_key={api_key}" + + data = [] + + async def response_callback(response: ClientResponse, session: ClientSession): + """Async response callback.""" + results = await response.json() + + if results.get("messages"): # type: ignore + messages = results.get("messages") # type: ignore + raise RuntimeError(str(messages)) + + if results.get("etfs") and len(results.get("etfs")) > 0: # type: ignore + data.extend(results.get("etfs")) # type: ignore + while results.get("next_page"): # type: ignore + next_page = results["next_page"] # type: ignore + next_url = f"{url}&next_page={next_page}" + results = await amake_request(next_url, session=session, **kwargs) + if ( + "etfs" in results + and len(results.get("etfs")) > 0 # type: ignore + ): + data.extend(results.get("etfs")) # type: ignore + return data + + return await amake_request(url, response_callback=response_callback, **kwargs) # type: ignore + + @staticmethod + def transform_data( + query: IntrinioEtfSearchQueryParams, + data: List[Dict], + **kwargs: Any, + ) -> List[IntrinioEtfSearchData]: + """Transform data.""" + + if not data: + raise EmptyDataError("No data found.") + + results = DataFrame(data) + if query.query: + pattern = f".*{re.escape(query.query)}.*" + results = results[ + results["name"].str.contains(pattern, case=False, regex=True) + ] + + return [ + IntrinioEtfSearchData.model_validate(d) + for d in results.to_dict(orient="records") + ] diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/utils/references.py b/openbb_platform/providers/intrinio/openbb_intrinio/utils/references.py index fcd17a128dc2..204c2df492b7 100644 --- a/openbb_platform/providers/intrinio/openbb_intrinio/utils/references.py +++ b/openbb_platform/providers/intrinio/openbb_intrinio/utils/references.py @@ -40,6 +40,30 @@ } +ETF_EXCHANGES = Literal[ + "xnas", + "arcx", + "bats", + "xnys", + "bvmf", + "xshg", + "xshe", + "xhkg", + "xbom", + "xnse", + "xidx", + "tase", + "xkrx", + "xkls", + "xmex", + "xses", + "roco", + "xtai", + "xbkk", + "xist", +] + + class IntrinioCompany(Data): """Intrinio Company Data.""" diff --git a/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_info_fetcher.yaml b/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_info_fetcher.yaml new file mode 100644 index 000000000000..6c0e2c50d7bd --- /dev/null +++ b/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_info_fetcher.yaml @@ -0,0 +1,184 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://api-v2.intrinio.com/etfs/DJIA:US?api_key=MOCK_API_KEY + response: + body: + string: !!binary | + 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 + headers: + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Wed, 13 Mar 2024 04:45:56 GMT + Transfer-Encoding: + - chunked + Vary: + - Origin,Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://api-v2.intrinio.com/etfs/GOVT:US?api_key=MOCK_API_KEY + response: + body: + string: !!binary | + H4sIAIQv8WUAA5xYW28btxL+K4TQhwSQBFm2FSVvviQ5RtDYqO22QM8BQXG5u4S55JbkylaK/vd+ + w73oUjktzouSnRkO5/rN0H+MKhWCKFQYffjtf+ORzkYfRirm/Nv6fb38dTQeWVEp0PR9KbwK7HF6 + P2UPXonQ+A27dDZjHx8+QS5q+aQ8JD/f/vyA71wXmu8RPzzegx5ID5dGhMBJBszLy8+z2fzr1Ze7 + uyUkvJbdiekdPnXQFt+P92eLs/n7y/ni3YLUqMwZOrv49eHLl3NQ1IsshS0Ur9L5y4uHdF3tbHBk + wqUR8sk7+cTedM68JbM3tUraky8BlEwF6XUdtaNrH0rFPjXwMij1FFh0LHroYRF0bdcqxErZyKCt + MTEwlyfOzdXHg0hdOa/acN3YTL2wNyTGHvF/bzbaFh357Zg9l1qWrErnEHCSq5XPna+ElYpuqJuV + 0ZI5/BaC7Bzu3btzyi4S41ZGt1KenZ6M2Xw2n41JFNY80898ccJ0CA1u0rbVcWATFB6hQlqaBrHq + rDGbSVKTHfgdlGy8jjp5IiIrxVoxgXhVQlvSVolIAhtW4EiEmRCzzFnFNkp4JhAxgxLtyJ6p3xth + Uh5K7XGMpEISS6p/OJ3NWKWNQVhIvKK4IwiuiSFCiq7MBeK4FqZRY4aqgRtEFZVrLFJYKpOx1SbF + 4pOC17juJxWUh/b7TYiq6pIHJnvLbmtl2Y/CP6nILqQkHXTvyjVFGRk8prCkzG11fjczDIVthJ88 + Kw0NuANueXToNlJ9sg9T8iwCW05P521MpqAykWWaKqTVvJOMV5LNqiZEtlIs1y8qm3hkJMU2U9ZV + 2gqyB0dTjls7cc/HFENwcu+q42rRbjiXm1SuE6Ptk8p2zBkzKQKKXlg4mhpqhRSCPNRR9y0sCsUh + IDZJQdrKDaxbtXGG0mcdS0oA/Yuko9Z25ItGeGGjap36prxjyBggou+BbY2uFPIaIpCg7j1rRSe1 + SI6tCC9ea47AhvQh7VVbHlLUOgqjv6Uo/HPp/V+1NU6u/ctsU1qaOktpda0MgBnRbwC61HWZSOWm + BEGSs7GcEiLjxoSPnE4CJOezk/lkNp+cnBF+iih4B8Vb/nIyW0xOCKelcaHn2MYYQnhu9FrhB92F + ARQ9OnNkVCEMRwYaibonNRg07E2KiYKLOVD5bbIGiAw7uRXr/YEzvfkZ/NprxH9zbBbts3gKMD6l + y9qZsCNCtiFu3KuiHQyJa1Xk6gUWwSNPWR19mE1ns9n5eIT5BmaaczR8uuHiCHp5y6PRE/oYtCXC + USJQhND19NKZLHBnDfzb4JYQMcHCMa4Imfj9gF949xxLnrAOXpp4wGinX0vqhHYoKKBIo7PLks2A + DX4zcJsVP6RJ7zDW23McrlaDLkvghXxipLnGSxX2bmpbQdFGYFHPWhi4kONX7fCikqV1xhWbgdfA + ec8HiYZCfe2w0iCjaZSvlXHoXw5LfIH8Eb8n9p1F4z2kVUHRzfob5Ps0d26h8tEPFuEbfXUeAHMB + fVoKnCJIs1y035yCgtg29eBZ43HX3+ki6CPSyYRcy74U+zqTJeIy1KBxUsQd8xAFzLZtPwEzDVd7 + JE3tzltMIhVBtskZdTG4EjX7pUOs0V41bs/sJoyaTxCk4qbjEplea0yN7BU2oWdHGA0g/98Ge+CC + fR4AG6Zs0ZsPZ1KagRg+IFhI5HcVVI3VUtcwNJ3fzyzWg1hgiuzp3rVQvKTYpsp6EC9iZRTlwyvM + VU6rCAYyWDfbVfAz0EixW/QkBLvZzfvZDdG0Tf6HGpddGIMi7Kb6T9T2Qx1SEfSHOM3zPbMA7J4m + Hx/mcg9K16kkM+A8IWnXJjToeDu9BlpunGgRLZVJR1012mRDNacRN/CkqyqXkT17cVIWrbXZS64o + cBz7cOr4XUal4gGFdmgPXDOqjVTWM6LwBUqQ5gSvoEvvoObQl30YSpUVO/4O9FroIXDBUXdzZdfa + O9vV7p42o4TlR9wZSnmXiDpqsP7wgYm1gEBvR6RF58rwehvEllZ7lSvYmLV4fcBNExKYBaV5s5sB + 1BvaAICLoBT6AEPb0dKKIE/KbKcERSep2ncLSV6jBlC5fCUCxQ/oFtldGnnabNj1VoJdJoneRIFG + Cvvg0i510HGHROFIuyi0wBxK9BlNShfSKN891z0w05Pp/tUHE41ibCvwLZ3aV5ELbPzDEFp5hw70 + /BivpdXeUdJ8dy0u0DK1XopRf2J4836iXRhSaIDWK9IxrBM311e3D1e0+ahoOW1k1FUrYZ+GDgF9 + 6OXdxYe2nq4AupRsEA10ft7QyhO4x4p93PR+SYH9N1+v8Zseu7jZ4HFN5eE8oUPQxQAOaQdhk++j + JcEjtjAqzXYG6YS2j1bTjnhPMyWkR3nrJg6RU8c2p0bquC1dr2q8EpMpezvdXbkJoBua1kAyqc2g + gGpyQLotuHVD8G+MlLuee2wxHU4eMfb4ehfQB3GNNgOkp2cUDRFAWJpZA+mSKK8LJ2gz83+aczqV + 15C7be3U23j1A/P4Ipz284QaCSkR+/n83fL99HRxcvZ+nP6qU6MNc4e3MYc6S9fTwnr2jv5c40Nc + eU1Ikf4ItJDLk/Ozs8VSnp+fZUu5XK5O5Xl2/u58lS1nmRztn+mb818etU2Fhy93OSc8QeRh7cny + 9M+/AAAA//8DAKqjrJuQEgAA + headers: + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Wed, 13 Mar 2024 04:45:56 GMT + Transfer-Encoding: + - chunked + Vary: + - Origin,Accept-Encoding + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://api-v2.intrinio.com/etfs/SPY:US?api_key=MOCK_API_KEY + response: + body: + string: !!binary | + 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 + headers: + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Wed, 13 Mar 2024 04:45:56 GMT + Transfer-Encoding: + - chunked + Vary: + - Origin,Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_search_fetcher.yaml b/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_search_fetcher.yaml new file mode 100644 index 000000000000..7419e1bf064f --- /dev/null +++ b/openbb_platform/providers/intrinio/tests/record/http/test_intrinio_fetchers/test_intrinio_etf_search_fetcher.yaml @@ -0,0 +1,621 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://api-v2.intrinio.com/etfs?api_key=MOCK_API_KEY&exchange=BATS&page_size=10000 + response: + body: + string: !!binary | + H4sIAIMv8WUAA6S9WZPqyJYm+lewfOluq4pTmod6uggNDBKIebjdVqYItNkEQiJEQAxl/d+vuyAi + 5O5LhKN7Xk76yp2ZnztLax7++599fDxGm/j4z3/+v//n3/+JX//gv/rvf7brf/4Tn/6rGe12feOf + f/8njfYxonlZst5HaWMcPf09NsK/H8ftU5Q0MLnhTFz0B1+3T7s4R3+02WxO0fnPdrP9L4L4n9Mx + oufbp+v5XyE6bo/bFJ2nY9kQVaEnCrKCqMd4nSX//Gd6ShKE7v3pb5Ru4v/aF/+o1ZyM//m//14C + e86Mt+j8A3byMIrfG9Ki4WfpptE8HJK4YUfb5KMxifJN/MoiDhcA4nBBIg4XJGJJMyW5r0mmdjfi + 7vP6sNd+EPdO+bmx3MboNcM83m9P+8b4NY9e483HFT8LeQlBXlKQlyRk3VBkua1Lao1Hfszj9dsP + 5Obh9XRstLIkidDfaHTSc3x83cfpa2NwOGT56yndvn4wsFudAQsbEQnY6My+tNSUJKn00v9YPXPi + WcI/HNiFj8d89VHCvo/Rfwqxc+t0fM3QAfH16/b4J3p63WYpC3rcAUCPOyTocYcEbRiarCm6KBhl + 0H1h4isGD+hFZOTnzQ/o7fgveuljw1lv4kYwbnUawTZtzDL0FSbZI/oYGdjzGQB7PiNhz2ckbEVT + JENTJVUsw9aVieSJPLCj/nM/lUtvnf4p+Nr+QITtU8Pdvhfs8oTenYFsu8BLIyIBGZ1JyKYgicoQ + cbV8N1e/fDq9bENztZ1Hb+vsLW0EUYqkJBJxLyeIm+3AAeAGDgk3cCBuRp+iWn5h27IsTeV54f1j + L+0P2Beejr9wjuOn1yxvjLLXCGRoZzxicSMigRudwWeWZZ34Ci3b8BUe3Lt17DgCgDvdnuP8iDj4 + Jm+4HZcFjYgEaHQGQWsaAdpdad2FzAM629hvg5Lo+PoKiw+wibRJ+rpNo0aUrr8/w/dDdjzl7AW8 + CYvfmxDwvQnzMcqqJ+maQqAXV72ZycUqsyyKwh/0nTTNzhHmjSun2PGfbRpjrZO9xt/Sr/HQkBrL + vPGaNbpReoryj4YkFML3B3m32Wevg4jEfdCZupCqG/JSEQ2hzqe6n3/+3AVB/votsjzdppvja5Q3 + mslrnKeI7ZE6aoyz5AR+AP5kzIJHRAI8OlPaU5EV3TJEmZDoo642s3WeX6Pb3Nmzw88NnH2C0Ufr + uIEk+VUpMVgDB/hYEZHAis6UkDFFWRN1Qb//odeLQfOR0JaHZPvn42KfHC9PPtgmjXa8xrIx8MOq + TzbwAbsKEUnoPmVXCbKElKYqGMQz2/JsqPI98/N58G5xGlf76BPxRzNY9Vn0qxBAvwpJ9KsQNLHk + MpNwPvyb8jxcLaGv9Qv39Z1FoWFFeb5Fhsvla20e8m1CgA9HNgseEQnw6Ax9npos3W/SDrrvb8MB + B3iJB3wbAt+mwLdB8JJyvxnwriTDXsABXuYB34XAdynwXRC8qJl3g5fOc8EzOcArPOCHEPghBX4I + gVdN4X62eYycIOqXfLf8FF/FOvpIT0+vJ+xdDE6vxQ0KwMyHGo5WEOgVBXpFglZlTdVcXRbuf/Hu + OptJ+5KEDJ0FEodR8vq3FQGaP1xA/Lyg+HnRhkwXTTXvd9Z2H4lAiPA8z94ao/gY5+e40YoO21dk + qVys28JnoxGPWgGLGBEJxOhMSW4FmSqqLpqEuWKbmtjicnmE9F3Xy+866jUk8coOzSes1BvWFrEC + UpfuCbPG8UeUM1foNYEr9JrkFXpN6gqSoEu+rJrS3Y8uvBvrsAr9F2wWpQWhtCiUFv3QgimaoiDd + j3I2PwuBdvuNB+lD62+E0H6hvvHILQh+i4LfAh9ZNO7XkWcvE6Nl1SMn2dPuqUCODXIbwcJ87jxl + abb/aFwFI2QQjnqAukRE6h42dA/JlNS77/HRU3JjQ97DixFM5CKP4nOV4TrqeRBOj8LpUTgLSSIj + uOXvcmz13RWXE7TZjc7LDxJs8/SKXzVD7vIkfvqbZkmG+ON/n9B/S0Oe52OG8B0B/IB+QUQK/xDC + LwkygX9ktRSNyyIMm7HkJCT+8SF6irGzlmT5hSeu2G9yCWDPIiKFnrZnC/SGoN/P7Z7qCVqTTyA6 + r3/jPC4btyx8IGaIiBT8JfixKtL98HvJs7A834b/DZtDoANqHhEp+CsQvqzc/41uZo45KrE9Mp6e + kugDc3X/3xrjOEEec+H+oPORgDoJANcBEQmo6ExB1XRFaumSTITeTGlpW1wBltg3kxW/LXXanI6s + 5p96wCsjIgEdnUFjSqrhOASitZ6XzNfmzB41pv8a/6vh42j9A7JWGs7YY4DObEAUIiIBFJ1JoJoi + qvoCiZL7ge7Sx+HL7jZQP47W23QDgAWceESkwI4gsKKg3A92uY6WA6XEu0n0tBsh9dhors9R+ooM + vwtsbA1W+O9W02fDsZhYRo3PFBubkim0DE2+/4sbDfRHXYRcma9A1bywshvjv4U/zwJmY2yYSAGm + o2yF+2KoNeLHkRVkUcnms/Is2x2RZoy/5RsNMWDNUkwkIQaUWappqqx3Dd3U74aYz1QjzECInfQ1 + zvfxeosEbsPKUuBBA9Y8xUQKrQWiFWrI3JlsRCsVRGtvz9t1jECOXzEfs1BZEw4TKag2BFUV9Pud + rGdraWQKCNVD7hbm0gqgrODCRAooLbgKoJqg3Q901bPO7zDQn1zdNmasNQSCzdZhIoV0AP76mnj/ + r7+zQvHZApFOE2QXPIz/IrhVrMqmnTGRAjsFwRo14qSO5phLDQQ7i5JTXPnzs2k5TKRwziCculAj + czt676teAOJcwlI0YO1ETKQQLsGXVOX7fVLx2YvMkn3+I/bHF6M8bKiC0LBOf/5cY1dM5MpqhqyG + xUQSdDhiRb/UMgyDMLm6ak/pcplc87WW78CQbRXyh6vhRYKfQiJhSomEqQeB10yDCLf01P7S4MoO + jc6OoJXsxW4YZPkmQm5//BpZp22yjvMj0rznOMkOSPc2j9uoEUZP2z/ISY3fH7rRIWKcJMtqsk4S + JhJ3QWc604WMnaEky/frYFPtC4f1b9doRWm0ZrIrltUC1DEikmhbTRCtpN4fO3RmIy38Fa2zj/MN + NiSDKN/Fr8eKDLRlOWycDhNJ+E7AwFdreqSfuWk8P/8K/5QjjgHQAiIaESm0U+ixRVOsld7fp5+/ + oZ2O7UZ7u/l7FYetLD/gmECFSWS1AemIiOQl2kvoEoZuEEn/5UwMJ1whmBdRtQ7WrzfB3sgkj6Pj + Kf+4wJcfRKGxjKOcvUgHsO0QkbxIxwJ5RzHvV5g7dWaY89/uUBilaRGAwbG7Cr7vsNlnTKSw09nn + 4keQdaqCQR0NAy6BacnPa9Pg+xE64bghPKhVT8/GBzCRgh+CTy/VcKwWnhVFzd+QVwj0LgS2S4Ht + smCxiBT1GjmhwaNtDGvwuiT8W8V7+xCr+xSr+zCry+L9YvIjWYnLX6V8UUQyHTdGTmfCYh6xxUWY + SGIeOdCz6zJp0NiS6LtccqY76HrSrzaB+MXYCHxzs8njTbW4HEMKdkwp2DGsYNUadSLLvr5+m9Xg + HvFBruCeMcQ9Y4p7xjD3qNr9X6v35mSB+usVxpXSccqWt2AiCXg6BqWjWU59IVtYFJUFV11a0Hte + vYNJ9Gpb2I6f4v0jAliGbztsUgkTCfjoDFnDqqoT8HvhxOKrlRK0/XxQCuV8VXp1/xX+q/H1/nkW + rQt7gTHQQOZ3oPCJQ4VPHDp8gqu+NEfSaqSVso29lxYlXw+p0uNrvE0LMRMfEXs//W24p3RN4hwB + 6hQRSZwjSp3KgqgKqm4acvnFXT20Ch/wd+epNxr42n0M48aPOS5II+C7DvDMiEjAR2eIYRRZJquK + e24r4Koqfrf3muj8wHcnjVl8fL0UxX9nMYYILTJoko/SPQjwng/ErRCRAI/O1NsjK0Z2kBl2f0DQ + l9e7WP/BvUBQ8X+XMYQt68FCfl7D3aZR+rSNEjZC1F4CL4+IBHh0porTZFnQFsgYFu8G30t2s6yU + UrLyKF3HjNVIwez0gZgLIhIw0ZkuwBBMWZEE836YXW2XB6Vq+VmWIGxJUZx7ESvS+6/ZdaszAVxp + RCRhTyhX2pQMTQnQx3m/5eW9BcuDfN8Xea0QJYBDxaEWVRxqgcWh6IMUTOKDbM+9pcuV5n1bO6re + vAM9iXnqA5inPol56kOYdcMk7C3PkM1Csv1evNXrir51z4t3T2lMAYcee0o99hR8bF1VSW2vtlp8 + vlBzlgx7JV/I6i8bQZwkWfpVCN1J/+TR8SvxWJVj6nlAjgkRCfToTOeYNE2cGFKNaLhq2etZ6dNs + RfvHfBt9oR7FWH4cX7FBS2P1gZQjJhJYfTrlKMqSoImGWMNty7zzzumXueMcH5+yRjOJEWT00lES + vX+U616mRyzIi+oXZFqlSLIk288YBzX2yGJ5Au4EVPBgInknuoJH0UTZ8FRJuV/9zJpLO5DukzEB + NlsI2EETCPciIgEbnSGml02RkDB+r62aXM0ts2w/6+/uwP4QRB8UbiB6hIgUbjp6dMGNTML7tX3v + 5WUEplSrn7ufnVmrvD8AdCgiEsjRGbTKDZEUM4Lmjrn80cgU14H/Az/AphR2hI6vD9mfByuPC+ZG + 8iXIcCXjac9w+AAwUQakhTKg6+uKohHDqOF+6ntDXcX3vffg6TWjn3vQAlLZiEjibgGpbCTVddEs + P7fn9/UFF4M/fr6shyX/4SoUFw03Qz5DnD+MTimWJYcohRKGgzHgeCIiCXpMOZ6ybqrKUjNEwo+w + VTtUuHik/yKqvRKLN5PD36jRRCJji5taCsc+yNLXv8hJe2cxLwAjCxFJzAu6qKvgEOTc36+A8o0Q + rkulfz8+2rcKqvLTRh5goyAigRWdQT/NEAgbBftpKleS69nvW6u8BPi7lsRNMmTWIi94hNWlnwHR + w5EPWCeISEL2+7R+l1TJUIQaJRnP6VyJSmh5PsBxfHhlJd7YAQKfiEhAR2cwK6cppFs59s0Vl1c8 + WOfB3GY9nCJiNd5HSfIQbNdF2c4lzUy/+DgANDoikrCDFuTsiOiB7nd2dtEhAayUL+sELn22Ji2g + ugARCZzoTFseyB/rinW8G62f7tWS5TffHtfZfoJUSKmqnPriJq05BHJOgZxTj6nrkuAikPc/5jnN + wpfoB+Q2jHAlCbL3cIEzDuN8Ry1F4eEDxyutS9CyTwJfAqIYEUngS0oU4xJE3RWpCn5faq8ErpjI + cuY73RX08fnRGukPnEVGPsLTpb62whObuoDGRkQCOjpDVVy6qt0vMs4rW5RLWfyvSA7mhkb2B5nS + 8aEE9kihBeI3iEihZeM3ijDVBfl+A1r9WPd7i5tv/AWckHhh9obwV1+Dba/FROoaLvTohqgQldmu + Lcw1LnvDWS+7+zn78heUJLdci6pYbgGcMkSkgHvg++vG/Rn8gzyPykWKNLf0o+M6enkQCSVDPzZb + Bo+JFOYhiBl5XfcrxUFmino15mqggJuFiBTQEQDU1VW1RjVwcJDNNR9D2PGfOD1CRZZTFzCeEZGC + PQHfVxPu/ya7z8Ou+sLC/v4igwz9f5Ekq5J5bNk1JlKIVyBiqUa30oszOoclV5YwM2DDYgql8qZU + Km9Kp/IuhoUs1Aj2rr3UEUvFJkHRk3T6mOdbIDozXQKqGhFJeEtKVeOyNaMt6ub9akPpDsJ1qa7S + RU+4SxBEe3vMT4ei/Lcy7jJdQj/4kvrBl/QPriq6HCLEhDvtt4P+gitqp9iKKhC/epyukdU+z7J1 + Y5IdvBNrp80ngIBFRAIpOoPTcZBvd/e7zhZzZ17quwijp7hINRfWb2H5tqLjX/S2b8cGFrMU4lbT + Z3UZJpYR4zPFCSb6mtqGqhMlOsgYGoZcbuhZkfRyaoJ2QyfRFvl22yNTEtpqDlhbDRNJvAPaVru4 + oKJ2v7iKhbferjSKoxU9Zq8VCrZlAb8/JhLoLPr3v3SEaKJ6v2gKPw5vZqlqaxw9Ro1WkqF/y4OT + XqwbJvbQclzgERGRgInOrG8sOoagEd6aK/iTgMtbay48o4wVyho7wS81ZS0oT9yi8sQtKE8sGZqk + ioSxri0nWp9LGLz0PcfolrggQY6ElW/xgCE3ezodv/QA233TcltsNBATCcToTLfCqYI5F+u49Ymp + hi8lDdvKkJeJ5688xcWcr/+4lIbDFREtf8wW02AiARedqRFOpiErHjII7je4+l25q5fgzqLUedo1 + WkGrU+iEbF3kAisyf/iPsXgRkcCLznTmTzTMpSrUqLzvb5ZdZcHycWna1Cl53eIRWcjRQI9/POG5 + WUjTPeVxkXXN2Vv0bUAOIyJxC3SGht5oElmlZwvSOOAKV0kbaxbcHpwFXWX8Gh0SNqbZ6o+hS4yp + S4zhS4hlTr9cYsjVCr9eDGYecIkCf+svnjnUZKEuWQMNE0moS6bWSpGVmUr5cMtANxdcIjDfCPao + BPVbXd9W0oM5awBhIgEWnUElbYhkHe1iPFG4ipSszW63K4P9niL00w1XpBPC5ES4Qq0xW2mNaATa + MVVnXQwMGkmKQUTjZd8Ph1wWxS5/X71Q7b8TZGQeDwhx+sR+cJMRW2CNiQRKdAYblA3hfrGx9EVv + X4qctPCXdWZr6FozIF+HiQSyGZ2vuxiRhl4jpqMu9FAvKebWvFmRgkZ/BxC2iEhgQ2dKOWiyIhqi + YJJjijzJHnJVK6SfXdsqTwC4jkP7ms5hF1PRtoi4JqdaUfBtqOnRppoebabpEU8XkaeiSOb/lyvX + Fbl4cyUH+1mprfDL4y38x+/pYkTcDJo4Y0N9OzbVt2MzfTsXx9cQpPttX+9RUUdA+OYX4EzTjg01 + 7dhU047NNO1cYiOGqhDardu2fb6mHfszU99LbGPHp9fj09+4sXj4ruMqlITTdJ2Sx3Sd1gXbR7bl + sMYzJhJ3QWe2jksVVYMccbkwBXPEFf3LVunAB/u+7Oz0mOAOuuJGDfPXkiPb6rK6DxPJG3Rp3Vck + a0S5RpHuOZTD0fl+8ECy17YGbMoGE0nwA7DiVRLN+13scDAM30e3ucjO3hrdLEUS58o7ZI3djUIZ + G6pdt6nadZupXb+wk2bUqGk8y+/nyAHvMyG+ivEBx5B++RjGbN4PE0n04xD8GJQagaSZOHiPS+44 + n0iCaqdtqHbapmqnbaZ2+iJOFaFGKMHZNPeDkjwqJdW+Rr62TvnFXAH5qBBRxZCHy0XpFJxt+4Bs + QkTySj4lm0xdF/WFpJOlPrYwXvLpN2Qo7sPP/x/3qrzOnDUkMZG8zjwAr6PJMn0dmcvu1eTe+6wU + Sr09G+SLtZhPw2mxRjsmEuDRGYwF6dL9n8b8Q1yfgfhKcx1dA6zUj/Cj+xjsLqAhEJHE7gLeEXLk + VI3yRsdDm6/Jdti3mqV87mXo59e8VXSBUkKDRczWTmAihZiqnbiM/lSFGh165iJKs9Jr2/E+e8Lj + kZ4aYZZsn3AOmmFoJwC+T0QkUQZ09BKHgiaSQDpyuChF5yqctT56SgY4yLcZA+xws505O7IRE8kb + zOmRjRfOUMh+GcQZiwlXnELY9Gfm3TfArbWfuHefucSK9f0wkbzEimmuLS6hKSJ9iTmXFxM/hpeZ + lXepLqiLw4a6OGyqi8NmujiuuUadLB7r9XpamyvQ4sdv+vN7ieWzNNv8PeEIaJ5ssfUzwWPh8baD + UmsE/fgu0BSMiSR2uinYMDXJmGtCDZPB0M6Pftng2e5xLrTQPKQeKqIZ119CYoF3AHsBEUngHcpe + kFQcMtLNGp0RBzkPVZMH+I/vwoIGJA4iUqBpb+UCWq8x+gkZOUZ5Cvh4iz7Mht2ZtQb9n7k0RT56 + DWhNt8+WiGAiibdPlYgYkqmphiKQZXu2N1YNLu/qs/tovZWFeXTeHr/Gln339ABg2RpDTKTA+rT1 + awqGLwpkqMs2hqLJJc67zZG+TG59hkXm7Gsgf/WQPgSNzUxgIoV/Bn2KqlAj1H+Ohcfe2y3oV5mR + on/PEwJfeE7N45HdRGK7I8BGQUQS/KgJgdcF4345kn52X5Jy3L8oNytXmamNS5EZ+vfRRWa2O4N4 + ZUbxyoziFVxkJoSaKhAiWxWHXZPLNN/0DVP45MEMFMYhOJDwmFHCYwYUxiHMCjn7XVW8kcbnTrx4 + g1lpPHa12Cu0DLIP/2xfo8dLyxjNJZ024KAiInEFdAbln1YjI/shDpJ1WWiXRcnN1ju70weik4hI + Yu1PIHGiCCohTlzVNnpctpV8kFeyzfPcP1oGLHqxO2NAnCAiiX88A9/aEO8PzagL/awBZiHi729N + g/t7rNPHY8TOl0JKCTCjEJEEPAN6jtUpObQLh4OF0OYq/HyO1m/G4V47EArkQb2DNtU7aDO9gxcz + UJNrPPhsfbDKNTGc0E8JhRvoH7Sp/kGb6R+84jZrjEI2drvRKLkfN9k+aEPtgzbVPmgz7YNXs1us + MWx/NnJ0s/Te49Njkek4F3GHKH/M0u0nrNt7I4C3EZHAis6UehR1VZqoWo046WZoBFl5/Qujaood + Y0VRB6htfAvQNohIIEZnQNv4ikKuCFJm7opvkPpMXAYOUFZ7mzWYLjsb6rKzqS47m+myu/J0ndKf + YLYbLYE61d+Af1CwAW+MarKzmSa7K0vXWQjg9BLPAEYB3IYNtdnZUJudTbXZ2Uyb3TWrJJPJyJ7Y + l/kmfA+lXpjfnRSDUhlQ35pN9a3ZTN/alWXqRAh756aczVjodrfTbNjZBlcffC3+gxPA9sADMnmI + SGL22EyebNiGUmNlRzhUDKEUFLyuHbvOuIVqBO3RuMdiREQCIzqzCXSpKRvk2DFba2seF1+Eq5f1 + rtR+iet9tgfs1VxKx2mU4xZbLIOJBEp0hioZdcWosUmx2dw7d9sdYL+XDfV72VS/l830e11Z16ix + /ESJuuEa7JahUojV1tIYSnuOqbTnuCLtqdcozpVMz8zBgQUgZkhEjKFs55jKdo7hbKdo1NAq0qf5 + /nzTyZVuOLkTyLCbUIbdhDbsripcI6PDqtL1BK68wXoxeJ5teDBDZscEmACFiRRm0OxQqe4vVfS8 + EZcT8PLpZOubmJEovvHQS+ihl9RDL+GHNmXqof2+z5UZyzfC/uUmc3yDBl8a6LOzqT47G+yzQ6BV + kai5U3VNkLkMvNAZjFblXTOFAvkpYfuONcHh6ilklU4pq3RKW6WFMrFUWb0/sZSv0he5ZPNf2/ib + neuuyvEpx9K5qoffntpAQQEikoBtB9IrRp1BWunbbHhOfwBf63ftUx5hIVcEab7dcQYtFMWbUlG8 + KR3FK6p326JQtoH+sbzlxBty1WF+PM7nabkyqBykKetDBi7Q12NTfT0209dzCdGgF2Yivi0uATdr + zuK3kmkxzk64T+b7UW+sEbZnA0BTIyKBGJ2hNDRjJI/9ocWV69r0DSMoxR0vW7XsefMnRRRET3nG + wJ03AZsYEQm46Exx72WbFmKLMly89YavUmwTz1Q9uwn3duhu3gK8P0QkYbdGEGzNUImE+XKhjnpc + os3eSO9OVdpinuXJ+g0xCAsWGKOGiSRYeozahYllQWOYmC/sJSx89ZcqEaw1tse/xBfI5NCBMWo2 + OUXNpoeoXStCTJ1MD7mexpe5fd8Mfe/jJvRSX8Vt9FCFzpKq0FnCFTqySM7fwxdYcDHKPvUFAxz3 + VQar4i22okra/99D+crXcKBCWocqpHUqtocoeg2t6KWp3S3d4LtTYew1mm94k2AxXPV4vF0n4jQH + rADHRBL4AKhs0RxNq5E1ejPNUJZuAcdtFXF+jn4pcUGoWLcWEynoPRC6WSNc8DwYmMrhFvTvVt2b + sNkiLkykYDNz1wvYhnI/q4xE0XnRb8G+du/dBM3Kc0ykQNMzsy6gde1+//Yz370/Vy3Pbv3dJowY + d1rspkxEIxC26L2vRRucppBVyJLptvjy5P1FGvWrWm3sON1HOROOcWyHjZpjIoEUnVmopqVKlK9i + hD5fi+nw0/ATWN1cR+7byII+4nqtr6WHtLB2bIh1bYp1bZp1r8LaIJcyL8cjny//+Xk21fPt/rJt + 2phlCbD6gHp6B1iggonEBRx6gcqFS1RZJiJhujKR+NRltrHPA3j9+HfF4bftir/FYg8CBd1tskYK + JhLQ0RloI7KQ3Uo4BqHSHalcDL7QbNkDPkPg7YG6SYQHeG9EpEAD721aGjUYE7+3zaXdN9ZKNaq+ + ygIn3K7sAONAHHIaiEMPAyl4A/2PNFkFu+/2uKxA66PX06rknLtNk4h1Eh2ozsah6mwcps7mKkFE + lfgOdWlh9PgGrmihOSqF75BfG+Mk8m/LIx13ChhHiEjCndJdRoVPq5k1Bult+rNcuMkAYMLecSFu + pZgVkg2GoesK9fvbHt8ga8l7NEvF1VK6nmXIgBhnT9u4CEAXhWEsD3hAIRsmEmg9upDNEGVDC+U6 + q8DE8+NgfmYftWT9XHYSNKs+Lw+ILGIiCZmdLV+MNJdrVDpmctLbl9LcTrJDHknacCdjpzFquh3C + 3IczPI7fY4tjMZFAjc6Ud4hYQhQloU6SO1ppeSm6UWg1hCsI56PG+HR8jbZpEUn6CSKBwRknABYU + YSKBPKAXFEl4OXS9RvuDkTyuRhzIOXcUIXCATRdQRl1AW3WXGyhCjWFHeH6IUJ4fQqlqGvevajuw + AZmCiOQN7BmothWd8G+x2ja4aphejKFvehw/xDU28vXBVvwKHpt0wUTyDh5d6Fv8CugLuP9XePx8 + SXe3rY5SG/6vVl/gsZlFTKTwA234imcYJpn/lL1Q5UoOvG/e8/7v4z3KQ/OB+R5OAJSHYyIJnt0Z + Vcz3MMgWXW045zSh3h7n/k6u0qD0g7ezfPsJeI1Bm235wUQK+wp6eE2oMV/tsTtUBmkF30/TS0c0 + IYgqOD5k50FhIgk8nEMcrwo1to0JC7/3DrfCIbMK1wnZWZJEELPDgTUnGAP+AiKSVxjbkK+mGDXW + u5mL6C0DReclDDiJ8z3//hMEDRL9Y0r0j9uQ4NQJ++Yfy2sPuxKXq4Z+hzwsV+uH9uianfZx5QKD + 3d2+FzXloOkQTAA7HRHJO0woO11Hcl9ANhrp/tiyYttc/vLeeO/txIqPoMz815nB5S4P5gYryIRY + USbECjQhZEG+X/Q7m2YQVpnu/Sx/i1iQfSg41aeCU30gOIXcIcUk5btu+HODry3SyhRLKz8z7s67 + TO66uRvXGYSAHYyIBF50hnrzDE2u0TizmZllfQrMNS4G777iFCoyBqJ13Ahz5HnkOeB5hCNAnSIi + AR+dwXGfEpmixOM+Fd7hBdI795QhJ0U8z3LKCLIERpQlMIIsAdVTTZPM9Gjdts/lOCPoo3KjxM/W + HCvJMlxLtMFFA8xP8DP5Cxij5YyBFBsmEncZ0ym2S6u5Lpc7PP+x5srSbPNFPDdhQNzlp0meMGww + YFpWjrNznMfbDWsojIH+PUwk70L3713vIpJxubkZaiFX49B6MVBnpc/CTeL3L5U1GSwWxZo0dJHv + ZoU13mhEK9oxEDQak0GjMVP+Z+IlL6ZGmpZtqy1yAUdeylnd3AB+lew84EH0NHwYv0GOksT4+bSs + OQzlXamjZYb+9CnK1wVgPKwR2n6N/h7gSiEihZXexCSJSBvpskxYBK7aVW0uV+pxsXrTPssM/1rF + 8Hctg3XGkGE/pgz7MW3YX3le0Qkxir9fvu6Wz6Af6KW6wRtRnMvAeKCJ0hkHgF2DiCT0gI0/yupU + 08jP1R6rYZtLAyTR4/BcjuacnpLtz9CjiqDTtAVwOCISWNGZipMhPaspulpjCruw6b+V9+jRIYRr + suW3wMEUChxMqcDBFA4cqIpAhKNXstvqc9mO9kbSVrAfcgVe1rKMOJkGgH5FRBJ04EJOh6SSHVu4 + kZwvm9/fLJPHkhyfxUn2hKzZ67OLi0unxewiG90THlhxpKvxnFmHXeaBiQR2dGZmYemKY0gGWYnQ + lr0lXzXewerrIdf3CMesZ1BQdUYFVWcVQVVJvN+YnL0/evmARVzgbCL3Au+Nim5Ij3kTQIyIBGJ0 + Bs11atOLNhsLfJ2f+7eX1bwK9nXD+w3MLQhzi8LcgjHrMmFsaQufc6NuvhGcNWDzFpg95E9H6cct + 0B4E2qNAezBoTSU4Wp4r8oQro5V+dt+tKg9uilwi5FL0kFmI5Mot7BBbzym2ngNsjbGLZE2Wbg9H + Alc25vHz5XF3U5LY0Tb5KEz1/Bj/JlIWHUCGIyJxCXQGRYooEBYLFikrvtm8n46flrjma0vdtz1e + 3OZvhlcBw0W+zhKoiMNEAviSroi7bKvTBY1aIN035lwetTpKI7s8y+prKHrFGhhnZQGBaUQkYKIz + Zb2qCjIKRaFGYhF5P+cEiOneHK8CTVehhqtAs1VwYYpANN9IGnpbgespkcspJB8sD1wdg8p54m6z + w5p2mFhGi8/QL28I6v3qRPo850uqOAIHT5Arc8jSY8aaRm6zz4aVMZHE2Kfn31/GdRtkV4WrjrwZ + lzB+XquaVB7ZD7QL3R5Y6UIDK11qYKVbNbCyTveKvVe6iXoPZmZWpQvNqnSpWZVu1axKTSJUH55V + qXK5uPJ+bdulLnwXWcvFQAMLG0Gtv9tDhcHvWoDBj4kEXos2+GVRE0xJVqX7S9XU/TolOjhZqKDp + hkCw6gETKaR0v+YFqVKjaNTo2elwDyBFZn7cGOQISVq5z8q1Jqy0xUQS7oSWtqJqKtSsW+6FLrKT + mADcVpKdir2kh1OxQo5+2BagvjCRQNpi9mIXDysp2v0PK2nrVRADSItIxrHxBzlLnfRPAhZXuq2Q + HSKMiSTcsAPygUGmOnoTZcJXlRYlh2dTK2POkWSY5Ce8e+aUXoWEe/H0RtlrBfYJINIQkcQ+YUUa + XkGuS+SuSUX2+eoud5aglo35YsVkAfD4M2KxSGtQcO0W2wyEiQRcdGYHHitDVa0x5dp+iQ5CqWrm + VwkMjeZ0odGcLjWa060YzYlQ15ha9SZ3dQtgaCaoS0Td6dd22HpRTKRgBxBjqwrpNXX9kSVzGfFS + HqxmGoCdbFm5DRyQzIhIAQclsyqTnhMGzreMFHN1eQk5xNUVSs/2gM8QEUnA3gjka+KlORlkZYb9 + 5RB4ZBthwOG4dhwlENA2WwuIiSTQNt3jfxHNsnH/kNnd4O3lDAF1cFwc/QfR9/h3+4Rzd1GxIKbY + OH4ZlY/MUFjq2SOIP0YUf4xA/pCkGmJEHfTng18EHpyEdu0Jm1vBRBLrhG4RurCGVI4z84q8mbM/ + KLexwgaRDcwEw0QSKj0T7ApVriHmjF68O5dWxoVeJ8AJiKIbtohLXGWzKN0YP+k6FttTiIkEbnQm + cWumIgl9uVaBVLRyyt0/t0fyfmFm3tuxAEcKESnc4EjeWiv6DjPfi0oW3SVn7sa4awYXIuCl81gg + sz6fY7PRWUwkodpUdPaaM9fF+5/YDJSRX/7iflPcIGdAg0ldajCpWzWYVCM1IB5Myrcf4n3zvi63 + pbhZvj8lUcPNkm32PZO9QpW4bcB/QkQScpvyny678DS9XO+Kl2HJVsgVsJCUnmFCThR2QyKcFEcM + Qu1ZYZD7gJWEiCRyn3FQCjtaqzG7R7XDJOpzg656cB96cJ96cB92WGX9fpXY2+fxm8ING5bVrg+o + QESkUEMqsKkJ0v2PPXx7f0nKM8u+ooPFvrEb/DyAnndAPe+Aft5iW6JSJ0HibJp5uGC+vuvHN95H + edW+PNcFigkwkcRKlxNcvj1VI9vpXbm1XHFF7PuPL/JO+oUfyPXhLHDA0nfJHUf4DBpEpno/D48+ + 99L+o+qRv7vUq94Z2EuIiSRcei/h9Z11sqjWVdp9vuzC7iNJk0rGKHXWg3acOwGiBIhIYe6Aclkj + MyJYLg+54nDqx1qMqjaiXSIE5QpIK0qug2qh4HLHArwURCSugM5Q3YBuajL97DpXPmS/eo4It+o3 + TQ4MS3Kh0ZIuNVrSrRotKdWYG70X80Tz70FNTZV0oamSLjVV0oWnSk4loYarZY9GZniPyUQPlHSh + gZIuNVDSrRooKdWI3SqfuWnfnODjJtHra5zGzPge1wdGc2AiAdZnRnNcxvcYZBeeMkfeIl8Bz8vM + IyIzX2rQ3z7GOQ45xukWL3TP2G0Frm8BLIGIJGSLZonL5mCTlHs4WjfmitZt3nSnPBDnW7/4eKjI + Kb/42EWRlAvHY3wbEByISOK26SijiGx/QyHWRyPB4XZHfGVq8kE+vJUExwivVetnOeIQxCb5NmOG + cCMMgEeFiBRQ0KOSJP1+Bv4Q1WgV32AHsCCNgQ3UomEiCZuuRbvwhSaZTBQ34LL5N9JhXx4NzWAn + A3bFQItNVT2d63fYUnVMJO/QaYJ3EEWdvkOXS6d/npE5C5RouEkWFbmJUTXgASQ/BpT8GNAzQy7N + 0Sr5Mcrj0TLgCjJKGysYfVQ/+vDWvCfXH0ICZEgJkCEoQAyB3DbsCsuQr1D37UPeNX/H/G2cVmEH + bFREpLDTNuoFu0GuOMXY51zv/b4ZiuVtrAD28nbySuxsOQwmUtjpDdUX7Dq5odo22iKf8ZeLhrAv + jYEaIdY+b+O3n1zWf9hxVVbLnwC6HBFJyBNKl4umIsm+Ktfo3Rw975pBaR3Lt5oJok2cJIA6DJqA + G4CIBER0Bj1vybwfopfsR/k9pigzV9mF5iq71Fxlt2KusmrWyMKeo8TT3u7C/EEhBpQLNVLZrRqp + rBj3O+D7zVsacbePfq8zYYOOfWAkLSYSyPv0SNpru4hBqhTb6/dMLpXSTXvD9J4Hh4ZBu9AwaJca + Bu1WDYNWyMlgPbGv8NUdDaT+fG7fgR0Y8uoOgDnQmEhAH1TMgdZqTEjyz/NcKL14czFuuINgwDAE + ogHIggGJLBjQDCEqykKTaxQWLP0XpV9q5HbD5ndzB6wpQkimhZRMC2mZVoQJRppcI9xlD6RuVtrj + /C12fzrIxvHTKb/0wl36zapiHKELFG4gIgnehQs3tBoLHB6jF895LIHv2I7fmSwbI6fpN5zxpDlx + Gp3+DP1V4PQnLOARwBCISAIeDUANItboLujP1HxenraexzGupC3WpP/SCO+ObMACQkQCLTpDo1A1 + gRxx0hUky+CygPTntXhIAAZpJTFWymCrnjvqsy3YmEhi7c9BVlBrBFzy81mOymUDv4kucBK4C00C + d6lJ4C48CXwqCzWi+dHmuf9WXgZezPN1kZt6aXeHw/eTGeAtISIBE52BMb5NTRSYCKjEFbyY91e2 + /fKDFXmk6NfHdu811IwT8sQwYgr2FJh8hIkE7Ck9+UhA76ovNE24X7qh103Lo4RK3TzXfWJfxd9V + 44+g6UfU8CNm9tG1jYewgv+xlrOeaXBFLl4+nbfyPN+v8l/EFUX/5a8V4C5UAe5SFeBuRQW4LJDr + udrSKOBz9B4/X+LhJ4v7qvIui8+qxxR6TZapEa2MGR0hyEi6ERbPxDXmLb6nFpeCVGJpSGx8j4W8 + XR/sQfXBHlUf7MH1wa6i1ojYIkt5JJUsZbxerihbvLA4vaXQuzRp0o8+YlkFE0nUI3oynaoJavM6 + tLxkJY/VBRerDA/rNP7F0qx4d6bG2YNqnD2qxtmDa5ynyHK63xGMBi+7l5Ky8dC3uEfKcBw9/S23 + hZMqErT4vJbPOtqYSIBHZwq8ISrmXFdrVJ8grtlJZZkYPaHH/ZomER3/NlrZ27FyxrnXGrCqHRNJ + wANKtWsmeu62LpAjuG3Z9MdcaSDl3bKjkqlXbm388wcvKMaN9+h3aITJ6XuuyrdUp8uhPWCsvEdO + lffoofJFo+NS1YwamyIzKVd6BLu3HrP4yvPj2xwP1ZR6UE2pR9WUehU1pZpeYyFWL1fE51L1uRet + j2u8C/VaE1Y45Q/gckvPDgDJjogk2KAJWa6GLtwf9XB2/cHznJtbir8Ktinu5L3BMgHwpSIidYs+ + yDWqcL+3MN9py7TU/0GKmebTU3w8sm4D7mOHItaeEwCSHhEJ/OjMShpZIBcJ8drkyvnxcfRPDSEP + VWN5UDWWR1VjeXA11lSX9fvxC+kwE43y+2fHuNHOkAXz9rNoo0Kutx1AwiAigRadoQCqYkg1uGUp + vL2lFWgvX+c3b8MOvNcGFrpjIomZXuh+xWzWKIz1hgclmFVg/i6puGEytieAZEFEEvGEthovYWpd + vl+yzBbz9RzoIURC/Ds48prQeTv4g2wvAbsFEUnwS2hmrSbq5MJlXVtYNlc+tyn3DwejzlcJVFZ4 + UGWFR1VWeBWVFaqo3c/my+cwHXi14FMlFh5UYuFRJRZeRYmFpon3G+yxnWRnsx52stbCg2otPKrW + wquotVDkGi0DeSQO3kf/VCojPO/fil+jy6aOojgAD5YuW2M0//tAkBsTiTv4TJD7YvrK5v3iRgt3 + eu+XIBH8/kwmx4MyOR6VyfEqMjlIvt/PPC/2OjJquapUSseDUjoeldLxKlI6ilJjPuLn2ez2gZ72 + q9NRtfzJC4CJ9ZhIAqUn1l9iAipVODKShcWca6hHPDLPL7/sUIUfGkrleFAqx6NSOR6cyplqhn6/ + hPRlcVePUYB0jgelczwqnePB6ZypZqr3f6TN5TJ5Lm8J/jJarpoWC56HaxE8qFYHPsDeiEgi9in2 + xvNWhZGh11hFKa8Ob2bwg7h3ys9X5R/m8X5bnq6OLJxNEjf+pzcYeP7/YrED+60wkcRO77fSDSTS + 28jPuD9Cqq9TKyiF9ycPo/i9IV2H7hTzEB+RR3cZnHFdpsqCZrs7MJECTXd34C0ufdVU7/dF3zfD + YVIKYYziw+kxQbZi2gizBLt3R9Z9A1+WetiQjjyrgjkRBYmYeeXqoWVxlWYjuXcwgPKi4kv8rlGE + mXgGfXYz6rObgeVFkkZOntYWk16PKwG8z1ZST2QBS+q/NZZ4CeI36PFk1AnHVdjZMjpMpLADg4M1 + R9VrlNE1X4b7XqlLsNI2CfFGrodmst3gdbutZLvHMrD4OUpZC9haCZuAtYiIxK3QGbRWlBojecW5 + kslh1a0ulYxN5P1f+H57iPF23u8cbYgHk1XeBYrhhVQML6RjeJe7aEqNlfUvn45VHi9cmsP3NQmp + AuooAKQ5IhJQ0RkatKeqGhFuXJiC2efKCzya+vNLWvX2l1BLwVGcs/C9MRQOGFPhgDEdDrgEX8Q6 + VRGr3vvg7ZeBJ7AVAGZGPSgz6lGZUa8iM6qL4v0XSD+7qfVZ9ROgGyDLcR4jP/uV8wMeOwDTIyJ1 + A4DpZUGRyf1H9khVJ1z1QKIdrfoJBydRKxkr7tABYniISN6hA8bwxDqbqs19kErrKvjXGOQ0QV/z + dVA4qBHGY0CbISIJe0wbkQVsSRaISEfPWBouV77a6TsvmsPx9D8ReAY4MMgME0ng9CCz63vXaRxR + PvN92WQYR5vLAOGCPfbxeou/11aO/oI1xKY2ECFFRAItOoONUQa5jhGXBch8heChqvjV3h1YweDN + IG06o7TprJlArp0ikFOgesNZIHF9jItUUmTAICMe18ODjlPskv7H9Z1Bnp6xDV2IRuLvAKE7QxNJ + e1IMliO+5c/9hfbY5dql9pXOO+V5nD59fDUNU3doN4EZRphYvgU+A9cwRWoV1UoM5irXNXq+nPRK + Ecg2jkU3D4c8ftpewryFQB85HaZkq90EPkhMJBHTH+RlIKxq6PerofB9HpW3Fbej/PVPlq8vTcwQ + Z7RbI/YzxEQCIzpTryqi79DXBXIzeHfkiROuDKn0eX5cApFpuG72MuDjKWIbsREytm4WEyn4cN2s + phLwbUEa9/jqZs+Pw9HhB74dn16PT3/jRslUrNhfQqzkvvjdX/wOSvW2DRhjmEjc0KaNsYtNqUnS + /eavujON4YDncl9TCOtcivW6MJG61Aq8lKjUGI60kXITnjZ8FT/x+0PxJV+B4/qUhnN8xUKWds/b + 9oi1zjCRhD+irLPrdkpTuz/ykSvDQTFH/yvykZ2QWfCKH//LMSzmyGyhxFPbAdoHMZGA69Dtg0hq + qvpcFWo0HywG2qoHtPLSIh78RkjowFwnTCSh03OdLnt9EHTCGBuJ7eGSyxjTn5tBXvLRv+Xo+Olv + jv2Q49f8+Ar+dhzoxR3qxR06IlJIVUMQ7pf8C/3wDI0LhV8cWKDZdlw2O4mJJGQXWM+szAxBJjoQ + un3dFLleGlkJB2gpZcXWz99sBGivYptarNiGNisidaCLClEDiW0EjUubecn7rqhD/LKD35DhTgrA + r0k/UKlp2/FYRwkTSdQe5ShdWjlrNdqIzaWflUfFfXWKeXGa4QKZ5vqMCwawXcnUdrcdnw2hYiIJ + 16dCqNfWXkkgdK7fDvpLrvik8PHYf+TjlOB3PgG287ap7bxtaDsv3tOmk4PBMZ/oXFfIPoPHALgC + /JFehuBXzq1uO5B16VDWpQONY1c9zaDG9qM78M1D7H2qswHfz3C5wK8/xRT6KabUTzEFP1nNJAsL + 8DX4Op8M85CbpUjHt4T/bYZO2/XYPgxMJPCiMyjajRpedvrZFQ8lR4o1Xa4vW7AKRv5tijGGiwes + asNEArxXsapNImMbdsuaW1wFtIl+mCWl8F6xfugpKxeeXHfH0I/dWQI8jogEXnSmmUMwhaauKvfn + I9+6jrV7LkP92l/1lR27liOZv5abtKFykzZVbtJmyk0u26tko061bOoLsX8/eCCV2oZSqW0qldpm + UqkX8IpWo7mkGaZzufsD/rrz+WtGcDEtlkRos1EZTCQR2vQIP7zruSfWmR++GLzlSakA7McqLIKJ + 3+MlaCYej4CnREQCKDpDEkMTyLHWnjBud/m671/mwTKD0Jb28sG1de0xULCDiSRiumDnKuP0GtPD + tefZ6rFUxlAsQ7QS5G1enJxCUlSAXQKTRjCRALukJ41cVh8aSo2qro+eZZw/CU51EKeWpFlwSrdP + 20MxYQkvw2IgA1J4SQrhJS2Dix3ldDQRieruhM/Q3oTntCriUoJebAE/bs8V4aIlELXFRAo7HS4q + tLWkUgqkrXDafrK9kjSDBV+9Ass6fczz7Wtc2SvVXnqAD4+I5E28OXsTzZGlGv1dL5v4zaTWD9DX + eCiCuzj1VQzzqDCZlsDcREwkodNzE3Gnl9FUFZEI6Jp6yxK5vJzndbgflmIQJTukmVzTQedvkcKY + HssOIFMQkQTdASvSNalGQ3OqGeGwVARYZBSlS2kA8MzsK/eAwBsikoB7dOAN9y1aqqHc75UtxYHS + LZlJhfwbZaxo+R6BBn6hAbsDBBNJ2AG1BQRPk5YMUTDuL5h7/hilIuARkDnCX5ZPt5cLCPaCgr0A + l5dIIulU6mbo820QUhf6QYPCJjhefs9MoE4TWG+IiWX8+Ay6MTrVfTnsLVSu1P+m2WuGOxZ/0SRS + Jfo6zSkbNMdEEusUCJqLc5zRIoS4bWh8yWXNHjS1OYt1i9/z2JAESbxsbi6xCp6TDav9jtVm41WY + SFwCnaEJf7iDv3yJnrFUAy6GeYm7g8fHW5eQ7rsEq04xkboEpE6nok4WjOBL9Pm2xJ795Vty6xLy + fZdg27swkbpEC7yESjbw4kuEXPZteN4lQXjrEsp9l2BtMkykLmGDlzAUib7EkMsqmzn2W+7fuoR6 + 3yVYlYWJ1CUc8BIasQGquMSIK6d+DofpbnnrEtp9lwCkEyJSlwCkk+YgHXZ/hebLfpgr1i38+n34 + AU1gkdYZPkP4Fb1Ga3WQrowX8xZ+4z78bQh/m8LfBg3jOlnr6KVHGJYsfvM+/GyxAyZS+NlyB4xf + N+9//9weGOIt/LJwH/4uhL9L4e9C+EVJquWYrE3AgLvit+Onkkoo7E/QArKAVb2YSOIGV/V6smgQ + FpCtCZzLNjfLnR2nv4FXfgfP5hkxkQIP5BnVqWbqhA6zJVGZcylizxTfltWccwWv/g6eda0wkQJP + h2sK8IpMFvh4o5XucemugzR6Ocu/gdd+B8/G0zGRAs8MuirsOJUMh3QtX2tzsc3Q9yNx9ht4/Xfw + bKEpJlLgQxC8ITPgu1wKd2m8aCtgszYJ3vgd/BACP6TADyHwiGtEGnyPKxmQxX1xrvwG3vwdPNvS + hokUeGDAN5KSxGJw3uivr87WoKv4N06/CtnHrzEuDoCqwTrAhL8OOeCvA8z3kwxd1ZRy3EzSdVHU + +CaXvPeXzVL/6VfipdlsNlr+gBod28/Yeb2dlg98nohI4vaZz7PIwNTZadBfpEK/pI0uIz/s+Bwn + 2QEnR6+VVKR3/jMLpBhPRl8CaCHoUGNAOhVjQAyd/ExdURzyGffKZ74zSjf5ieeUapAfCj4HWbw1 + BgwxRCRRjwFDTJkZVMt1W29N5lxuurDwHy0oSZ3hTcSvW5w2gOECXUCYSMIFuoCQ/hcFiXjk5cpd + 8C2unn+Is3jDsvj48kWGFJ/88BFZtHZtAUZ/LAHqeTo25B3alHdos96hKBuOpJCOlbtqTfhc3Ed5 + 10xLwYbLvDWq9v5rtAM4XKtjT4EAAyKSwKcWFMTUBfP+z/fTnOsDoPSLRH1N91bN7enYbE0AopGg + oUJfQ1FIQ1JcLkcSl1L9NNfPS6CdzDlnyRm9b1EciD6C42mP5NH4NTokMVMb03GA7e2YSEB3gO3t + OLSmk+W0brD0NL7R4F173QMCOiTmr+01DGYbcJgQkcRsAw4TwqyRlV8Ys8pl+y68ZQDV8xSh18oy + tQ5UptahytQ6YJma5BqKRIA1unPV4GMO9MD7+BfmqB7viwABFjoiUqgBCx09sarK9BPrXPLjc7/v + Br+xdKm4upKp2xBTtymmbsNMTW/BRugNLvX58dgfNYGwDIH+WuKAE0/VVeIdpwNoUkQkL9ABNCm6 + gCQxz29yMc2HOOjqgJlOXCDAjRxFOMDBEhJn5nHVHXuFAAjtISJ5hQAI7aEryIJGX6HF1f3wqc6e + BeAjLaAPtsmX3etF6FrvhyS7lkB89XXm2fr0BBVFdBzArHRIq9JhfT4k4Q1VJCwbUQnckOsyH2tR + azoVl5nET3+LbP0B6aMYadRqcQksp8ZEEju9nPr6Syhkax7+JSyuTE+2sXOp5H6UivGtKH9Kog/G + JCYz4nAuueN22GJOTCRug85QJb6ikashVsZc5iu/W2iPuQ/kgq7f9J88On4tl2QRjwANgIgk4hGY + +NFFmXl/hSvxs1h5UQa4f1Rrcz9CmNHjj+JjdsqfAGHqAd+xR37GHvsVIzdQJjceSoYomXxrqQ6b + WT6v2qxVGMyvhczx8mgd/1iUoJXvAYPNMJG6AFwAIppklK+thB6XIyttLGsEzsZl4EMVFOQNoPi8 + R8XnPah6Qrfo0dSeIUhdrhvMxHj4WJqP99XiTGZqr0MrKiLDHjApFxNJ5Myy+csGdLVGpdPj54sw + rGpB/PGpvoe2ghWzHQ+YXI6JJGx6cvm1R0tSyN0GRmuocJkPC/1wGEIFT+8HpG0Re2OJ/zDO/ry+ + FbZPDK2D6niAI+KRjogHOSK6KhIBMlxboWhckl75zN/9Eq//LunJ6RwVgt6D3HOPcs892j2/Cnqd + 7LfFgp6vXHzZPQ/l0t7SL/f8MuPvuoPrp+asMP6JNX/0NQJgbj8mEtcI6Ln92BM354YhEdK/rcg9 + vjaVKO9quvHLNSoRA+4VIlKIGfeqQKwrKo2Yz501Z2GytlnEVeEQYjQqvKsegQQyPIhI3YTJ8CCl + 21Vk/f7M7Ke6Xr8xO/O+QzuBHzaoVXkdRAMw+mREHp2p8idNV6SmrpJ2sqF7rsnX2ZE/vwtAhftP + IehVxFcuT+8EY4hNxhSbjBk2KQKtSo1BNOesqUqlTzPI/mIeXp+Q6fWBDJkzA7HfBKQhIhIQ0Rkc + uakr9//+yHBx5oD7UYQHEFTkOTEYbcA6REQSo81ah5JpqSYZPNIW3kjnsmejlap7Je0eIDeODtTR + QCfAx4SIJNAJ9TFd5h9IdT4mTx7kaSnZ2Ant8Ed3h3H+J8v3MbsQHf85FikiEkjRGWpPE80a4xs/ + jTcr+9XsKC19ecVBdQa2CyRcEJGE7QIpF9MSZVUlOWEylLkkgTZrejut/Mph+AP14TJikkYaQg8c + Ug8cgg+MbOr7SzadjeIrcDc0+cbD02VKP23i0dW9naENGNWISFwBnaHGIlEWCTfSFoYhn3Uhd53l + rDw36KuPEd8iSbYb7BYE0dPfYtgU/ezAkr4OuaOvA6/oU0UyjoibGFdcgLGeiEqL476zFWQHCeh5 + jYHSe0wkAI/Z0vtCQcg1uGT3ttezkpP+43R9a2BVEG71ZnTGITsQCxNJzOES8LU8SZHuz9Jaw8fH + c2m/VoXH8m32/KxDvIx+gbfCdsYzQFgjInmPGVDbojmqKNxfU7TQ7Fm/KvDWjPPseIie4q8428WA + Zp8fGDjdIedNd+hx05cgm66Re3dEJfA43a40HMyqgBfDU3A+ogjuQGHBCcDjE5LFJ2xsASNWJTos + 6BlcYcGFrzyWB75e23mIMTs/dhwDGBAiE1KITCghcmnlkQSyjRi38oy5wvrd8+NMTRjAs8KDPTaa + weQB7+pqiNKDqF/6HX5pSEIQAf6eULVbE7p2q7iIK0vC/bJFPuSj7vD3O2gPBu8NgBzFhBwHj8/g + DUTpfiNl4Nh2t1S628RT6N6i81dErTEdNxvdscfqSvQ3WKiISEBFZ8DycyVJvj8n63j7ZUI0tV60 + zleE296i0zlGVn9FBGcGafcZpd1ntHa/qh5Tu589tEh9WwGIiTEKRbAAz+Fg4PpAhB4RSbg+E6HH + cA2xxsicpdhdKSkLtxgiU6wZOcJAoVD2jAplz9hQdvGuhnE/08pRrz+TAPvjko+v+vnH0M8/pn7+ + Mfzz11mJ0juPnLRUt/SlRH5+ezuOD6UmZhLuDFAiiEjCnVFq5NIBZQg1RoZHwtAys1twgeGVFGRA + jSAiBZlel1hA1gXpfsibWe5DZRrXBEwRBAAz2UugOHlJ1iYv2dJkhFJXlXJwRdIEVeRLX4w+90II + uINBlqfbdHN8LdTDz0afClsU2jPXofbMdZg9c9fKAV0lLH69L3t8raufL/HKAsLQxbimA7L6LxZ/ + E4nfiG1C7CyBoO2SjNkugbnKhi6ahD2ErA1kT3NWDUjrYZUFN8GCItvvsTYukAMcwo72QjQSMjtO + GXOISFTaSZpoSDqX0fkZ7MJZ6QNsjnqNzjGP4qRcIIAD/mmWZEBH3GoE2D+ISKBGZ3rktiQqQ43a + E7bSXCHgitHKiam9lTpUK+c1iAIO/efbW+Mmus0+y9+YWL4DPoPjJswaSx78JI5snQO+xAefrdHA + RAo+XaNRwNdU/X4R+PguOpLFAV/mg88KRkyk4NOi8fL6eo325t5zc6WVZjiFXif4to+KgUFXXSNK + N2GzoSdMpGBToSfNVCShLwo1LDvp2XT2JserK3yvzpawYyIFny5hvzCNItwfRJ2Lvceo1DcwyU/x + V1Dkq2Jh3RicXos7XCHT4gYhYmUkJlKwV1DAT9dqRFS75+A5LbmMGNix0calLvkRB5weLMsqSsJp + qIjOQkVEAio6Uy+si4I81VX5fgY5m7Gpl4RiN0R6fhOlF3O/iJ9C4bFuKwSAIiIBFJ1pzaMp4lDT + ycSP110GfL2P+zcxC5cA2k76J7mo9q/tvRWo2awPJlKomayPpipDUagxar05UJuDIQD4unngtE0u + 8w35ZsV3HWBdIiYSF3DodYmXZ5e0GgLEed5p+gG4QFFU/3CJpJajBZAx2A2AId+YSMAO6CHfV25R + yRZ4zC18jdfDQFF2CYC9Mr7UDYACbkwkgdIF3FegClWtgoDyVZ7bn8hhKdmApQRBNzoUgH/SxHSA + o9sP2MwLJhKY0RlKBkgGtXVVGC+WXG7CJpQzqaQQu+j/jo3wlB/wnj4rOhZFBV/VQgTg0AK+QkQk + AKMzlQwQRFV0DLoC2p1zTmjqLzStHHj85obrWLdCYAwO2ElA7PG6ZVMY3bADcAciksA7IHcYKjla + ypb1CV+2O8he4qUHAPe3++0rDijdSmR0Q8ARw0QSNOuIYZmnE9043LtJB4esFJ4pTTSefJXWXNi6 + Gy4e+tvdLt4i+0O4PcS4G0IWa0hZrCFtsV6HGKvq/WGR1crvqiXj49IPcrsDpDttsSkYTCRQojPU + AYLcsvun0IWOJQVRLa+GWnrYnUKcMqU4ZcpwSmHeqXoN7Zjas64nc2BnXRoWO8AdiEhhB/0Z1agR + 0lk+K3l3wIGd9WdY7IAzg4gUdtCZUTXt/loUzDOPPJMLWa+AxQ64BIhIYQddAvRR3v/u6n7/rJTe + /ReXAOFlv1Ef8AcQkcIM+gNanYU7/fnhPJd4MQcRABlyYaaUCzOtcGH0GkHWdL2Wcg1ikdHpeIyT + BH2TSGRfVkkR4y2bh3yblMH3miHbPIyJZfD4zPKI1JIVMtHoT1a9gCtKJfm9WV5yfcenxzNSPTg0 + 5WYZnoH6dMoBRdNrNdnoFCYScFv0Ni9D1FVpoqo1dr9m6Wiuv9d5a8BJ70FzUHvUHNQeOAdVaik6 + aWv3wpnvcRkp4dvbUk7uvgOJHFi626OW7vaYpbsX5JKh3M/kn/m7FZeqNr+qxImCi+9inGa+Pb5m + T8jWOt6uHO/12QQOohHX6FPpG1w2bg71OoNSX/J1FOzufvoHYA5tD5pD26Pm0PbAObRSSzXJfoOe + bk7GXMzTG+jrXsnCLX2q0/R0LNZ5/Y1wr1xpnSP96KMpKyIxkYCOztBnq5g1pHo8GlqHEup5uzNx + 5gPfRV4Qxog0j484JsarPrdnnI6CLVvfYgv2Ea2MGx2pWLgk6JIvGzXM827U7C3Laz1/llsQ+d6K + hiwfGKzgk4MVfHqwwmW3BTLxa+xvXHiP5U0i420epw27M2sN+g0/joroSVVjs+80WYsWEwm06EzB + lUwNmSaCSMzcWK66Ot/ozsR6yfsGyM6tKE2jxy3jWvoeYJNgIoHUo22Sy/IiRRLvZ4NkYPSeS2zg + 7PH39f+0AXnmd9hCZEQjoHWoMmTJFGVNFIUaDKqv8+Wh1P1b7dGov2pDH9KGPqUN/aqp4FqN8WDh + y7DvlT8v5PgWC3NbeYTbwq8uMPPG3Q6bk8ZEEmiHyklfCpRFucYctnwjLKVSPMRN4vevpvBit9nD + +CnDdimWCsUFyA7HS2EQHY3yewPW2MNE4h7oTKs/UzZ9XZXJyZxzQxtydfH0N0tPAfK+ovBvXyNo + qcY16jb0z+EPAcmBiMQ10Bkcr6Eo1DWknsd1Db1rhNqqBusDutyHdLlP6XIf1OXyEpeE3s1Rj4tV + rpU46hpYWzQ6T1m6fcKMZOURHjtEv/YA2PKAiSRUesuDrJuqQiWW8HbC2VDjm4kweJFfBJZpfpIJ + 14jUL7wyBCY6YCKBfghPdFANciKnGyyWBhevRNmuuZch9Lc5/ddZ3QgqO78HE6n7gLO6pTp1Uvk+ + ufQCEUOIxlHyWkyKQS6ydd3FeUmPMIjHPsDqiEggRmdo4pBq1ilBy/c7v9TNc9Ge/ukd9wV6yL1k + eXy6YFuRMZHAiM6QHjUM837T6X3zLjklmejHG5xfwglIJt1EDeQhp/XQN5kBc08xkbjJjJ57qkqK + ZviaoJAJB603m3PF74efxltS1lfl7oOfYvObNwGLWRFU4PudkSMs8Rm6jyqQpUp2S2vbXIXQzkbJ + yyrre2NEOdlD3aZyBZo/m7IFuZhI3oFeT6SKhiLidCwpg2RZ07juMJDmh3lJgkrpeobHmvnbP3Gj + H59ecXM+1ITjL12AhxCRwIvOtLcmG1ooCsb9cfKBFqbnUvnMdeHJTyqwmSTZE7hSJGg22akNmFgG + i89Q4bkqGIQb0Z6onsT1uM8fI6s86T3MtkimW/kWzxHwssO1EavCoAyaHpsqxkQStEeliotMRFOT + yNY8V1n25lxRt7dVuO6VQp0B+ijzJzyy4TE6HqN1ZeNu0AzY5BomkngDcEOxpNXYEGFlu2jf/Ic7 + KouvwYAesW4bJpKgR3BcVjHuBy19ns3e7T2/JfERIAUPFpYGzQnrxmMiCXwCb3LVSTMdb3IdcXnG + 3dm7Onzjf3JGzgVNoN4RE0ncdMXj9cFN/X5N/xyKc6e81+LSOhEgHf/xP46NJtI5HwjJsVGU9Nw0 + FAOouiegqnsCprrnIkcMtUZHL/4aZ0v2a7Rw81Xr7/ZwHQDGAG2xJf2YSAJttcBvUa1V0n/2V6Ws + TrGRqH86x3G5WgN+VKAQExNJrHQh5mUhkS6o91urK+1tVV71dAsr24WAoLCaDxMpvA6E11Dl+992 + fhAsr2Rdu9v8+HrZ8IUNovf3YirW06VRbwsM0Qlshw0AYSIBGZ3ZkLYx0mTz/hAQEjP5nGiWLwoe + 7Hh/OMYfpSAluEE+sH0Ir0/h9WdQTFUxpPvxzvbrvbljv7Offu+kGCUJWJ+BHbJZD0wkwYZAZ7re + NZQa2V/1Y72OwEGp12ouPFQJ25i/fHhOk430YCIBHJ0ht9eQySmdc2Qozbicdunl0LRKY8WCbbr+ + c0qKPsc4v9ae01BdILOEiQRUl84sXUYpaKJ6fyjkRXtR30spvUqt0fF+UxodNpmEaATyDt3ofdEY + Wg1OHiiyn5aKXoIISYvvAXNFCgm9eBofM+SQ0wxy/ZdjkxSP/KFjg0GnzwZjMZG8TJ8KxhqmgffA + yjUmKi185XnNNpsW4cxfWhwDH8Dqk1B9en1W0d+IjA1ys7HWUvpc5a3WZjcKgV4Q9UEUaoUxAyiM + GVBhzKAqjEmN/lvOpbbAlc9bRIapbgDu/+kgmiO5iAgRE8sJBsD6dEwkIA/o9emXp0e4qeaQlhpy + +S27gZRKJU+2GM8CN+gFgzYg+BCRRNgegdKkTkfpygz75eU7wHtiSwN+zglgbiAiCXbiAM+5FAX1 + /pkAYW4Z4fkm2Gtg+AYPTAChh4gUaEjsuSI1QdRbTrwx3wjUniJGt9mWjDVVYGejSZhIYe+AosOU + VZp/+1wjcUbPjrG3/mEskDDPgG3WQQgMicNEAmRID4m7GvhKjZWjfUV03vMffL/3zxQONwF61GK7 + ZzCRAI3OUPeMWqdtU9j04/Kqlp+RHEGMYLMxl5EHSAZEJBF6lGS4rorUNGIIhGH5syVXoGg/M96N + Ujnf5GGE9Jm0uOq57VOeHbM/rw072ibfQw9p6GMXiHEhIgEdndlwkdxX9RrzToZvmVjuOu6d8vO1 + qPYr2fWdofi5A4LA7HpANLboFhMp7PTcE0OR5bZu1Jh7MrKlx7eyf/LkJH/jNP1AJnT8589ldeS1 + EWW0PTLTkoIxsE8DE0nE9D6N66B4Ykod72vvd/tyS9KXfLi2oo9Pj8f4Olbvagz971cS8ZgNMGMi + iXg8Bt0UuUahZyClaXmWod9ufqV/xq/Y4JlET6+F21okh5gXBmabYCKJl55ucnlhpPdq7DJ/nJ+H + zzx4hwBYtooWEymwQ5Ad5BoWBZ4IfJ7fAItE8zdeBi2Qa8BEEi2da7hElhVDJzScrdo9mSvf+baX + D+WCFQZyMzn8jRBDx1A0fDyDxNuMEm8zQLxJTVGt4WVvnt8HOVCRUMRo8bCSIMNmPJJy8BCkYDJl + C0IwkUCMzlADvWySLoipzOUelwuiBvtgUHavr3JiliWn/ffApu+4xnWIGeQ/zYDRoZhI4J/Ro0Ov + AqPOxuf1/Dzf+b9Bv9qe0/SpGIwUbdO4Ii+IwAFWKCJSN/DAG9QZbCK89zKrlDxpRfvHfBtd1F8x + tb4YoIWtpYKb/ma4exDuRAmgAQwBNYAhYAYwiLIkaKJu1lgsmOqDpVLyUqqrOO14X9TRbp9o1P1m + n408Y2IZNT6DxddijdFIb/v9LimlJH5KbvrRcR29FBuOeMrc+1CZe58qc+9XlbnLxLiOosydL2bQ + X2jLbslpqYzmQfGBPhTD61MxvH5FDE8VdHLPgdTW+EZqZbK5FErzO4vpHHgeZuPnr1rJdh+xG7L6 + zoRNAGEiiXhCJYAkUzJ0X6pTXj1fNqNmCewtO7WP/oFky0iSvguMycVEArRLj8m9Gqi6cr8xsn/c + n89gd9JtrgZKKPtQCWWfKqHsVzUUEO1JRUNByFdakIpiECg1bkB1KPWhroI+1VXQr+oq0LUaQws+ + xEFcCjpWDHIstxPQ/DKwAMyISGBGZ8iPVDSdiH+4fSNc8o3dTnPfAXt+Lk/+UPHkQPFhHyo+7FPF + h/2KRgJNVIkoHm4kmHAlB5JBvNqty4LlVn65n51jPEaOff4ZIGMQkQQ/gxvEjBpV7tKnud+VjMVr + NhEH9apGad4eFNCf2qz1iInEFdCZsl10wZRCQ1Cpispxn3Mw80iQBAO8R1U1GQLBJuswkUI6A5GK + NUZeoMdeewsQJOcYhv7UgV7XoV7XgV/XoBbUodc1+WprdknzeQgC/wmjMVCB6XyYSEKlp/NdoWpk + z3p3JPV8LkZQF/q7DjP0D1Q4vI7AsGY3JlKIabO7QCxRTRu22Vd6XPpG+cxz/zfEYLoZYYE42Kc4 + mE43XwDLgsAA5ptuMfrcr/cwGwfb9c0HDqAHDqgHDsAHVgRToPHyDbl4+XT87DbeiucNoOcNqOcN + wOdVBXIxJ4bLt07U2uxUUiR/KZKfPaLQ4tn+dMQmXDCRhDtyILi6oJFwx+5c5PrgkBtglycYl163 + 8Blh2TCGZMOYkg1jUDZogs68LN8Qn3SuSOXg6Xe4Gic38yPSy7OO3WneDFf3ZzYbMcNEAjo6Q+Fq + vc6UfHX1sjYHBGpn8R1k54PMhqAwkYIMRtiNOnPnl/bzfFgKJxSFSn6W7beIi6MP7Il/zzs5Ymcc + chEHUH3VgKqvGlTUVxmCcr/DtVyHybK0h5V/ogVgiCITE4CPiAR8dAYHFIg1Fj8YL5Gj15rTB8Nn + 51pgIgUfnmsh1QhjJ5YmxC8c8Jm5FjB8drQFJlLwwdEWilmjl/48X+cDgwM+M9oChs9KGUyk4IPT + LRRDvr9KfSVp0kvJBbvtwFwhM59sC4iRYCIFG/ZfTOP+wOVGsHv9UhCq6YfjxuCrNPmUI4+FXW5B + o3ambCwKEwnU6ExPBRU1aSjrpFmykpZel0sbbWaGNupWQL8Giy8+GBLp3jZKWXd94AE1WphIIPfo + Kq0rck0kdyQuw+WSKyEiLHwlBOMMvYbYKOa5t/LTOi42h1Y1ew06fo/FjogEdnRmQw26h8R7jTzZ + h3xufpa/0Ov07uuwAhEPK+DYjzWA9mMNqP1Yg4r9WJpI7sntLsa6xGUXPn+MzOAGfIkfPptFw0QK + PrPmF8NXTZkwvlaCJOlcXkO0eRaE317/l9TUIBiw7i8mktAHTGoKQfd0lWyYwi+vcO10nH+Iz2dg + 9zwB/UvKVCAfNgGeGZKzXfAZRK4YDM/wxTJHZ1WwShbv4HA6MrtQoDapwbjF+j6YSOBFZzDVqmjk + AIPZ/LJinqdC2On99tLj7WfVApfBuAMoIEQkYXeYudTFM8uCQD8z3+Tyz0ztrqq0UDFP+1cdBC2L + GFDLIgbMsoirJDfIwCvWQT0uzv48j8L+5y3gP8zCcQXg40RE6gr0cPvLFUyVCNcvh+JlFyWH/5lK + yuIXlrm19Gcw86csbkQkcKMzyDOSxAgViy8V9Rn0nN9YnerCrLrAAJAtiEheYADLFk0W6QvYXPaL + 9Gnm3scvF7ikqypwQ4niAZUoHgCT+gvcIjnqAOP2uGRiHnWf30sy8dLz3Ty9Zodtkr1+D4MsjMdi + wi+Qog+bDss0mFjGjs9g47cg3u/dJe+aM9hD/gWR3GGyJEy6OITSxSGVLg4r0sWGTs486Ko9ha++ + Q97JzZF0P/4H9NNsTsdX8gpT1u7FRPIKU3pTySXJY5A7r3pqf9niCyRu4rQcv/8eMwGtM78mTIqK + eYZ5ZmykDhNJ+DMqUnedOqHLhJZyhYnL19Z7lobqqDSwE5ntx4ukD5GH0YrYdrywOWfVKSaSQOcr + 1kY3mqJC7lZ0F8KEb6QbEo1JAIj0EL1rUXLnTsZOKSMVvz8Q69mZa1hATgoTiWtYdE6qEDSOYpDh + RnfVDwyua+w+kvcEEJDkNdjMDw3eAZgFEUnwDrNLvgCvmxoN3uXy8ewsHg1LxQeVZdOScP1M3fgx + p1P4oeWyxZCYSIJ36d7qonJaEWrEMea+NI/n9+AGKg9Cq8taY5hIwu7Sq7sK2JKg3h8xnY205JmG + HWZ4MEOyzRoWMsKQbGF5g1X8IZmsD+lcPVJBitI0VPP+Ul5NWnYD7563ZUrpQwuoP8ZEEjNdf3x5 + Wa3O0qb+JtQiwO/8/grRBZqbTR5vqnqZQigQHVKB6JAJRF+/QEVT6S+wx5VYWURz2wbEB6Euv2fq + MJjZuh9EIxGHLGB9JpukyFgJssjXINnfLI3HW/LuuwL1x6lgYAM+BCaSwGkf4vrUKmnK4qf2uRT7 + YTMbzG8pHOFBbSzzoja5gzwkBvUEeu0J9dwT4L0RalOVaNR8c2bDj4PQ43pvBi9QR42JJF66jvqK + VxMVGm/IpVLyfNjrgcOff7MA7fipqJchLmE7bA4RE4lLoDM4MVQRiNinr80EvlXEzx8jPwBjn1dr + kGvyZuiwGTlEI6A7C8iqUmVieZZlmpIecJkjB9EahbWeH9TsrgNodkQk7oDOYHGeSNpUPd8eLrm+ + 1MU888pfKlHcfv0FAsT7yXfrcLDFPXS4HW19egLWnoedFhuHxkTiIujMVqIqnqGQM3ZsXfYnXMa4 + 2Z2vyyVv15a/VrbfZ2vMMVVx87DD1rchGokW6lFt67pYo+HI7M0DcET0b1wD2VVQRWdIVXSGFRWd + qkCWL7Xn3pLP45eT7L1ZKl8q7JZunKbbYidS/Poa4+0mhdtGv3bXYsfVYCKJ2HJBI0vS7jdgX+a7 + Wd6sAvs1G/ercIWB6wL6ExFJuC5dH1bA1evMo5sPPMFb1uIPql42hOplQ6peNqyolzVEMi9ha23N + 5TKz4lRvWt79F+ie0piCD/H2lOLtKcjbumKQYUS1ZbtcoWfro/eolcxb5xynr+UAbogciKePa48S + PRgh9IGtIZhIgPbprSGXhK0oSOSAsZUke1wxW3nkPa/LH2S+TS8TEQrIP/5Ecx0dirkal72fcBwx + 9EdANAgRyUuMPFqfSqq6RC9/fywuDFemFFbi/6l74sQ/ARgfEUn8E6bousAv19g6H77ruxRc3fLb + R8s6dAHQyIGJBPiAaeS4NJ8Y5SpaZIb12rrIZUueo946Bldq3rzBQxB9UOgB/kdECv0SRC/WYB0r + 0HK1Wefpv4rGCfz9AZumw0QCPzqDClUnZWZX0Nw51+s/Lg1tAK7U/O0SQK1LCFXsh1TFflhRsa+b + 1Oozv6+vuCzJT3VtlKtYqc30YR4/jOI/SF5ibXt7Yks4AkzhEWkJj6DZaq4qkuF0PHaBzxCWPs35 + rpQ+wtO+ZRu7HekrtncZiH3gkRGRBNmnHvmy+Rb9luQ8lqC14htskT97pl/yOa7zdd+itDEejMnR + Sf8TGwT/iwE+brGFXJhIAEdnMNEi15igtNbU7OWZE/OVnyHYbAEXJlKwhyBsSa8xZlRRn5s6J+wi + KQSBZucvYyIFeg6CVmp0g3vJe7Azefnj4lBAsAFvGhEp2AsQtlFjpsE+91/8sv7HNvql6/F7JV6h + 8a+jDcCo4hhKSoyppMSYaZS5eBaKdP9j+5Y+i0uJT36pPY4Pr6zuGTtA1AsRyQs4dNTrkoRTyZkj + vbFv8dWb79LHXnkTK8UyeJnALVYBesMxkcTM9IZfWEXX7n/0l1W6C9+r4SIF08j+P+a+rTlxJVn3 + rzjW644VR/fLo0CADRIISQiJiBMnhFHT2IAwpjF27P3fd5UEuC4pLDT9cOZhzVJO98RXRVVWXr/8 + Vfw3H5oIuoDziYQMWt75xGi1BuWULS/9mI5+2lxYT3chPd1l9HQX1NOKZjYod1Y993j8AWuVooPc + 5IBxkwPATcZgdf3+2sOjPd14gx/AVj8mXZ40CQsZuCxpUgm3yWAwZ21r/R8UXEFwDjIAeAFfOo5k + NNpHMATRRBsPvtQPAaikaaXrcmBm6XxZ7+/Z4QbZthcAPNBYSONmeaAVTTAFSxIELtFaj5l4EY/8 + OYCeevtqrwAIiSMhswI2JF6sQBZMJlGV9MN6lUyz7bxffRHdfJEVPIE3tLILaWWX0courJXVBm2v + 3ueuNwCSgue+tdrbDcQdArqdDX9D260w0Uy83XEt58t1dPu12tAjthvW0y6kp11GT7uwnqaqf2vu + 9W4ZWSMgTXUBuv5seNYhFe4yKtzlMoV481VBZ3JYyUColf7pLDR/0Kqx+dW63IV0ucvochfW5UYD + WsSTvX0dTGtArnoroYw9wxjmcYxh58spmg3odOKR6XyygMN9tl2UFXo/lOaFUGleyJTmhXBpniEY + VGJwJqitqNa1HH8ZneMt1NSMOw4z0CyNhTRmrlm6wCwyXfNJEtqtWra0Ffc+ovg2Zne1gBFDb03I + vDUh+9aUiCWBnvaJEdcrwRPf1jOT4OIiqH5w2q9s42ShToZAhg8JKajoG6T2aXLl3lr7D3n3jbI9 + zzNcg7xa/GG4OC79Gt6fQ1nHAR/pCdBLiIX0CthewmJIX9/QGlDNLy1H2byyJ2OapevD7+A3aPRN + gZqCKV1SMGVJ+so7p9Cd6F21161XUeCK45HgfqM81/9tH9q4i2T/ea1ZRw8MOhqH1XydXcbvrni6 + +XF7xKdwsJBcBP5mgmQSek8kVRKpFI7bdtV+rTdlpEQdGRgGS3Cf/FgNMYaqIcZMNcSYq4aQ0f4L + XU1poKWPA2HgEf2Ofo5c2N+r9fphWEAW7LCD9h1tO55jhut9qjLaYxtgCsZCGjvLFKzrpqTFsqDc + HyvbpVY6UOrvOJvrG0O5vjGT6xtzub5yt1VVv99gjbWeuyMMVmJmItLRl2P+/b7AMxLHwCszph+Z + MfvGnAckKhr1LiZTu6wT+9nUHo09ieB1v1RstNIU7WwrffDTw4+T7sYOQKqJhTR0llSz5CQUBf1+ + Fe4mmUOmha+wEeh2bdDQdofMfoecO4ZBK4Jy/ynZzFqKtKl/rrls3hjK5o2ZbN6Yy+adD7Yh3g/Z + f9nsaqlwb58h4Ht+LvDYA6JkWEhh9tgo2VlryyZlO2GtXa8886VjfOT7+nsNxlDHgcenZbCQwo6+ + gf2eGLJ2/7nurRcjmYi4fweBz76v9fycrQuPYHHtDIRYB8ehxYd/sZCCjr5BggChwVhBe3fqb+37 + oQOFSOMQKPDGQho8W+BdgtdNowE5vSdmwrYBeKZKBoHiiwWwkEEOVMnIiaGL95uCyq5zdEByttvI + gVTvOBwBGhEJafAjsGZTlIz7465fR3+vAWS431PLcH3s7d7d8cQCtnxC9+7ib5AQV6Zn07dtRzZr + uTov0fZkE/yg1zGNF7QgadF4EvHeLxbSYCO2m1HUVNkx1AbXUppGrVdidPBYxmGbf4OsGPhpPRdB + HT8/gGGccTTiCzCwkIKLvpnsuSAb2kCj9vaOfoAtcSLQbm4PcUmWfmFOh+mrxnGPj/dhIYUVffO0 + vMajLkt0gZqgmVGth2Yez3q9HwCTMTN4yuE4dvnpEFhIg3efQPASTRKLwU9rHeLN8mNPjnyCwPvI + q0T/QK89fzxiH7BHkJBG7bPBpwK1Zkgc6rhW2YL/tdl4d2x5iE539RJCaAkhs4QQXIIu0mlSvISk + VrulvZQGJhHa6axff+cIHXYJUtyUmK5rFBv7bYBwAQtJ8PiboQEwdF0UDUm5PwOpyceOQEQrfaSu + j6vs4xop6a5OBW82dMh9u8sfciyk4KJvhnq6GJCjSw1y6lY0ehkSlYwXK9DH/+fL71556/n3KsPR + qQtHV9UCImgBEbOA6ImzB2XDNigqmrpG1Ve+XQOtL1xboo/gb/n3xu8AjJRYSCHusIyUZRO3wVjf + uIm7Xu/L9qu/3gFZM5q0tBJzl7f+sJDG3GWtv7Lx3KD7ozDmca0ydOnruPUJrQLQ87qrBfbeFRwZ + vB6darpev9PjLRMspBfSA+h69ZZm0GG3KAr1ehybS8VqDaEmjHx/WCLlWGr0znsxHAGtZ8c7bT54 + aphDA0wYUHuyItEzYH29J9fKtKL9d0hykenqfZFvzoMEyGODuQvZ0InfCfgQLBbSkAMmBGsiRagn + ukAbgUk4lqa1tnr8ZZyOXyBmvnEYhs3H1rCQgc1O4cKwY0lkn/2x1671+uyW0fYVuJ7nDp2qe9lz + +CgPFlJg0Td4L02d0yVBrcYodX7qzwlDG8/3wE/9v5envkJXu0983AELKbToG6DIaalKg97mxdtJ + HhFhy7PBMdo+tNEFRL4Lz8jmj9rAg4KEFEj0zQZH8ERSQxLvfxFPy9NL56fp8ki54azNr1Wxu9Td + Y/HbwPlFQhq/zZzfcry8JtC8OHi8vFzr/H76pkyyCLfS/fM6/Xy/2HjIkbFX7+m8pGXphEMGM7Tn + NrPnNrvnmq4ItiELVF3AOAi7Si31dtxrPbIM42rTnbXzMPv4hWP0/8fPgnxd+GRzPIn3yrnFbT2Q + qcZCehlsptrQJEPwDYPmkx2oeijUeiWNNzkj50WF2Sa96o38M11DmRt/lAAvOhLSWBPmRUcWk652 + lCYpBEM7iTIB08+WGWbo85AyvlDIXIcEVRjX3iOfMsNCCjT6Zn1fXJOtKdL9xt7S2r/siLwk8Zq0 + W6MOTSV3TUle8XOPizfho5dYSC9gwnYjFm+ioQhUvqwneI/1uN6Hb8fc2v/DqsHgkCIIiyIU/939 + eVbhZXcff26CFrACJKRWgL6hxKrYZKhH3315eSFC9Ff/Jvh8P6CjfsCjacCeYT8AiECwkMbKEoGU + zo2qNGgT2nnZ21qu3OjzpQyQcfp63fBy9znoAfCwIyENPWhB2yw14XqcDbxorlVCL9u0KOA/npQA + OikBc1IC8KQYonY/ccXnfD/XidDJuUEF39EVR3HjB3wJPJLR4JgC+LIFRRFk6h7OtLZWrwdrKdg9 + m59aegZYSf6NcPAVaFjIgO1DaHVZUVm09diPDHmaZx3g4oXp6cFaHNPt4ZaxF1rAm46EFGj0DUYW + xAaBkIEajSXC2Lu2ErZzvk3ZnziAbkBCCh76BnWD0cDME45+sif1GI5uzDlcEdAahYUUrohtjhIE + XRdiSZXvv/j5PmqdMuJQ4mjM9xBrZGoW4RnsmRavNIc4gRymhHGYEtZhKq16TTXv/6E/xFf9RGTk + qJKmIk73WJTdsEgDa8gjxUISKf4Gy5qUBko19XfWnuCEunh11jrbr9LtQy9dp6fPh/b+c3fIHzrP + +TbfcM9YYIW8WYmFNOxwBDl5qqo3KGYfLQZHglj8EqNj+C2vhZA/kM8FEPlcwJDPBRz5XJkjV0T9 + /pfA35gDj6j4LWo3O9vfZXX7NVAEa66g7fAcblhIwUXfQPzZRzfwftXwkeznLzK/34H7ZDcNjAZ2 + xIdfsJBaBfoGA6PIhLh7FVE87WvE6+amqy2uHcPua1U2K+gAraxYSKHssK2sZaxfNemp912j62r1 + CsjSzTAlz0fn6ft4UGWnP/Aro7/Ih+WwkMb/5LIqRTVMSxIa1BnK9nwtWnWg387Ror/H91tiIYN8 + DCEXBe1+5C+GNOgLdZDfIp9Ff4tv4MZCBncE4ZabDLnQtsehl1bgZvhmb5UsBx1g+BAW0sjZ4UMl + cmR03o/ck2x/SFhwt0cUXOtteOAeoBCRkAbugUMKkCl3v/4+GXNjTBTT3vUAQeRLAUS+FDDkSwFH + vlQ+QZLZIHJgxunUIJwRInJAZhTLFX3PKSJ6xJhaOTaWEHQf+UIALKSX9MgWAhSBalGh4+u24jx2 + a+WnW5+DVg7H12+t68fFAHMZsJBeDDuX4bwYlRnFhBbzWCtquYhHkQMnOK4BzHPD3lVRMQtjmBC5 + hT1awMKQkFoY+gYjPoJBZ0HiWKmXzH7rn9YfhAUX4DjmR3p4/n1lawZDJsGjDcG1Gbg2Nx9D1/VY + a6Kjvtz5bMg77WXrJL4N/5Y/wA+MEsFjApg7SEgDT9hsU+Ejy4ZOFQ1gH1mplQnJs7WfEz4nJpW4 + zMZq75EMN4fgCAqvVPuQ5dBnLIc+azmUlo+oaA0qu/LcyAhH79zWhDylUuugF+FC73mOw7KQHcBW + c2hTzWEttaJhQRON+0/GUtq/msTlhJjrgtUabTamrAOI6gIn4gsusZBGHHEsk4pkaLJEnwldSMLH + WmdCWuTjHhFJu+vxYuh2AohuJ2DodgKObufsOmkNrLTlh3+Sq+7j9yVktxroBGYagbk+4DOhi0QT + AqK7p9TrZfE+dwMTrA6gB7xcHCdcowadEheYaoqFNHh2qum5JMA0qIRZFIWaVyv5NLWsjyjh9vnx + yXsIkP+MfKcU997gHecR85G1gK5LC9iytJLQ0BDl+wtx8y932CFOBHUPkTK+FbpEOPi+DyxkwLIc + b+gKmi1NVKh3XdfGvl0r4YHedc0BVMf1YOBOMg4q0FONhTRUtqe6rLGQNPoUd6WBLNV6qZHXnAtA + ach3vS1SbtjF+OYBhjcaGL2JhQx6lteqQK/INA+wbU/lYa07mI9U8VXhTrGb7zGHKDrG+zKI4eYp + /5y4I+A9QUIa8gim5pSFBuQ5U/m1T3TWuPnv/SVCMUyPHMChBewpElIA0TcYI5YauJobVekXw6Ga + PB0Q3VkA0Z0FDN1ZwNGdle+HjNZx/x57as8j9jg+lPYPUbNFzZi+UawVDD3gRiIhDd5jbqQky4IW + q4LWIIXQX78kt8FjzXGpdsZjqDnIgP2MhAzkHgRZFhrQ471OtQ8z/xHyufQdRAydEI85IR47t6pA + rAgNpm6qW80jD7mPS1vKcRRXLwuTybnZfokNVM9qc6C9NhCRQEIKNPoGIhI9UWgQ3ETuvGEA9VnU + JmPm5M2fDdpsHN1/5mOyHqSkPUZJe7ySxjTiyNxg+S8G9Qigsp2Zd4jOvGFnFNDAC/u/Io7sJYC1 + gYQ05oSxN3QDPSqPstBgfO942nNHRHrn8iKW8cCifbO1xqojOHyuebwQMUDAEAMEHDEAfgi1jm42 + mJfQPy1ab8ObeM8KowowoDJCeog6/oYAK4JMHYqB4s16tULgkTVsOf2bqEudUQUaOMkhE8sM2Vhm + CVoWFAb0WKg3ukxVk70+ugkasy/cPB6QpxIyrkrIcxYVx8NocJyFz/luRhh4xWhnO/+DrHsHua0s + SRTVGRGida2eAXcrhEynkDGdQtZ0Kic9I6+IbpGQFbseC/HydbcYk7aql6JTjWc87LP0HfeeBocs + 22XbwiYZ0og9wBdHQhqxx/jiRYmfo+i06lMlUX2sZZ+aVj4SXm8emNKsunlkgFocLKShs7U45yOj + qw36NjVrZxNp43Cfbt9/5fsNcg13O0z/8xvn1licE2iLJ8wWT9gtlkzJ0B25Sc2QKSf99IXf3euu + /pjMiSy+HB8LKcgR1CioddBrfj/kzmnozoiCPiJ3cwb/r3g638noKa4qbgrQ/wYAf4pp4E9cAZFh + io+iIN5vgHxtFlYCjtH4BkuEpStxx0A8CQlp3HECBDumokwrjq5kdoVazSfL11M+IsC30818j+MG + eAW/8zVyZ2BivACaeBgwEw8DbuKhKEuCJkrU9KN/Wqbetuu1qo+n+uyDMFELgp9rqB+r6cIjY8CG + VodPqWIhCRZ/Q/5io9LxwZc6JYn8Lvsapqt12XzHQXziLxwW0hCfHGg/DU2iH46eMNNqBTni6Wgk + Eb//NblyiZWTb8h3RoV5Q0JoDmPIzGEMuTmM+A3Re5pMjwQeGsbAq2UpHYVI2BLdDt/t3JLwX2WZ + 1BV7kQMyb49tCFtAQzoWUstoQQ3pUluSG7Arzb/eFq3bMSai1SDMnn9v83XO11+H7Ue+gQMLKeTo + GwoyqchWpU6P1n8c1Aqo7zepfyRoDEKk5fIVzrCs8z8Ldowkm4EL24AKwUIaNKtCVE3U9KGq0iMZ + +/o08GupPPsrX5xIdrN9tikwp7sVtvDIho4qMy9sA3MOsJCGzs45KGdK6xpNzGYbQ9+oVfiZi4Ls + AgkM4mBcwzc3a5BCqDkzZJozw6rmTLFJd+nHTEmJ551X3EAIJOz0+LYCLKRgom9QbyPf/G6Y3lgw + +wTL+3Uuarmd591UOaBdoPYFCymgXbb2pRyDqhoSdf+6SaLUa6nrjGfjAVFG8qMCVB+66zyv1H9d + SP91Gf3XrdB/SgNCzTfffZueftrugolD4vccyHpiIY2WzXue99xkSG6TWKw3Z1zL50mfbLGzut2O + //DfD2Fn2HPQv53z9xUXr+cALyUSUqDRN6845KGuNeiKRuZpxyKeGIJui0wGfOeWzw5BuFofKri3 + wido55+YnX/idr6g3xIFel6dLs/6Ya3T7p8M3VtDp/285Xb2C/ntOEaZH7LnS1UjOugSnngY5sWB + R1ejyP98A4eGNYXMsKYQHNYkJ6rSYP61M5a9ARCXqri018GYVd1XoRPyww6wkFoB+gZjPrJxf2Qt + E2x1SqygqCgNf5+bfs4/DFBVGroWcHKQkEKKvqHaCklvgPRFsCOdeHf4XDQ6+T9lokMoEx0ymegQ + zkT3VEGncngDSXSUWvbtV+73IiLa4OaHdfb50M3zYiQ9XG8Tul0+zIqFNNZum8VqyvJUE0TakRS7 + sVjLFPSt7Us6gLGetfpot0P24Z8tSFiJEPHBVixkYHOTrwrYcoN6XdPZR/oCRnxhioXZcxAMvkII + CxmsLohValD3r+7dkT+EsX5nnivRAkYUEjJoAwitodMR4d5UF5N6ldyWoSmEJXXxgNvpdpvOV/wB + GA34HhAspGCib9ABlkTqUen3pu6wVrWH96YMjkQNcdGj6+bbfJev8TFNkVYYrVfLyzeH2gEeDySk + UTvM41F264pUU3fdzvnTXLCJtCIubBtmp0Mv25Z0xwVk9BRmPI1j6NuAm4iEFFr0DebNVb1B3nxt + eQOLPwXhfrUFqhxDP+SjYFhIAwwT8BDIpHmElNfQl8JaURDPOr32wSFyCOcOE+0erqWCMAtfGAAs + fFhIAQ8gFj6pLWoNuMpw8Xv2AmE+15GGgWNVmwyBww+2wEIar/MIGT26qDYweuTF64ZQt4M/++M5 + tFh44H8232DD7H3N9YUiNHwUHQsZyEwUvcx36lqDooNkH+17Ue1jAbAEhgHAEoiFNOYKlkBTvv9Y + CMuhKBHRjW67S9LqsnsaWgA+JKTwoW9GfZmaZEzl0pD+jmO0W3G3VvLn41P+UBiQNHdGNV4gbsH0 + roZc72qJVxFEGq/vav1axs2i9/bSIoq2w/zP8+/3Q77NHiZrdGjPkf4Kl28SAJiRkMKMvlnMoqqj + PW5ARDu1Tq01cW6D1Wa3Xv36LAPPXrrHO3v1MVi4CaDIaPaJkCOfkAzDHOqmcX/2pP8aRT7RfPsd + KD9H3sDsQwhlH0Im+xBWZB90w7zfAusf59EM9CPadvBQFslYF8Lfx+Shvc8WK66yLkwAfnAspHFz + /OBFSathGPdbuSNzu1aI3q6KSWnlMSai4xxJ7gSK8U+YGP+Ei/GfZxoLTLRWHShOrXDLbD99M3+e + 78rhh9pdJ1C764Rpd51w7a7nMW+6xNDADGf1aGDG26FlgmS/Py0BosefQPT4E4Yef8LR45/npMq0 + yna0SJjWMpGyeSu3f564xy8CavqaQE1fE6bpa8I1fZVrUCSVnrfn2ONZrch/5+Ol5e6a/BCAxTeB + BsBPmAHwk4oB8LJAM8bgAfCPtfwVsaPqKhgEu7kGGjkQ8JowAa9J1XRyhgQYTye360UIpnpv596/ + ++zEggk0sWDCTCyYVE0nZzip8HTyXi34iTRydaXJ4eGo6ScQNf2EoaafVA2a1ukROc5g6NSzupK3 + sSfO714BO2h6AnW+TJjOl0nFoGnJlO63Z14ExxC9JlsPVV5PoMrrCVN5PakaNK0xD5mgdWe1zo/a + Gw4SsckiAL9iMgK687GQWsMIHjRtSHSQr+cMDanWCRrM9cxq8gjAIwMm0NjVCTN2dVI1dlUxKRWK + x65KtRplpa+jnwAT8y4BYRE3J10LnjtvyBV5mGar5W/OnEPY+LoSLGQWwNSVlGXDClP3gMuG9VoG + xdsy6/SAJprWPk9xw759o1mZWwHQq4yF9ArYXuWicGBiUKw2/7SS2WBaL+AyXCZ9cloX0d5b1O+Q + VQ9s9mkSuHwQCwtpyC4TxDo37qp0ML6rOL5QK/v0tX/dvwDNVnA7ELfNQH05FjKY+apc3G3FDIbX + lVBq1TKeO0vlZXhzZAC50ZOi3A4Ick5CB9hxJKTQo2+oukSTyUENmHlVCmqaOm+2QrbF8hWB0unB + ybfLW/WAE6gecMLUA04q6gHxWJW7X6tl1NEEqr7k4imWerFePeAEqgecMPWAE7geMMGU5eSee1LX + qWflDOOtR0ZmLu54WSuKI8tVHJuRBXBsYiEJGH+DoVvDoJnbRKfl1wIsmGk5IfC7z22JTPVFUU5S + 6JLbCjBqA64IFlKw26wrYkqiKQqa2aBedLMZD9ZESBzX82dLPCZovdqUxXU0wk6Pt3exkEKIvqFa + I8nUqcTIwDMHWj1KPGn05urAxmImldXbn9WimsIm6jr8u4iFFGT0zW+qrCLfiC6Habf9oB7V7ULU + lDcYMqnoOLTAg4KFNFruQSnQakx2F6ONar3iy9fXkZJXoL1NboTAAHety9y1LnvXSsSqYHCI61XO + xdOFpUN3rXyzLz1W32qah82/gljIwI4g2IpgSizssF5zRLY4mtMq2DQZEw13zKtgLKThjlkelwKu + LmjcLo9rmafLVmucmlVwyaJ9GmzEx22xkAYbWRBYg6J/LcF6tayiD3OmOMSRKKkrWqs8/L3P0mrC + 4OjJ55PSWEjBRd8QaYWuNpha9SkuOjOQlAA/yO5qcfM5Rn+GT/ljIY035lL+uDxflukbF+iDmjNn + 4q3U24K9BfWsCPSngCP8RFsR+Bu0IgyTUsSeYidiPdWW9GTlx1FVt/pPImfCB8qxkAKOvnmTU+rK + Br3fhuf49WZxpKP56ysRLY/+JSkVpvl+XRoWLjrUyCwqFAc2itrpfo5bxHA70AoqfIqgwqeIKXyK + uMKnstZZ0rT7863IxTJIS87vxA/RyHGtOP42mqdZ9rr+vJ6eytvqWrwRjYUMesaIlgVRFVRdl+hy + 50cpsutNuZhtjnOihOTKv39tgfw7OEuKfUNpMFszXb7sPr7gXf5u/6m9zQAnR8RwckQcJ0e5zYYs + 0IFZQdeCWpU6n/5UXPPkx9EqOyAJB3IIKMIhrQeHLvfKGGbXEGlbFJM5tWrZolFP8HSiWfC77Q6g + C4lGQI4NCymIIzbHVnbbidSzXfdpGSgtsgX92kTTCYf/hf/xjizmLSbrPuQPh98ZPDc76ozDkR+6 + RaOpc2k0LWr8qOWNAUUypvXImFEjRbNmW5Zp4iRN6CVarWco30Rvb8d/YCeLTtwXTOTcTxL0gHuJ + hBRq9A05WbqkUgGErtpXu7UMv5fBtCe5AOw20ty/cPEzzjOf/u2css3uALuHIZBtw0IKechm25Dr + JUiihm7l3YfJlfWPzgwAXezzJlussI/4M2y+5gALGdgcF5FkCrouG/fH6GfIxhlqAOwi6PFvqQtB + qBOgiRcLKagTtokX77DcloUGs2eWH68bkr4sWu0Pf94fpm6bOcvXsmAW8vSJrz7AQgoy+gaK+HuG + wrhfotp1a7m3A0deuwRbBMWJeEDAL3M0yybktOBRvlZis2HUaQuwSLCQXAT+hsKoqindv++e9+aI + KYx/lfvZMV//gaHaQ963wUIKKvqGoGqicX+1R+ekfoyJTPH3RPiq8tVpp8OfCSykMKJviIpVlBrc + OCF2WmQf2y2+z/rkpVOIvHTKkJdOq8hLdWZMpeI8OrVMvc5SsYZwQoBbzI8rABhLpwxj6bSKsdSk + bydegVsrEPmlRtqO+DmuRsAUx3Ie0IV0snSR7d9/r3Zs/+wU6P2d0q2/U7bzF7/p0lSRBSob7Cmm + K9fr/E5ebZ94Z6xfv8qS3NLLOYOtYCOdOjafwcZCCjL6Zva4mPcjUs8irsN7tOVafmXntfVma+Ap + sfaH1a/V86qgIT1k6/VqmWGin5+0IFRQOGUKCqdcQeFZCyry/arFT0YuWQ1kxcFD5z0/FKVjZSV3 + 1byB6aQHgEVCCiz65tKNihIrZoMRP8LnXJ2DQRNc9VY+6nVr36YJMP8MCyn0CTv/7Fz7ptNdY17s + 98Na5zySh1uXiFBRzG2X010me6/zc2qOT4iherKYqSeLK8YnyGaDAeaJOE9NsAiFXA45xZxpeefK + +uKWxefgsZBaA/qGCsGR59lgLO5LNLOn/8EagGKsuAWU32MhvQqo/F5OdINMONStB410U2/9J6tg + mm9jiHwgZsgHYpB8QE4Mw7w/UdlZaL4Ddg/XXAJQmBK3gIJ3LKRXARW8o1Uoxv3HSX9J+j5RHHSO + XrRWh+ccj7moiLXErZBP+mAhDTTkkz6Gic59g8p89dU0yF7nyxhrdmJuO9++/8H81Pbq/XmfFb4I + Mu29HAe/1qucWgVvc8aUxRmzPkgxzlqjiKZq4t/PPvKtds9xqVI5NqRybEbl2LDKQX71/WdkpCiR + QLCTdffp9nWNiZpOu3yLTEtsNtjpges5QSh4JwkLGahsp7Oq6LKnUG9W3RfXUrzM/wvPFVQ7HEO1 + wzFTOxxztcPFgzXRjQasToJqbQdg0eftQwPpeBvS8Taj4+0KHa8pDaYtHXVr+NYAPKvabUi124xq + t2HVrgt6g2iMORCt/H7kkEa3IY1uMxrdrmhhEoX7jZztzFcXYNvVucGVxz1GhwVZ0Oy2j/kqBCyk + kY/Z6rxi2zWhgUuupVNrD9ZH3t72CvgBBD9g4AcgfFFoQH5iSb70QbTofUc9qIC1YIcd9EodMzyj + po3Z5CofWRsIxWMhvQSu3UU3JS2WBPV+sywdreWe8fMj29lm+2XVowpgphGzqYPiUTWEBqMUnOnp + ZBPeII5otNb56fTQ9zA/B64LwgWd3IR08d/LJEAoqBp3AMp0LKSXwVKmC6ZumG1DNxukGz1jWpTf + /rDx3dUWvV3ovX2v2HzAKqNtMnYIebn5RgNP5DhoDSLCAG781kI9LjHU4xIzPS4xPNhooskNKhzQ + fRnYHz//BOcZjG3kx1f8BnxrcEw1BseP4G+gN5hhsHgbpJnzM+in7QJ53/sbB4cPjcRUYCR+AkFr + DcIi+sLyPsbUwWnP8+x8eoLL2TmfkfPRuXQ5f3eJVllpT0CgBAvp1bCBknNYQdLuf7c6WpbPW7cv + Qo3FgEX+8RMwhRQL6dWwU0jPq9EbvAGq76eDzV+41pARCnV9xUzXV8x1fZ1XIzYgsJmL6U7afq/m + WksT9B4C5B9mmPGIvC3QEIq4D1zpPn2n+2yvf8nlqjZgv7Ss0WY/rou5cnRG3OeDzEhGo2abpErU + inL/LcjtzmZx/BvnhrX/oYa7mGm4i7mGu/OsIKkBT/FA83u9v7MUuvkuhprvYqb5Luaa78pXzVCU + +w2Lk5lMW0TtR/UDgQtCzlTd33yI8Fsx4NcwoFYwAN8KVb/fyMBhn8X+Z/yXkrKq542vuqGLD9nS + wzNkpcFIBemozNX8L5wervMxhjofY6bzMeY6H883QVfuX0vsqLs3IoNxDg+2O11qcB1E3BC7HhD8 + QUIarAeNwekqmsDOolfCWuVY8xfFF6y/sPtQ82MMNT/GTPNjXDV2Rlbu9+ZfotHbm/cXlgPFJqA2 + yJhpg4y5NsjzajT9/tV0TnO19/Lzbb4GcYNDultnVZear4GOqQroOIAutS6Y97/J/dTYZR9/4XeA + rTyolTNmWjljrpXz/C40iRINY00d3pr7UpgVhb+Dix+utTzMXGD2zgePgOOMhPQ6HrlZY7ijU5Rp + WnPc0WnUKn8YLj2VrPOuXkwFMQ6CBASLkJDBDXWi9mRm7gTGbdZrihfn6UfvnzsCXgWXa1ViIIQS + AyGTGAjhxIAiNIi2L95OsnhXhJfAD7kHIRSjDpkYdVgRo9YbTDNOZf30smm6AtZQDaFAdcgEqsOK + HKTQwPM82tNNljSED70IIRStDplodViRf5SF+1fQetO9OZGwqXoRvrtr4adgwsOeUKAnoH0nN+Di + FmJHORHaBumU7SG+FiK3zrNm4dKfeBIARxwJabABc8RLClfNpMuVbEEzZ7VqeY+GMbIM8KBsn9Pd + Dp0M8pRQrxq3AEDLICGzAFDLaKbZIDA3eN2NiKfXet7/KYqTrOfD6piVhH03IUcj4F4iIQUZfTO0 + XIYma9hqvj/1JZnpQCW6P2978EAVfhwBdmZEm5kROIRK1cz7oySfu4FGdneVA5DgOvunmK2/iyN+ + aB2S0WCZkXW4/k50NKYrURsb/bhWNa+zHmUDYoe/ky2X0oVaKZakFfIKDwtJ8PgbSrGoQoM5kseZ + I4vETbwYknTt9Pkg189NJ1BuOmFy0wmcm+5qaoO3Z/ClLsjZN9aZJa+ok72M8Mm2K6RjnDy9FFRD + nmLSCXi3Fgsp7OibOUJIeQvo0SGt339aSTTV+rXaMrSW2NoBJj34S9wM6yRQWCdhwjpJVVinCX3p + yT72yVRpfexcUCGBggoJE1RIKoIKqi7ffwW2X31RI0/Ofo+8Cj87j5dHrz2gEROP9/aQjALpMf6e + oEg6Otu6fn/gY6A5+43y/zfGt5OhWP0mhwB0QhPICU0YJzSpckIl4/7ylql/3M6JBcDmqyjQ4MF0 + /8wChipgIQkef4POj9LAddi39rMxochn6fMreuHTcihEEcJYvR+y7eHbYmXPy6zT5nccCynQ6JsJ + kRnoPz2xSXvUUYkWQ6Iz46cxcVxjd9VDOnuK+HwtFlJLQd8cUYymuJJQk9bs/yLg2enw/3bpMiv/ + 4P/8LwAAAP//AwB/DDBENX4CAA== + headers: + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Wed, 13 Mar 2024 04:45:55 GMT + Transfer-Encoding: + - chunked + Vary: + - Origin,Accept-Encoding + status: + code: 200 + message: OK +version: 1 diff --git a/openbb_platform/providers/intrinio/tests/test_intrinio_fetchers.py b/openbb_platform/providers/intrinio/tests/test_intrinio_fetchers.py index 3ebc5bf4a3d7..0092ff2afc30 100644 --- a/openbb_platform/providers/intrinio/tests/test_intrinio_fetchers.py +++ b/openbb_platform/providers/intrinio/tests/test_intrinio_fetchers.py @@ -13,6 +13,8 @@ from openbb_intrinio.models.equity_info import IntrinioEquityInfoFetcher from openbb_intrinio.models.equity_quote import IntrinioEquityQuoteFetcher from openbb_intrinio.models.equity_search import IntrinioEquitySearchFetcher +from openbb_intrinio.models.etf_info import IntrinioEtfInfoFetcher +from openbb_intrinio.models.etf_search import IntrinioEtfSearchFetcher from openbb_intrinio.models.financial_ratios import IntrinioFinancialRatiosFetcher from openbb_intrinio.models.fred_series import IntrinioFredSeriesFetcher from openbb_intrinio.models.historical_attributes import ( @@ -362,3 +364,21 @@ def test_intrinio_reported_financials_fetcher(credentials=test_credentials): fetcher = IntrinioReportedFinancialsFetcher() result = fetcher.test(params, credentials) assert result is None + + +@pytest.mark.record_http +def test_intrinio_etf_search_fetcher(credentials=test_credentials): + params = {"query": "factor", "exchange": "bats"} + + fetcher = IntrinioEtfSearchFetcher() + result = fetcher.test(params, credentials) + assert result is None + + +@pytest.mark.record_http +def test_intrinio_etf_info_fetcher(credentials=test_credentials): + params = {"symbol": "DJIA,SPY,GOVT"} + + fetcher = IntrinioEtfInfoFetcher() + result = fetcher.test(params, credentials) + assert result is None diff --git a/openbb_terminal/core/models/system_model.py b/openbb_terminal/core/models/system_model.py index 10db4d0c8112..744c1e3143f2 100644 --- a/openbb_terminal/core/models/system_model.py +++ b/openbb_terminal/core/models/system_model.py @@ -28,7 +28,7 @@ class SystemModel(BaseModel): PLATFORM: str = str(platform.platform()) # OpenBB section - VERSION: str = "3.2.4" + VERSION: str = "3.2.5" # Logging section LOGGING_APP_ID: str = "REPLACE_ME" diff --git a/openbb_terminal/reports/templates/equity.ipynb b/openbb_terminal/reports/templates/equity.ipynb index da126a6ce775..bb144bab6dac 100644 --- a/openbb_terminal/reports/templates/equity.ipynb +++ b/openbb_terminal/reports/templates/equity.ipynb @@ -214,7 +214,7 @@ "metadata": {}, "outputs": [], "source": [ - "tables = openbb.stocks.news(symbol)\n", + "tables = openbb.news(symbol)\n", "\n", "for table in tables:\n", " if not isinstance(table, pd.DataFrame):\n", diff --git a/openbb_terminal/terminal_controller.py b/openbb_terminal/terminal_controller.py index 45d200146ba4..698057e18da3 100644 --- a/openbb_terminal/terminal_controller.py +++ b/openbb_terminal/terminal_controller.py @@ -96,7 +96,6 @@ class TerminalController(BaseController): "portfolio", "forex", "etf", - "reports", "dashboards", "alternative", "econometrics", @@ -243,7 +242,6 @@ def print_help(self): mt.add_menu("forecast") mt.add_menu("portfolio") mt.add_menu("dashboards") - mt.add_menu("reports") console.print(text=mt.menu_text, menu="Home") self.update_runtime_choices() @@ -522,12 +520,6 @@ def call_forex(self, _): self.queue = self.load_class(ForexController, self.queue) - def call_reports(self, _): - """Process reports command.""" - from openbb_terminal.reports.reports_controller import ReportController - - self.queue = self.load_class(ReportController, self.queue) - def call_dashboards(self, _): """Process dashboards command.""" from openbb_terminal.dashboards.dashboards_controller import ( diff --git a/openbb_terminal/terminal_helper.py b/openbb_terminal/terminal_helper.py index c8f248ac92c4..9385475ecd7e 100644 --- a/openbb_terminal/terminal_helper.py +++ b/openbb_terminal/terminal_helper.py @@ -58,32 +58,18 @@ def print_goodbye(): # "We like the terminal." # "...when offered a flight to the moon, nobody asks about what seat." - console.print( - "[param]The OpenBB Terminal is the result of a strong community building an " - "investment research platform for everyone, anywhere.[/param]\n" - ) - - console.print( - "We are always eager to welcome new contributors and you can find our open jobs here:\n" - "[cmds]https://www.openbb.co/company/careers#open-roles[/cmds]\n" - ) - - console.print( - "Join us : [cmds]https://openbb.co/discord[/cmds]\n" - "Follow us : [cmds]https://openbb.co/twitter[/cmds]\n" - "Ask support : [cmds]https://openbb.co/support[/cmds]\n" - "Request a feature : [cmds]https://openbb.co/request-a-feature[/cmds]\n" - ) - - console.print( - "[bold]Fill in our 2-minute survey so we better understand how we can improve the OpenBB Terminal " - "at [cmds]https://openbb.co/survey[/cmds][/bold]\n" - ) - - console.print( - "[param]In the meantime access investment research from your chatting platform using the OpenBB Bot[/param]\n" - "Try it today, for FREE: [cmds]https://openbb.co/products/bot[/cmds]\n" - ) + text = """ +[param]Thank you for using the OpenBB Terminal and being part of this journey.[/param] + +We hope you'll find the new CLI as valuable as this. To stay tuned, sign up for our newsletter: [cmds]https://openbb.co/newsletter.[/] + +In the meantime, check out our other products: + +[bold]OpenBB Terminal Pro[/]: [cmds]https://openbb.co/products/pro[/cmds] +[bold]OpenBB Platform:[/] [cmds]https://openbb.co/products/platform[/cmds] +[bold]OpenBB Bot[/]: [cmds]https://openbb.co/products/bot[/cmds] + """ + console.print(text) logger.info("END") diff --git a/poetry.lock b/poetry.lock index dad0f7e7bd9d..f67bc7728cd5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -710,33 +710,33 @@ lxml = ["lxml"] [[package]] name = "black" -version = "23.7.0" +version = "24.2.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, - {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, - {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, - {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, - {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, - {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, - {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, - {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, - {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, - {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, - {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, - {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, - {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, + {file = "black-24.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6981eae48b3b33399c8757036c7f5d48a535b962a7c2310d19361edeef64ce29"}, + {file = "black-24.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d533d5e3259720fdbc1b37444491b024003e012c5173f7d06825a77508085430"}, + {file = "black-24.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61a0391772490ddfb8a693c067df1ef5227257e72b0e4108482b8d41b5aee13f"}, + {file = "black-24.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:992e451b04667116680cb88f63449267c13e1ad134f30087dec8527242e9862a"}, + {file = "black-24.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:163baf4ef40e6897a2a9b83890e59141cc8c2a98f2dda5080dc15c00ee1e62cd"}, + {file = "black-24.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e37c99f89929af50ffaf912454b3e3b47fd64109659026b678c091a4cd450fb2"}, + {file = "black-24.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9de21bafcba9683853f6c96c2d515e364aee631b178eaa5145fc1c61a3cc92"}, + {file = "black-24.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:9db528bccb9e8e20c08e716b3b09c6bdd64da0dd129b11e160bf082d4642ac23"}, + {file = "black-24.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d84f29eb3ee44859052073b7636533ec995bd0f64e2fb43aeceefc70090e752b"}, + {file = "black-24.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e08fb9a15c914b81dd734ddd7fb10513016e5ce7e6704bdd5e1251ceee51ac9"}, + {file = "black-24.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:810d445ae6069ce64030c78ff6127cd9cd178a9ac3361435708b907d8a04c693"}, + {file = "black-24.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ba15742a13de85e9b8f3239c8f807723991fbfae24bad92d34a2b12e81904982"}, + {file = "black-24.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7e53a8c630f71db01b28cd9602a1ada68c937cbf2c333e6ed041390d6968faf4"}, + {file = "black-24.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93601c2deb321b4bad8f95df408e3fb3943d85012dddb6121336b8e24a0d1218"}, + {file = "black-24.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0057f800de6acc4407fe75bb147b0c2b5cbb7c3ed110d3e5999cd01184d53b0"}, + {file = "black-24.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:faf2ee02e6612577ba0181f4347bcbcf591eb122f7841ae5ba233d12c39dcb4d"}, + {file = "black-24.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:057c3dc602eaa6fdc451069bd027a1b2635028b575a6c3acfd63193ced20d9c8"}, + {file = "black-24.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:08654d0797e65f2423f850fc8e16a0ce50925f9337fb4a4a176a7aa4026e63f8"}, + {file = "black-24.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca610d29415ee1a30a3f30fab7a8f4144e9d34c89a235d81292a1edb2b55f540"}, + {file = "black-24.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:4dd76e9468d5536abd40ffbc7a247f83b2324f0c050556d9c371c2b9a9a95e31"}, + {file = "black-24.2.0-py3-none-any.whl", hash = "sha256:e8a6ae970537e67830776488bca52000eaa37fa63b9988e8c487458d9cd5ace6"}, + {file = "black-24.2.0.tar.gz", hash = "sha256:bce4f25c27c3435e4dace4815bcb2008b87e167e3bf4ee47ccdc5ce906eb4894"}, ] [package.dependencies] @@ -746,11 +746,11 @@ packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -9915,13 +9915,13 @@ multidict = ">=4.0" [[package]] name = "yfinance" -version = "0.2.36" +version = "0.2.37" description = "Download market data from Yahoo! Finance API" optional = false python-versions = "*" files = [ - {file = "yfinance-0.2.36-py2.py3-none-any.whl", hash = "sha256:700f8b8fb51d4f7ca31bcef042175be68b2f39ed680a99170163e5f54874e2a6"}, - {file = "yfinance-0.2.36.tar.gz", hash = "sha256:5367c0538cf57bb0dd393ca24866cda1ab5d4aba47e375e549760652a4a19fc2"}, + {file = "yfinance-0.2.37-py2.py3-none-any.whl", hash = "sha256:3ac75fa1cd3496ee76b6df5d63d29679487ea9447123c5b935d1593240737a8f"}, + {file = "yfinance-0.2.37.tar.gz", hash = "sha256:e5f78c9bd27bae7abfd0af9b7996620eaa9aba759d67f957296634d7d54f0cef"}, ] [package.dependencies] @@ -10052,4 +10052,4 @@ optimization = ["Riskfolio-Lib"] [metadata] lock-version = "2.0" python-versions = "^3.8.1,<3.11, !=3.9.7" -content-hash = "1351e12fc6fccaa4e86e4659ef3e1b4fa375bac2dd72594d5ca6cfd25a1f357b" +content-hash = "ca00fd6172178039e6d7a3502e8e9b873f897a8ebf7bffde9b8adfdcad6f7234" diff --git a/pyproject.toml b/pyproject.toml index 0f78930b779b..165dad84e583 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "openbb-terminal" -version = "3.2.4" +version = "3.2.5" description = "Investment Research for Everyone, Anywhere." license = "MIT" authors = ["OpenBB "] @@ -157,7 +157,7 @@ codespell = "^2.2.4" pydocstyle = "^6.3.0" sphinx = "^4.5.0" myst-parser = "^0.15.2" -black = "^23.1.0" +black = "^24.1.0" bandit = "^1.7.0" coverage = ">=5.5" vcrpy = "^4.1.1" diff --git a/website/content/terminal/changelog/version2_0_0.mdx b/website/content/terminal/changelog/version2_0_0.mdx index b342f5e928d0..e1131e127b51 100644 --- a/website/content/terminal/changelog/version2_0_0.mdx +++ b/website/content/terminal/changelog/version2_0_0.mdx @@ -3,7 +3,7 @@ title: v2.0.0 version: "2.0.0" date: 2022-11-29 description: v2.0.0 -sidebar_position: 108 +sidebar_position: 109 --- ## Major Release Notes diff --git a/website/content/terminal/changelog/version2_1_0.mdx b/website/content/terminal/changelog/version2_1_0.mdx index d347c2fd5c72..fffd897f4aae 100644 --- a/website/content/terminal/changelog/version2_1_0.mdx +++ b/website/content/terminal/changelog/version2_1_0.mdx @@ -3,7 +3,7 @@ title: v2.1.0 version: "2.1.0" date: 2022-12-21 description: v2.1.0 -sidebar_position: 107 +sidebar_position: 108 --- ## What's new diff --git a/website/content/terminal/changelog/version2_2_0.mdx b/website/content/terminal/changelog/version2_2_0.mdx index 3c437fc03327..073475e7a0c9 100644 --- a/website/content/terminal/changelog/version2_2_0.mdx +++ b/website/content/terminal/changelog/version2_2_0.mdx @@ -3,7 +3,7 @@ title: v2.2.0 version: "2.2.0" date: 2022-01-19 description: v2.2.0 -sidebar_position: 106 +sidebar_position: 107 --- ## What's new diff --git a/website/content/terminal/changelog/version2_3_0.mdx b/website/content/terminal/changelog/version2_3_0.mdx index 7afd9c8508e6..451dcebc978f 100644 --- a/website/content/terminal/changelog/version2_3_0.mdx +++ b/website/content/terminal/changelog/version2_3_0.mdx @@ -3,7 +3,7 @@ title: v2.3.0 version: "2.3.0" date: 2023-01-31 description: v2.3.0 -sidebar_position: 105 +sidebar_position: 106 --- diff --git a/website/content/terminal/changelog/version2_3_1.mdx b/website/content/terminal/changelog/version2_3_1.mdx index 59f0ada1a77d..859c5c47e80a 100644 --- a/website/content/terminal/changelog/version2_3_1.mdx +++ b/website/content/terminal/changelog/version2_3_1.mdx @@ -3,7 +3,7 @@ title: v2.3.1 version: "2.3.1" date: 2023-02-01 description: v2.3.1 -sidebar_position: 104 +sidebar_position: 105 --- ## Fixed diff --git a/website/content/terminal/changelog/version2_4_0.mdx b/website/content/terminal/changelog/version2_4_0.mdx index 29af7e515534..99ff9aa95ef2 100644 --- a/website/content/terminal/changelog/version2_4_0.mdx +++ b/website/content/terminal/changelog/version2_4_0.mdx @@ -3,7 +3,7 @@ title: v2.4.0 version: "2.4.0" date: 2023-02-14 description: v2.4.0 -sidebar_position: 103 +sidebar_position: 104 --- ## What's new diff --git a/website/content/terminal/changelog/version2_4_1.mdx b/website/content/terminal/changelog/version2_4_1.mdx index a9889a668fc9..8d98d62abc8c 100644 --- a/website/content/terminal/changelog/version2_4_1.mdx +++ b/website/content/terminal/changelog/version2_4_1.mdx @@ -3,7 +3,7 @@ title: v2.4.1 version: "2.4.1" date: 2023-02-17 description: v2.4.1 -sidebar_position: 102 +sidebar_position: 103 --- ## What's new diff --git a/website/content/terminal/changelog/version2_5_0.mdx b/website/content/terminal/changelog/version2_5_0.mdx index 674317079e0c..8154a78a9ad7 100644 --- a/website/content/terminal/changelog/version2_5_0.mdx +++ b/website/content/terminal/changelog/version2_5_0.mdx @@ -3,7 +3,7 @@ title: v2.5.0 version: "2.5.0" date: 2023-03-01 description: v2.5.0 -sidebar_position: 101 +sidebar_position: 102 --- diff --git a/website/content/terminal/changelog/version2_5_1.mdx b/website/content/terminal/changelog/version2_5_1.mdx index b2dcb0cd20d3..b2efa98b3571 100644 --- a/website/content/terminal/changelog/version2_5_1.mdx +++ b/website/content/terminal/changelog/version2_5_1.mdx @@ -3,7 +3,7 @@ title: v2.5.1 version: "2.5.1" date: 2023-03-01 description: v2.5.1 -sidebar_position: 100 +sidebar_position: 101 --- ## Fixed diff --git a/website/content/terminal/changelog/version3_0_0.mdx b/website/content/terminal/changelog/version3_0_0.mdx index 061b8cdc11fc..55213b5ed20b 100644 --- a/website/content/terminal/changelog/version3_0_0.mdx +++ b/website/content/terminal/changelog/version3_0_0.mdx @@ -3,7 +3,7 @@ title: v3.0.0 version: "3.0.0" date: 2023-04-25 description: v3.0.0 -sidebar_position: 99 +sidebar_position: 100 --- ## What's new diff --git a/website/content/terminal/changelog/version3_0_1.mdx b/website/content/terminal/changelog/version3_0_1.mdx index 2bdbc58ad888..bdf746421f52 100644 --- a/website/content/terminal/changelog/version3_0_1.mdx +++ b/website/content/terminal/changelog/version3_0_1.mdx @@ -3,7 +3,7 @@ title: v3.0.1 version: "3.0.1" date: 2023-05-15 description: v3.0.1 -sidebar_position: 98 +sidebar_position: 99 --- ## Thank you and welcome to our new contributors 🔥 diff --git a/website/content/terminal/changelog/version3_1_0.mdx b/website/content/terminal/changelog/version3_1_0.mdx index a35607878644..64c1f1de3c3e 100644 --- a/website/content/terminal/changelog/version3_1_0.mdx +++ b/website/content/terminal/changelog/version3_1_0.mdx @@ -3,7 +3,7 @@ title: v3.1.0 version: "3.1.0" date: 2023-06-21 description: v3.1.0 -sidebar_position: 97 +sidebar_position: 98 --- ## Thank you and welcome to our new contributors 🔥 diff --git a/website/content/terminal/changelog/version3_2_0.mdx b/website/content/terminal/changelog/version3_2_0.mdx index ddc4a873bd83..47181a8c452f 100644 --- a/website/content/terminal/changelog/version3_2_0.mdx +++ b/website/content/terminal/changelog/version3_2_0.mdx @@ -3,7 +3,7 @@ title: v3.2.0 version: "3.2.0" date: 2023-07-21 description: Current - v3.2.0 -sidebar_position: 96 +sidebar_position: 97 --- ## Thank you and welcome to our new contributors 🔥 diff --git a/website/content/terminal/changelog/version3_2_1.mdx b/website/content/terminal/changelog/version3_2_1.mdx index f8586b01bd46..503862b9a799 100644 --- a/website/content/terminal/changelog/version3_2_1.mdx +++ b/website/content/terminal/changelog/version3_2_1.mdx @@ -3,7 +3,7 @@ title: v3.2.1 version: "3.2.1" date: 2023-08-16 description: v3.2.1 -sidebar_position: 95 +sidebar_position: 96 --- ## What's new 🎉 diff --git a/website/content/terminal/changelog/version3_2_2.mdx b/website/content/terminal/changelog/version3_2_2.mdx index d2584b7b6ead..06083e3f4ba9 100644 --- a/website/content/terminal/changelog/version3_2_2.mdx +++ b/website/content/terminal/changelog/version3_2_2.mdx @@ -3,7 +3,7 @@ title: v3.2.2 version: "3.2.2" date: 2023-08-30 description: v3.2.2 -sidebar_position: 94 +sidebar_position: 95 --- ## Thank you and welcome to our new contributors 🔥 diff --git a/website/content/terminal/changelog/version3_2_3.mdx b/website/content/terminal/changelog/version3_2_3.mdx index d8bc0dce1726..d242c97c985c 100644 --- a/website/content/terminal/changelog/version3_2_3.mdx +++ b/website/content/terminal/changelog/version3_2_3.mdx @@ -3,7 +3,7 @@ title: v3.2.3 version: "3.2.2" date: 2023-10-02 description: v3.2.3 -sidebar_position: 93 +sidebar_position: 94 --- Thank you for your patience! We have been working hard on the release of the openbb platform, which will be v4. You can check out the progress on our open PRs or the open branches. diff --git a/website/content/terminal/changelog/version3_2_4.mdx b/website/content/terminal/changelog/version3_2_4.mdx index c8decf822698..de2bce1bcc07 100644 --- a/website/content/terminal/changelog/version3_2_4.mdx +++ b/website/content/terminal/changelog/version3_2_4.mdx @@ -1,9 +1,9 @@ --- -title: Current - v3.2.4 +title: v3.2.4 version: "3.2.4" date: 2023-11-09 -description: Current - v3.2.4 -sidebar_position: 92 +description: v3.2.4 +sidebar_position: 93 --- ## Thank you and welcome to our new contributors 🔥 diff --git a/website/content/terminal/changelog/version3_2_5.mdx b/website/content/terminal/changelog/version3_2_5.mdx new file mode 100644 index 000000000000..d6346a6f6d99 --- /dev/null +++ b/website/content/terminal/changelog/version3_2_5.mdx @@ -0,0 +1,11 @@ +--- +title: Current - v3.2.5 +version: "3.2.5" +date: 2024-03-14 +description: Current - v3.2.5 +sidebar_position: 92 +--- + +This is the final release of the OpenBB Terminal. We have removed a good amount of deprecated functionality. + +Thank you to everyone that has contributed and helped us get to this point. Follow us for what comes next! diff --git a/website/content/terminal/installation/macos.md b/website/content/terminal/installation/macos.md index 1d4cc358be0b..699debd8f71a 100644 --- a/website/content/terminal/installation/macos.md +++ b/website/content/terminal/installation/macos.md @@ -30,7 +30,7 @@ Install the OpenBB Terminal on MacOS (Big Sur or later). There are two versions
- +
Minimum Requirements diff --git a/website/content/terminal/installation/pypi.md b/website/content/terminal/installation/pypi.md index 9db6030063d9..f502415a9d8b 100644 --- a/website/content/terminal/installation/pypi.md +++ b/website/content/terminal/installation/pypi.md @@ -212,7 +212,7 @@ Make sure to have completed all previous steps. If followed, there will be a vir Install the main package of Openbb SDK with `pip`, a package manager. ```shell -pip install openbb==3.2.4 --no-cache-dir +pip install openbb==3.2.5 --no-cache-dir ``` This method provides access to the data aggregation and charting functions of the OpenBB SDK. It does not provide access to the advanced features that are provided by the Portfolio Optimization and Machine Learning toolkits. @@ -220,23 +220,23 @@ This method provides access to the data aggregation and charting functions of th The toolkits can be installed individually with: ```shell -pip install "openbb[optimization]==3.2.4" --no-cache-dir +pip install "openbb[optimization]==5" --no-cache-dir ``` and ```shell -pip install "openbb[forecast]==3.2.4" --no-cache-dir +pip install "openbb[forecast]==3.2.5" --no-cache-dir ``` Install all available toolkits at once with: ```shell -pip install "openbb[all]==3.2.4" --no-cache-dir +pip install "openbb[all]==3.2.5" --no-cache-dir ``` :::info -`pip install openbb[all]==3.2.4` is not yet compatible with environments such as Google Colab and Kaggle as they come with preinstalled packages that can conflict with the ones used in the OpenBBTerminal and SDK. It may be possible to install without the extra toolkits, but we currently do not officially support this type of installation. We are working on a solution to this problem and will update this section once it is resolved. +`pip install openbb[all]==3.2.5` is not yet compatible with environments such as Google Colab and Kaggle as they come with preinstalled packages that can conflict with the ones used in the OpenBBTerminal and SDK. It may be possible to install without the extra toolkits, but we currently do not officially support this type of installation. We are working on a solution to this problem and will update this section once it is resolved. ::: ## Verify Installation diff --git a/website/content/terminal/installation/windows.md b/website/content/terminal/installation/windows.md index 34e7dac5152b..0910c1748700 100644 --- a/website/content/terminal/installation/windows.md +++ b/website/content/terminal/installation/windows.md @@ -20,7 +20,7 @@ import InstallerButton from "@site/src/components/General/InstallerButton"; This section provides you with the installation file as well as the guide to install the OpenBB Terminal via Windows (10 or greater). - +
Minimum Requirements diff --git a/website/generate_platform_v4_markdown.py b/website/generate_platform_v4_markdown.py index f50a509e6a8b..173699d9df3e 100644 --- a/website/generate_platform_v4_markdown.py +++ b/website/generate_platform_v4_markdown.py @@ -1,20 +1,17 @@ """Platform V4 Markdown Generator Script.""" -# pylint: disable=too-many-lines - -import inspect +import argparse import json import re import shutil +import subprocess from pathlib import Path -from typing import Any, Callable, Dict, List, Optional +from typing import Dict, List, Union -from openbb_core.app.model.example import Example -from openbb_core.app.provider_interface import ProviderInterface -from openbb_core.app.router import RouterLoader -from openbb_core.app.static.package_builder import DocstringGenerator, MethodDefinition +import toml +from openbb_core.app.static.utils.console import Console from openbb_core.provider import standard_models -from pydantic_core import PydanticUndefined +from packaging import specifiers # Number of spaces to substitute tabs for indentation TAB_WIDTH = 4 @@ -22,6 +19,10 @@ # Maximum number of commands to display on the cards MAX_COMMANDS = 8 +# Path to the Platform directory and the reference.json file +PLATFORM_PATH = Path(__file__).parent.parent / "openbb_platform" +REFERENCE_FILE_PATH = Path(PLATFORM_PATH / "openbb/assets/reference.json") + # Paths to use for generating and storing the markdown files WEBSITE_PATH = Path(__file__).parent.absolute() SEO_METADATA_PATH = Path(WEBSITE_PATH / "metadata/platform_v4_seo_metadata.json") @@ -34,450 +35,157 @@ PLATFORM_REFERENCE_UL_ELEMENT = '
    ' # noqa: E501 -def get_field_data_type(field_type: Any) -> str: - """Get the implicit data type from the field type. - - String manipulation is used to extract the implicit - data type from the field type. - - Args: - field_type (Any): typing object field type - - Returns: - str: String representation of the implicit field tzxype - """ - - try: - if "BeforeValidator" in str(field_type): - field_type = "int" - - if "Optional" in str(field_type): - field_type = str(field_type.__args__[0]) - - if "Annotated[" in str(field_type): - field_type = str(field_type).rsplit("[", maxsplit=1)[-1].split(",")[0] - - if "models" in str(field_type): - field_type = str(field_type).rsplit(".", maxsplit=1)[-1] - - field_type = ( - str(field_type) - .replace("", "") - .replace("typing.", "") - .replace("pydantic.types.", "") - .replace("openbb_core.provider.abstract.data.", "") - .replace("datetime.datetime", "datetime") - .replace("datetime.date", "date") - .replace("NoneType", "None") - .replace(", None", "") - ) - except TypeError: - field_type = str(field_type) - - return field_type - - -def get_endpoint_examples( - path: str, - func: Callable, - examples: Optional[List[Example]], -) -> str: - """Get the examples for the given standard model or function. - - For a given standard model or function, the examples are fetched from the - list of Example objects and formatted into a string. - - Args: - path (str): Path of the router. - func (Callable): Router endpoint function. - examples (Optional[List[Example]]): List of Examples (APIEx or PythonEx type) - for the endpoint. - - Returns: - str: Formatted string containing the examples for the endpoint. - """ - sig = inspect.signature(func) - parameter_map = dict(sig.parameters) - formatted_params = MethodDefinition.format_params( - path=path, parameter_map=parameter_map - ) - explicit_params = dict(formatted_params) - explicit_params.pop("extra_params", None) - param_types = {k: v.annotation for k, v in explicit_params.items()} - - return DocstringGenerator.build_examples( - path.replace("/", "."), - param_types, - examples, - "website", - ) - - -def get_provider_parameter_info(endpoint: Callable) -> Dict[str, str]: - """Get the name, type, description, default value and optionality - information for the provider parameter. +# pylint: disable=redefined-outer-name +def check_installed_packages( + console: Console, + debug: bool, +) -> None: + """Checks if the installed packages are the same as those on the platform pyproject.toml file. - Function signature is insepcted to get the parameters of the router - endpoint function. The provider parameter is then extracted from the - function type annotations then the information is extracted from it. + Compares the versions of the installed packages with the versions specified in the pyproject.toml file. + The source of truth for the package versions is the pyproject.toml file, and the installed packages are + checked against the specified versions. If the installed packages do not satisfy the version requirements, + an error is raised. - Args: - endpoint (Callable): Router endpoint function - - Returns: - Dict[str, str]: Dictionary of the provider parameter information + Parameters + ---------- + console (Console): Console object to display messages and save logs + debug (bool): Flag to enable debug mode """ - params_dict = endpoint.__annotations__ - model_type = params_dict["provider_choices"].__args__[0] - provider_params_field = model_type.__dataclass_fields__["provider"] - - # Type is Union[Literal[], None] - default = provider_params_field.type.__args__[0] - description = ( - "The provider to use for the query, by default None. " - "If None, the provider specified in defaults is selected " - f"or '{default}' if there is no default." + def convert_poetry_version_specifier( + poetry_version: Union[str, Dict[str, str]] + ) -> str: + """ + Convert a Poetry version specifier to a format compatible with the packaging library. + Handles both simple string specifiers and dictionary specifiers, extracting only the version value if it's a dict. + + Parameters + ---------- + poetry_version (Union[str, Dict[str, str]]): + Poetry version specifier + + Returns + ------- + str: + Version specifier compatible with the packaging library + """ + if isinstance(poetry_version, dict): + poetry_version = poetry_version.get("version", "") + + if isinstance(poetry_version, str): + if poetry_version.startswith("^"): + base_version = poetry_version[1:] + # Use regex to split the version and convert to integers only if they are purely numeric + parts = re.split(r"\.|\-", base_version) + try: + major, minor = (int(x) for x in parts[:2]) + except ValueError: + # If conversion fails, return the original version specifier + return poetry_version + next_major_version = major + 1 + # Construct a version specifier that represents the range. + return f">={base_version},<{next_major_version}.0.0" + + if poetry_version.startswith("~"): + base_version = poetry_version[1:] + parts = re.split(r"\.|\-", base_version) + try: + major, minor = (int(x) for x in parts[:2]) + except ValueError: + # If conversion fails, return the original version specifier + return poetry_version + next_minor_version = minor + 1 + # Construct a version specifier that represents the range. + return f">={base_version},<{major}.{next_minor_version}.0" + + # No need to modify other specifiers, as they are compatible with packaging library + return poetry_version + + def check_dependency( + package_name: str, version_spec: str, installed_packages_dict: Dict[str, str] + ) -> None: + """ + Check if the installed package version satisfies the required version specifier. + Raises DependencyCheckError if the package is not installed or does not satisfy the version requirements. + + Parameters + ---------- + package_name (str): + Name of the package to check + version_spec (str): + Version specifier to check against + installed_packages_dict (Dict[str, str]): + Dictionary of installed packages and their versions + """ + installed_version = installed_packages_dict.get(package_name.lower()) + if not installed_version: + raise Exception(f"{package_name} is not installed.") + + converted_version_spec = convert_poetry_version_specifier(version_spec) + specifier_set = specifiers.SpecifierSet(converted_version_spec) + + if not specifier_set.contains(installed_version, prereleases=True): + message = f"{package_name} version {installed_version} does not satisfy the specified version {converted_version_spec}." # noqa: E501, pylint: disable=line-too-long + raise Exception(message) + + console.log("\n[CRITICAL] Ensuring all the extensions are installed before the script runs...") # fmt: skip + + # Execute the pip list command once and store the output + pip_list_output = subprocess.run( + "pip list | grep openbb", # noqa: S607 + shell=True, # noqa: S602 + capture_output=True, + text=True, + check=False, ) - - provider_parameter_info = { - "name": provider_params_field.name, - "type": str(provider_params_field.type).replace("typing.", ""), - "description": description, - "default": default, - "optional": True, - "standard": True, + installed_packages = pip_list_output.stdout.splitlines() + installed_packages_dict = { + line.split()[0].lower(): line.split()[1] for line in installed_packages } - return provider_parameter_info - - -def get_provider_field_params( - model_map: Dict[str, Any], - params_type: str, - provider: str = "openbb", -) -> List[Dict[str, Any]]: - """Get the fields of the given parameter type for the given provider - of the standard_model. - - Args: - provider_map (Dict[str, Any]): Model Map containing the QueryParams and Data parameters - params_type (str): Parameters to fetch data for (QueryParams or Data) - provider (str, optional): Provider name. Defaults to "openbb". - - Returns: - List[Dict[str, str]]: List of dictionaries containing the field name, - type, description, default, optional flag and standard flag for each provider. - """ - - provider_field_params = [] - expanded_types = MethodDefinition.TYPE_EXPANSION - - for field, field_info in model_map[provider][params_type]["fields"].items(): - # Determine the field type, expanding it if necessary and if params_type is "Parameters" - field_type = get_field_data_type(field_info.annotation) - - if params_type == "QueryParams" and field in expanded_types: - expanded_type = get_field_data_type(expanded_types[field]) - field_type = f"Union[{expanded_type}, {field_type}]" - - cleaned_description = ( - str(field_info.description) - .strip().replace("\n", " ").replace(" ", " ").replace('"', "'") - ) # fmt: skip - - # Add information for the providers supporting multiple symbols - if params_type == "QueryParams" and ( - field_extra := field_info.json_schema_extra - ): - multiple_items_list = field_extra.get("multiple_items_allowed", None) - if multiple_items_list: - multiple_items = ", ".join(multiple_items_list) - cleaned_description += ( - f" Multiple items allowed for provider(s): {multiple_items}." - ) - # Manually setting to List[] for multiple items - # Should be removed if TYPE_EXPANSION is updated to include this - field_type = f"Union[{field_type}, List[{field_type}]]" - - default_value = "" if field_info.default is PydanticUndefined else str(field_info.default) # fmt: skip - - provider_field_params.append( - { - "name": field, - "type": field_type, - "description": cleaned_description, - "default": default_value, - "optional": not field_info.is_required(), - "standard": provider == "openbb", - } - ) - - return provider_field_params - - -def get_function_params_default_value(endpoint: Callable) -> Dict: - """Get the default for the endpoint function parameters. - - Args: - endpoint (Callable): Router endpoint function - - Returns: - Dict: Endpoint function parameters and their default values - """ - - default_values = {} - - signature = inspect.signature(endpoint) - parameters = signature.parameters - - for name, param in parameters.items(): - if param.default is not inspect.Parameter.empty: - default_values[name] = param.default - else: - default_values[name] = "" - - return default_values - - -def get_post_method_parameters_info(endpoint: Callable) -> List[Dict[str, str]]: - """Get the parameters for the POST method endpoints. - - Args: - endpoint (Callable): Router endpoint function - - Returns: - List[Dict[str, str]]: List of dictionaries containing the name, - type, description, default and optionality of each parameter. - """ - parameters_info = [] - descriptions = {} - - parameters_default_values = get_function_params_default_value(endpoint) - section = endpoint.__doc__.split("Parameters")[1].split("Returns")[0] # type: ignore - - lines = section.split("\n") - current_param = None - for line in lines: - cleaned_line = line.strip() - - if ":" in cleaned_line: # This line names a parameter - current_param = cleaned_line.split(":")[0] - current_param = current_param.strip() - elif current_param: # This line describes the parameter - description = cleaned_line.strip() - descriptions[current_param] = description - # Reset current_param to ensure each description is - # correctly associated with the parameter - current_param = None - - for param, param_type in endpoint.__annotations__.items(): - if param == "return": - continue - - parameters_info.append( - { - "name": param, - "type": get_field_data_type(param_type), - "description": descriptions.get(param, ""), - "default": parameters_default_values.get(param, ""), - "optional": "Optional" in str(param_type), - } - ) - - return parameters_info - - -def get_post_method_returns_info(endpoint: Callable) -> List[Dict[str, str]]: - """Get the returns information for the POST method endpoints. - - Args: - endpoint (Callable): Router endpoint function - - Returns: - Dict[str, str]: Dictionary containing the name, type, description of the return value - """ - section = endpoint.__doc__.split("Parameters")[1].split("Returns")[-1] # type: ignore - description_lines = section.strip().split("\n") - description = description_lines[-1].strip() if len(description_lines) > 1 else "" - return_type = endpoint.__annotations__["return"].model_fields["results"].annotation - - # Only one item is returned hence its a list with a single dictionary. - # Future changes to the return type will require changes to this code snippet. - return_info = [ - { - "name": "results", - "type": get_field_data_type(return_type), - "description": description, - } - ] - - return return_info - - -# mypy: disable-error-code="attr-defined,arg-type" -def generate_reference_file() -> None: - """Generate reference.json file using the ProviderInterface map.""" - - # ProviderInterface Map contains the model and its - # corresponding QueryParams and Data fields - pi_map = ProviderInterface().map - reference: Dict[str, Dict] = {} - - # Fields for the reference dictionary to be used in the JSON file - REFERENCE_FIELDS = [ - "deprecated", - "description", - "examples", - "parameters", - "returns", - "data", - ] - - # Router object is used to get the endpoints and their - # corresponding APIRouter object - router = RouterLoader.from_extensions() - route_map = {route.path: route for route in router.api_router.routes} - - for path, route in route_map.items(): - # Initialize the reference fields as empty dictionaries - reference[path] = {field: {} for field in REFERENCE_FIELDS} - - # Route method is used to distinguish between GET and POST methods - route_method = route.methods - - # Route endpoint is the callable function - route_func = route.endpoint - - # Standard model is used as the key for the ProviderInterface Map dictionary - standard_model = route.openapi_extra["model"] if route_method == {"GET"} else "" - - # Model Map contains the QueryParams and Data fields for each provider for a standard model - model_map = pi_map[standard_model] if standard_model else "" - - # Add endpoint model for GET methods - reference[path]["model"] = standard_model - - # Add endpoint deprecation details - deprecated_value = getattr(route, "deprecated", None) - reference[path]["deprecated"] = { - "flag": bool(deprecated_value), - "message": route.summary if deprecated_value else None, - } - - # Add endpoint description - if route_method == {"GET"}: - reference[path]["description"] = route.description - elif route_method == {"POST"}: - # POST method router `description` attribute is unreliable as it may or - # may not contain the "Parameters" and "Returns" sections. Hence, the - # endpoint function docstring is used instead. - description = route.endpoint.__doc__.split("Parameters")[0].strip() - # Remove extra spaces in between the string - reference[path]["description"] = re.sub(" +", " ", description) - - # Add endpoint examples - examples = route.openapi_extra["examples"] - reference[path]["examples"] = get_endpoint_examples(path, route_func, examples) - - # Add endpoint parameters fields for standard provider - if route_method == {"GET"}: - # openbb provider is always present hence its the standard field - reference[path]["parameters"]["standard"] = get_provider_field_params( - model_map, "QueryParams" + # Load the pyproject.toml file once + with open(PLATFORM_PATH / "pyproject.toml") as f: + toml_dict = toml.load(f) + + # Extract the openbb dependencies, excluding the python dependency + dependencies = toml_dict["tool"]["poetry"]["dependencies"] + dependencies.pop("python", None) + + # Compare versions and check dependencies + for package, version_spec in dependencies.items(): + normalized_package_name = package.replace("_", "-").lower() + try: + # Convert the version specifier before checking + converted_version_spec = convert_poetry_version_specifier(version_spec) + check_dependency( + normalized_package_name, converted_version_spec, installed_packages_dict ) - # Add `provider` parameter fields to the openbb provider - provider_parameter_fields = get_provider_parameter_info(route_func) - reference[path]["parameters"]["standard"].append(provider_parameter_fields) - - # Add endpoint data fields for standard provider - reference[path]["data"]["standard"] = get_provider_field_params( - model_map, "Data" - ) - - for provider in model_map: - if provider == "openbb": - continue - - # Adds standard parameters to the provider parameters since they are - # inherited by the model. - # A copy is used to prevent the standard parameters fields from being - # modified. - reference[path]["parameters"][provider] = reference[path]["parameters"][ - "standard" - ].copy() - provider_query_params = get_provider_field_params( - model_map, "QueryParams", provider + # Ensure debug_mode output shows the processed version specifier + if debug: + installed_version = installed_packages_dict.get(normalized_package_name) + console.log( + f"{normalized_package_name}: Specified version {converted_version_spec}, Installed version {installed_version}" # noqa: E501, pylint: disable=line-too-long ) - reference[path]["parameters"][provider].extend(provider_query_params) - - # Adds standard data fields to the provider data fields since they are - # inherited by the model. - # A copy is used to prevent the standard data fields from being modified. - reference[path]["data"][provider] = reference[path]["data"][ - "standard" - ].copy() - provider_data = get_provider_field_params(model_map, "Data", provider) - reference[path]["data"][provider].extend(provider_data) - - elif route_method == {"POST"}: - # Add endpoint parameters fields for POST methods - reference[path]["parameters"]["standard"] = get_post_method_parameters_info( - route_func - ) - - # Add endpoint returns data - # Currently only OBBject object is returned - if route_method == {"GET"}: - reference[path]["returns"]["OBBject"] = [ - { - "name": "results", - "type": f"List[{standard_model}]", - "description": "Serializable results.", - }, - { - "name": "provider", - "type": f"Optional[{provider_parameter_fields['type']}]", - "description": "Provider name.", - }, - { - "name": "warnings", - "type": "Optional[List[Warning_]]", - "description": "List of warnings.", - }, - { - "name": "chart", - "type": "Optional[Chart]", - "description": "Chart object.", - }, - { - "name": "extra", - "type": "Dict[str, Any]", - "description": "Extra info.", - }, - ] - - elif route_method == {"POST"}: - reference[path]["returns"]["OBBject"] = get_post_method_returns_info( - route_func - ) - - # Dumping the reference dictionary as a JSON file - with open(PLATFORM_CONTENT_PATH / "reference.json", "w", encoding="utf-8") as f: - json.dump(reference, f, indent=4) + except Exception as e: + raise e def create_reference_markdown_seo(path: str, description: str) -> str: """Create the SEO section for the markdown file. - Args: - path (str): Command path relative to the obb class - description (str): Description of the command - - Returns: - str: SEO section for the markdown file + Parameters + ---------- + path (str): + Command path relative to the obb class + description (str): + Description of the command + + Returns + ------- + str: + SEO section for the markdown file """ with open(SEO_METADATA_PATH) as f: @@ -518,13 +226,19 @@ def create_reference_markdown_intro( ) -> str: """Create the introduction section for the markdown file. - Args: - path (str): Command path relative to the obb class - description (str): Description of the command - deprecated (Dict[str, str]): Deprecated flag and message - - Returns: - str: Introduction section for the markdown file + Parameters + ---------- + path (str): + Command path relative to the obb class + description (str): + Description of the command + deprecated (Dict[str, str]): + Deprecated flag and message + + Returns + ------- + str: + Introduction section for the markdown file """ deprecation_message = ( @@ -552,15 +266,20 @@ def create_reference_markdown_tabular_section( ) -> str: """Create the tabular section for the markdown file. - Args: - parameters (Dict[str, List[Dict[str, str]]]): Dictionary of - providers and their corresponding parameters - heading (str): Section heading for the tabular section - - Returns: - str: Tabular section for the markdown file + Parameters + ---------- + parameters (Dict[str, List[Dict[str, str]]]): + Dictionary of providers and their corresponding parameters + heading (str): + Section heading for the tabular section + + Returns + ------- + str: + Tabular section for the markdown file """ + standard_params_list = [] tables_list = [] # params_list is a list of dictionaries containing the @@ -572,14 +291,18 @@ def create_reference_markdown_tabular_section( for params in params_list ] - # Do not add default and optional columns in the Data section - # because James and Andrew don't like it + # Exclude default and optional columns in the Data section if heading == "Data": filtered_params = [ {k: v for k, v in params.items() if k not in ["default", "optional"]} for params in filtered_params ] + if provider == "standard": + standard_params_list = filtered_params + else: + filtered_params = standard_params_list + filtered_params + # Parameter information for every provider is extracted from the dictionary # and joined to form a row of the table. # A `|` is added at the start and end of the row to create the table cell. @@ -613,48 +336,39 @@ def create_reference_markdown_tabular_section( return markdown -def create_reference_markdown_returns_section(returns: List[Dict[str, str]]) -> str: +def create_reference_markdown_returns_section(returns_content: str) -> str: """Create the returns section for the markdown file. - Args: - returns (List[Dict[str, str]]): List of dictionaries containing - the name, type and description of the returns + Parameters + ---------- + returns_content (str): + Returns section formatted as a string - Returns: - str: Returns section for the markdown file + Returns + ------- + str: + Returns section for the markdown file """ - returns_data = "" - - for params in returns: - returns_data += f"{TAB_WIDTH*' '}{params['name']} : {params['type']}\n" - returns_data += f"{TAB_WIDTH*' '}{TAB_WIDTH*' '}{params['description']}\n\n" - - # Remove the last two newline characters to render Returns section properly - returns_data = returns_data.rstrip("\n\n") - - markdown = ( - "---\n\n" - "## Returns\n\n" - "```python wordwrap\n" - "OBBject\n" - f"{returns_data}\n" - "```\n\n" - ) - - return markdown + return f"---\n\n## Returns\n\n```python wordwrap\n{returns_content}\n```\n\n" def create_data_model_markdown(title: str, description: str, model: str) -> str: """Create the basic markdown file content for the data model. - Args: - title (str): Title of the data model - description (str): Description of the data model - model (str): Model name - - Returns: - str: Basic markdown file content for the data model + Parameters + ---------- + title (str): + Title of the data model + description (str): + Description of the data model + model (str): + Model name + + Returns + ------- + str: + Basic markdown file content for the data model """ # File name is used in the import statement @@ -702,11 +416,15 @@ def create_data_model_markdown(title: str, description: str, model: str) -> str: def find_data_model_implementation_file(data_model: str) -> str: """Find the file name containing the data model class. - Args: - data_model (str): Data model name + Parameters + ---------- + data_model (str): + Data model name - Returns: - str: File name containing the data model class + Returns + ------- + str: + File name containing the data model class """ # Function to search for the data model class in the file @@ -732,8 +450,10 @@ def generate_reference_index_files(reference_content: Dict[str, str]) -> None: """Generate index.mdx and _category_.json files for directories and sub-directories in the reference directory. - Args: - reference_content (Dict[str, str]): Endpoints and their corresponding descriptions. + Parameters + ---------- + reference_content (Dict[str, str]): + Endpoints and their corresponding descriptions. """ def generate_index_and_category( @@ -864,13 +584,19 @@ def generate_reference_top_level_index() -> None: def create_data_models_index(title: str, description: str, model: str) -> str: """Create the index content for the data models. - Args: - title (str): Title of the data model - description (str): Description of the data model - model (str): Model name - - Returns: - str: Index content for the data models + Parameters + ---------- + title (str): + Title of the data model + description (str): + Description of the data model + model (str): + Model name + + Returns + ------- + str: + Index content for the data models """ # Get the first sentence of the description @@ -891,8 +617,10 @@ def create_data_models_index(title: str, description: str, model: str) -> str: def generate_data_models_index_files(content: str) -> None: """Generate index.mdx and _category_.json files for the data_models directory. - Args: - content (str): Content for the data models index file + Parameters + ---------- + content (str): + Content for the data models index file """ index_content = ( @@ -918,13 +646,19 @@ def generate_data_models_index_files(content: str) -> None: def generate_markdown_file(path: str, markdown_content: str, directory: str) -> None: """Generate markdown file using the content of the specified path and directory. - Args: - path (str): Path to the markdown file - markdown_content (str): Content for the markdown file - directory (str): Directory to save the markdown file - - Raises: - ValueError: If the content type is invalid + Parameters + ---------- + path (str): + Path to the markdown file + markdown_content (str): + Content for the markdown file + directory (str): + Directory to save the markdown file + + Raises + ------ + ValueError: + If the content type is invalid """ # For reference, split the path to separate the @@ -949,30 +683,37 @@ def generate_markdown_file(path: str, markdown_content: str, directory: str) -> md_file.write(markdown_content) -def generate_platform_markdown() -> None: +# pylint: disable=redefined-outer-name +def generate_platform_markdown( + console: Console, +) -> None: """Generate markdown files for OpenBB Docusaurus website.""" data_models_index_content = [] reference_index_content_dict = {} - print("[CRITICAL] Ensure all the extensions are installed before running this script!") # fmt: skip - - # Generate and read the reference.json file - print("[INFO] Generating the reference.json file...") - generate_reference_file() - with open(PLATFORM_CONTENT_PATH / "reference.json") as f: - reference = json.load(f) + console.log(f"\n[INFO] Reading the {REFERENCE_FILE_PATH} file...") + # Load the reference.json file + try: + with open(REFERENCE_FILE_PATH) as f: + reference = json.load(f) + except FileNotFoundError as exc: + raise FileNotFoundError( + "File not found! Please ensure the file exists." + ) from exc # Clear the platform/reference folder - print("[INFO] Clearing the platform/reference folder...") + console.log(f"\n[INFO] Clearing the {PLATFORM_REFERENCE_PATH} folder...") shutil.rmtree(PLATFORM_REFERENCE_PATH, ignore_errors=True) # Clear the platform/data_models folder - print("[INFO] Clearing the platform/data_models folder...") + console.log(f"\n[INFO] Clearing the {PLATFORM_DATA_MODELS_PATH} folder...") shutil.rmtree(PLATFORM_DATA_MODELS_PATH, ignore_errors=True) - print(f"[INFO] Generating the markdown files for the {PLATFORM_REFERENCE_PATH} sub-directories...") # fmt: skip - print(f"[INFO] Generating the markdown files for the {PLATFORM_DATA_MODELS_PATH} directory...") # fmt: skip + console.log( + f"\n[INFO] Generating the markdown files for the {PLATFORM_REFERENCE_PATH} sub-directories..." + ) # noqa: E501 + console.log(f"\n[INFO] Generating the markdown files for the {PLATFORM_DATA_MODELS_PATH} directory...") # fmt: skip for path, path_data in reference.items(): reference_markdown_content = "" @@ -990,6 +731,7 @@ def generate_platform_markdown() -> None: reference_markdown_content += create_reference_markdown_intro( path[1:], description, path_data["deprecated"] ) + # reference_markdown_content += create_reference_markdown_examples(path_data["examples"]) reference_markdown_content += path_data["examples"] if path_parameters_fields := path_data["parameters"]: @@ -1036,10 +778,10 @@ def generate_platform_markdown() -> None: generate_markdown_file(model, data_markdown_content, "data_models") # Generate the index.mdx and _category_.json files for the reference directory - print(f"[INFO] Generating the index files for the {PLATFORM_REFERENCE_PATH} sub-directories...") # fmt: skip + console.log(f"\n[INFO] Generating the index files for the {PLATFORM_REFERENCE_PATH} sub-directories...") # fmt: skip generate_reference_index_files(reference_index_content_dict) - print( - f"[INFO] Generating the index files for the {PLATFORM_REFERENCE_PATH} directory..." + console.log( + f"\n[INFO] Generating the index files for the {PLATFORM_REFERENCE_PATH} directory..." ) generate_reference_top_level_index() @@ -1048,10 +790,33 @@ def generate_platform_markdown() -> None: data_models_index_content_str = "".join(data_models_index_content) # Generate the index.mdx and _category_.json files for the data_models directory - print(f"[INFO] Generating the index files for the {PLATFORM_DATA_MODELS_PATH} directory...") # fmt: skip + console.log(f"\n[INFO] Generating the index files for the {PLATFORM_DATA_MODELS_PATH} directory...") # fmt: skip generate_data_models_index_files(data_models_index_content_str) - print("[INFO] Markdown files generated successfully!") + console.log("\n[INFO] Markdown files generated successfully!") if __name__ == "__main__": - generate_platform_markdown() + parser = argparse.ArgumentParser( + prog="Platform Markdown Generator V2", + description="Generate markdown files for the Platform website docs.", + ) + + parser.add_argument( + "-v", + "--verbose", + action="store_true", + help="Enable verbose output for debugging.", + ) + + args = parser.parse_args() + console = Console(True) + verbose = False + + if args.verbose: + verbose = True + + check_installed_packages( + console=console, + debug=verbose, + ) + generate_platform_markdown(console=console) diff --git a/website/pypi.md b/website/pypi.md index 3e12f7d70267..e5600a1b8bfe 100644 --- a/website/pypi.md +++ b/website/pypi.md @@ -19,7 +19,7 @@ More information on this product can be found [here](https://openbb.co/products/ The command below provides access to the core functionalities behind the [OpenBB Terminal](https://openbb.co/products/terminal). ```python -pip install openbb==3.2.4 +pip install openbb==3.2.5 ``` If you wish to utilize our **Portfolio Optimization** or **Machine Learning / Artificial Intelligence** toolkits, please see instructions [here](https://docs.openbb.co/terminal/installation).