diff --git a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py index ca9df548983..97abe17d836 100644 --- a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py +++ b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py @@ -256,9 +256,6 @@ class StocksController(model.StocksRoot): def options(self): """Stocks Options Submodule - Submodules: - `screen`: Screen Module - Attributes: `chains`: Get Option Chain For A Stock. No greek data is returned\n `dte`: Returns a new column containing the DTE as an integer, including 0.\n @@ -266,8 +263,8 @@ class StocksController(model.StocksRoot): `expirations`: Get Option Chain Expirations\n `generate_data`: Gets x values, and y values before and after premiums\n `greeks`: Gets the greeks for a given option\n - `grhist`: Get histoical option greeks\n - `grhist_chart`: Plots historical greeks for a given option. [Source: Syncretism]\n + `grhist`: Get historical EOD option prices, with Greeks, for a given OCC chain label.\n + `grhist_chart`: Plots historical greeks for a given option.\n `hist`: Get historical option pricing.\n `info`: Scrape barchart for options info\n `info_chart`: Scrapes Barchart.com for the options information\n diff --git a/openbb_terminal/core/sdk/models/econometrics_sdk_model.py b/openbb_terminal/core/sdk/models/econometrics_sdk_model.py index 018d5de9fcf..7cbb8ecfeb8 100644 --- a/openbb_terminal/core/sdk/models/econometrics_sdk_model.py +++ b/openbb_terminal/core/sdk/models/econometrics_sdk_model.py @@ -39,7 +39,7 @@ class EconometricsRoot(Category): `re`: The random effects model is virtually identical to the pooled OLS model except that is accounts for the\n `root`: Calculate test statistics for unit roots\n `root_chart`: Determine the normality of a timeseries.\n - `vif`: Determine the vif, which tests for collinearity.\n + `vif`: Calculates VIF (variance inflation factor), which tests collinearity.\n """ _location_path = "econometrics" diff --git a/openbb_terminal/core/sdk/models/stocks_sdk_model.py b/openbb_terminal/core/sdk/models/stocks_sdk_model.py index 0ae58032c5f..f09f99742ba 100644 --- a/openbb_terminal/core/sdk/models/stocks_sdk_model.py +++ b/openbb_terminal/core/sdk/models/stocks_sdk_model.py @@ -446,9 +446,6 @@ class StocksInsiders(Category): class StocksOptions(Category): """Options Module. - Submodules: - `screen`: Screen Module - Attributes: `chains`: Get Option Chain For A Stock. No greek data is returned\n `dte`: Returns a new column containing the DTE as an integer, including 0.\n @@ -456,8 +453,8 @@ class StocksOptions(Category): `expirations`: Get Option Chain Expirations\n `generate_data`: Gets x values, and y values before and after premiums\n `greeks`: Gets the greeks for a given option\n - `grhist`: Get histoical option greeks\n - `grhist_chart`: Plots historical greeks for a given option. [Source: Syncretism]\n + `grhist`: Get historical EOD option prices, with Greeks, for a given OCC chain label.\n + `grhist_chart`: Plots historical greeks for a given option.\n `hist`: Get historical option pricing.\n `info`: Scrape barchart for options info\n `info_chart`: Scrapes Barchart.com for the options information\n @@ -484,10 +481,8 @@ class StocksOptions(Category): self.expirations = lib.stocks_options_sdk_helper.get_option_expirations self.generate_data = lib.stocks_options_yfinance_model.generate_data self.greeks = lib.stocks_options_sdk_helper.get_greeks - self.grhist = lib.stocks_options_screen_syncretism_model.get_historical_greeks - self.grhist_chart = ( - lib.stocks_options_screen_syncretism_view.view_historical_greeks - ) + self.grhist = lib.stocks_options_intrinio_model.get_historical_options + self.grhist_chart = lib.stocks_options_intrinio_view.view_historical_greeks self.hist = lib.stocks_options_sdk_helper.hist self.info = lib.stocks_options_barchart_model.get_options_info self.info_chart = lib.stocks_options_barchart_view.print_options_data diff --git a/openbb_terminal/core/sdk/sdk_init.py b/openbb_terminal/core/sdk/sdk_init.py index 7cd7dd71b2d..b2e7c512165 100644 --- a/openbb_terminal/core/sdk/sdk_init.py +++ b/openbb_terminal/core/sdk/sdk_init.py @@ -481,11 +481,6 @@ from openbb_terminal.stocks.options import ( yfinance_view as stocks_options_yfinance_view, ) -from openbb_terminal.stocks.options.screen import ( - syncretism_model as stocks_options_screen_syncretism_model, - syncretism_view as stocks_options_screen_syncretism_view, -) - # Stocks - Screener diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index e339b496bbf..2cca3686912 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -173,6 +173,7 @@ econometrics.comparison,econometrics_regression_model.get_comparison, econometrics.dwat,econometrics_regression_model.get_dwat,econometrics_regression_view.display_dwat econometrics.fdols,econometrics_regression_model.get_fdols, econometrics.fe,econometrics_regression_model.get_fe, +econometrics.garch,econometrics_model.get_garch,econometrics_view.display_garch econometrics.get_regression_data,econometrics_regression_model.get_regression_data, econometrics.granger,econometrics_model.get_granger_causality,econometrics_view.display_granger econometrics.load,common_model.load, @@ -184,7 +185,6 @@ econometrics.pols,econometrics_regression_model.get_pols, econometrics.re,econometrics_regression_model.get_re, econometrics.root,econometrics_model.get_root,econometrics_view.display_root econometrics.vif,econometrics_model.get_vif, -econometrics.garch,econometrics_model.get_garch,econometrics_view.display_garch economy.available_indices,economy_yfinance_model.get_available_indices, economy.balance,economy_oecd_model.get_balance,economy_oecd_view.plot_balance economy.bigmac,economy_nasdaq_model.get_big_mac_indices,economy_nasdaq_view.display_big_mac_index @@ -286,6 +286,7 @@ futures.search,futures_yfinance_model.get_search_futures, keys.av,keys_model.set_av_key, keys.binance,keys_model.set_binance_key, keys.bitquery,keys_model.set_bitquery_key, +keys.biztoc,keys_model.set_biztoc_key, keys.cmc,keys_model.set_cmc_key, keys.coinbase,keys_model.set_coinbase_key, keys.coinglass,keys_model.set_coinglass_key, @@ -303,7 +304,6 @@ keys.glassnode,keys_model.set_glassnode_key, keys.messari,keys_model.set_messari_key, keys.mykeys,keys_model.get_keys, keys.news,keys_model.set_news_key, -keys.biztoc,keys_model.set_biztoc_key, keys.oanda,keys_model.set_oanda_key, keys.polygon,keys_model.set_polygon_key, keys.quandl,keys_model.set_quandl_key, @@ -515,15 +515,13 @@ stocks.options.eodchain,stocks_options_intrinio_model.get_full_chain_eod, stocks.options.expirations,stocks_options_sdk_helper.get_option_expirations, stocks.options.generate_data,stocks_options_yfinance_model.generate_data, stocks.options.greeks,stocks_options_sdk_helper.get_greeks, -stocks.options.grhist,stocks_options_screen_syncretism_model.get_historical_greeks,stocks_options_screen_syncretism_view.view_historical_greeks +stocks.options.grhist,stocks_options_intrinio_model.get_historical_options,stocks_options_intrinio_view.view_historical_greeks stocks.options.hist,stocks_options_sdk_helper.hist, stocks.options.info,stocks_options_barchart_model.get_options_info,stocks_options_barchart_view.print_options_data stocks.options.last_price,stocks_options_tradier_model.get_last_price, stocks.options.oi,stocks_options_view.plot_oi, stocks.options.pcr,stocks_options_alphaquery_model.get_put_call_ratio,stocks_options_alphaquery_view.display_put_call_ratio stocks.options.price,stocks_options_sdk_helper.get_option_current_price, -stocks.options.screen.check_presets,stocks_options_screen_syncretism_model.check_presets, -stocks.options.screen.screener_output,stocks_options_screen_syncretism_model.get_screener_output,stocks_options_screen_syncretism_view.view_screener_output stocks.options.unu,stocks_options_fdscanner_model.unusual_options,stocks_options_fdscanner_view.display_options stocks.options.voi,stocks_options_view.plot_voi, stocks.options.vol,stocks_options_view.plot_vol, diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml index 04be224f771..9f1dab93733 100644 --- a/openbb_terminal/miscellaneous/i18n/en.yml +++ b/openbb_terminal/miscellaneous/i18n/en.yml @@ -146,7 +146,6 @@ en: stocks/forecast: forecast techniques rnn, nbeats, transformer, block rnn stocks/options/unu: show unusual options activity stocks/options/calc: basic call/put PnL calculator - stocks/options/screen: screens tickers based on preset stocks/options/load: load new ticker stocks/options/exp: see and set expiration dates stocks/options/_ticker: Ticker @@ -165,12 +164,6 @@ en: stocks/options/eodchain: gets option chain at a specific date stocks/options/pricing: shows options pricing and risk neutral valuation stocks/options/hedge: shows portfolio weights in order to neutralise delta - stocks/options/screen/view: view available presets (or one in particular) - stocks/options/screen/set: set one of the available presets - stocks/options/screen/_preset: Preset - stocks/options/screen/scr: screen data from this preset - stocks/options/screen/_screened_tickers: Last screened tickers - stocks/options/screen/ca: take these to comparison analysis menu stocks/options/hedge/_ticker: Ticker stocks/options/hedge/_expiry: Expiry stocks/options/hedge/pick: pick the underlying asset position diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_options.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_options.openbb index fb6a9ccd8e6..be866ac4fa3 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_options.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_options.openbb @@ -1,11 +1,5 @@ stocks options -screen -view -view --preset high_IV.ini -set --preset high_IV.ini -scr -q unu -l 2 -s Strike -r -c unu -l 2 -s Vol calc diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_options_screen_ca.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_options_screen_ca.openbb deleted file mode 100644 index 1414b04fb1e..00000000000 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_options_screen_ca.openbb +++ /dev/null @@ -1,10 +0,0 @@ -stocks -options -screen -view -view high_IV.ini -set high_IV.ini -scr -ca -historical -exit diff --git a/openbb_terminal/miscellaneous/sources/openbb_default.json b/openbb_terminal/miscellaneous/sources/openbb_default.json index 04dc5b14551..a595239aacb 100644 --- a/openbb_terminal/miscellaneous/sources/openbb_default.json +++ b/openbb_terminal/miscellaneous/sources/openbb_default.json @@ -51,15 +51,6 @@ "FDScanner" ], "calc": [], - "screen": { - "view": [ - "Syncretism" - ], - "set": [], - "scr": [ - "Syncretism" - ] - }, "load": [ "YahooFinance", "Tradier", @@ -81,7 +72,6 @@ "YahooFinance" ], "grhist": [ - "Syncretism", "Intrinio" ], "plot": [ diff --git a/openbb_terminal/miscellaneous/stocks/options/README.md b/openbb_terminal/miscellaneous/stocks/options/README.md deleted file mode 100644 index 7ec93768e92..00000000000 --- a/openbb_terminal/miscellaneous/stocks/options/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# PRESETS - -- [How to add presets](#how-to-add-presets) -- [template](#template) - ---- - -## How to add Presets - -1. Go to the folder OpenBBTerminal/openbb_terminal/options/presets. - -2. There should be a `README.md` file and multiple `.ini` files. One of these `.ini` files should be named `template.ini`. - - Image1 - -3. Copy the `template.ini` file and paste it in the same directory. -4. Rename that file to something you find meaningful, e.g. `my_own_filter.ini`. - - Image2 - -5. Open the file you just renamed (e.g. `my_own_filter.ini`), and set the parameters you want to filter. - - Image3 - -6. It may be useful to play with the main source since you can tweak these and understand - how they influence the outcome of the filtered stocks. - - Image4 - -7. Update the Author and Description name. E.g. - - Image5 - -8. Start the terminal, and go to the `> op` menu. In there, you can play with it on the terminal as shown: - - - **disp**: Allows to see the screeners available. I.e. all `.ini` files in presets folder. - - **disp **: Allows to see the specific parameters set for the preset selected. - - **scr **: Allows to show stocks that are filtered using the selected preset. - - Note: As default, if the user does **scr** this will use the `template.ini` file. So, the user can do some tests - with tweaking of parameters on the `template.ini` file. - - Image6 - -9. Share with other Apes. You can do so by either creating yourself a Pull Request with this change, or asking a dev - (e.g. @Sexy_Year) on our discord server to add it for you. - ---- - -## template - -- **Author of preset:** OpenBBTerminal -- **Contact:** -- **Description:** Template with all available filters and their options menu. More information can be found in . - ---- diff --git a/openbb_terminal/miscellaneous/stocks/options/high_iv.ini b/openbb_terminal/miscellaneous/stocks/options/high_iv.ini deleted file mode 100644 index 0a865fb1f99..00000000000 --- a/openbb_terminal/miscellaneous/stocks/options/high_iv.ini +++ /dev/null @@ -1,183 +0,0 @@ -# Author of preset: Danglewood -# Description: Delta bound filter. -[FILTER] - -# tickers [string]: a list of space or comma separated tickers to restrict or exclude them from the query. -# E.g. "GME" or for multiples "AMC,BB,GME". -tickers = - -# exclude [true|false]: if true, then tickers are excluded. If false, the search is restricted to these tickers. -exclude = - -# min-diff [int]: minimum difference in percentage between strike and stock price. -min-diff = - -# max-diff [int]: maximum difference in percentage between strike and stock price. -max-diff = - -# itm [bool]: select in the money options. -itm = false - -# otm [bool]: select out of the money options. -otm = true - -# min-ask-bid [float]: minimum spread between bid and ask. -min-ask-bid = - -# max-ask-bid [float]: maximum spread between bid and ask. -max-ask-bid = - -# min-exp [int]: minimum days until expiration. -min-exp = - -# max-exp [int]: maximum days until expiration. -max-exp = - -# min-price [float]: minimum option premium. -min-price = - -# max-price [float]: maximum option premium. -max-price = - -#min-strike [float]: minimum option strike. -min-strike = - -#max-strike [float]: maximum option strike. -max-strike = - -# calls [true|false]: select call options. -calls = true - -# puts [true|false]: select put options. -puts = true - -# stock [true|false]: select normal stocks. -stock = true - -# etf [true|false]: select etf options. -etf = false - -# min-sto [float]: minimum option price / stock price ratio. -min-sto = - -# max-sto [float]: maximum option price / stock price ratio. -max-sto = - -# min-yield [float]: minimum premium / strike price ratio. -min-yield = - -# max-yield [float]: maximum premium / strike price ratio. -max-yield = - -# min-myield [float]: minimum yield per month until expiration date. -min-myield = - -# max-myield [float]: maximum yield per month until expiration date. -max-myield = - -# min-delta [float]: minimum delta greek. -min-delta = - -# max-delta [float]: maximum delta greek. -max-delta = - -# min-gamma [float]: minimum gamma greek. -min-gamma = - -# max-gamma [float]: maximum gamma greek. -max-gamma = - -# min-theta [float]: minimum theta greek. -min-theta = - -# max-theta [float]: maximum theta greek. -max-theta = - -# min-vega [float]: minimum vega greek. -min-vega = - -# max-vega [float]: maximum vega greek. -max-vega = - -#min-iv [float]: minimum implied volatility. -min-iv = 1.00 - -#max-iv [float]: maximum implied volatility. -max-iv = - -#min-oi [float]: minimum open interest. -min-oi = 10 - -#max-oi[float]: maximum open interest -max-oi = - -#min-volume [float]: minimum volume. -min-volume = 10 - -#max-volume [float]: maximum volume. -max-volume = - -#min-voi [float]: minimum volume / oi ratio. -min-voi = - -#max-voi [float]: maximum volume / oi ratio. -max-voi = - -# min-cap [float]: minimum market capitalization (in billions USD). -min-cap = - -# max-cap [float]: maximum market capitalization (in billions USD). -max-cap = - -# order-by [default: e_desc]: how to order results, possible values: -# "e_desc", "e_asc": expiration, descending / ascending. -# "iv_desc", "iv_asc": implied volatility, descending / ascending. -# "lp_desc", "lp_asc": lastprice, descending / ascending. -# "md_desc", "md_asc": current stock price, descending / ascending. -# "oi_desc", "oi_asc": open interest, descending / ascending. -# "v_desc", "v_asc": volume, descending / ascending. -# "ρ_desc", "ρ_asc": rho, descending / ascending. - -order-by = "iv_desc" - -# limit [int]: number of results (max 50). -limit = - -# active [true|false]: if set to true, restricts to options for which volume, open interest, ask, and bid are all > 0. -active = true - -# [float|int] deviation from the 20 day average -min-price-20d = -max-price-20d = -min-volume-20d = -max-volume-20d = -min-iv-20d = -max-iv-20d = -min-delta-20d = -max-delta-20d = -min-gamma-20d = -max-gamma-20d = -min-theta-20d = -max-theta-20d = -min-vega-20d = -max-vega-20d = -min-rho-20d = -max-rho-20d = - -# [float|int] deviation from the 100 day average -min-price-100d = -max-price-100d = -min-volume-100d = -max-volume-100d = -min-iv-100d = -max-iv-100d = -min-delta-100d = -max-delta-100d = -min-gamma-100d = -max-gamma-100d = -min-theta-100d = -max-theta-100d = -min-vega-100d = -max-vega-100d = -min-rho-100d = -max-rho-100d = diff --git a/openbb_terminal/miscellaneous/stocks/options/iv_below_20day.ini b/openbb_terminal/miscellaneous/stocks/options/iv_below_20day.ini deleted file mode 100644 index f121959a319..00000000000 --- a/openbb_terminal/miscellaneous/stocks/options/iv_below_20day.ini +++ /dev/null @@ -1,183 +0,0 @@ -# Author of preset: Danglewood -# Description: Delta bound filter. -[FILTER] - -# tickers [string]: a list of space or comma separated tickers to restrict or exclude them from the query. -# E.g. "GME" or for multiples "AMC,BB,GME". -tickers = - -# exclude [true|false]: if true, then tickers are excluded. If false, the search is restricted to these tickers. -exclude = - -# min-diff [int]: minimum difference in percentage between strike and stock price. -min-diff = - -# max-diff [int]: maximum difference in percentage between strike and stock price. -max-diff = - -# itm [bool]: select in the money options. -itm = false - -# otm [bool]: select out of the money options. -otm = true - -# min-ask-bid [float]: minimum spread between bid and ask. -min-ask-bid = - -# max-ask-bid [float]: maximum spread between bid and ask. -max-ask-bid = - -# min-exp [int]: minimum days until expiration. -min-exp = - -# max-exp [int]: maximum days until expiration. -max-exp = - -# min-price [float]: minimum option premium. -min-price = - -# max-price [float]: maximum option premium. -max-price = - -#min-strike [float]: minimum option strike. -min-strike = - -#max-strike [float]: maximum option strike. -max-strike = - -# calls [true|false]: select call options. -calls = true - -# puts [true|false]: select put options. -puts = true - -# stock [true|false]: select normal stocks. -stock = true - -# etf [true|false]: select etf options. -etf = false - -# min-sto [float]: minimum option price / stock price ratio. -min-sto = - -# max-sto [float]: maximum option price / stock price ratio. -max-sto = - -# min-yield [float]: minimum premium / strike price ratio. -min-yield = - -# max-yield [float]: maximum premium / strike price ratio. -max-yield = - -# min-myield [float]: minimum yield per month until expiration date. -min-myield = - -# max-myield [float]: maximum yield per month until expiration date. -max-myield = - -# min-delta [float]: minimum delta greek. -min-delta = - -# max-delta [float]: maximum delta greek. -max-delta = - -# min-gamma [float]: minimum gamma greek. -min-gamma = - -# max-gamma [float]: maximum gamma greek. -max-gamma = - -# min-theta [float]: minimum theta greek. -min-theta = - -# max-theta [float]: maximum theta greek. -max-theta = - -# min-vega [float]: minimum vega greek. -min-vega = - -# max-vega [float]: maximum vega greek. -max-vega = - -#min-iv [float]: minimum implied volatility. -min-iv = 1.00 - -#max-iv [float]: maximum implied volatility. -max-iv = - -#min-oi [float]: minimum open interest. -min-oi = 10 - -#max-oi[float]: maximum open interest -max-oi = - -#min-volume [float]: minimum volume. -min-volume = 10 - -#max-volume [float]: maximum volume. -max-volume = - -#min-voi [float]: minimum volume / oi ratio. -min-voi = - -#max-voi [float]: maximum volume / oi ratio. -max-voi = - -# min-cap [float]: minimum market capitalization (in billions USD). -min-cap = - -# max-cap [float]: maximum market capitalization (in billions USD). -max-cap = - -# order-by [default: e_desc]: how to order results, possible values: -# "e_desc", "e_asc": expiration, descending / ascending. -# "iv_desc", "iv_asc": implied volatility, descending / ascending. -# "lp_desc", "lp_asc": lastprice, descending / ascending. -# "md_desc", "md_asc": current stock price, descending / ascending. -# "oi_desc", "oi_asc": open interest, descending / ascending. -# "v_desc", "v_asc": volume, descending / ascending. -# "ρ_desc", "ρ_asc": rho, descending / ascending. - -order-by = "iv_asc" - -# limit [int]: number of results (max 50). -limit = - -# active [true|false]: if set to true, restricts to options for which volume, open interest, ask, and bid are all > 0. -active = true - -# [float|int] deviation from the 20 day average -min-price-20d = -max-price-20d = -min-volume-20d = -max-volume-20d = -min-iv-20d = 0.80 -max-iv-20d = -min-delta-20d = -max-delta-20d = -min-gamma-20d = -max-gamma-20d = -min-theta-20d = -max-theta-20d = -min-vega-20d = -max-vega-20d = -min-rho-20d = -max-rho-20d = - -# [float|int] deviation from the 100 day average -min-price-100d = -max-price-100d = -min-volume-100d = -max-volume-100d = -min-iv-100d = -max-iv-100d = -min-delta-100d = -max-delta-100d = -min-gamma-100d = -max-gamma-100d = -min-theta-100d = -max-theta-100d = -min-vega-100d = -max-vega-100d = -min-rho-100d = -max-rho-100d = diff --git a/openbb_terminal/miscellaneous/stocks/options/liquid_otm.ini b/openbb_terminal/miscellaneous/stocks/options/liquid_otm.ini deleted file mode 100644 index e0d2c8b90b3..00000000000 --- a/openbb_terminal/miscellaneous/stocks/options/liquid_otm.ini +++ /dev/null @@ -1,176 +0,0 @@ -# Author of preset: Danglewood -# Description: Ex-FAANGM. -[FILTER] - -# min-diff [int]: minimum difference in percentage between strike and stock price. -min-diff = 5 - -# max-diff [int]: maximum difference in percentage between strike and stock price. -max-diff = 30 - -# itm [bool]: select in the money options. -itm = false - -# otm [bool]: select out of the money options. -otm = true - -# min-ask-bid [float]: minimum spread between bid and ask. -min-ask-bid = - -# max-ask-bid [float]: maximum spread between bid and ask. -max-ask-bid = - -# min-exp [int]: minimum days until expiration. -min-exp = 30 - -# max-exp [int]: maximum days until expiration. -max-exp = 90 - -# min-price [float]: minimum option premium. -min-price = - -# max-price [float]: maximum option premium. -max-price = - -#min-strike [float]: minimum option strike. -min-strike = 10 - -#max-strike [float]: maximum option strike. -max-strike = - -# calls [true|false]: select call options. -calls = true - -# puts [true|false]: select put options. -puts = true - -# stock [true|false]: select normal stocks. -stock = true - -# etf [true|false]: select etf options. -etf = true - -# min-sto [float]: minimum option price / stock price ratio. -min-sto = - -# max-sto [float]: maximum option price / stock price ratio. -max-sto = - -# min-yield [float]: minimum premium / strike price ratio. -min-yield = - -# max-yield [float]: maximum premium / strike price ratio. -max-yield = - -# min-myield [float]: minimum yield per month until expiration date. -min-myield = - -# max-myield [float]: maximum yield per month until expiration date. -max-myield = - -# min-delta [float]: minimum delta greek. -min-delta = - -# max-delta [float]: maximum delta greek. -max-delta = 0.5 - -# min-gamma [float]: minimum gamma greek. -min-gamma = - -# max-gamma [float]: maximum gamma greek. -max-gamma = - -# min-theta [float]: minimum theta greek. -min-theta = - -# max-theta [float]: maximum theta greek. -max-theta = - -# min-vega [float]: minimum vega greek. -min-vega = - -# max-vega [float]: maximum vega greek. -max-vega = - -#min-iv [float]: minimum implied volatility. -min-iv = - -#max-iv [float]: maximum implied volatility. -max-iv = - -#min-oi [float]: minimum open interest. -min-oi = 2000 - -#max-oi[float]: maximum open interest -max-oi = - -#min-volume [float]: minimum volume. -min-volume = 200 - -#max-volume [float]: maximum volume. -max-volume = - -#min-voi [float]: minimum volume / oi ratio. -min-voi = - -#max-voi [float]: maximum volume / oi ratio. -max-voi = - -# min-cap [float]: minimum market capitalization (in billions USD). -min-cap = - -# max-cap [float]: maximum market capitalization (in billions USD). -max-cap = - -# order-by [default: e_desc]: how to order results, possible values: -# "e_desc", "e_asc": expiration, descending / ascending. -# "iv_desc", "iv_asc": implied volatility, descending / ascending. -# "lp_desc", "lp_asc": lastprice, descending / ascending. -# "md_desc", "md_asc": current stock price, descending / ascending. -# "oi_desc", "oi_asc": open interest, descending / ascending. -# "v_desc", "v_asc": volume, descending / ascending. -# "ρ_desc", "ρ_asc": rho, descending / ascending. - -order-by = "iv_desc" - -# limit [int]: number of results (max 50). -limit = - -# active [true|false]: if set to true, restricts to options for which volume, open interest, ask, and bid are all > 0. -active = true - -# [float|int] deviation from the 20 day average -min-price-20d = -max-price-20d = -min-volume-20d = -max-volume-20d = -min-iv-20d = -max-iv-20d = -min-delta-20d = -max-delta-20d = -min-gamma-20d = -max-gamma-20d = -min-theta-20d = -max-theta-20d = -min-vega-20d = -max-vega-20d = -min-rho-20d = -max-rho-20d = - -# [float|int] deviation from the 100 day average -min-price-100d = -max-price-100d = -min-volume-100d = -max-volume-100d = -min-iv-100d = -max-iv-100d = -min-delta-100d = -max-delta-100d = -min-gamma-100d = -max-gamma-100d = -min-theta-100d = -max-theta-100d = -min-vega-100d = -max-vega-100d = -min-rho-100d = -max-rho-100d = diff --git a/openbb_terminal/miscellaneous/stocks/options/spy_30_delta.ini b/openbb_terminal/miscellaneous/stocks/options/spy_30_delta.ini deleted file mode 100644 index 9808f91a146..00000000000 --- a/openbb_terminal/miscellaneous/stocks/options/spy_30_delta.ini +++ /dev/null @@ -1,183 +0,0 @@ -# Author of preset: Danglewood -# Description: Delta bound filter. -[FILTER] - -# tickers [string]: a list of space or comma separated tickers to restrict or exclude them from the query. -# E.g. "GME" or for multiples "AMC,BB,GME". -tickers = "SPY" - -# exclude [true|false]: if true, then tickers are excluded. If false, the search is restricted to these tickers. -exclude = - -# min-diff [int]: minimum difference in percentage between strike and stock price. -min-diff = - -# max-diff [int]: maximum difference in percentage between strike and stock price. -max-diff = - -# itm [bool]: select in the money options. -itm = true - -# otm [bool]: select out of the money options. -otm = true - -# min-ask-bid [float]: minimum spread between bid and ask. -min-ask-bid = - -# max-ask-bid [float]: maximum spread between bid and ask. -max-ask-bid = - -# min-exp [int]: minimum days until expiration. -min-exp = - -# max-exp [int]: maximum days until expiration. -max-exp = - -# min-price [float]: minimum option premium. -min-price = - -# max-price [float]: maximum option premium. -max-price = - -#min-strike [float]: minimum option strike. -min-strike = 280 - -#max-strike [float]: maximum option strike. -max-strike = - -# calls [true|false]: select call options. -calls = true - -# puts [true|false]: select put options. -puts = true - -# stock [true|false]: select normal stocks. -stock = true - -# etf [true|false]: select etf options. -etf = true - -# min-sto [float]: minimum option price / stock price ratio. -min-sto = - -# max-sto [float]: maximum option price / stock price ratio. -max-sto = - -# min-yield [float]: minimum premium / strike price ratio. -min-yield = - -# max-yield [float]: maximum premium / strike price ratio. -max-yield = - -# min-myield [float]: minimum yield per month until expiration date. -min-myield = - -# max-myield [float]: maximum yield per month until expiration date. -max-myield = - -# min-delta [float]: minimum delta greek. -min-delta = 0.10 - -# max-delta [float]: maximum delta greek. -max-delta = 0.35 - -# min-gamma [float]: minimum gamma greek. -min-gamma = - -# max-gamma [float]: maximum gamma greek. -max-gamma = - -# min-theta [float]: minimum theta greek. -min-theta = - -# max-theta [float]: maximum theta greek. -max-theta = - -# min-vega [float]: minimum vega greek. -min-vega = - -# max-vega [float]: maximum vega greek. -max-vega = - -#min-iv [float]: minimum implied volatility. -min-iv = - -#max-iv [float]: maximum implied volatility. -max-iv = - -#min-oi [float]: minimum open interest. -min-oi = 10 - -#max-oi[float]: maximum open interest -max-oi = - -#min-volume [float]: minimum volume. -min-volume = 100 - -#max-volume [float]: maximum volume. -max-volume = - -#min-voi [float]: minimum volume / oi ratio. -min-voi = - -#max-voi [float]: maximum volume / oi ratio. -max-voi = - -# min-cap [float]: minimum market capitalization (in billions USD). -min-cap = - -# max-cap [float]: maximum market capitalization (in billions USD). -max-cap = - -# order-by [default: e_desc]: how to order results, possible values: -# "e_desc", "e_asc": expiration, descending / ascending. -# "iv_desc", "iv_asc": implied volatility, descending / ascending. -# "lp_desc", "lp_asc": lastprice, descending / ascending. -# "md_desc", "md_asc": current stock price, descending / ascending. -# "oi_desc", "oi_asc": open interest, descending / ascending. -# "v_desc", "v_asc": volume, descending / ascending. -# "ρ_desc", "ρ_asc": rho, descending / ascending. - -order-by = - -# limit [int]: number of results (max 50). -limit = - -# active [true|false]: if set to true, restricts to options for which volume, open interest, ask, and bid are all > 0. -active = - -# [float|int] deviation from the 20 day average -min-price-20d = -max-price-20d = -min-volume-20d = -max-volume-20d = -min-iv-20d = -max-iv-20d = -min-delta-20d = -max-delta-20d = -min-gamma-20d = -max-gamma-20d = -min-theta-20d = -max-theta-20d = -min-vega-20d = -max-vega-20d = -min-rho-20d = -max-rho-20d = - -# [float|int] deviation from the 100 day average -min-price-100d = -max-price-100d = -min-volume-100d = -max-volume-100d = -min-iv-100d = -max-iv-100d = -min-delta-100d = -max-delta-100d = -min-gamma-100d = -max-gamma-100d = -min-theta-100d = -max-theta-100d = -min-vega-100d = -max-vega-100d = -min-rho-100d = -max-rho-100d = diff --git a/openbb_terminal/miscellaneous/stocks/options/template.ini b/openbb_terminal/miscellaneous/stocks/options/template.ini deleted file mode 100644 index ab73c0c59fc..00000000000 --- a/openbb_terminal/miscellaneous/stocks/options/template.ini +++ /dev/null @@ -1,179 +0,0 @@ -# Author of preset: OpenBB Terminal -# Description: This is just a sample. The user that adds the preset can add a description for what type of stocks these filters are being used. -[FILTER] - -# tickers [string]: a list of space or comma separated tickers to restrict or exclude them from the query. -# E.g. "GME" or for multiples "AMC","BB","GME". -tickers = - -# exclude [true|false]: if true, then tickers are excluded. If false, the search is restricted to these tickers. -exclude = - -# min-diff [int]: minimum difference in percentage between strike and stock price. -min-diff = - -# max-diff [int]: maximum difference in percentage between strike and stock price. -max-diff = - -# itm [bool]: select in the money options. -itm = true - -# otm [bool]: select out of the money options. -otm = true - -# min-ask-bid [float]: minimum spread between bid and ask. -min-ask-bid = - -# max-ask-bid [float]: maximum spread between bid and ask. -max-ask-bid = - -# min-exp [int]: minimum days until expiration. -min-exp = - -# max-exp [int]: maximum days until expiration. -max-exp = - -# min-price [float]: minimum option premium. -min-price = - -# max-price [float]: maximum option premium. -max-price = - -#min-strike [float]: minimum option strike. -min-strike = - -#max-strike [float]: maximum option strike. -max-strike = - -# calls [true|false]: select call options. -calls = true - -# puts [true|false]: select put options. -puts = true - -# stock [true|false]: select normal stocks. -stock = - -# etf [true|false]: select etf options. -etf = - -# min-sto [float]: minimum option price / stock price ratio. -min-sto = - -# max-sto [float]: maximum option price / stock price ratio. -max-sto = - -# min-yield [float]: minimum premium / strike price ratio. -min-yield = - -# max-yield [float]: maximum premium / strike price ratio. -max-yield = - -# min-myield [float]: minimum yield per month until expiration date. -min-myield = - -# max-myield [float]: maximum yield per month until expiration date. -max-myield = - -# min-delta [float]: minimum delta greek. -min-delta = - -# max-delta [float]: maximum delta greek. -max-delta = - -# min-gamma [float]: minimum gamma greek. -min-gamma = - -# max-gamma [float]: maximum gamma greek. -max-gamma = - -# min-theta [float]: minimum theta greek. -min-theta = - -# max-theta [float]: maximum theta greek. -max-theta = - -# min-vega [float]: minimum vega greek. -min-vega = - -# max-vega [float]: maximum vega greek. -max-vega = - -#min-iv [float]: minimum implied volatility. -min-iv = - -#max-iv [float]: maximum implied volatility. -max-iv = - -#min-oi [float]: minimum open interest. -min-oi = - -#max-oi[float]: maximum open interest -max-oi = - -#min-volume [float]: minimum volume. -min-volume = - -#max-volume [float]: maximum volume. -max-volume = - -#min-voi [float]: minimum volume / oi ratio. -min-voi = - -#max-voi [float]: maximum volume / oi ratio. -max-voi = - -# min-cap [float]: minimum market capitalization (in billions USD). -min-cap = - -# max-cap [float]: maximum market capitalization (in billions USD). -max-cap = - -# order-by [default: e_desc]: how to order results, possible values: -# e_desc, e_asc: expiration, descending / ascending. -# iv_desc, iv_asc: implied volatility, descending / ascending. -# lp_desc, lp_asc: lastprice, descending / ascending. -# md_desc, md_asc: current stock price, descending / ascending. -order-by = - -# limit [int]: number of results (max 50). -limit = - -# active [true|false]: if set to true, restricts to options for which volume, open interest, ask, and bid are all > 0. -active = - -# [float|int] deviation from the 20 day average -min-price-20d = -max-price-20d = -min-volume-20d = -max-volume-20d = -min-iv-20d = -max-iv-20d = -min-delta-20d = -max-delta-20d = -min-gamma-20d = -max-gamma-20d = -min-theta-20d = -max-theta-20d = -min-vega-20d = -max-vega-20d = -min-rho-20d = -max-rho-20d = - -# [float|int] deviation from the 100 day average -min-price-100d = -max-price-100d = -min-volume-100d = -max-volume-100d = -min-iv-100d = -max-iv-100d = -min-delta-100d = -max-delta-100d = -min-gamma-100d = -max-gamma-100d = -min-theta-100d = -max-theta-100d = -min-vega-100d = -max-vega-100d = -min-rho-100d = -max-rho-100d = diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py index 74bb632fa43..70de201b966 100644 --- a/openbb_terminal/sdk.py +++ b/openbb_terminal/sdk.py @@ -140,7 +140,7 @@ class OpenBBSDK: `re`: The random effects model is virtually identical to the pooled OLS model except that is accounts for the\n `root`: Calculate test statistics for unit roots\n `root_chart`: Determine the normality of a timeseries.\n - `vif`: Determine the vif, which tests for collinearity.\n + `vif`: Calculates VIF (variance inflation factor), which tests collinearity.\n """ return model.EconometricsRoot() diff --git a/openbb_terminal/stocks/options/intrinio_model.py b/openbb_terminal/stocks/options/intrinio_model.py index 925ee0368f2..3b0fd5efe56 100644 --- a/openbb_terminal/stocks/options/intrinio_model.py +++ b/openbb_terminal/stocks/options/intrinio_model.py @@ -324,17 +324,17 @@ def get_last_price(symbol: str) -> float: @log_start_end(log=logger) @check_api_key(["API_INTRINIO_KEY"]) def get_historical_options(symbol: str) -> pd.DataFrame: - """Get historical pricing option chain for a given symbol + """Get historical EOD option prices, with Greeks, for a given OCC chain label. Parameters ---------- symbol : str - Symbol to get historical option chain for. Should be an OCC chain label + Symbol to get historical option chain for. Should be an OCC chain label. Returns ------- pd.DataFrame - Dataframe of historical option chain + Dataframe of historical option chain. """ try: historical = pd.DataFrame( diff --git a/openbb_terminal/stocks/options/intrinio_view.py b/openbb_terminal/stocks/options/intrinio_view.py index 0d317966f0d..b274f6025ad 100644 --- a/openbb_terminal/stocks/options/intrinio_view.py +++ b/openbb_terminal/stocks/options/intrinio_view.py @@ -112,9 +112,9 @@ def display_historical( @log_start_end(log=logger) def view_historical_greeks( - symbol: str, - expiry: str, - strike: Union[float, str], + symbol: str = "", + expiry: str = "", + strike: Union[float, str] = 0, greek: str = "Delta", chain_id: str = "", put: bool = False, @@ -124,7 +124,7 @@ def view_historical_greeks( sheet_name: Optional[str] = None, external_axes: bool = False, ) -> Union[None, OpenBBFigure]: - """Plots historical greeks for a given option. [Source: Syncretism] + """Plots historical greeks for a given option. Parameters ---------- @@ -158,9 +158,12 @@ def view_historical_greeks( else: chain_id = f"{symbol}{''.join(expiry[2:].split('-'))}{'P' if put else 'C'}{str(int(1000*strike)).zfill(8)}" df = intrinio_model.get_historical_options(chain_id) - title = f"{(greek).capitalize()} historical for {symbol.upper()} {strike} {['Call','Put'][put]}" - + title = ( + f"Historical {(greek).capitalize()} for {symbol.upper()}" + f"{strike} {['Call','Put'][put]} and {expiry} Expiration" + ) if df.empty: + print(f"No data found for {chain_id}") return None df = df.rename(columns={"impliedVolatility": "iv", "close": "price"}) @@ -213,7 +216,7 @@ def view_historical_greeks( fig.update_layout( yaxis2=dict( side="left", - title=greek, + title=greek.title(), anchor="x", overlaying="y", ), diff --git a/openbb_terminal/stocks/options/options_controller.py b/openbb_terminal/stocks/options/options_controller.py index e96c8b415b9..33cc8726b3e 100644 --- a/openbb_terminal/stocks/options/options_controller.py +++ b/openbb_terminal/stocks/options/options_controller.py @@ -43,11 +43,6 @@ from openbb_terminal.stocks.options.options_view import ( plot_voi, plot_vol, ) -from openbb_terminal.stocks.options.screen import ( - screener_controller, - syncretism_model, - syncretism_view, -) # pylint: disable=R1710,C0302,R0916,R0902 @@ -85,12 +80,9 @@ class OptionsController(BaseController): ] CHOICES_MENUS = [ "pricing", - "screen", "hedge", ] - preset_choices = syncretism_model.get_preset_choices() - grhist_greeks_choices = [ "iv", "gamma", @@ -262,8 +254,6 @@ class OptionsController(BaseController): mt.add_cmd("unu") mt.add_cmd("calc") mt.add_raw("\n") - mt.add_menu("screen") - mt.add_raw("\n") mt.add_cmd("load") mt.add_cmd("exp", self.ticker) mt.add_raw("\n") @@ -526,9 +516,16 @@ class OptionsController(BaseController): "--strike", dest="strike", type=float, - required="--chain" not in other_args and "-h" not in other_args, help="Strike price to look at", ) + parser.add_argument( + "-e", + "--expiration", + dest="expiration", + type=str, + default=self.selected_date, + help="The expiration date of the option. Format: YYYY-MM-DD", + ) parser.add_argument( "-p", "--put", @@ -552,6 +549,7 @@ class OptionsController(BaseController): dest="chain_id", default="", type=str, + required="--strike" not in other_args and "-h" not in other_args, help="OCC option symbol", ) parser.add_argument( @@ -575,8 +573,12 @@ class OptionsController(BaseController): if ns_parser := self.parse_known_args_and_warn( parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES ): - if self.ticker or "--chain" in other_args: - if self.selected_date or "--chain" in other_args: + if self.ticker or ns_parser.chain_id in other_args: + if ( + self.selected_date + or ns_parser.expiration in other_args + or ns_parser.chain_id + ): if ( not self.chain.empty and ( @@ -591,38 +593,24 @@ class OptionsController(BaseController): in [float(strike) for strike in self.chain["strike"]] ) ) - or "--chain" in other_args + or ns_parser.chain_id in other_args ): - if ns_parser.source == "Syncretism": - syncretism_view.view_historical_greeks( - symbol=self.ticker, - expiry=self.selected_date, - strike=ns_parser.strike, - greek=ns_parser.greek, - chain_id=ns_parser.chain_id, - put=ns_parser.put, - raw=ns_parser.raw, - limit=ns_parser.limit, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - if ns_parser.source == "Intrinio": - intrinio_view.view_historical_greeks( - symbol=self.ticker, - expiry=self.selected_date, - strike=ns_parser.strike, - greek=ns_parser.greek, - chain_id=ns_parser.chain_id, - put=ns_parser.put, - raw=ns_parser.raw, - limit=ns_parser.limit, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) + intrinio_view.view_historical_greeks( + symbol=self.ticker, + expiry=ns_parser.expiration + if ns_parser.expiration + else self.selected_date, + strike=ns_parser.strike, + greek=ns_parser.greek, + chain_id=ns_parser.chain_id, + put=ns_parser.put, + raw=ns_parser.raw, + limit=ns_parser.limit, + export=ns_parser.export, + sheet_name=" ".join(ns_parser.sheet_name) + if ns_parser.sheet_name + else None, + ) else: console.print("No correct strike input") else: @@ -1418,11 +1406,6 @@ class OptionsController(BaseController): else: console.print("No ticker loaded. First use `load `") - @log_start_end(log=logger) - def call_screen(self, _): - """Process screen command""" - self.queue = screener_controller.ScreenerController(self.queue).menu() - @log_start_end(log=logger) def call_eodchain(self, other_args: List[str]): """Process greeks command""" diff --git a/openbb_terminal/stocks/options/screen/__init__.py b/openbb_terminal/stocks/options/screen/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/openbb_terminal/stocks/options/screen/screener_controller.py b/openbb_terminal/stocks/options/screen/screener_controller.py deleted file mode 100644 index a7a134b88e8..00000000000 --- a/openbb_terminal/stocks/options/screen/screener_controller.py +++ /dev/null @@ -1,172 +0,0 @@ -""" Options Screener Controller Module """ -__docformat__ = "numpy" - -import argparse -import logging -from typing import List, Optional - -from openbb_terminal.core.session.current_user import get_current_user -from openbb_terminal.custom_prompt_toolkit import NestedCompleter -from openbb_terminal.decorators import log_start_end -from openbb_terminal.helper_funcs import EXPORT_ONLY_RAW_DATA_ALLOWED, check_positive -from openbb_terminal.menu import session -from openbb_terminal.parent_classes import BaseController -from openbb_terminal.rich_config import MenuText, console -from openbb_terminal.stocks.comparison_analysis import ca_controller -from openbb_terminal.stocks.options.screen import syncretism_model, syncretism_view - -# pylint: disable=E1121 - - -logger = logging.getLogger(__name__) - - -class ScreenerController(BaseController): - """Screener Controller class""" - - CHOICES_COMMANDS = ["view", "set", "scr"] - CHOICES_MENUS = [ - "ca", - ] - - preset_choices = syncretism_model.get_preset_choices() - - PATH = "/stocks/options/screen/" - CHOICES_GENERATION = True - - def __init__(self, queue: Optional[List[str]] = None): - """Constructor""" - super().__init__(queue) - - self.preset = "high_iv.ini" - self.screen_tickers: List = list() - - if session and get_current_user().preferences.USE_PROMPT_TOOLKIT: - choices: dict = self.choices_default - - self.completer = NestedCompleter.from_nested_dict(choices) - - def print_help(self): - """Print help""" - mt = MenuText("stocks/options/screen/") - mt.add_cmd("view") - mt.add_cmd("set") - mt.add_raw("\n") - mt.add_param("_preset", self.preset) - mt.add_raw("\n") - mt.add_cmd("scr") - mt.add_raw("\n") - mt.add_param("_screened_tickers", ", ".join(self.screen_tickers)) - mt.add_raw("\n") - mt.add_menu("ca") - console.print(text=mt.menu_text, menu="Stocks - Options - Screener") - - @log_start_end(log=logger) - def call_view(self, other_args: List[str]): - """Process view command""" - parser = argparse.ArgumentParser( - add_help=False, - prog="view", - description="""View available presets under presets folder.""", - ) - parser.add_argument( - "-p", - "--preset", - action="store", - dest="preset", - type=str, - help="View specific custom preset", - default="high_iv", - choices=self.preset_choices, - ) - if other_args and "-" not in other_args[0][0]: - other_args.insert(0, "-p") - ns_parser = self.parse_known_args_and_warn(parser, other_args) - if ns_parser: - if ns_parser.preset: - syncretism_view.view_available_presets(preset=ns_parser.preset) - - else: - for preset in self.preset_choices: - console.print(preset) - - @log_start_end(log=logger) - def call_set(self, other_args: List[str]): - """Process set command""" - parser = argparse.ArgumentParser( - add_help=False, - prog="set", - description="""Set preset from custom and default ones.""", - ) - parser.add_argument( - "-p", - "--preset", - action="store", - dest="preset", - type=str, - default="high_iv", - help="Filter presets", - choices=self.preset_choices, - ) - if other_args and "-" not in other_args[0][0]: - other_args.insert(0, "-p") - ns_parser = self.parse_known_args_and_warn(parser, other_args) - if ns_parser: - self.preset = ns_parser.preset - - @log_start_end(log=logger) - def call_scr(self, other_args: List[str]): - """Process scr command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="scr", - description=""" - Screener filter output from https://ops.syncretism.io/index.html. - """, - ) - parser.add_argument( - "-p", - "--preset", - action="store", - dest="preset", - type=str, - default=self.preset, - help="Filter presets", - choices=self.preset_choices, - ) - parser.add_argument( - "-l", - "--limit", - type=check_positive, - default=25, - help="Limit of entries to display, default of 25.", - dest="limit", - ) - - if other_args and "-" not in other_args[0][0]: - other_args.insert(0, "-p") - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED - ) - if ns_parser: - self.screen_tickers = syncretism_view.view_screener_output( - preset=ns_parser.preset, - limit=ns_parser.limit, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) - def call_ca(self, _): - """Call the comparison analysis menu with selected tickers""" - if self.screen_tickers: - self.queue = ca_controller.ComparisonAnalysisController( - self.screen_tickers, self.queue - ).menu(custom_path_menu_above="/stocks/") - else: - console.print( - "Some tickers must be screened first through one of the presets!\n" - ) diff --git a/openbb_terminal/stocks/options/screen/syncretism_model.py b/openbb_terminal/stocks/options/screen/syncretism_model.py deleted file mode 100644 index 040eeeec654..00000000000 --- a/openbb_terminal/stocks/options/screen/syncretism_model.py +++ /dev/null @@ -1,361 +0,0 @@ -"""ops.syncretism.io model""" -__docformat__ = "numpy" - -import configparser -import logging -from typing import Dict, Tuple - -import pandas as pd -import yfinance as yf - -from openbb_terminal.core.config.paths import ( - MISCELLANEOUS_DIRECTORY, -) -from openbb_terminal.core.session.current_user import get_current_user -from openbb_terminal.decorators import log_start_end -from openbb_terminal.helper_funcs import request -from openbb_terminal.rich_config import console -from openbb_terminal.stocks.options import yfinance_model - -logger = logging.getLogger(__name__) - -accepted_orders = [ - "e_desc", - "e_asc", - "iv_desc", - "iv_asc", - "md_desc", - "md_asc", - "lp_desc", - "lp_asc", - "oi_asc", - "oi_desc", - "v_desc", - "v_asc", -] - - -@log_start_end(log=logger) -def get_historical_greeks( - symbol: str, expiry: str, strike: float, chain_id: str = "", put: bool = False -) -> pd.DataFrame: - """Get histoical option greeks - - Parameters - ---------- - symbol: str - Stock ticker symbol - expiry: str - Option expiration date - strike: float - Strike price to look for - chain_id: str - OCC option symbol. Overwrites other inputs - put: bool - Is this a put option? - - Returns - ------- - df: pd.DataFrame - Dataframe containing historical greeks - """ - if not chain_id: - options = yfinance_model.get_option_chain(symbol, expiry) - - options = options.puts if put else options.calls - - chain_id = options.loc[options.strike == strike, "contractSymbol"].values[0] - - r = request(f"https://api.syncretism.io/ops/historical/{chain_id}") - - if r.status_code != 200: - console.print("Error in request.") - return pd.DataFrame() - - history = r.json() - - iv, delta, gamma, theta, rho, vega, premium, price, time = ( - [], - [], - [], - [], - [], - [], - [], - [], - [], - ) - - for entry in history: - time.append(pd.to_datetime(entry["timestamp"], unit="s")) - iv.append(entry["impliedVolatility"]) - gamma.append(entry["gamma"]) - delta.append(entry["delta"]) - theta.append(entry["theta"]) - rho.append(entry["rho"]) - vega.append(entry["vega"]) - premium.append(entry["premium"]) - price.append(entry["regularMarketPrice"]) - - data = { - "iv": iv, - "gamma": gamma, - "delta": delta, - "theta": theta, - "rho": rho, - "vega": vega, - "premium": premium, - "price": price, - } - - df = pd.DataFrame(data, index=time) - return df - - -@log_start_end(log=logger) -def get_preset_choices() -> Dict: - """ - Return a dict containing keys as name of preset and - filepath as value - """ - - PRESETS_PATH = ( - get_current_user().preferences.USER_PRESETS_DIRECTORY / "stocks" / "options" - ) - PRESETS_PATH_DEFAULT = MISCELLANEOUS_DIRECTORY / "stocks" / "options" - - preset_choices = {} - - if PRESETS_PATH.exists(): - preset_choices.update( - { - filepath.name.strip(".ini"): filepath - for filepath in PRESETS_PATH.iterdir() - if filepath.suffix == ".ini" - } - ) - - if PRESETS_PATH_DEFAULT.exists(): - preset_choices.update( - { - filepath.name.strip(".ini"): filepath - for filepath in PRESETS_PATH_DEFAULT.iterdir() - if filepath.suffix == ".ini" - } - ) - - return preset_choices - - -@log_start_end(log=logger) -def get_screener_output(preset: str = "high_iv.ini") -> Tuple[pd.DataFrame, str]: - """Screen options based on preset filters - - Parameters - ---------- - preset: str [default: "high_iv.ini"] - Chosen preset - Returns - ------- - pd.DataFrame: - DataFrame with screener data, or empty if errors - str: - String containing error message if supplied - """ - d_cols = { - "contractSymbol": "Contract Symbol", - "expiration": "Expiration", - "symbol": "Ticker", - "optType": "Type", - "strike": "Strike", - "volume": "Vol", - "openInterest": "OI", - "impliedVolatility": "IV", - "delta": "Delta", - "gamma": "Gamma", - "rho": "Rho", - "theta": "Theta", - "vega": "Vega", - # "yield": "Y", - # "monthlyyield": "MY",, - # "regularMarketDayLow": "SMDL", - # "regularMarketDayHigh": "SMDH", - "lastTradeDate": "Last Traded", - "bid": "Bid", - "ask": "Ask", - "lastPrice": "Last", - # "lastCrawl": "LC", - # "inTheMoney": "ITM", - "pChange": "% Change", - "regularMarketPrice": "Underlying", - "priceToBook": "P/B", - } - - preset_filter = configparser.RawConfigParser() - preset_filter.optionxform = str # type: ignore - choices = get_preset_choices() - if preset not in choices: - return pd.DataFrame(), "No data found" - preset_filter.read(choices[preset]) - - d_filters = {k: v for k, v in dict(preset_filter["FILTER"]).items() if v} - s_filters = str(d_filters) - s_filters = ( - s_filters.replace(": '", ": ") - .replace("',", ",") - .replace("'}", "}") - .replace("'", '"') - ) - for order in accepted_orders: - s_filters = s_filters.replace(f" {order}", f' "{order}"') - - errors = check_presets(d_filters) - - if errors: - return pd.DataFrame(), errors - - link = "https://api.syncretism.io/ops" - - res = request(link, headers={"Content-type": "application/json"}, data=s_filters) - - # pylint:disable=no-else-return - if res.status_code == 200: - df_res = pd.DataFrame(res.json()) - - if df_res.empty: - return df_res, f"No options data found for preset: {preset}" - - df_res = df_res.rename(columns=d_cols)[list(d_cols.values())[:20]] - df_res["Expiration"] = df_res["Expiration"].apply( - lambda x: pd.to_datetime(x, unit="s").strftime("%y-%m-%d") - ) - df_res["Last Traded"] = df_res["Last Traded"].apply( - lambda x: pd.to_datetime(x, unit="s").strftime("%y-%m-%d") - ) - # df_res["Y"] = df_res["Y"].round(3) - # df_res["MY"] = df_res["MY"].round(3) - return df_res, "" - - else: - return pd.DataFrame(), f"Request Error: {res.status_code}" - - -# pylint: disable=eval-used - - -@log_start_end(log=logger) -def check_presets(preset_dict: dict) -> str: - """Checks option screener preset values - - Parameters - ---------- - preset_dict: dict - Defined presets from configparser - Returns - ------- - error: str - String of all errors accumulated - """ - float_list = [ - "min-iv", - "max-iv", - "min-oi", - "max-oi", - "min-strike", - "max-strike", - "min-volume", - "max-volume", - "min-voi", - "max-voi", - "min-diff", - "max-diff", - "min-ask-bid", - "max-ask-bid", - "min-exp", - "max-exp", - "min-price", - "max-price", - "min-price-20d", - "max-price-20d", - "min-volume-20d", - "max-volume-20d", - "min-iv-20d", - "max-iv-20d", - "min-delta-20d", - "max-delta-20d", - "min-gamma-20d", - "max-gamma-20d", - "min-theta-20d", - "max-theta-20d", - "min-vega-20d", - "max-vega-20d", - "min-rho-20d", - "max-rho-20d", - "min-price-100d", - "max-price-100d", - "min-volume-100d", - "max-volume-100d", - "min-iv-100d", - "max-iv-100d", - "min-delta-100d", - "max-delta-100d", - "min-gamma-100d", - "max-gamma-100d", - "min-theta-100d", - "max-theta-100d", - "min-vega-100d", - "max-vega-100d", - "min-rho-100d", - "max-rho-100d", - "min-sto", - "max-sto", - "min-yield", - "max-yield", - "min-myield", - "max-myield", - "min-delta", - "max-delta", - "min-gamma", - "max-gamma", - "min-theta", - "max-theta", - "min-vega", - "max-vega", - "min-cap", - "max-cap", - ] - bool_list = ["active", "stock", "etf", "puts", "calls", "itm", "otm", "exclude"] - error = "" - for key, value in preset_dict.items(): - if key in float_list: - try: - float(value) - if value.startswith("."): - error += f"{key} : {value} needs to be formatted with leading 0\n" - except Exception: - error += f"{key} : {value}, should be float\n" - - elif key in bool_list: - if value not in ["true", "false"]: - error += f"{key} : {value}, Should be [true/false]\n" - - elif key == "tickers": - for symbol in value.split(","): - try: - if yf.Ticker(eval(symbol)).fast_info["lastPrice"] is None: - error += f"{key} : {symbol} not found on yfinance" - - except NameError: - error += f"{key} : {value}, {symbol} failed" - - elif key == "limit": - try: - int(value) - except Exception: - error += f"{key} : {value} , should be integer\n" - - elif key == "order-by" and value.replace('"', "") not in accepted_orders: - error += f"{key} : {value} not accepted ordering\n" - if error: - logging.exception(error) - return error diff --git a/openbb_terminal/stocks/options/screen/syncretism_view.py b/openbb_terminal/stocks/options/screen/syncretism_view.py deleted file mode 100644 index 2315027904e..00000000000 --- a/openbb_terminal/stocks/options/screen/syncretism_view.py +++ /dev/null @@ -1,217 +0,0 @@ -"""Syncretistm View module""" -__docformat__ = "numpy" - -import configparser -import logging -import os -from typing import List, Optional, Union - -from openbb_terminal import OpenBBFigure, theme -from openbb_terminal.decorators import log_start_end -from openbb_terminal.helper_funcs import export_data, print_rich_table -from openbb_terminal.rich_config import console -from openbb_terminal.stocks.options.screen import syncretism_model - -logger = logging.getLogger(__name__) - - -@log_start_end(log=logger) -def view_available_presets(preset: str): - """View available presets. - - Parameters - ---------- - preset: str - Chosen preset - """ - if preset: - preset_filter = configparser.RawConfigParser() - preset_filter.optionxform = str # type: ignore - preset_choices = syncretism_model.get_preset_choices() - preset_filter.read(preset_choices[preset]) - filters_headers = ["FILTER"] - - for i, filter_header in enumerate(filters_headers): - console.print(f" - {filter_header} -") - d_filters = {**preset_filter[filter_header]} - d_filters = {k: v for k, v in d_filters.items() if v} - - if d_filters: - max_len = len(max(d_filters, key=len)) + 2 - for key, value in d_filters.items(): - console.print(f"{key}{(max_len-len(key))*' '}: {value}") - - if i < len(filters_headers) - 1: - console.print("\n") - - else: - console.print("Please provide a preset template.") - - -@log_start_end(log=logger) -def view_screener_output( - preset: str, - limit: int = 25, - export: str = "", - sheet_name: Optional[str] = None, -) -> List: - """Print the output of screener - - Parameters - ---------- - preset: str - Chosen preset - limit: int - Number of randomly sorted rows to display - sheet_name: str - Optionally specify the name of the sheet the data is exported to. - export: str - Format for export file - - Returns - ------- - List - List of tickers screened - """ - df_res, error_msg = syncretism_model.get_screener_output(preset) - if error_msg: - console.print(error_msg, "\n") - return [] - - export_data( - export, - os.path.dirname(os.path.abspath(__file__)), - "scr", - df_res, - sheet_name, - ) - - if limit > 0: - df_res = df_res.head(limit) - - print_rich_table( - df_res, - headers=df_res.columns.tolist(), - show_index=False, - title="Screener Output", - floatfmt=".4f", - export=bool(export), - ) - - return list(set(df_res["Ticker"].values)) - - -# pylint:disable=too-many-arguments - - -@log_start_end(log=logger) -def view_historical_greeks( - symbol: str, - expiry: str, - strike: Union[float, str], - greek: str = "Delta", - chain_id: str = "", - put: bool = False, - raw: bool = False, - limit: Union[int, str] = 20, - export: str = "", - sheet_name: Optional[str] = None, - external_axes: bool = False, -): - """Plots historical greeks for a given option. [Source: Syncretism] - - Parameters - ---------- - symbol: str - Stock ticker - expiry: str - Expiration date - strike: Union[str, float] - Strike price to consider - greek: str - Greek variable to plot - chain_id: str - OCC option chain. Overwrites other variables - put: bool - Is this a put option? - raw: bool - Print to console - limit: int - Number of rows to show in raw - sheet_name: str - Optionally specify the name of the sheet the data is exported to. - export: str - Format to export data - external_axes : bool, optional - Whether to return the figure object or not, by default False - """ - df = syncretism_model.get_historical_greeks(symbol, expiry, strike, chain_id, put) - if df is None or df.empty: - return None - - if isinstance(limit, str): - try: - limit = int(limit) - except ValueError: - return console.print( - f"[red]Could not convert limit of {limit} to a number.[/red]\n" - ) - - if raw: - df = df.sort_index(ascending=False) - print_rich_table( - df, - headers=df.columns.tolist(), - title="Historical Greeks", - show_index=True, - floatfmt=".4f", - export=bool(export), - limit=limit, - ) - - fig = OpenBBFigure.create_subplots( - specs=[[{"secondary_y": True}]], - vertical_spacing=0.06, - ) - fig.set_title( - f"{(greek).capitalize()} historical for {symbol.upper()} {strike} {['Call','Put'][put]}" - ) - fig.add_scatter( - x=df.index, - y=df.premium.values, - name="Option Premium", - line=dict(color=theme.down_color), - connectgaps=True, - secondary_y=False, - ) - fig.add_scatter( - x=df.index, - y=df[greek.lower()].values, - connectgaps=True, - name=greek.title(), - line=dict(color=theme.up_color), - yaxis="y2", - secondary_y=True, - ) - fig.update_layout( - margin=dict(t=30), - yaxis2=dict( - side="left", - title=greek, - overlaying="y", - ), - yaxis=dict( - title=f"{symbol} Option Premium", - ), - ) - - export_data( - export, - os.path.dirname(os.path.abspath(__file__)), - "grhist", - df, - sheet_name, - fig, - ) - - return fig.show(external=raw or external_axes) diff --git a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_historical_greeks[False].yaml b/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_historical_greeks[False].yaml deleted file mode 100644 index 20549061d7d..00000000000 --- a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_historical_greeks[False].yaml +++ /dev/null @@ -1,333 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/39.0.2171.95 Safari/537.36 - method: GET - uri: https://query2.finance.yahoo.com/v7/finance/options/PM - response: - body: - string: !!binary | - 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 - headers: - Age: - - '0' - Connection: - - keep-alive - Expect-CT: - - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" - Referrer-Policy: - - no-referrer-when-downgrade - Strict-Transport-Security: - - max-age=15552000 - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-XSS-Protection: - - 1; mode=block - cache-control: - - public, max-age=1, stale-while-revalidate=9 - content-encoding: - - gzip - content-type: - - application/json;charset=utf-8 - date: - - Sat, 01 Jan 2022 14:44:03 GMT - server: - - ATS - vary: - - Origin,Accept-Encoding - x-envoy-decorator-operation: - - finance-quote-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - x-envoy-upstream-service-time: - - '14' - x-request-id: - - cb56b0be-0d23-4b95-977a-3752ce0541de - x-yahoo-request-id: - - bjqcfulgt0q5j - y-rid: - - bjqcfulgt0q5j - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/39.0.2171.95 Safari/537.36 - method: GET - uri: https://query2.finance.yahoo.com/v7/finance/options/PM?date=MOCK_DATE - response: - body: - string: !!binary | - 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 - headers: - Age: - - '0' - Connection: - - keep-alive - Expect-CT: - - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" - Referrer-Policy: - - no-referrer-when-downgrade - Strict-Transport-Security: - - max-age=15552000 - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-XSS-Protection: - - 1; mode=block - cache-control: - - public, max-age=1, stale-while-revalidate=9 - content-encoding: - - gzip - content-type: - - application/json;charset=utf-8 - date: - - Sat, 01 Jan 2022 14:44:03 GMT - server: - - ATS - vary: - - Origin,Accept-Encoding - x-envoy-decorator-operation: - - finance-quote-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - x-envoy-upstream-service-time: - - '38' - x-request-id: - - 26e59698-9a8b-47da-9f27-f702e72b00ce - x-yahoo-request-id: - - ev2ktitgt0q5j - y-rid: - - ev2ktitgt0q5j - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.26.0 - method: GET - uri: https://api.syncretism.io/ops/historical/PM220107C00090000 - response: - body: - string: !!binary | - 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 - NeflnpzqzpQpp/MQRf/6H5vK3tQkYQAA - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - text/html; charset=UTF-8 - Date: - - Sat, 01 Jan 2022 14:44:03 GMT - Server: - - nginx/1.18.0 - Transfer-Encoding: - - chunked - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_historical_greeks[True].yaml b/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_historical_greeks[True].yaml deleted file mode 100644 index c8b6fa511a6..00000000000 --- a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_historical_greeks[True].yaml +++ /dev/null @@ -1,338 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/39.0.2171.95 Safari/537.36 - method: GET - uri: https://query2.finance.yahoo.com/v7/finance/options/PM - response: - body: - string: !!binary | - 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 - AA== - headers: - Age: - - '0' - Connection: - - keep-alive - Expect-CT: - - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" - Referrer-Policy: - - no-referrer-when-downgrade - Strict-Transport-Security: - - max-age=15552000 - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-XSS-Protection: - - 1; mode=block - cache-control: - - public, max-age=1, stale-while-revalidate=9 - content-encoding: - - gzip - content-type: - - application/json;charset=utf-8 - date: - - Sat, 01 Jan 2022 14:44:02 GMT - server: - - ATS - vary: - - Origin,Accept-Encoding - x-envoy-decorator-operation: - - finance-quote-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - x-envoy-upstream-service-time: - - '28' - x-request-id: - - 5897cba3-3cca-4279-9e05-d3585676e52d - x-yahoo-request-id: - - 559duh1gt0q5i - y-rid: - - 559duh1gt0q5i - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/39.0.2171.95 Safari/537.36 - method: GET - uri: https://query2.finance.yahoo.com/v7/finance/options/PM?date=MOCK_DATE - response: - body: - string: !!binary | - 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 - headers: - Age: - - '0' - Connection: - - keep-alive - Expect-CT: - - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" - Referrer-Policy: - - no-referrer-when-downgrade - Strict-Transport-Security: - - max-age=15552000 - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-XSS-Protection: - - 1; mode=block - cache-control: - - public, max-age=1, stale-while-revalidate=9 - content-encoding: - - gzip - content-type: - - application/json;charset=utf-8 - date: - - Sat, 01 Jan 2022 14:44:02 GMT - server: - - ATS - vary: - - Origin,Accept-Encoding - x-envoy-decorator-operation: - - finance-quote-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* - x-envoy-upstream-service-time: - - '15' - x-request-id: - - 4dbbedcd-68bc-4457-bc0f-90fb61f7434e - x-yahoo-request-id: - - b75o64lgt0q5i - y-rid: - - b75o64lgt0q5i - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - python-requests/2.26.0 - method: GET - uri: https://api.syncretism.io/ops/historical/PM220107P00090000 - response: - body: - string: !!binary | - H4sIAAAAAAAEA+2cS2/kxhWF/0uv5UY9WVWzNbzIwoCBAAGCIAvZo4wFSzMDWWPACPLf852abrLI - Jim1iEln0VoJDYldrFP33HNf9Y9/757uPnx5uH368fbpt7vnv316+PJ4t3vnvSuhc3tzs7v9/bfd - O7fPxZtys3v619PundkbG8PN7tPnu49/+fh893T3+/PunS1Rf/9YH/T97Wc+2QcXumBi+sHam937 - u4fn29277wwf+5xudn8cvu3jl4cHHt0u5Ken+19YR7H7aIrprCmu66LrbnbPv94dnmJicSbmm93n - p7vH+y+PdZk5Jj357gPfZPbWhPpNv3z6+Px0+8vzX/98/PnTw+7d7qcfnTPWpJ+M4fn87G5294+f - H+7v3rMHt8/3D/fPf+oJ3pvOx5vdz/fv9fzArx9uHx/r000I1lvP0n/9VN/L+Nh5x86M3uX7X28/ - fuBl3N463iWG0rmYbMd2vr//4/793cf3f7+/e+D5bGz0LMbxmveP7Orto7ax8zmzWGP+c7OIV5eT - DQ1eb8Iqh2hCTN0pXL7w4q/Dyzktv0XJFw9wLUrFWT5pUUrs2haUbCo8YR4lFs+ZaEEy+volkAJH - I4DqDDiucA5PwbE2X8FZMaGLguNCWAHHJcfx9Hto5MB0BROUCZ/JdLYzXXBTywnZe47SKyzH7EvM - NqUQoRybdMoaG8oxBs5wY0MlmsSiBxvyRkdzgw3ZAiH2NgRVibQbsks+65PBjjqbw5IdieW9zY5F - pgwAwckDzNCdr3QxYbuc1jCDIm0yqWU7kfC5gAWbY4g2noAWXUlw2KtAyz7BjC1UKWSdnxYqb+vz - eqfkq9vaApWzgf080J0f45SDTSOn1IUgd9D616NPAqYYXSgpA+QsPGXGGRVwXXFGV3guCg9mvOaO - XOzQU1WrVcbziI7zrceEnL1DxeQp5WUHUQzWY2Wmo7N31HZmL6nUmk5XEDGN6WhpnQ7gwHLWbWQ5 - o9Pem45k7EBx0aJ+RqaT+OsV24GGTLXlOdOBysXiY2orbM6q7aTOB9774I783obOv0HMGQtb5zgF - p+BeXgkOGh/V7YwPIRX+ZwRURpOOgLIxGWhoAMpkCdwNHMcbaOuPki74bkRz0eYUORqDO0qcnhWs - fAnFuuALB9dHopV5wst61QlmuLk1zHzHWgfx7fda1nneiFcNbHQIU3OKeOG6sYdYadGcciFGm6I0 - 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 - +ud/AbOokHNFYgAA - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - text/html; charset=UTF-8 - Date: - - Sat, 01 Jan 2022 14:44:03 GMT - Server: - - nginx/1.18.0 - Transfer-Encoding: - - chunked - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_screener_output.yaml b/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_screener_output.yaml deleted file mode 100644 index 0b81699d119..00000000000 --- a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_model/test_get_screener_output.yaml +++ /dev/null @@ -1,543 +0,0 @@ -interactions: -- request: - body: '{"itm": false, "otm": true, "max-ask-bid": 0.05, "max-exp": 14, "calls": - true, "puts": true, "min-iv": 0.80, "max-iv": 1.0, "min-volume": 100, "order-by": - "iv_desc"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '165' - Content-type: - - application/json - User-Agent: - - python-requests/2.26.0 - method: GET - uri: https://api.syncretism.io/ops - response: - body: - string: !!binary | - H4sIAAAAAAAEA52dWdNcx5Ge/wuuyS96X3hHgqTEEEVAAsiRw+ELzAiWEAMSNATJVjjmv/t5s7bM - rHO6W6Zu9DW6z1JVT+We9d//77MP73abPz/7YnvebJ8O58+e/fPd2/f6++mwuxzP33x++OzZh1/f - /vLdL5/efnz7t0/PvtidL9vPnn18+5e/v3/z8fdvPv7n209fv/nn9x/+Nz/aHA9Px+tnz979wy66 - ebqc9vsrX//Lm59/fmOf7Z7Ou+PWrmsfbje6/e7pcj0cD/bxu19e//Xt7z/88vafz774n2/e/+3t - Z89+/di+dtpvtpf59r9995e/6v6X3dPms2fv3/zt0/OPb/73ez46HTbX8/Ggp/r41w/2CJ9vnjbb - 7X6/PX327M9v338qD6ZPd5vDdlO++eyLz69P+/Np983nx8+e/e2fP//7By737PWr77989tmzf3/3 - 5/ZE1/Nuzzd+/fjuP96+/vDVhw//+eyL/fVpt71yobf/59d3H998evfhF3uU7XG7P214wl8/llF/ - 2u92R4b4Pz788unjm//49MrfZ7fbbDfnl5vNeaP/ym3r784MBOPw6a9vP73hUe3ZT9cLb/SPD+// - /vNbDcZur7n79Pqfv/Lns5f8/m+fPr77T/7gghqnX5//9c0vf+Fv/Z6nsKuV9+KT3Ym782Yazdcf - 3/z57ddvPum6GtHLYX/ROPlV8FIjoPseT09nns2Glmsfn7aM0aXM7T/K5VkZx8t2z7d+5s3/+v6f - ddmdnxieQ1l2tjy43tP+eL3wEY/yj7d/KZPF816vu+2JpaXHq7fePG354MO7cg9Ww+VpV3707At+ - sdkdrterzdXbn9/9/Wf7cHvd7a8M1P/6+4dPb+tQffOHH797/d8YL1ZMHw6G83g86SE+vC8fHvan - p63e1MatLa3dZr/Vgnj386/v3739808f3jP/7999YjVvnq7XC69n17Dvn04nQOP2erM2NNvT8Xpm - Ot78jaVU3snG0j0KV9HqZRnaS1z/67NO8m6zOT6duWQdUl58e+Q/vh5B3h/OjE6Ywgby/ul00Ss0 - jK/b40HUD4w3T4cNQ1c/ak++v7Bp8L0bCGtdnY57vpTvXBjeP2m/yATzvlcGuhF8fjrrA1tSg+DN - 0549RFjwPe0p28N1B78MZef3+fcvfvL88jhMqqYkAvx02WstJX532+3l4Phlcq6H3XUJYN1IAG8P - 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 - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - text/html; charset=UTF-8 - Date: - - Sat, 01 Jan 2022 14:44:06 GMT - Server: - - nginx/1.18.0 - Transfer-Encoding: - - chunked - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_view/test_view_historical_greeks.yaml b/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_view/test_view_historical_greeks.yaml deleted file mode 100644 index f5e47bdc423..00000000000 --- a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_view/test_view_historical_greeks.yaml +++ /dev/null @@ -1,120 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://api.syncretism.io/ops/historical/PM220107P00090000 - response: - body: - string: !!binary | - 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 - a1HsDSP9jb1rY0T6Djv6n/8HKIRLlg5xAAA= - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - text/html; charset=UTF-8 - Date: - - Tue, 10 May 2022 15:30:53 GMT - Server: - - nginx/1.18.0 - Transfer-Encoding: - - chunked - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_view/test_view_screener_output.yaml b/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_view/test_view_screener_output.yaml deleted file mode 100644 index 632d4f71b43..00000000000 --- a/tests/openbb_terminal/stocks/options/cassettes/test_syncretism_view/test_view_screener_output.yaml +++ /dev/null @@ -1,385 +0,0 @@ -interactions: -- request: - body: '{"itm": false, "otm": true, "max-ask-bid": 0.05, "max-exp": 14, "calls": - true, "puts": true, "min-iv": 0.80, "max-iv": 1.0, "min-volume": 100, "order-by": - "iv_desc"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '165' - Content-type: - - application/json - method: GET - uri: https://api.syncretism.io/ops - response: - body: - string: !!binary | - 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 - headers: - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - text/html; charset=UTF-8 - Date: - - Tue, 10 May 2022 15:30:52 GMT - Server: - - nginx/1.18.0 - Transfer-Encoding: - - chunked - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks.csv b/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks.csv deleted file mode 100644 index 8b3a193dbbb..00000000000 --- a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks.csv +++ /dev/null @@ -1,58 +0,0 @@ -,iv,gamma,delta,theta,rho,vega,premium,price -2021-12-06 14:30:00,0.330635,0.0441313,-0.42387,-0.0592058,-0.0356324,0.104387,2.88577,91.50906109266526 -2021-12-06 17:30:00,0.331794,0.043957,-0.423395,-0.0593936,-0.0356016,0.104374,2.89216,91.5222 -2021-12-06 21:00:00,0.331794,0.043957,-0.423395,-0.0593936,-0.0356016,0.104374,2.89216,91.5222 -2021-12-07 14:30:00,0.319107,0.0473811,-0.448333,-0.0585547,-0.0361846,0.103026,2.95078,90.95817745330176 -2021-12-07 17:30:00,0.312141,0.0484173,-0.452972,-0.0574804,-0.036449,0.103058,2.93172,90.8375 -2021-12-07 21:00:00,0.312141,0.0484173,-0.452972,-0.0574804,-0.036449,0.103058,2.93172,90.8375 -2021-12-08 14:30:00,0.302497,0.0514573,-0.482738,-0.0569714,-0.0372499,0.101226,3.05692,90.24 -2021-12-08 17:30:00,0.301399,0.0518752,-0.494538,-0.0568638,-0.0379719,0.100869,3.15701,90.01509220344798 -2021-12-08 21:00:00,0.300788,0.0521077,-0.501101,-0.056804,-0.0383734,0.100671,3.21267,89.89 -2021-12-09 14:30:00,0.302497,0.0527723,-0.520667,-0.0578201,-0.0385128,0.0985467,3.36167,89.52 -2021-12-09 17:30:00,0.302497,0.0527723,-0.520667,-0.0578201,-0.0385128,0.0985467,3.36167,89.52 -2021-12-09 21:00:00,0.302497,0.0527723,-0.520667,-0.0578201,-0.0385128,0.0985467,3.36167,89.52 -2021-12-10 14:30:00,0.283765,0.0568811,-0.487188,-0.0555151,-0.0348218,0.0977532,2.67531,90.17673524511537 -2021-12-10 17:30:00,0.282234,0.057213,-0.485986,-0.0552833,-0.0346682,0.0976892,2.64962,90.2 -2021-12-10 21:00:00,0.282234,0.057213,-0.485986,-0.0552833,-0.0346682,0.0976892,2.64962,90.2 -2021-12-13 14:30:00,0.271801,0.0594395,-0.386791,-0.0542614,-0.0247363,0.0902313,1.79239,91.81119856524093 -2021-12-13 17:30:00,0.268928,0.0606286,-0.394156,-0.0541109,-0.0250443,0.0903637,1.82165,91.67 -2021-12-13 21:00:00,0.268928,0.0606286,-0.394156,-0.0541109,-0.0250443,0.0903637,1.82165,91.67 -2021-12-14 14:30:00,0.288825,0.0548697,-0.349151,-0.0568852,-0.0215355,0.0860531,1.62308,92.525 -2021-12-14 17:30:00,0.293459,0.0551521,-0.366777,-0.0587277,-0.0224979,0.0869803,1.77134,92.23056615695691 -2021-12-14 21:00:00,0.298347,0.05545,-0.38537,-0.0606712,-0.0235131,0.0879583,1.92773,91.92 -2021-12-15 14:30:00,0.294685,0.054194,-0.337109,-0.0585294,-0.0198866,0.083192,1.54375,92.73 -2021-12-15 17:30:00,0.294685,0.054194,-0.337109,-0.0585294,-0.0198866,0.083192,1.54375,92.73 -2021-12-15 21:00:00,0.294685,0.054194,-0.337109,-0.0585294,-0.0198866,0.083192,1.54375,92.73 -2021-12-16 14:30:00,0.278328,0.0488714,-0.237286,-0.0483657,-0.0134606,0.0699819,0.892864,94.38 -2021-12-16 17:30:00,0.278328,0.0488827,-0.237186,-0.0483755,-0.0134422,0.0699335,0.892864,94.38 -2021-12-16 21:00:00,0.278328,0.0488849,-0.237166,-0.0483774,-0.0134386,0.0699241,0.892864,94.38 -2021-12-17 14:30:00,0.317145,0.0500905,-0.302126,-0.0630355,-0.016303,0.0763436,1.24021,93.45 -2021-12-17 17:30:00,0.317145,0.0500905,-0.302126,-0.0630355,-0.016303,0.0763436,1.24021,93.45 -2021-12-17 21:00:00,0.317145,0.0500905,-0.302126,-0.0630355,-0.016303,0.0763436,1.24021,93.45 -2021-12-20 14:30:00,0.308101,0.0592341,-0.340482,-0.0689266,-0.0155098,0.0733809,1.42656,92.44186516595842 -2021-12-20 17:30:00,0.299253,0.0590952,-0.315401,-0.0653311,-0.0142752,0.0711859,1.24703,92.7950250178699 -2021-12-20 21:00:00,0.298347,0.0589364,-0.311012,-0.0648288,-0.0140629,0.0707893,1.21968,92.86 -2021-12-21 14:30:00,0.289311,0.0588868,-0.277656,-0.0612865,-0.0119263,0.0657067,0.978724,93.2630179669313 -2021-12-21 17:30:00,0.292489,0.0600792,-0.291929,-0.0636331,-0.0124289,0.0669337,1.06095,93.04000000000002 -2021-12-21 21:00:00,0.298835,0.0592481,-0.294975,-0.0654557,-0.0124994,0.0670681,1.10292,93.04 -2021-12-22 14:30:00,0.249928,0.0712629,-0.28181,-0.0549967,-0.011228,0.0636871,0.825191,92.70644835292975 -2021-12-22 17:30:00,0.250496,0.0693907,-0.266961,-0.0539552,-0.0105845,0.0620515,0.771084,92.91 -2021-12-22 21:00:00,0.250496,0.0693907,-0.266961,-0.0539552,-0.0105845,0.0620515,0.771084,92.91 -2021-12-23 14:30:00,0.220732,0.0741766,-0.225705,-0.0449107,-0.00837097,0.0550523,0.519,93.03861323193917 -2021-12-23 17:30:00,0.232185,0.0738053,-0.243442,-0.0493241,-0.00898075,0.057168,0.60679,92.93 -2021-12-23 21:00:00,0.232185,0.0738053,-0.243442,-0.0493241,-0.00898075,0.057168,0.60679,92.93 -2021-12-24 14:30:00,0.239754,0.0737673,-0.242562,-0.0524088,-0.00836865,0.0551822,0.489456,92.93 -2021-12-24 17:30:00,0.239754,0.0738026,-0.242356,-0.0524309,-0.00834544,0.0551051,0.489456,92.93 -2021-12-24 21:00:00,0.239754,0.0738026,-0.242356,-0.0524309,-0.00834544,0.0551051,0.489456,92.93 -2021-12-27 14:30:00,0.234871,0.076874,-0.203395,-0.0521516,-0.00547886,0.0442414,0.395471,93.02 -2021-12-27 17:30:00,0.234871,0.076874,-0.203395,-0.0521516,-0.00547886,0.0442414,0.395471,93.02 -2021-12-27 21:00:00,0.234871,0.076874,-0.203395,-0.0521516,-0.00547886,0.0442414,0.395471,93.02 -2021-12-28 14:30:00,0.257332,0.0580389,-0.141795,-0.0478886,-0.00347635,0.0337197,0.257047,94.06 -2021-12-28 17:30:00,0.257332,0.0580389,-0.141795,-0.0478886,-0.00347635,0.0337197,0.257047,94.06 -2021-12-28 21:00:00,0.257332,0.0580389,-0.141795,-0.0478886,-0.00347635,0.0337197,0.257047,94.06 -2021-12-29 14:30:00,0.272727,0.0552155,-0.130938,-0.0511497,-0.00282528,0.0299863,0.23345,94.21564343657818 -2021-12-29 17:30:00,0.271492,0.05364,-0.123749,-0.0493037,-0.00263636,0.0286723,0.219762,94.3 -2021-12-29 21:00:00,0.271492,0.05364,-0.123749,-0.0493037,-0.00263636,0.0286723,0.219762,94.3 -2021-12-30 14:30:00,0.248543,0.045261,-0.0803181,-0.0349572,-0.00151628,0.0197556,0.105989,94.5169 -2021-12-30 17:30:00,0.248543,0.045261,-0.0803181,-0.0349572,-0.00151628,0.0197556,0.105989,94.5169 -2021-12-30 21:00:00,0.248543,0.045261,-0.0803181,-0.0349572,-0.00151628,0.0197556,0.105989,94.5169 diff --git a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks[False].csv b/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks[False].csv deleted file mode 100644 index 3eaf8b2e785..00000000000 --- a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks[False].csv +++ /dev/null @@ -1,61 +0,0 @@ -,iv,gamma,delta,theta,rho,vega,premium,price -2021-12-06 14:30:00,0.233057,0.0620596,0.588783,-0.0329624,0.0433766,0.103421,3.09762,91.50906109266526 -2021-12-06 17:30:00,0.231087,0.0624997,0.590035,-0.0326038,0.0434875,0.103359,3.08504,91.5222 -2021-12-06 21:00:00,0.231087,0.0624997,0.590035,-0.0326038,0.0434875,0.103359,3.08504,91.5222 -2021-12-07 14:30:00,0.207527,0.0726513,0.550256,-0.0300619,0.039297,0.102813,2.41911,90.8375 -2021-12-07 17:30:00,0.207527,0.0726513,0.550256,-0.0300619,0.039297,0.102813,2.41911,90.8375 -2021-12-07 21:00:00,0.207527,0.0726513,0.550256,-0.0300619,0.039297,0.102813,2.41911,90.8375 -2021-12-08 14:30:00,0.20118,0.0774104,0.506361,-0.030064,0.0348777,0.101277,2.00698,90.24 -2021-12-08 17:30:00,0.206749,0.0756195,0.489954,-0.0311321,0.0335574,0.10083,1.95138,90.01509220344798 -2021-12-08 21:00:00,0.209847,0.0746235,0.480828,-0.0317261,0.0328231,0.100582,1.92045,89.89 -2021-12-09 14:30:00,0.202645,0.0783384,0.450331,-0.0309624,0.029778,0.0979996,1.64464,89.52 -2021-12-09 17:30:00,0.202645,0.0783384,0.450331,-0.0309624,0.029778,0.0979996,1.64464,89.52 -2021-12-09 21:00:00,0.202645,0.0783384,0.450331,-0.0309624,0.029778,0.0979996,1.64464,89.52 -2021-12-10 14:30:00,0.176333,0.0918117,0.500358,-0.026892,0.0323522,0.0977865,1.61643,90.17673524511537 -2021-12-10 17:30:00,0.171517,0.0941832,0.501916,-0.0260514,0.0324385,0.0977292,1.5832,90.2 -2021-12-10 21:00:00,0.171517,0.0941832,0.501916,-0.0260514,0.0324385,0.0977292,1.5832,90.2 -2021-12-13 14:30:00,0.197458,0.0797705,0.641425,-0.0296777,0.037211,0.0877941,2.72309,91.81119856524093 -2021-12-13 17:30:00,0.185311,0.0854674,0.637655,-0.027672,0.0368782,0.087777,2.52664,91.67 -2021-12-13 21:00:00,0.185311,0.0854674,0.637655,-0.027672,0.0368782,0.087777,2.52664,91.67 -2021-12-14 14:30:00,0.171883,0.0825915,0.72552,-0.0216811,0.0406837,0.0770845,2.97763,92.525 -2021-12-14 17:30:00,0.177111,0.0842493,0.69609,-0.024186,0.0387947,0.0802082,2.81352,92.23056615695691 -2021-12-14 21:00:00,0.182625,0.0859979,0.665048,-0.0268282,0.0368021,0.0835031,2.64041,91.92 -2021-12-15 14:30:00,0.194588,0.0747389,0.723848,-0.0264099,0.0386732,0.0757592,3.27426,92.73 -2021-12-15 17:30:00,0.194588,0.0747389,0.723848,-0.0264099,0.0386732,0.0757592,3.27426,92.73 -2021-12-15 21:00:00,0.194588,0.0747389,0.723848,-0.0264099,0.0386732,0.0757592,3.27426,92.73 -2021-12-16 14:30:00,0.223152,0.0536308,0.806575,-0.0248827,0.041239,0.061573,4.71652,94.38 -2021-12-16 17:30:00,0.223152,0.0536363,0.80669,-0.024885,0.0412075,0.0615224,4.71652,94.38 -2021-12-16 21:00:00,0.223152,0.0536373,0.806712,-0.0248854,0.0412014,0.0615126,4.71652,94.38 -2021-12-17 14:30:00,0.372565,0.0439943,0.672128,-0.0665572,0.0317679,0.0787692,4.92085,93.45 -2021-12-17 17:30:00,0.372565,0.0439943,0.672128,-0.0665572,0.0317679,0.0787692,4.92085,93.45 -2021-12-17 21:00:00,0.372565,0.0439943,0.672128,-0.0665572,0.0317679,0.0787692,4.92085,93.45 -2021-12-20 14:30:00,0.190147,0.0857473,0.732633,-0.0292607,0.0305211,0.0655732,2.89305,92.44186516595842 -2021-12-20 17:30:00,0.169545,0.0841037,0.788561,-0.0211011,0.0327798,0.057401,3.04081,92.7950250178699 -2021-12-20 21:00:00,0.164559,0.0840414,0.800169,-0.0192558,0.0332588,0.0556773,3.0613,92.86 -2021-12-21 14:30:00,0.186529,0.0734095,0.809596,-0.0227227,0.0319412,0.0528029,3.48547,93.2630179669313 -2021-12-21 17:30:00,0.188773,0.0773182,0.791486,-0.0251236,0.0309438,0.0555964,3.31559,93.04000000000002 -2021-12-21 21:00:00,0.192879,0.076767,0.78741,-0.0263529,0.0305947,0.056088,3.33811,93.04 -2021-12-22 14:30:00,0.250099,0.0721461,0.716339,-0.0456691,0.0262129,0.0637469,3.39115,92.70644835292975 -2021-12-22 17:30:00,0.271492,0.065727,0.716284,-0.0504217,0.0259955,0.0637017,3.6714,92.91 -2021-12-22 21:00:00,0.271492,0.065727,0.716284,-0.0504217,0.0259955,0.0637017,3.6714,92.91 -2021-12-23 14:30:00,0.268252,0.0664416,0.733249,-0.0496813,0.0250733,0.0599638,3.69562,93.03861323193917 -2021-12-23 17:30:00,0.292732,0.063626,0.71113,-0.0576798,0.0240665,0.0621348,3.76266,92.93 -2021-12-23 21:00:00,0.292732,0.063626,0.71113,-0.0576798,0.0240665,0.0621348,3.76266,92.93 -2021-12-24 14:30:00,0.302253,0.0636433,0.712016,-0.0619541,0.0225373,0.0600194,3.62958,92.93 -2021-12-24 17:30:00,0.302253,0.0636845,0.712194,-0.0619971,0.0225015,0.0599459,3.62958,92.93 -2021-12-24 21:00:00,0.302253,0.0636845,0.712194,-0.0619971,0.0225015,0.0599459,3.62958,92.93 -2021-12-27 14:30:00,0.243172,0.0758962,0.78744,-0.0456799,0.0197834,0.0452224,3.35855,93.02 -2021-12-27 17:30:00,0.243172,0.0758962,0.78744,-0.0456799,0.0197834,0.0452224,3.35855,93.02 -2021-12-27 21:00:00,0.243172,0.0758962,0.78744,-0.0456799,0.0197834,0.0452224,3.35855,93.02 -2021-12-28 14:30:00,0.302253,0.0575167,0.819836,-0.0558562,0.0185502,0.0392497,4.38839,94.06 -2021-12-28 17:30:00,0.302253,0.0575167,0.819836,-0.0558562,0.0185502,0.0392497,4.38839,94.06 -2021-12-28 21:00:00,0.302253,0.0575167,0.819836,-0.0558562,0.0185502,0.0392497,4.38839,94.06 -2021-12-29 14:30:00,0.285786,0.0553572,0.857903,-0.0470969,0.0171368,0.0314617,4.41616,94.21564343657818 -2021-12-29 17:30:00,0.341803,0.0540467,0.822203,-0.0690653,0.0161278,0.0363717,4.66649,94.3 -2021-12-29 21:00:00,0.341803,0.0540467,0.822203,-0.0690653,0.0161278,0.0363717,4.66649,94.3 -2021-12-30 14:30:00,0.327643,0.0515837,0.857627,-0.0595889,0.0149976,0.0296811,4.74168,94.5169 -2021-12-30 17:30:00,0.327643,0.0515837,0.857627,-0.0595889,0.0149976,0.0296811,4.74168,94.5169 -2021-12-30 21:00:00,0.327643,0.0515837,0.857627,-0.0595889,0.0149976,0.0296811,4.74168,94.5169 -2021-12-31 14:30:00,0.283502,0.0485531,0.904244,-0.0390452,0.013707,0.0207579,4.5317,94.45066792097836 -2021-12-31 17:30:00,0.314921,0.0453257,0.900622,-0.046672,0.0133636,0.0212001,4.91571,94.8062652869238 -2021-12-31 21:00:00,0.332038,0.0435674,0.898649,-0.0508271,0.0131765,0.021441,5.12493,95.0 diff --git a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks[True].csv b/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks[True].csv deleted file mode 100644 index cb116e218a6..00000000000 --- a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_historical_greeks[True].csv +++ /dev/null @@ -1,61 +0,0 @@ -,iv,gamma,delta,theta,rho,vega,premium,price -2021-12-06 14:30:00,0.330635,0.0441313,-0.42387,-0.0592058,-0.0356324,0.104387,2.88577,91.50906109266526 -2021-12-06 17:30:00,0.331794,0.043957,-0.423395,-0.0593936,-0.0356016,0.104374,2.89216,91.5222 -2021-12-06 21:00:00,0.331794,0.043957,-0.423395,-0.0593936,-0.0356016,0.104374,2.89216,91.5222 -2021-12-07 14:30:00,0.319107,0.0473811,-0.448333,-0.0585547,-0.0361846,0.103026,2.95078,90.95817745330176 -2021-12-07 17:30:00,0.312141,0.0484173,-0.452972,-0.0574804,-0.036449,0.103058,2.93172,90.8375 -2021-12-07 21:00:00,0.312141,0.0484173,-0.452972,-0.0574804,-0.036449,0.103058,2.93172,90.8375 -2021-12-08 14:30:00,0.302497,0.0514573,-0.482738,-0.0569714,-0.0372499,0.101226,3.05692,90.24 -2021-12-08 17:30:00,0.301399,0.0518752,-0.494538,-0.0568638,-0.0379719,0.100869,3.15701,90.01509220344798 -2021-12-08 21:00:00,0.300788,0.0521077,-0.501101,-0.056804,-0.0383734,0.100671,3.21267,89.89 -2021-12-09 14:30:00,0.302497,0.0527723,-0.520667,-0.0578201,-0.0385128,0.0985467,3.36167,89.52 -2021-12-09 17:30:00,0.302497,0.0527723,-0.520667,-0.0578201,-0.0385128,0.0985467,3.36167,89.52 -2021-12-09 21:00:00,0.302497,0.0527723,-0.520667,-0.0578201,-0.0385128,0.0985467,3.36167,89.52 -2021-12-10 14:30:00,0.283765,0.0568811,-0.487188,-0.0555151,-0.0348218,0.0977532,2.67531,90.17673524511537 -2021-12-10 17:30:00,0.282234,0.057213,-0.485986,-0.0552833,-0.0346682,0.0976892,2.64962,90.2 -2021-12-10 21:00:00,0.282234,0.057213,-0.485986,-0.0552833,-0.0346682,0.0976892,2.64962,90.2 -2021-12-13 14:30:00,0.271801,0.0594395,-0.386791,-0.0542614,-0.0247363,0.0902313,1.79239,91.81119856524093 -2021-12-13 17:30:00,0.268928,0.0606286,-0.394156,-0.0541109,-0.0250443,0.0903637,1.82165,91.67 -2021-12-13 21:00:00,0.268928,0.0606286,-0.394156,-0.0541109,-0.0250443,0.0903637,1.82165,91.67 -2021-12-14 14:30:00,0.288825,0.0548697,-0.349151,-0.0568852,-0.0215355,0.0860531,1.62308,92.525 -2021-12-14 17:30:00,0.293459,0.0551521,-0.366777,-0.0587277,-0.0224979,0.0869803,1.77134,92.23056615695691 -2021-12-14 21:00:00,0.298347,0.05545,-0.38537,-0.0606712,-0.0235131,0.0879583,1.92773,91.92 -2021-12-15 14:30:00,0.294685,0.054194,-0.337109,-0.0585294,-0.0198866,0.083192,1.54375,92.73 -2021-12-15 17:30:00,0.294685,0.054194,-0.337109,-0.0585294,-0.0198866,0.083192,1.54375,92.73 -2021-12-15 21:00:00,0.294685,0.054194,-0.337109,-0.0585294,-0.0198866,0.083192,1.54375,92.73 -2021-12-16 14:30:00,0.278328,0.0488714,-0.237286,-0.0483657,-0.0134606,0.0699819,0.892864,94.38 -2021-12-16 17:30:00,0.278328,0.0488827,-0.237186,-0.0483755,-0.0134422,0.0699335,0.892864,94.38 -2021-12-16 21:00:00,0.278328,0.0488849,-0.237166,-0.0483774,-0.0134386,0.0699241,0.892864,94.38 -2021-12-17 14:30:00,0.317145,0.0500905,-0.302126,-0.0630355,-0.016303,0.0763436,1.24021,93.45 -2021-12-17 17:30:00,0.317145,0.0500905,-0.302126,-0.0630355,-0.016303,0.0763436,1.24021,93.45 -2021-12-17 21:00:00,0.317145,0.0500905,-0.302126,-0.0630355,-0.016303,0.0763436,1.24021,93.45 -2021-12-20 14:30:00,0.308101,0.0592341,-0.340482,-0.0689266,-0.0155098,0.0733809,1.42656,92.44186516595842 -2021-12-20 17:30:00,0.299253,0.0590952,-0.315401,-0.0653311,-0.0142752,0.0711859,1.24703,92.7950250178699 -2021-12-20 21:00:00,0.298347,0.0589364,-0.311012,-0.0648288,-0.0140629,0.0707893,1.21968,92.86 -2021-12-21 14:30:00,0.289311,0.0588868,-0.277656,-0.0612865,-0.0119263,0.0657067,0.978724,93.2630179669313 -2021-12-21 17:30:00,0.292489,0.0600792,-0.291929,-0.0636331,-0.0124289,0.0669337,1.06095,93.04000000000002 -2021-12-21 21:00:00,0.298835,0.0592481,-0.294975,-0.0654557,-0.0124994,0.0670681,1.10292,93.04 -2021-12-22 14:30:00,0.249928,0.0712629,-0.28181,-0.0549967,-0.011228,0.0636871,0.825191,92.70644835292975 -2021-12-22 17:30:00,0.250496,0.0693907,-0.266961,-0.0539552,-0.0105845,0.0620515,0.771084,92.91 -2021-12-22 21:00:00,0.250496,0.0693907,-0.266961,-0.0539552,-0.0105845,0.0620515,0.771084,92.91 -2021-12-23 14:30:00,0.220732,0.0741766,-0.225705,-0.0449107,-0.00837097,0.0550523,0.519,93.03861323193917 -2021-12-23 17:30:00,0.232185,0.0738053,-0.243442,-0.0493241,-0.00898075,0.057168,0.60679,92.93 -2021-12-23 21:00:00,0.232185,0.0738053,-0.243442,-0.0493241,-0.00898075,0.057168,0.60679,92.93 -2021-12-24 14:30:00,0.239754,0.0737673,-0.242562,-0.0524088,-0.00836865,0.0551822,0.489456,92.93 -2021-12-24 17:30:00,0.239754,0.0738026,-0.242356,-0.0524309,-0.00834544,0.0551051,0.489456,92.93 -2021-12-24 21:00:00,0.239754,0.0738026,-0.242356,-0.0524309,-0.00834544,0.0551051,0.489456,92.93 -2021-12-27 14:30:00,0.234871,0.076874,-0.203395,-0.0521516,-0.00547886,0.0442414,0.395471,93.02 -2021-12-27 17:30:00,0.234871,0.076874,-0.203395,-0.0521516,-0.00547886,0.0442414,0.395471,93.02 -2021-12-27 21:00:00,0.234871,0.076874,-0.203395,-0.0521516,-0.00547886,0.0442414,0.395471,93.02 -2021-12-28 14:30:00,0.257332,0.0580389,-0.141795,-0.0478886,-0.00347635,0.0337197,0.257047,94.06 -2021-12-28 17:30:00,0.257332,0.0580389,-0.141795,-0.0478886,-0.00347635,0.0337197,0.257047,94.06 -2021-12-28 21:00:00,0.257332,0.0580389,-0.141795,-0.0478886,-0.00347635,0.0337197,0.257047,94.06 -2021-12-29 14:30:00,0.272727,0.0552155,-0.130938,-0.0511497,-0.00282528,0.0299863,0.23345,94.21564343657818 -2021-12-29 17:30:00,0.271492,0.05364,-0.123749,-0.0493037,-0.00263636,0.0286723,0.219762,94.3 -2021-12-29 21:00:00,0.271492,0.05364,-0.123749,-0.0493037,-0.00263636,0.0286723,0.219762,94.3 -2021-12-30 14:30:00,0.248543,0.045261,-0.0803181,-0.0349572,-0.00151628,0.0197556,0.105989,94.5169 -2021-12-30 17:30:00,0.248543,0.045261,-0.0803181,-0.0349572,-0.00151628,0.0197556,0.105989,94.5169 -2021-12-30 21:00:00,0.248543,0.045261,-0.0803181,-0.0349572,-0.00151628,0.0197556,0.105989,94.5169 -2021-12-31 14:30:00,0.252157,0.0439003,-0.0711337,-0.034653,-0.00115627,0.0167086,0.0828695,94.45066792097836 -2021-12-31 17:30:00,0.265937,0.0390261,-0.064753,-0.0343508,-0.00103614,0.0154347,0.0809141,94.8062652869238 -2021-12-31 21:00:00,0.273445,0.0363706,-0.0612767,-0.0341861,-0.000970699,0.0147406,0.0798488,95.0 diff --git a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_screener_output.csv b/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_screener_output.csv deleted file mode 100644 index 2780c981b10..00000000000 --- a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_screener_output.csv +++ /dev/null @@ -1,101 +0,0 @@ -,Contract Symbol,Expiration,Ticker,Type,Strike,Vol,OI,IV,Delta,Gamma,Rho,Theta,Vega,Last Traded,Bid,Ask,Last,% Change,Underlying,P/B -0,TSLA220107P00700000,22-01-07,TSLA,P,700.0,1023,2781,0.998047,-0.000519728,1.35987e-05,-9.3762e-05,-0.0206986,0.00249995,21-12-31,0.09,0.11,0.11,-0.04,1056.78,39.2199 -1,CLOV220114C00004500,22-01-14,CLOV,C,4.5,193,3472,0.996094,0.179483,0.375109,0.000214922,-0.00708092,0.00183611,21-12-31,0.06,0.08,0.07,-0.01,3.72,3.8311 -2,SOFI220107C00020000,22-01-07,SOFI,C,20.0,608,4237,0.996094,0.0376965,0.0407327,9.28884e-05,-0.0138623,0.00166168,21-12-31,0.04,0.05,0.04,-0.01,15.81,2.99829 -3,CCL220107P00016000,22-01-07,CCL,P,16.0,694,982,0.996094,-0.0311032,0.0273614,-0.000107598,-0.0150269,0.00180342,21-12-31,0.04,0.06,0.04,-0.01,20.12,1.53506 -4,WKHS220107C00004500,22-01-07,WKHS,C,4.5,413,428,0.992188,0.427126,0.709146,0.000278101,-0.0182509,0.00218693,21-12-31,0.17,0.19,0.18,-0.1,4.36,3.82456 -5,ROKU220107C00340000,22-01-07,ROKU,C,340.0,271,178,0.992188,0.00104029,0.000120635,3.74657e-05,-0.00848134,0.00101841,21-12-31,0.0,0.04,0.03,-0.06,228.2,11.4077 -6,PLUG220114C00045000,22-01-14,PLUG,C,45.0,139,125,0.992188,0.00836114,0.00430932,7.9168e-05,-0.00464059,0.00121438,21-12-31,0.02,0.03,0.03,0.01,28.23,3.4549 -7,HUT220107C00009500,22-01-07,HUT,C,9.5,539,699,0.992188,0.0752145,0.142417,9.13477e-05,-0.0118585,0.00142426,21-12-31,0.04,0.05,0.05,0.0,7.85,2.05014 -8,LCID220107C00049000,22-01-07,LCID,C,49.0,134,1252,0.988281,0.0267362,0.0128252,0.000159433,-0.0248844,0.00301543,21-12-31,0.07,0.08,0.08,-0.06,38.05,12.8939 -9,TSLA220107C01700000,22-01-07,TSLA,C,1700.0,296,830,0.988281,0.000116547,3.40759e-06,1.97091e-05,-0.00509664,0.000620312,21-12-31,0.01,0.05,0.06,-0.01,1056.78,39.2199 -10,AMC220107P00025000,22-01-07,AMC,P,25.0,8386,4259,0.984375,-0.231073,0.0889868,-0.00110618,-0.0871232,0.0105805,21-12-31,0.57,0.59,0.58,0.13,27.2,-8.5 -11,TNA220114P00060000,22-01-14,TNA,P,60.0,104,335,0.984375,-0.0252877,0.0037483,-0.000820428,-0.0356393,0.00943695,21-12-31,0.18,0.22,0.22,-0.11,84.75, -12,WKHS220107P00004000,22-01-07,WKHS,P,4.0,141,1202,0.984375,-0.226752,0.548891,-0.000174193,-0.0138053,0.0016794,21-12-31,0.08,0.1,0.09,0.01,4.36,3.82456 -13,NIO220107C00043000,22-01-07,NIO,C,43.0,888,1157,0.984375,0.00937169,0.00628575,4.69951e-05,-0.00838587,0.00102493,21-12-31,0.03,0.04,0.03,-0.03,31.68,2.06344 -14,AMC220107P00026000,22-01-07,AMC,P,26.0,2220,2686,0.981445,-0.335643,0.106886,-0.00162316,-0.103952,0.0126709,21-12-31,0.9,0.94,0.93,0.25,27.2,-8.5 -15,SPCE220107C00017000,22-01-07,SPCE,C,17.0,137,1165,0.976563,0.0325403,0.0433712,6.84209e-05,-0.0101611,0.00125039,21-12-31,0.04,0.05,0.05,-0.03,13.38,3.55096 -16,HOOD220107C00022000,22-01-07,HOOD,C,22.0,1766,2776,0.976563,0.0495195,0.0461347,0.000136719,-0.0190457,0.00232487,21-12-31,0.06,0.07,0.06,-0.03,17.76,2.05722 -17,RIOT220107P00020000,22-01-07,RIOT,P,20.0,950,1010,0.976563,-0.171734,0.0913871,-0.00067084,-0.0593573,0.00726911,21-12-31,0.32,0.35,0.33,0.1,22.33,2.81802 -18,RIOT220107C00025000,22-01-07,RIOT,C,25.0,3226,2449,0.976563,0.200317,0.100546,0.000682616,-0.0656729,0.0079976,21-12-31,0.35,0.37,0.37,-0.35,22.33,2.81802 -19,SQQQ220107C00007500,22-01-07,SQQQ,C,7.5,283,1820,0.96875,0.0345346,0.103835,3.19878e-05,-0.00471821,0.000580657,21-12-31,0.01,0.02,0.02,0.0,5.94, -20,M220107P00020000,22-01-07,M,P,20.0,372,352,0.96875,-0.0126725,0.0100928,-5.67249e-05,-0.00888365,0.00109658,21-12-31,0.02,0.03,0.02,0.0,26.18,2.60472 -21,TSLA220107C01650000,22-01-07,TSLA,C,1650.0,819,502,0.96875,0.000218281,6.2546e-06,3.68951e-05,-0.0089893,0.00111608,21-12-31,0.04,0.06,0.05,-0.09,1056.78,39.2199 -22,VXX220107C00025500,22-01-07,VXX,C,25.5,552,2375,0.96875,0.0062816,0.00766312,1.85393e-05,-0.00338737,0.000422397,21-12-31,0.01,0.02,0.02,-0.03,18.53, -23,NVDA220107P00195000,22-01-07,NVDA,P,195.0,200,577,0.96875,-0.000357705,3.57801e-05,-1.77448e-05,-0.00397446,0.000489583,21-12-29,0.0,0.02,0.03,0.0,294.11,30.9199 -24,ANY220107P00003000,22-01-07,ANY,P,3.0,113,152,0.96875,-0.351945,0.958349,-0.000196464,-0.0119427,0.00148371,21-12-31,0.09,0.13,0.13,0.03,3.12,0.845299 -25,NIO220107P00025000,22-01-07,NIO,P,25.0,349,1861,0.960938,-0.0237388,0.0143083,-0.000130125,-0.0181314,0.00227751,21-12-31,0.07,0.09,0.08,-0.02,31.68,2.06344 -26,FUBO220107C00019000,22-01-07,FUBO,C,19.0,160,958,0.960938,0.0585354,0.0607011,0.00014364,-0.0185311,0.00234028,21-12-31,0.08,0.09,0.08,-0.05,15.52,3.74879 -27,RIOT220107C00024000,22-01-07,RIOT,C,24.0,3205,2580,0.960938,0.300213,0.126821,0.00101491,-0.0802524,0.0099262,21-12-31,0.55,0.59,0.57,-0.5,22.33,2.81802 -28,ABNB220107P00115000,22-01-07,ABNB,P,115.0,116,1083,0.960938,-0.0010611,0.000173667,-2.99491e-05,-0.0060815,0.000757447,21-12-30,0.0,0.03,0.03,0.0,166.49,23.413 -29,ROKU220107C00325000,22-01-07,ROKU,C,325.0,136,96,0.960938,0.00243647,0.000270506,8.76436e-05,-0.0178414,0.00221171,21-12-31,0.03,0.06,0.05,-0.07,228.2,11.4077 -30,XPEV220107P00041000,22-01-07,XPEV,P,41.0,194,203,0.958985,-0.0414644,0.0143633,-0.000359651,-0.0457436,0.00571514,21-12-31,0.15,0.17,0.17,-0.08,50.33,0.968406 -31,LCID220107C00048000,22-01-07,LCID,C,48.0,299,1259,0.957032,0.0336145,0.0160128,0.000200452,-0.0291389,0.00364584,21-12-31,0.08,0.1,0.08,-0.06,38.05,12.8939 -32,HUT220114C00009500,22-01-14,HUT,C,9.5,280,339,0.957032,0.167623,0.176976,0.000426575,-0.0137337,0.003713,21-12-31,0.11,0.15,0.15,-0.02,7.85,2.05014 -33,NIO220107C00042000,22-01-07,NIO,C,42.0,599,2170,0.957032,0.0128758,0.00852325,6.4549e-05,-0.0107491,0.00135117,21-12-31,0.04,0.05,0.05,-0.03,31.68,2.06344 -34,DIDI220107C00005500,22-01-07,DIDI,C,5.5,2504,2583,0.953125,0.225927,0.495525,0.000171574,-0.0153376,0.00191335,21-12-31,0.08,0.1,0.09,-0.11,4.98,0.213459 -35,CLOV220107C00004000,22-01-07,CLOV,C,4.0,5918,4744,0.953125,0.298356,0.761142,0.000169954,-0.0131512,0.00165809,21-12-31,0.1,0.11,0.11,0.0,3.72,3.8311 -36,PTON220114C00054000,22-01-14,PTON,C,54.0,185,191,0.953125,0.0139429,0.00552978,0.000166892,-0.00881972,0.00239937,21-12-30,0.03,0.05,0.08,0.0,35.76,7.18505 -37,NKLA220107C00012500,22-01-07,NKLA,C,12.5,239,728,0.953125,0.0309446,0.0577985,4.80522e-05,-0.00701924,0.000884695,21-12-31,0.02,0.04,0.03,-0.05,9.87,5.63678 -38,SPY220107P00295000,22-01-07,SPY,P,295.0,501,1346,0.953125,-4.11789e-05,2.93909e-06,-3.34524e-06,-0.000824876,0.000105054,21-12-27,0.0,0.01,0.01,0.0,474.96,1.19976 -39,TAL220107C00004000,22-01-07,TAL,C,4.0,188,183,0.953125,0.467516,0.828791,0.000275088,-0.0160004,0.00200143,21-12-31,0.15,0.2,0.16,-0.07,3.93,0.48717 -40,GRWG220107C00016000,22-01-07,GRWG,C,16.0,100,115,0.953125,0.0537086,0.0686683,0.00010887,-0.0145812,0.00182097,21-12-31,0.04,0.06,0.05,-0.01,13.05,2.09168 -41,SOFI220114C00021500,22-01-14,SOFI,C,21.5,116,139,0.949219,0.0520482,0.0376374,0.000271849,-0.0116439,0.00317385,21-12-31,0.06,0.08,0.08,-0.02,15.81,2.99829 -42,DDOG220107P00130000,22-01-07,DDOG,P,130.0,131,230,0.949219,-0.00394352,0.000541068,-0.000119314,-0.0211547,0.00266404,21-12-31,0.03,0.08,0.03,-0.07,178.11,58.0163 -43,SDC220114C00002500,22-01-14,SDC,C,2.5,910,581,0.945313,0.400119,0.918413,0.000298261,-0.00624381,0.00171949,21-12-31,0.11,0.13,0.12,-0.06,2.35,1.43907 -44,DIDI220107C00005000,22-01-07,DIDI,C,5.0,2564,1291,0.945313,0.511694,0.662763,0.000378508,-0.0202186,0.00253813,21-12-31,0.24,0.26,0.25,-0.17,4.98,0.213459 -45,FCEL220114C00006000,22-01-14,FCEL,C,6.0,464,1163,0.945313,0.238692,0.334354,0.000398928,-0.0111146,0.00303942,21-12-31,0.12,0.14,0.13,-0.04,5.2,2.96804 -46,LCID220107P00030000,22-01-07,LCID,P,30.0,1956,4811,0.945313,-0.0214703,0.0111512,-0.000140525,-0.0197271,0.00250784,21-12-31,0.05,0.07,0.06,-0.01,38.05,12.8939 -47,TEVA220107P00006500,22-01-07,TEVA,P,6.5,229,170,0.945313,-0.0376952,0.084163,-5.2676e-05,-0.00659682,0.000847362,21-12-31,0.02,0.04,0.03,0.0,8.01,0.844046 -48,QS220107C00028500,22-01-07,QS,C,28.5,278,294,0.945313,0.0225082,0.0199168,7.83727e-05,-0.0120252,0.00152061,21-12-30,0.03,0.04,0.1,0.0,22.19,5.6636 -49,RIOT220107C00023000,22-01-07,RIOT,C,23.0,2708,945,0.939454,0.426973,0.146295,0.00142921,-0.088562,0.0111944,21-12-31,0.86,0.88,0.87,-0.68,22.33,2.81802 -50,RIOT220107P00021000,22-01-07,RIOT,P,21.0,1389,1094,0.937501,-0.28281,0.12642,-0.00111343,-0.0756077,0.0096535,21-12-31,0.56,0.6,0.6,0.2,22.33,2.81802 -51,GM220107C00085000,22-01-07,GM,C,85.0,225,355,0.937501,0.00119651,0.000564769,1.10936e-05,-0.00234025,0.000297515,21-12-13,0.0,0.01,0.04,0.0,58.63,1.6241 -52,SDC220107C00002500,22-01-07,SDC,C,2.5,1030,1020,0.937501,0.324737,1.27801,0.000115453,-0.00852729,0.00108045,21-12-31,0.06,0.07,0.07,-0.04,2.35,1.43907 -53,VXRT220107C00007000,22-01-07,VXRT,C,7.0,278,381,0.937501,0.196222,0.36765,0.00018905,-0.0174503,0.00222224,21-12-31,0.08,0.11,0.08,-0.09,6.27,3.83252 -54,AAL220107C00025500,22-01-07,AAL,C,25.5,160,563,0.937501,0.00220019,0.00319585,6.29876e-06,-0.00124274,0.00015952,21-12-20,0.0,0.01,0.03,0.0,17.96,-1.56364 -55,TLRY220107P00006000,22-01-07,TLRY,P,6.0,221,180,0.937501,-0.0834754,0.181931,-0.000101728,-0.0107991,0.00138162,21-12-31,0.04,0.05,0.04,0.0,7.03,0.733208 -56,BABA220107P00090000,22-01-07,BABA,P,90.0,674,1256,0.933594,-0.00850197,0.00163049,-0.000171968,-0.0274265,0.0035125,21-12-31,0.06,0.09,0.08,-0.02,118.79,0.332531 -57,UVXY220107C00013000,22-01-07,UVXY,C,13.0,6040,3406,0.933594,0.377284,0.255349,0.000710896,-0.0472879,0.00605456,21-12-31,0.4,0.42,0.42,-0.2,12.43, -58,PTON220114P00030000,22-01-14,PTON,P,30.0,692,859,0.929688,-0.137397,0.0350325,-0.00191765,-0.0528145,0.0148268,21-12-31,0.51,0.55,0.54,0.11,35.76,7.18505 -59,BTBT220107C00006500,22-01-07,BTBT,C,6.5,107,1006,0.929688,0.310099,0.484441,0.000290406,-0.0212769,0.00276429,21-12-31,0.15,0.2,0.18,-0.12,6.08,3.50029 -60,ACB220114C00007000,22-01-14,ACB,C,7.0,114,364,0.929688,0.0841417,0.162698,0.000149968,-0.00565582,0.00157665,21-12-31,0.02,0.06,0.04,-0.01,5.41,0.529302 -61,VXX220114C00021000,22-01-14,VXX,C,21.0,340,1936,0.927735,0.265892,0.101291,0.00157851,-0.0411934,0.0114558,21-12-31,0.5,0.54,0.53,-0.2,18.53, -62,DKNG220107C00035000,22-01-07,DKNG,C,35.0,276,2893,0.925782,0.0235119,0.0170778,0.000101008,-0.0151563,0.00194889,21-12-31,0.04,0.05,0.05,-0.07,27.47,6.09767 -63,NVDA220107C00440000,22-01-07,NVDA,C,440.0,283,490,0.921876,0.000391771,4.09137e-05,1.82553e-05,-0.00412467,0.000532739,21-12-30,0.0,0.02,0.02,0.0,294.11,30.9199 -64,VXX220107C00025000,22-01-07,VXX,C,25.0,281,1761,0.921876,0.00690542,0.00875597,2.04118e-05,-0.00350527,0.000459283,21-12-31,0.01,0.02,0.02,-0.03,18.53, -65,SRNE220107C00005000,22-01-07,SRNE,C,5.0,2391,2655,0.921876,0.29017,0.623113,0.000206238,-0.0157383,0.00204091,21-12-31,0.09,0.13,0.1,-0.1,4.65,10.473 -66,LCID220107C00047000,22-01-07,LCID,C,47.0,803,1065,0.921876,0.0421406,0.0199922,0.000251341,-0.0337616,0.00438469,21-12-31,0.1,0.12,0.11,-0.06,38.05,12.8939 -67,HUT220114C00009000,22-01-14,HUT,C,9.0,100,1169,0.91797,0.242008,0.229763,0.00061226,-0.0164164,0.00462374,21-12-31,0.19,0.2,0.2,-0.00999999,7.85,2.05014 -68,NIO220114C00045000,22-01-14,NIO,C,45.0,123,798,0.91797,0.0264391,0.0111585,0.000279822,-0.0129605,0.00366228,21-12-31,0.07,0.09,0.08,-0.04,31.68,2.06344 -69,TLRY220107C00007500,22-01-07,TLRY,C,7.5,4814,3399,0.91797,0.312155,0.428294,0.000334083,-0.0245195,0.00318479,21-12-31,0.17,0.19,0.19,-0.07,7.03,0.733208 -70,QS220107C00028000,22-01-07,QS,C,28.0,376,419,0.914063,0.0270579,0.0240379,9.42524e-05,-0.0135712,0.00177458,21-12-31,0.03,0.05,0.04,-0.04,22.19,5.6636 -71,NKLA220114P00008000,22-01-14,NKLA,P,8.0,262,1205,0.914063,-0.0962343,0.0998779,-0.000370406,-0.0110925,0.00318914,21-12-31,0.08,0.13,0.1,0.01,9.87,5.63678 -72,HOOD220107C00021000,22-01-07,HOOD,C,21.0,462,1833,0.914063,0.0849248,0.0748918,0.000234128,-0.0270968,0.00353249,21-12-31,0.1,0.11,0.1,-0.05,17.76,2.05722 -73,SOFI220107C00019500,22-01-07,SOFI,C,19.5,459,771,0.914063,0.0416173,0.0481076,0.000102895,-0.0137893,0.00180092,21-12-31,0.04,0.05,0.05,-0.01,15.81,2.99829 -74,HUT220107C00009000,22-01-07,HUT,C,9.0,1961,1680,0.914063,0.133749,0.235087,0.000162106,-0.0166223,0.00216589,21-12-31,0.07,0.08,0.08,-0.01,7.85,2.05014 -75,LCID220114C00050000,22-01-14,LCID,C,50.0,288,865,0.914063,0.0673791,0.0198835,0.000846592,-0.0330487,0.00935222,21-12-31,0.21,0.22,0.21,-0.09,38.05,12.8939 -76,FUBO220107C00018500,22-01-07,FUBO,C,18.5,149,675,0.914063,0.076689,0.0786372,0.000188207,-0.0217268,0.0028839,21-12-31,0.1,0.11,0.11,-0.06,15.52,3.74879 -77,BABA220114C00190000,22-01-14,BABA,C,190.0,129,196,0.910157,0.00403094,0.000585511,0.000161424,-0.0093949,0.00267031,21-12-31,0.02,0.05,0.03,0.0,118.79,0.332531 -78,LCID220114P00030000,22-01-14,LCID,P,30.0,228,1609,0.910157,-0.0701995,0.0206103,-0.00102661,-0.0337394,0.00965264,21-12-31,0.23,0.28,0.25,0.01,38.05,12.8939 -79,SPY220105P00335000,22-01-05,SPY,P,335.0,685,917,0.906251,-9.6175e-05,8.47161e-06,-5.11847e-06,-0.00214957,0.000189673,21-12-22,0.0,0.01,0.02,0.0,474.96,1.19976 -80,NIO220107C00041000,22-01-07,NIO,C,41.0,406,1149,0.906251,0.0155959,0.0106168,7.82878e-05,-0.0120078,0.00159375,21-12-31,0.04,0.06,0.06,-0.03,31.68,2.06344 -81,VXX220107C00024500,22-01-07,VXX,C,24.5,1434,992,0.906251,0.00981227,0.0121268,2.8983e-05,-0.00469196,0.000625313,21-12-31,0.01,0.03,0.02,-0.03,18.53, -82,NCLH220107P00016000,22-01-07,NCLH,P,16.0,462,555,0.906251,-0.0109849,0.0119892,-3.90903e-05,-0.00579203,0.000770067,21-12-30,0.02,0.03,0.04,0.0,20.74,2.6617 -83,CLOV220114C00004000,22-01-14,CLOV,C,4.0,175,1319,0.906251,0.368301,0.593435,0.000434455,-0.00929079,0.0026428,21-12-31,0.14,0.17,0.15,-0.05,3.72,3.8311 -84,BABA220114P00085000,22-01-14,BABA,P,85.0,128,379,0.903321,-0.0199584,0.00239026,-0.000897659,-0.0375955,0.0108192,21-12-31,0.18,0.22,0.19,-0.01,118.79,0.332531 -85,HUT220107P00007000,22-01-07,HUT,P,7.0,216,499,0.902345,-0.146182,0.25297,-0.000199446,-0.0173358,0.00230077,21-12-31,0.08,0.1,0.09,-0.05,7.85,2.05014 -86,LCID220114C00049000,22-01-14,LCID,C,49.0,115,337,0.898439,0.0799654,0.02306,0.00100371,-0.0370358,0.0106609,21-12-31,0.25,0.26,0.26,-0.09,38.05,12.8939 -87,HUT220114C00008500,22-01-14,HUT,C,8.5,393,661,0.898439,0.351419,0.278854,0.000878962,-0.019105,0.00549223,21-12-31,0.29,0.32,0.3,-0.06,7.85,2.05014 -88,CCL220114P00015000,22-01-14,CCL,P,15.0,225,195,0.898439,-0.0342242,0.0222649,-0.000262022,-0.0099351,0.00287687,21-12-31,0.05,0.07,0.06,0.02,20.12,1.53506 -89,PTON220107C00045000,22-01-07,PTON,C,45.0,1042,2821,0.898439,0.0269453,0.0150495,0.000152821,-0.0213189,0.00286375,21-12-31,0.08,0.1,0.09,-0.08,35.76,7.18505 -90,FB220107P00235000,22-01-07,FB,P,235.0,123,132,0.898439,-0.000735134,6.56548e-05,-4.17331e-05,-0.00820226,0.00109133,21-12-29,0.0,0.04,0.02,0.0,336.35,7.04427 -91,NIO220107C00040000,22-01-07,NIO,C,40.0,5552,6246,0.898439,0.0249728,0.0159689,0.000125099,-0.0177534,0.00237651,21-12-31,0.07,0.08,0.08,-0.04,31.68,2.06344 -92,TSLA220107C01550000,22-01-07,TSLA,C,1550.0,761,1552,0.894532,0.000529351,1.5432e-05,8.95373e-05,-0.0189142,0.00254274,21-12-31,0.09,0.1,0.09,-0.13,1056.78,39.2199 -93,CGC220107C00010000,22-01-07,CGC,C,10.0,237,1575,0.894532,0.129781,0.211502,0.000175306,-0.0177142,0.00235983,21-12-31,0.07,0.09,0.09,-0.02,8.73,0.809908 -94,ATVI220107P00049000,22-01-07,ATVI,P,49.0,125,134,0.890626,-0.00303902,0.00122162,-3.42374e-05,-0.00587049,0.000787475,21-12-28,0.0,0.03,0.02,0.0,66.53,3.05674 -95,BABA220107C00165000,22-01-07,BABA,C,165.0,423,221,0.890626,0.00235678,0.000543834,4.42848e-05,-0.00835005,0.00111764,21-12-31,0.01,0.03,0.02,-0.01,118.79,0.332531 -96,ETSY220107C00315000,22-01-07,ETSY,C,315.0,103,397,0.890626,0.000859396,0.000117487,2.98354e-05,-0.00612707,0.000820179,21-12-29,0.0,0.03,0.03,0.0,218.94,51.9061 -97,INO220107C00005500,22-01-07,INO,C,5.5,319,137,0.890626,0.213898,0.511305,0.000164627,-0.0138763,0.00186363,21-12-31,0.07,0.09,0.07,-0.07,4.99,2.31447 -98,FCEL220114C00005500,22-01-14,FCEL,C,5.5,249,683,0.890626,0.402565,0.443091,0.000663089,-0.0130974,0.00379487,21-12-31,0.22,0.26,0.24,-0.05,5.2,2.96804 -99,SPY220107P00305000,22-01-07,SPY,P,305.0,300,1359,0.890626,-4.51849e-05,3.43371e-06,-3.66421e-06,-0.000841437,0.000114686,21-12-22,0.0,0.01,0.02,0.0,474.96,1.19976 diff --git a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_screener_output_30_delta_spy.csv b/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_screener_output_30_delta_spy.csv deleted file mode 100644 index e16c76dff88..00000000000 --- a/tests/openbb_terminal/stocks/options/csv/test_syncretism_model/test_get_screener_output_30_delta_spy.csv +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/tests/openbb_terminal/stocks/options/ini/high_iv.ini b/tests/openbb_terminal/stocks/options/ini/high_iv.ini deleted file mode 100644 index 0fb16644274..00000000000 --- a/tests/openbb_terminal/stocks/options/ini/high_iv.ini +++ /dev/null @@ -1,183 +0,0 @@ -# Author of preset: Danglewood -# Description: Delta bound filter. -[FILTER] - -# tickers [string]: a list of space or comma separated tickers to restrict or exclude them from the query. -# E.g. "GME" or for multiples "AMC,BB,GME". -tickers = - -# exclude [true|false]: if true, then tickers are excluded. If false, the search is restricted to these tickers. -exclude = - -# min-diff [int]: minimum difference in percentage between strike and stock price. -min-diff = - -# max-diff [int]: maximum difference in percentage between strike and stock price. -max-diff = - -# itm [bool]: select in the money options. -itm = false - -# otm [bool]: select out of the money options. -otm = true - -# min-ask-bid [float]: minimum spread between bid and ask. -min-ask-bid = - -# max-ask-bid [float]: maximum spread between bid and ask. -max-ask-bid = - -# min-exp [int]: minimum days until expiration. -min-exp = - -# max-exp [int]: maximum days until expiration. -max-exp = - -# min-price [float]: minimum option premium. -min-price = - -# max-price [float]: maximum option premium. -max-price = - -#min-strike [float]: minimum option strike. -min-strike = - -#max-strike [float]: maximum option strike. -max-strike = - -# calls [true|false]: select call options. -calls = true - -# puts [true|false]: select put options. -puts = true - -# stock [true|false]: select normal stocks. -stock = true - -# etf [true|false]: select etf options. -etf = false - -# min-sto [float]: minimum option price / stock price ratio. -min-sto = - -# max-sto [float]: maximum option price / stock price ratio. -max-sto = - -# min-yield [float]: minimum premium / strike price ratio. -min-yield = - -# max-yield [float]: maximum premium / strike price ratio. -max-yield = - -# min-myield [float]: minimum yield per month until expiration date. -min-myield = - -# max-myield [float]: maximum yield per month until expiration date. -max-myield = - -# min-delta [float]: minimum delta greek. -min-delta = - -# max-delta [float]: maximum delta greek. -max-delta = - -# min-gamma [float]: minimum gamma greek. -min-gamma = - -# max-gamma [float]: maximum gamma greek. -max-gamma = - -# min-theta [float]: minimum theta greek. -min-theta = - -# max-theta [float]: maximum theta greek. -max-theta = - -# min-vega [float]: minimum vega greek. -min-vega = - -# max-vega [float]: maximum vega greek. -max-vega = - -#min-iv [float]: minimum implied volatility. -min-iv = 1.00 - -#max-iv [float]: maximum implied volatility. -max-iv = - -#min-oi [float]: minimum open interest. -min-oi = 10 - -#max-oi[float]: maximum open interest -max-oi = - -#min-volume [float]: minimum volume. -min-volume = 10 - -#max-volume [float]: maximum volume. -max-volume = - -#min-voi [float]: minimum volume / oi ratio. -min-voi = - -#max-voi [float]: maximum volume / oi ratio. -max-voi = - -# min-cap [float]: minimum market capitalization (in billions USD). -min-cap = - -# max-cap [float]: maximum market capitalization (in billions USD). -max-cap = - -# order-by [default: e_desc]: how to order results, possible values: -# "e_desc", "e_asc": expiration, descending / ascending. -# "iv_desc", "iv_asc": implied volatility, descending / ascending. -# "lp_desc", "lp_asc": lastprice, descending / ascending. -# "md_desc", "md_asc": current stock price, descending / ascending. -# "oi_desc", "oi_asc": open interest, descending / ascending. -# "v_desc", "v_asc": volume, descending / ascending. -# "ρ_desc", "ρ_asc": rho, descending / ascending. - -order-by = "iv_desc" - -# limit [int]: number of results (max 50). -limit = - -# active [true|false]: if set to true, restricts to options for which volume, open interest, ask, and bid are all > 0. -active = true - -# [float|int] deviation from the 20 day average -min-price-20d = -max-price-20d = -min-volume-20d = -max-volume-20d = -min-iv-20d = -max-iv-20d = -min-delta-20d = -max-delta-20d = -min-gamma-20d = -max-gamma-20d = -min-theta-20d = -max-theta-20d = -min-vega-20d = -max-vega-20d = -min-rho-20d = -max-rho-20d = - -# [float|int] deviation from the 100 day average -min-price-100d = -max-price-100d = -min-volume-100d = -max-volume-100d = -min-iv-100d = -max-iv-100d = -min-delta-100d = -max-delta-100d = -min-gamma-100d = -max-gamma-100d = -min-theta-100d = -max-theta-100d = -min-vega-100d = -max-vega-100d = -min-rho-100d = -max-rho-100d = diff --git a/tests/openbb_terminal/stocks/options/ini/spy_30_delta.ini b/tests/openbb_terminal/stocks/options/ini/spy_30_delta.ini deleted file mode 100644 index 9ca3565c7c4..00000000000 --- a/tests/openbb_terminal/stocks/options/ini/spy_30_delta.ini +++ /dev/null @@ -1,183 +0,0 @@ -# Author of preset: Danglewood -# Description: Delta bound filter. -[FILTER] - -# tickers [string]: a list of space or comma separated tickers to restrict or exclude them from the query. -# E.g. "GME" or for multiples "AMC,BB,GME". -tickers = "SPY" - -# exclude [true|false]: if true, then tickers are excluded. If false, the search is restricted to these tickers. -exclude = - -# min-diff [int]: minimum difference in percentage between strike and stock price. -min-diff = - -# max-diff [int]: maximum difference in percentage between strike and stock price. -max-diff = - -# itm [bool]: select in the money options. -itm = true - -# otm [bool]: select out of the money options. -otm = true - -# min-ask-bid [float]: minimum spread between bid and ask. -min-ask-bid = - -# max-ask-bid [float]: maximum spread between bid and ask. -max-ask-bid = - -# min-exp [int]: minimum days until expiration. -min-exp = - -# max-exp [int]: maximum days until expiration. -max-exp = - -# min-price [float]: minimum option premium. -min-price = - -# max-price [float]: maximum option premium. -max-price = - -#min-strike [float]: minimum option strike. -min-strike = 280 - -#max-strike [float]: maximum option strike. -max-strike = - -# calls [true|false]: select call options. -calls = true - -# puts [true|false]: select put options. -puts = true - -# stock [true|false]: select normal stocks. -stock = true - -# etf [true|false]: select etf options. -etf = true - -# min-sto [float]: minimum option price / stock price ratio. -min-sto = - -# max-sto [float]: maximum option price / stock price ratio. -max-sto = - -# min-yield [float]: minimum premium / strike price ratio. -min-yield = - -# max-yield [float]: maximum premium / strike price ratio. -max-yield = - -# min-myield [float]: minimum yield per month until expiration date. -min-myield = - -# max-myield [float]: maximum yield per month until expiration date. -max-myield = - -# min-delta [float]: minimum delta greek. -min-delta = 0.10 - -# max-delta [float]: maximum delta greek. -max-delta = 0.35 - -# min-gamma [float]: minimum gamma greek. -min-gamma = - -# max-gamma [float]: maximum gamma greek. -max-gamma = - -# min-theta [float]: minimum theta greek. -min-theta = - -# max-theta [float]: maximum theta greek. -max-theta = - -# min-vega [float]: minimum vega greek. -min-vega = - -# max-vega [float]: maximum vega greek. -max-vega = - -#min-iv [float]: minimum implied volatility. -min-iv = - -#max-iv [float]: maximum implied volatility. -max-iv = - -#min-oi [float]: minimum open interest. -min-oi = 10 - -#max-oi[float]: maximum open interest -max-oi = - -#min-volume [float]: minimum volume. -min-volume = 100 - -#max-volume [float]: maximum volume. -max-volume = - -#min-voi [float]: minimum volume / oi ratio. -min-voi = - -#max-voi [float]: maximum volume / oi ratio. -max-voi = - -# min-cap [float]: minimum market capitalization (in billions USD). -min-cap = - -# max-cap [float]: maximum market capitalization (in billions USD). -max-cap = - -# order-by [default: e_desc]: how to order results, possible values: -# "e_desc", "e_asc": expiration, descending / ascending. -# "iv_desc", "iv_asc": implied volatility, descending / ascending. -# "lp_desc", "lp_asc": lastprice, descending / ascending. -# "md_desc", "md_asc": current stock price, descending / ascending. -# "oi_desc", "oi_asc": open interest, descending / ascending. -# "v_desc", "v_asc": volume, descending / ascending. -# "ρ_desc", "ρ_asc": rho, descending / ascending. - -order-by = - -# limit [int]: number of results (max 50). -limit = - -# active [true|false]: if set to true, restricts to options for which volume, open interest, ask, and bid are all > 0. -active = - -# [float|int] deviation from the 20 day average -min-price-20d = -max-price-20d = -min-volume-20d = -max-volume-20d = -min-iv-20d = -max-iv-20d = -min-delta-20d = -max-delta-20d = -min-gamma-20d = -max-gamma-20d = -min-theta-20d = -max-theta-20d = -min-vega-20d = -max-vega-20d = -min-rho-20d = -max-rho-20d = - -# [float|int] deviation from the 100 day average -min-price-100d = -max-price-100d = -min-volume-100d = -max-volume-100d = -min-iv-100d = -max-iv-100d = -min-delta-100d = -max-delta-100d = -min-gamma-100d = -max-gamma-100d = -min-theta-100d = -max-theta-100d = -min-vega-100d = -max-vega-100d = -min-rho-100d = -max-rho-100d = diff --git a/tests/openbb_terminal/stocks/options/test_options_controller.py b/tests/openbb_terminal/stocks/options/test_options_controller.py index c4ca1865142..bc0d48a7e9c 100644 --- a/tests/openbb_terminal/stocks/options/test_options_controller.py +++ b/tests/openbb_terminal/stocks/options/test_options_controller.py @@ -508,7 +508,7 @@ def test_call_func_expect_queue(expected_queue, func, mocker, queue): "--limit=2", "--export=csv", ], - "syncretism_view.view_historical_greeks", + "intrinio_view.view_historical_greeks", [], dict( symbol="MOCK_TICKER", @@ -535,7 +535,7 @@ def test_call_func_expect_queue(expected_queue, func, mocker, queue): "--limit=2", "--export=csv", ], - "syncretism_view.view_historical_greeks", + "intrinio_view.view_historical_greeks", [], dict( symbol="MOCK_TICKER", @@ -976,6 +976,7 @@ def test_call_func_no_selected_date(func, mocker): ns = argparse.Namespace() ns.exp = "" # set the exp attribute ns.chain_id = None + ns.expiration = None mocker.patch( "openbb_terminal.stocks.options.options_controller.OptionsController.parse_known_args_and_warn", return_value=ns, # return the Namespace object diff --git a/tests/openbb_terminal/stocks/options/test_screener_controller.py b/tests/openbb_terminal/stocks/options/test_screener_controller.py deleted file mode 100644 index ea70e0d0482..00000000000 --- a/tests/openbb_terminal/stocks/options/test_screener_controller.py +++ /dev/null @@ -1,290 +0,0 @@ -# IMPORTATION STANDARD - -import os - -# IMPORTATION THIRDPARTY -import pandas as pd -import pytest - -# IMPORTATION INTERNAL -from openbb_terminal.core.session.current_user import ( - PreferencesModel, - copy_user, -) -from openbb_terminal.stocks.options.screen import screener_controller - -# pylint: disable=E1101 -# pylint: disable=W0603 -# pylint: disable=E1111 - -PRICES = pd.DataFrame(data={"Price": [11.0, 12.0], "Chance": [0.2, 0.8]}) - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.parametrize( - "queue, expected", - [ - (["load", "help"], ["help"]), - (["quit", "help"], ["help"]), - ], -) -def test_menu_with_queue(expected, mocker, queue): - path_controller = "openbb_terminal.stocks.options.screen.screener_controller" - - # MOCK SWITCH - mocker.patch( - target=f"{path_controller}.ScreenerController.switch", - return_value=["quit"], - ) - result_menu = screener_controller.ScreenerController(queue=queue).menu() - - assert result_menu == expected - - -@pytest.mark.vcr(record_mode="none") -def test_menu_without_queue_completion(mocker): - path_controller = "openbb_terminal.stocks.options.screen.screener_controller" - - # ENABLE AUTO-COMPLETION : HELPER_FUNCS.MENU - preferences = PreferencesModel(USE_PROMPT_TOOLKIT=True) - mock_current_user = copy_user(preferences=preferences) - mocker.patch( - target="openbb_terminal.core.session.current_user.__current_user", - new=mock_current_user, - ) - mocker.patch( - target="openbb_terminal.parent_classes.session", - ) - mocker.patch( - target="openbb_terminal.parent_classes.session.prompt", - return_value="quit", - ) - - # DISABLE AUTO-COMPLETION : CONTROLLER.COMPLETER - preferences = PreferencesModel(USE_PROMPT_TOOLKIT=True) - mock_current_user = copy_user(preferences=preferences) - mocker.patch( - target="openbb_terminal.core.session.current_user.__current_user", - new=mock_current_user, - ) - mocker.patch( - target=f"{path_controller}.session", - ) - mocker.patch( - target=f"{path_controller}.session.prompt", - return_value="quit", - ) - - result_menu = screener_controller.ScreenerController(queue=None).menu() - - assert result_menu == ["help"] - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.parametrize( - "mock_input", - ["help", "homee help", "home help", "mock"], -) -def test_menu_without_queue_sys_exit(mock_input, mocker): - path_controller = "openbb_terminal.stocks.options.screen.screener_controller" - - # DISABLE AUTO-COMPLETION - preferences = PreferencesModel(USE_PROMPT_TOOLKIT=True) - mock_current_user = copy_user(preferences=preferences) - mocker.patch( - target="openbb_terminal.core.session.current_user.__current_user", - new=mock_current_user, - ) - mocker.patch( - target=f"{path_controller}.session", - return_value=None, - ) - - # MOCK USER INPUT - mocker.patch("builtins.input", return_value=mock_input) - - # MOCK SWITCH - class SystemExitSideEffect: - def __init__(self): - self.first_call = True - - def __call__(self, *args, **kwargs): - if self.first_call: - self.first_call = False - raise SystemExit() - return ["quit"] - - mock_switch = mocker.Mock(side_effect=SystemExitSideEffect()) - mocker.patch( - target=f"{path_controller}.ScreenerController.switch", - new=mock_switch, - ) - - result_menu = screener_controller.ScreenerController(queue=None).menu() - - assert result_menu == ["help"] - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.record_stdout -def test_print_help(): - controller = screener_controller.ScreenerController(queue=None) - controller.print_help() - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.parametrize( - "an_input, expected_queue", - [ - ("", []), - ("/help", ["home", "help"]), - ("help/help", ["help", "help"]), - ("q", ["quit"]), - ("h", []), - ( - "r", - [ - "quit", - "quit", - "quit", - "reset", - "stocks", - "options", - "screen", - ], - ), - ], -) -def test_switch(an_input, expected_queue): - controller = screener_controller.ScreenerController(queue=None) - queue = controller.switch(an_input=an_input) - - assert queue == expected_queue - - -@pytest.mark.vcr(record_mode="none") -def test_call_cls(mocker): - mocker.patch("os.system") - controller = screener_controller.ScreenerController(queue=None) - controller.call_cls([]) - - assert controller.queue == [] - os.system.assert_called_once_with("cls||clear") - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.parametrize( - "func, queue, expected_queue", - [ - ( - "call_exit", - [], - ["quit", "quit", "quit", "quit"], - ), - ("call_exit", ["help"], ["quit", "quit", "quit", "quit", "help"]), - ("call_home", [], ["quit", "quit", "quit"]), - ("call_help", [], []), - ("call_quit", [], ["quit"]), - ("call_quit", ["help"], ["quit", "help"]), - ( - "call_reset", - [], - [ - "quit", - "quit", - "quit", - "reset", - "stocks", - "options", - "screen", - ], - ), - ( - "call_reset", - ["help"], - [ - "quit", - "quit", - "quit", - "reset", - "stocks", - "options", - "screen", - "help", - ], - ), - ], -) -def test_call_func_expect_queue(expected_queue, func, queue): - controller = screener_controller.ScreenerController(queue=queue) - result = getattr(controller, func)([]) - - assert result is None - assert controller.queue == expected_queue - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.parametrize( - "tested_func, other_args, mocked_func, called_args, called_kwargs", - [ - ( - "call_view", - [ - "high_iv", - ], - "syncretism_view.view_available_presets", - [], - dict(), - ), - ( - "call_set", - [ - "high_iv.ini", - ], - "", - [], - dict(), - ), - ( - "call_scr", - [ - "high_iv", - "--limit=1", - ], - "syncretism_view.view_screener_output", - [], - dict(), - ), - ( - "call_ca", - [], - "ca_controller.ComparisonAnalysisController.menu", - [], - dict(), - ), - ], -) -def test_call_func_test( - tested_func, mocked_func, other_args, called_args, called_kwargs, mocker -): - path_controller = "openbb_terminal.stocks.options.screen.screener_controller" - - if mocked_func: - mock = mocker.Mock() - mocker.patch( - target=f"{path_controller}.{mocked_func}", - new=mock, - ) - - controller = screener_controller.ScreenerController(queue=None) - controller.screen_tickers = ["PM"] - getattr(controller, tested_func)(other_args) - - if called_args or called_kwargs: - mock.assert_called_once_with(*called_args, **called_kwargs) - else: - mock.assert_called_once() - else: - controller = screener_controller.ScreenerController(queue=None) - controller.screen_tickers = ["PM"] - getattr(controller, tested_func)(other_args) diff --git a/tests/openbb_terminal/stocks/options/test_syncretism_model.py b/tests/openbb_terminal/stocks/options/test_syncretism_model.py deleted file mode 100644 index 43f87b1fd71..00000000000 --- a/tests/openbb_terminal/stocks/options/test_syncretism_model.py +++ /dev/null @@ -1,99 +0,0 @@ -# IMPORTATION THIRDPARTY -from pathlib import Path - -import pytest -import requests - -# IMPORTATION INTERNAL -from openbb_terminal.stocks.options.screen import syncretism_model - - -@pytest.fixture(scope="module") -def vcr_config(): - return { - "filter_headers": [("User-Agent", None)], - "filter_query_parameters": [ - ("period1", "MOCK_PERIOD_1"), - ("period2", "MOCK_PERIOD_2"), - ("date", "MOCK_DATE"), - ], - } - - -@pytest.mark.vcr -@pytest.mark.parametrize( - "put", - [True, False], -) -def test_get_historical_greeks(put, recorder): - result_df = syncretism_model.get_historical_greeks( - symbol="PM", - expiry="2022-01-07", - chain_id="", - strike=90, - put=put, - ) - recorder.capture(result_df) - - -@pytest.mark.vcr(record_mode="none") -def test_get_historical_greeks_invalid_status(mocker): - mock_response = requests.Response() - mock_response.status_code = 400 - mocker.patch( - target="openbb_terminal.helper_funcs.requests.get", - new=mocker.Mock(return_value=mock_response), - ) - - result_df = syncretism_model.get_historical_greeks( - symbol="PM", - expiry="2022-01-07", - chain_id="PM220107P00090000", - strike=90, - put=True, - ) - - assert result_df.empty - - -@pytest.mark.skip -@pytest.mark.vcr -def test_get_screener_output(mocker, recorder): - mock_preset_path = Path(__file__).resolve().parent / "ini" - preset_choices = { - filepath.name: filepath - for filepath in mock_preset_path.iterdir() - if filepath.suffix == ".ini" - } - mocker.patch( - target="openbb_terminal.stocks.options.screen.syncretism_model.get_preset_choices", - return_value=preset_choices, - ) - result_tuple = syncretism_model.get_screener_output( - preset="high_iv.ini", - ) - recorder.capture(result_tuple[0]) - - -@pytest.mark.vcr(record_mode="none") -def test_get_screener_output_invalid_status(mocker): - mock_response = requests.Response() - mock_response.status_code = 400 - mocker.patch( - target="openbb_terminal.helper_funcs.requests.get", - new=mocker.Mock(return_value=mock_response), - ) - - result_tuple = syncretism_model.get_screener_output( - preset="high_iv.ini", - ) - - assert result_tuple[0].empty - - -@pytest.mark.vcr -def test_get_screener_output_30_delta_spy(recorder): - result_tuple = syncretism_model.get_screener_output( - preset="30_delta_spy.ini", - ) - recorder.capture(result_tuple[0]) diff --git a/tests/openbb_terminal/stocks/options/test_syncretism_view.py b/tests/openbb_terminal/stocks/options/test_syncretism_view.py deleted file mode 100644 index 3aba0aecae6..00000000000 --- a/tests/openbb_terminal/stocks/options/test_syncretism_view.py +++ /dev/null @@ -1,85 +0,0 @@ -# IMPORTATION STANDARD - -# IMPORTATION THIRDPARTY -from pathlib import Path - -import pandas as pd -import pytest - -# IMPORTATION INTERNAL -from openbb_terminal.stocks.options.screen import syncretism_view - - -@pytest.fixture(scope="module") -def vcr_config(): - return { - "filter_headers": [("User-Agent", None)], - "filter_query_parameters": [ - ("period1", "MOCK_PERIOD_1"), - ("period2", "MOCK_PERIOD_2"), - ("date", "MOCK_DATE"), - ], - } - - -@pytest.mark.default_cassette("test_view_screener_output") -@pytest.mark.vcr -@pytest.mark.record_stdout -def test_view_screener_output(): - syncretism_view.view_screener_output( - preset="high_iv.ini", - limit=5, - export="", - ) - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.record_stdout -def test_view_screener_output_error(mocker): - mocker.patch( - target="openbb_terminal.stocks.options.screen.syncretism_view.syncretism_model.get_screener_output", - return_value=(pd.DataFrame(), "MOCK_ERROR_MESSAGE"), - ) - syncretism_view.view_screener_output( - preset="high_iv.ini", - limit=5, - export="", - ) - - -@pytest.mark.vcr -def test_view_historical_greeks(): - syncretism_view.view_historical_greeks( - symbol="PM", - expiry="", - chain_id="PM220107P00090000", - strike=90, - greek="theta", - put=True, - raw=True, - limit=5, - export="", - ) - - -@pytest.mark.skip -@pytest.mark.vcr(record_mode="none") -@pytest.mark.record_stdout -@pytest.mark.parametrize( - "preset", - ["template.ini", "spy_30_delta.ini"], -) -def test_view_available_presets(mocker, preset): - mock_preset_path = Path(__file__).resolve().parent / "ini" - preset_choices = { - filepath.name: filepath - for filepath in mock_preset_path.iterdir() - if filepath.suffix == ".ini" - } - mocker.patch( - target="openbb_terminal.stocks.options.screen.syncretism_model.get_preset_choices", - return_value=preset_choices, - ) - syncretism_view.view_available_presets( - preset=preset, - ) diff --git a/tests/openbb_terminal/stocks/options/txt/test_options_controller/test_print_help.txt b/tests/openbb_terminal/stocks/options/txt/test_options_controller/test_print_help.txt index d4f05028cac..a079575c3b3 100644 --- a/tests/openbb_terminal/stocks/options/txt/test_options_controller/test_print_help.txt +++ b/tests/openbb_terminal/stocks/options/txt/test_options_controller/test_print_help.txt @@ -1,8 +1,6 @@ unu show unusual options activity [FDScanner] calc basic call/put PnL calculator -> screen screens tickers based on preset - load load new ticker [YahooFinance, Tradier, Nasdaq, Intrinio] [unvl] exp see and set expiration dates[/unvl] @@ -17,7 +15,7 @@ Expiry: [unvl] voi plot volume and open interest[/unvl] [unvl] hist plot option history[/unvl] [ChartExchange, Tradier, Intrinio] [unvl] vsurf show 3D volatility surface[/unvl] [YahooFinance] -[unvl] grhist plot option greek history[/unvl] [Syncretism, Intrinio] +[unvl] grhist plot option greek history[/unvl] [Intrinio] [unvl] plot plot variables provided by the user[/unvl] [YahooFinance] [unvl] greeks shows the greeks for a given option[/unvl] [YahooFinance] [unvl] eodchain gets option chain at a specific date[/unvl] [Intrinio] diff --git a/tests/openbb_terminal/stocks/options/txt/test_screener_controller/test_print_help.txt b/tests/openbb_terminal/stocks/options/txt/test_screener_controller/test_print_help.txt deleted file mode 100644 index b39339effce..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_screener_controller/test_print_help.txt +++ /dev/null @@ -1,11 +0,0 @@ - view view available presets (or one in particular) [Syncretism] - set set one of the available presets - -Preset: high_iv.ini - - scr screen data from this preset [Syncretism] - -Last screened tickers: - -> ca take these to comparison analysis menu - diff --git a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[high_IV.ini].txt b/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[high_IV.ini].txt deleted file mode 100644 index 449fc21c865..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[high_IV.ini].txt +++ /dev/null @@ -1,12 +0,0 @@ - - FILTER - -itm : false -otm : true -calls : true -puts : true -stock : true -etf : false -min-iv : 1.00 -min-oi : 10 -min-volume : 10 -order-by : "iv_desc" -active : true diff --git a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[spy_30_delta.ini].txt b/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[spy_30_delta.ini].txt deleted file mode 100644 index 321e4739c2d..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[spy_30_delta.ini].txt +++ /dev/null @@ -1,13 +0,0 @@ - - FILTER - -tickers : "SPY" -itm : true -otm : true -min-strike : 280 -calls : true -puts : true -stock : true -etf : true -min-delta : 0.10 -max-delta : 0.35 -min-oi : 10 -min-volume : 100 diff --git a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[template.ini].txt b/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[template.ini].txt deleted file mode 100644 index f3cb5926b1a..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_available_presets[template.ini].txt +++ /dev/null @@ -1,5 +0,0 @@ - - FILTER - -itm : true -otm : true -calls : true -puts : true diff --git a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output.txt b/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output.txt deleted file mode 100644 index dcd992cdf2f..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output.txt +++ /dev/null @@ -1,2 +0,0 @@ -No data found - diff --git a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output[False].txt b/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output[False].txt deleted file mode 100644 index ad44b65afe0..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output[False].txt +++ /dev/null @@ -1,6 +0,0 @@ - Contract Symbol Expiration Ticker Type Strike Vol OI IV Delta Gamma Rho Theta Vega Last Traded Bid Ask Last % Change Underlying P/B -0 VORB250117C00003000 25-01-17 VORB C 3.0 20 158 8.0000 1.0000 1.0663e-08 6.5475e-10 -1.5821e-09 2.7336e-09 23-02-15 0.25 2.35 0.50 0.00 1.30 4.8872 -1 HUT230324P00000500 23-03-24 HUT P 0.5 300 119 7.0625 -0.0575 3.6799e-02 -2.3403e-04 -6.6603e-03 5.1031e-04 23-02-24 0.01 0.45 0.02 -0.02 1.63 0.6463 -2 GNUS230421P00000500 23-04-21 GNUS P 0.5 59 295 6.4062 -0.0239 7.2644e-03 -5.2132e-04 -3.9281e-03 6.7855e-04 23-02-10 0.11 0.45 0.15 0.00 3.11 0.7814 -3 BBBY230317C00032000 23-03-17 BBBY C 32.0 50 334 5.7500 0.0575 5.5752e-02 3.0205e-05 -5.9144e-03 4.1360e-04 23-02-23 0.02 0.07 0.05 0.00 1.53 -0.2237 -4 BBBY230317C00022000 23-03-17 BBBY C 22.0 13 122 5.6562 0.0897 7.9731e-02 4.5859e-05 -8.1852e-03 5.8185e-04 23-02-24 0.02 0.12 0.05 0.04 1.53 -0.2237 diff --git a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output[True].txt b/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output[True].txt deleted file mode 100644 index ad44b65afe0..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output[True].txt +++ /dev/null @@ -1,6 +0,0 @@ - Contract Symbol Expiration Ticker Type Strike Vol OI IV Delta Gamma Rho Theta Vega Last Traded Bid Ask Last % Change Underlying P/B -0 VORB250117C00003000 25-01-17 VORB C 3.0 20 158 8.0000 1.0000 1.0663e-08 6.5475e-10 -1.5821e-09 2.7336e-09 23-02-15 0.25 2.35 0.50 0.00 1.30 4.8872 -1 HUT230324P00000500 23-03-24 HUT P 0.5 300 119 7.0625 -0.0575 3.6799e-02 -2.3403e-04 -6.6603e-03 5.1031e-04 23-02-24 0.01 0.45 0.02 -0.02 1.63 0.6463 -2 GNUS230421P00000500 23-04-21 GNUS P 0.5 59 295 6.4062 -0.0239 7.2644e-03 -5.2132e-04 -3.9281e-03 6.7855e-04 23-02-10 0.11 0.45 0.15 0.00 3.11 0.7814 -3 BBBY230317C00032000 23-03-17 BBBY C 32.0 50 334 5.7500 0.0575 5.5752e-02 3.0205e-05 -5.9144e-03 4.1360e-04 23-02-23 0.02 0.07 0.05 0.00 1.53 -0.2237 -4 BBBY230317C00022000 23-03-17 BBBY C 22.0 13 122 5.6562 0.0897 7.9731e-02 4.5859e-05 -8.1852e-03 5.8185e-04 23-02-24 0.02 0.12 0.05 0.04 1.53 -0.2237 diff --git a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output_error.txt b/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output_error.txt deleted file mode 100644 index c5023720d30..00000000000 --- a/tests/openbb_terminal/stocks/options/txt/test_syncretism_view/test_view_screener_output_error.txt +++ /dev/null @@ -1,2 +0,0 @@ -MOCK_ERROR_MESSAGE -