diff options
Diffstat (limited to 'openbb_terminal/stocks/options/screen/syncretism_view.py')
-rw-r--r-- | openbb_terminal/stocks/options/screen/syncretism_view.py | 217 |
1 files changed, 0 insertions, 217 deletions
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) |