diff options
-rw-r--r-- | openbb_terminal/economy/economy_controller.py | 4 | ||||
-rw-r--r-- | openbb_terminal/economy/fred_model.py | 18 | ||||
-rw-r--r-- | openbb_terminal/economy/fred_view.py | 23 | ||||
-rw-r--r-- | tests/openbb_terminal/economy/test_fred_model.py | 9 |
4 files changed, 26 insertions, 28 deletions
diff --git a/openbb_terminal/economy/economy_controller.py b/openbb_terminal/economy/economy_controller.py index aed486baece..152a705de89 100644 --- a/openbb_terminal/economy/economy_controller.py +++ b/openbb_terminal/economy/economy_controller.py @@ -1034,7 +1034,9 @@ class EconomyController(BaseController): if country == "united states": fred_view.display_yield_curve( - ns_parser.date, + date=ns_parser.date.strftime("%Y-%m-%d") + if ns_parser.date + else None, raw=ns_parser.raw, export=ns_parser.export, ) diff --git a/openbb_terminal/economy/fred_model.py b/openbb_terminal/economy/fred_model.py index 0f2b44bbe53..3f8dc3fba90 100644 --- a/openbb_terminal/economy/fred_model.py +++ b/openbb_terminal/economy/fred_model.py @@ -256,18 +256,18 @@ def get_aggregated_series_data( @log_start_end(log=logger) @check_api_key(["API_FRED_KEY"]) def get_yield_curve( - date: datetime = None, -) -> Tuple[pd.DataFrame, datetime]: + date: str = None, +) -> Tuple[pd.DataFrame, str]: """Gets yield curve data from FRED Parameters ---------- - date: datetime - Date to get curve for. If None, gets most recent date + date: str + Date to get curve for. If None, gets most recent date (format yyyy-mm-dd) Returns ------- - Tuple[pd.DataFrame, datetime] + Tuple[pd.DataFrame, str] Dataframe of yields and maturities, Date for which the yield curve is obtained @@ -300,17 +300,13 @@ def get_yield_curve( df = pd.DataFrame() if date is None: - date_to_get = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d") - else: - date_to_get = date.strftime("%Y-%m-%d") + date = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d") for key, s_id in fred_series.items(): df = pd.concat( [ df, - pd.DataFrame( - fredapi_client.get_series(s_id, date_to_get), columns=[key] - ), + pd.DataFrame(fredapi_client.get_series(s_id, date), columns=[key]), ], axis=1, ) diff --git a/openbb_terminal/economy/fred_view.py b/openbb_terminal/economy/fred_view.py index c362d726eec..033a74b5bee 100644 --- a/openbb_terminal/economy/fred_view.py +++ b/openbb_terminal/economy/fred_view.py @@ -5,7 +5,6 @@ import logging import os import textwrap from typing import Optional, List, Tuple -from datetime import datetime import matplotlib.pyplot as plt import numpy as np @@ -186,7 +185,7 @@ def format_data_to_plot(data: pd.DataFrame, detail: dict) -> Tuple[pd.DataFrame, @log_start_end(log=logger) @check_api_key(["API_FRED_KEY"]) def display_yield_curve( - date: datetime = None, + date: str = None, external_axes: Optional[List[plt.Axes]] = None, raw: bool = False, export: str = "", @@ -195,16 +194,18 @@ def display_yield_curve( Parameters ---------- - date: datetime - Date to get yield curve for - external_axes: Optional[List[plt.Axes]] - External axes to plot data on + date: str + Date to get curve for. If None, gets most recent date (format yyyy-mm-dd) + external_axes : Optional[List[plt.Axes]], optional + External axes (1 axis is expected in the list), by default None + raw : bool + Output only raw data + export : str + Export data to csv,json,xlsx or png,jpg,pdf,svg file """ rates, date_of_yield = fred_model.get_yield_curve(date) if rates.empty: - console.print( - f"[red]Yield data not found for {date_of_yield.strftime('%Y-%m-%d')}.[/red]\n" - ) + console.print(f"[red]Yield data not found for {date_of_yield}.[/red]\n") return if external_axes is None: _, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) @@ -218,7 +219,7 @@ def display_yield_curve( ax.set_ylabel("Rate (%)") theme.style_primary_axis(ax) if external_axes is None: - ax.set_title(f"US Yield Curve for {date_of_yield.strftime('%Y-%m-%d')} ") + ax.set_title(f"US Yield Curve for {date_of_yield} ") theme.visualize_output() if raw: @@ -226,7 +227,7 @@ def display_yield_curve( rates, headers=list(rates.columns), show_index=False, - title=f"United States Yield Curve for {date_of_yield.strftime('%Y-%m-%d')}", + title=f"United States Yield Curve for {date_of_yield}", floatfmt=".3f", ) diff --git a/tests/openbb_terminal/economy/test_fred_model.py b/tests/openbb_terminal/economy/test_fred_model.py index c78126dce0f..cf585db7ca5 100644 --- a/tests/openbb_terminal/economy/test_fred_model.py +++ b/tests/openbb_terminal/economy/test_fred_model.py @@ -1,5 +1,4 @@ # IMPORTATION STANDARD -import datetime # IMPORTATION THIRDPARTY import pytest @@ -84,20 +83,20 @@ def test_load_data(func, kwargs_dict, recorder): @pytest.mark.skip(reason="Date needs to be mocked.") @pytest.mark.vcr -@pytest.mark.parametrize("date", [datetime.datetime(2022, 3, 21, 0, 0)]) +@pytest.mark.parametrize("date", ["2022-03-21"]) def test_yield_curve(date, recorder): result_df, returned_date = fred_model.get_yield_curve(date) - assert date.strftime("%Y-%m-%d") == returned_date.strftime("%Y-%m-%d") + assert date == returned_date assert not result_df.empty recorder.capture(result_df) @pytest.mark.skip(reason="Date needs to be mocked.") @pytest.mark.vcr -@pytest.mark.parametrize("date", [datetime.datetime(2021, 7, 17, 0, 0)]) +@pytest.mark.parametrize("date", ["2021-07-17"]) def test_yield_curve_weekend(date): result_df, returned_date = fred_model.get_yield_curve(date) - assert date.strftime("%Y-%m-%d") == returned_date + assert date == returned_date assert result_df.empty |