* add SSL certificate context and setting
* codespell
* linting
* cleanup section
* allow defining uvicorn.run kwargs in system_settings
* refactor to return session objects
* hub service rename it as _request_session
* typing
* more linting
* pylint
* missing __init__ files
* fix test_hub_service
* missing init files..?
* shouldn't need an init file there..
* now for some random linting
* maybe need that __init__ after all...?
* fix test_make_request
* relative import in conftest..?
* issue can't be from missing init files..
* revert the inits
* small cleanup
* pass the kwargs to the async session object on init for use outside of amake_request
* try something...
* try something else..
* turn on verbosity for errors..
* try something else...
* undo test change
* Update lock files
* undo another test check thing
* Revert "Update lock files"
This reverts commit 714df64416.
* try with just the platform lock
* unexpected argument
* do a dummy check to return the session object if it is passed in the kwargs
* also dummy check for TCPConnector instance
* bit more cleanup
* no implementation of server_hostname
* Move setting session to PosthogHandler init
* add comments
* review items
* update PythonSettings model definitions and annotations
* fix latest yfinance breaking changes
* unused import
---------
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
OpenBB Finviz Data Provider Extension
This extension integrates the Finviz data provider into the OpenBB Platform.
It will install, finvizfinance, to power the functions.
Installation
To install the extension:
pip install openbb-finviz
Endpoints
- obb.equity.compare.groups
- obb.equity.estimates.price_target
- obb.equity.fundamental.metrics
- obb.equity.profile
- obb.equity.price.performance
- obb.equity.screener
Screener
The screener is a faithful replication of the public-facing stock screener - https://finviz.com/screener.ashx?
Some options are directly accessible through the function parameters, all others are exposed via presets or filters_dict.
The filters list below are exposed in the function, with choices visible in the docstring:
exchangeindexsectorindustrymktcaprecommendation(analyst's mean score from 1-5)signal(same as the "Signal" on the Finviz page)
When the function is run without any parameters, it will default to the "top_gainers" signal.
res = obb.equity.screener(provider="finviz")
Metric
The metric parameter defines the type of data fields to return. Choices are:
overviewownershipperformancetechnicalvaluation
Default is, "overview".
res = obb.equity.screener(provider="finviz", metric="performance")
Preset Files
Presets can be created and customized in the "OpenBBUserData" folder. Template and default presets are created on the first run of the function.
Files are loaded on runtime, changes are effective without restarting the Python interpreter.
The preset parameter will override all others, except metric and limit.
Run the function to create the template and default presets in your OpenBBUserData folder.
Presets from the legacy OpenBB Terminal will continue to work, simply move your presets into the folder below.
res = obb.equity.screener(provider="finviz", index="nasdaq")
Then find the presets here: $HOME/OpenBBUserData/presets/finviz
res = obb.equity.screener(provider="finviz", preset="short_squeeze")
Filters Dict
The filters_dict parameter acts as an alternative to preset, accepting a dictionary or JSON encoded string.
res = obb.equity.screener(provider="finviz", filters_dict={"Index": "NASDAQ 100"})
Or as a JSON:
res = obb.equity.screener(provider="finviz", filters_dict='{"Index": "NASDAQ 100"}')
When using the Fast API, this is sent in the request body.
Error Messages
All parameters are validated, incorrect keys and choices will raise an error with information to help correct. For example:
obb.equity.screener(provider="finviz", filters_dict='{"Index": "NASDAQ"}')
Invalid filter option 'NASDAQ'. Possible filter options: ['Any', 'S&P 500', 'NASDAQ 100', 'DJIA', 'RUSSELL 2000']
Read the OpenBB Platform documentation here