summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Maslek <jmaslek11@gmail.com>2023-05-29 14:06:56 -0400
committerGitHub <noreply@github.com>2023-05-29 18:06:56 +0000
commit3fcfc08db9f641d2c124e8c130996cbce9044f10 (patch)
tree7f775f54cc0d9c2f495ab8a0b822b85946c7523a
parentfb1bf21af1fe77ca4b8f2ce0569a07b99ac01f1c (diff)
Add more futures to curve (and probably some more bugs) (#5049)
* Add a while condition for futures curve * Fixes #5047 * Fixes #5014 * point root commands to /usage to avoid 404 * Black wont run in the nightly vs code build lol * #5071 * mypy * pylint * tests * Fix wrong queue to fa
-rw-r--r--generate_sdk.py4
-rw-r--r--openbb_terminal/fixedincome/fixedincome_controller.py2
-rw-r--r--openbb_terminal/fixedincome/fred_model.py2
-rw-r--r--openbb_terminal/futures/yfinance_model.py14
-rw-r--r--openbb_terminal/stocks/options/intrinio_model.py9
-rw-r--r--openbb_terminal/stocks/options/intrinio_view.py4
-rw-r--r--openbb_terminal/stocks/options/options_controller.py5
-rw-r--r--openbb_terminal/stocks/options/tradier_model.py19
-rw-r--r--openbb_terminal/stocks/options/tradier_view.py11
-rw-r--r--openbb_terminal/stocks/stocks_controller.py1
-rw-r--r--openbb_terminal/terminal_helper.py2
11 files changed, 50 insertions, 23 deletions
diff --git a/generate_sdk.py b/generate_sdk.py
index eeac0a371c9..60d1f953348 100644
--- a/generate_sdk.py
+++ b/generate_sdk.py
@@ -549,9 +549,9 @@ def generate_sdk(sort: bool = False) -> bool:
"""
trailmaps = get_trailmaps(sort)
try:
- console.print("[yellow]Generating SDK...[/]")
+ console.print("[yellow]Generating SDK...[/yellow]")
BuildCategoryModelClasses(trailmaps).build()
- console.print("[green]SDK Generated Successfully.[/]")
+ console.print("[green]SDK Generated Successfully.[/green]")
except Exception as e:
console.print(f"[red]Error generating SDK: {e}[/]")
return False
diff --git a/openbb_terminal/fixedincome/fixedincome_controller.py b/openbb_terminal/fixedincome/fixedincome_controller.py
index f2442d46d75..ded30f774dc 100644
--- a/openbb_terminal/fixedincome/fixedincome_controller.py
+++ b/openbb_terminal/fixedincome/fixedincome_controller.py
@@ -1340,7 +1340,7 @@ class FixedIncomeController(BaseController):
parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES, raw=True
)
if ns_parser:
- maturity = list_from_str(ns_parser.maturity)
+ maturity = [m.replace(".0", "") for m in list_from_str(ns_parser.maturity)]
category = list_from_str(ns_parser.category)
fred_view.plot_spot(
diff --git a/openbb_terminal/fixedincome/fred_model.py b/openbb_terminal/fixedincome/fred_model.py
index 796078b742d..fe33f280462 100644
--- a/openbb_terminal/fixedincome/fred_model.py
+++ b/openbb_terminal/fixedincome/fred_model.py
@@ -166,7 +166,7 @@ MOODY_TO_OPTIONS: Dict[str, Dict] = {
"Spread": ["treasury", "fed_funds"], # type: ignore
}
SPOT_TO_OPTIONS = {
- "Maturity": [f"{i}y" for i in np.arange(1, 100.5, 0.5)],
+ "Maturity": [f"{i}y".replace(".0", "") for i in np.arange(1, 100.5, 0.5)],
"Category": ["spot_rate", "par_yield"],
}
CP_TO_OPTIONS = {
diff --git a/openbb_terminal/futures/yfinance_model.py b/openbb_terminal/futures/yfinance_model.py
index aadbc102455..67185614a6d 100644
--- a/openbb_terminal/futures/yfinance_model.py
+++ b/openbb_terminal/futures/yfinance_model.py
@@ -174,19 +174,27 @@ def get_curve_futures(
futures_index = list()
futures_curve = list()
- for i in range(36):
+ i = 0
+ empty_count = 0
+ # Loop through until we find 12 consecutive empty years
+ while empty_count < 12:
future = today + relativedelta(months=i)
future_symbol = (
f"{symbol}{MONTHS[future.month]}{str(future.year)[-2:]}.{exchange}"
)
-
with HiddenPrints():
data = yf.download(future_symbol, progress=False, ignore_tz=True)
- if not data.empty:
+ if data.empty:
+ empty_count += 1
+
+ else:
+ empty_count = 0
futures_index.append(future.strftime("%b-%Y"))
futures_curve.append(data["Adj Close"].values[-1])
+ i += 1
+
if not futures_index:
return pd.DataFrame()
diff --git a/openbb_terminal/stocks/options/intrinio_model.py b/openbb_terminal/stocks/options/intrinio_model.py
index 9600ed00146..925ee0368f2 100644
--- a/openbb_terminal/stocks/options/intrinio_model.py
+++ b/openbb_terminal/stocks/options/intrinio_model.py
@@ -232,7 +232,7 @@ def get_full_chain_eod(symbol: str, date: str, quiet: bool = False) -> pd.DataFr
>>> eod_chain = openbb.stocks.options.eodchain("AAPL", date="2022-12-23")
"""
- expirations = get_expiration_dates(symbol)
+ expirations = get_expiration_dates(symbol, start=date)
# Since we can't have expirations in the past, lets do something fun:
# Note that there is an issue with using >= in that when the date = expiration, the dte will be 0, so iv*dte = 0*0
expirations = list(filter(lambda x: x > date, expirations))
@@ -336,7 +336,12 @@ def get_historical_options(symbol: str) -> pd.DataFrame:
pd.DataFrame
Dataframe of historical option chain
"""
- historical = pd.DataFrame(api.get_options_prices_eod(symbol).to_dict()["prices"])
+ try:
+ historical = pd.DataFrame(
+ api.get_options_prices_eod(symbol).to_dict()["prices"]
+ )
+ except Exception:
+ return pd.DataFrame()
historical = historical[
[
"date",
diff --git a/openbb_terminal/stocks/options/intrinio_view.py b/openbb_terminal/stocks/options/intrinio_view.py
index 4a6c262d06f..0d317966f0d 100644
--- a/openbb_terminal/stocks/options/intrinio_view.py
+++ b/openbb_terminal/stocks/options/intrinio_view.py
@@ -61,6 +61,10 @@ def display_historical(
chain_id = f"{symbol}{''.join(expiry[2:].split('-'))}{'P' if put else 'C'}{str(int(1000*strike)).zfill(8)}"
df_hist = intrinio_model.get_historical_options(chain_id)
+ if df_hist.empty:
+ console.print(f"[red]No data found for {chain_id}[/red]")
+ return None
+
if raw:
print_rich_table(
df_hist,
diff --git a/openbb_terminal/stocks/options/options_controller.py b/openbb_terminal/stocks/options/options_controller.py
index bc3acacb0d4..e96c8b415b9 100644
--- a/openbb_terminal/stocks/options/options_controller.py
+++ b/openbb_terminal/stocks/options/options_controller.py
@@ -830,10 +830,7 @@ class OptionsController(BaseController):
else None,
)
- if (
- ns_parser.source == "Tradier"
- and get_current_user().credentials.API_TRADIER_TOKEN != "REPLACE_ME"
- ): # nosec
+ if ns_parser.source == "Tradier": # nosec
tradier_view.display_historical(
symbol=self.ticker,
expiry=self.selected_date,
diff --git a/openbb_terminal/stocks/options/tradier_model.py b/openbb_terminal/stocks/options/tradier_model.py
index 43b6256c26c..e2211a83b52 100644
--- a/openbb_terminal/stocks/options/tradier_model.py
+++ b/openbb_terminal/stocks/options/tradier_model.py
@@ -103,14 +103,17 @@ def get_historical_options(
else:
symbol = chain_id
- response = request(
- "https://sandbox.tradier.com/v1/markets/history",
- params={"symbol": {symbol}, "interval": "daily"},
- headers={
- "Authorization": f"Bearer {get_current_user().credentials.API_TRADIER_TOKEN}",
- "Accept": "application/json",
- },
- )
+ try:
+ response = request(
+ "https://sandbox.tradier.com/v1/markets/history",
+ params={"symbol": {symbol}, "interval": "daily"},
+ headers={
+ "Authorization": f"Bearer {get_current_user().credentials.API_TRADIER_TOKEN}",
+ "Accept": "application/json",
+ },
+ )
+ except requests.exceptions.ReadTimeout:
+ return pd.DataFrame()
if response.status_code != 200:
console.print("Error with request")
diff --git a/openbb_terminal/stocks/options/tradier_view.py b/openbb_terminal/stocks/options/tradier_view.py
index 5e1e384f561..a9877626e6c 100644
--- a/openbb_terminal/stocks/options/tradier_view.py
+++ b/openbb_terminal/stocks/options/tradier_view.py
@@ -7,8 +7,9 @@ import warnings
from typing import Optional
from openbb_terminal import OpenBBFigure
-from openbb_terminal.decorators import log_start_end
+from openbb_terminal.decorators import check_api_key, 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 import tradier_model
logger = logging.getLogger(__name__)
@@ -18,6 +19,7 @@ warnings.filterwarnings("ignore")
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
+@check_api_key(["API_TRADIER_TOKEN"])
def display_historical(
symbol: str,
expiry: str,
@@ -57,6 +59,13 @@ def display_historical(
symbol, expiry, strike, put, chain_id
)
+ if df_hist.empty:
+ if chain_id:
+ console.print(f"No historical data found for {chain_id} ")
+ return None
+ console.print(f"No historical data found for {symbol} {expiry} ")
+ return None
+
if raw:
print_rich_table(
df_hist,
diff --git a/openbb_terminal/stocks/stocks_controller.py b/openbb_terminal/stocks/stocks_controller.py
index 570257e9a96..ba4094bbbb3 100644
--- a/openbb_terminal/stocks/stocks_controller.py
+++ b/openbb_terminal/stocks/stocks_controller.py
@@ -745,6 +745,7 @@ class StocksController(StockBaseController):
self.start,
self.interval,
self.stock,
+ self.suffix,
self.queue,
)
diff --git a/openbb_terminal/terminal_helper.py b/openbb_terminal/terminal_helper.py
index 28d42070502..7f826c7bcc3 100644
--- a/openbb_terminal/terminal_helper.py
+++ b/openbb_terminal/terminal_helper.py
@@ -205,7 +205,7 @@ def open_openbb_documentation(
"news",
"account",
]:
- path = "/guides"
+ path = "/usage"
command = ""
elif command in ["ta", "ba", "qa"]:
path = f"/usage?path=/usage/intros/common/{command}"