Files
OpenBB/openbb_terminal/fixedincome/oecd_view.py
teh_coderer 70f74854d9 hotfix / no window if raw/export (#4809)
* no window if raw/export

* Update databento_view.py

* tests
2023-04-17 16:50:35 +00:00

115 lines
3.9 KiB
Python

""" OECD view """
__docformat__ = "numpy"
# IMPORTATION STANDARD
import logging
import os
from typing import Optional
from openbb_terminal import OpenBBFigure
from openbb_terminal.decorators import log_start_end
from openbb_terminal.fixedincome import oecd_model
from openbb_terminal.helper_funcs import export_data, print_rich_table
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments, too-many-function-args
@log_start_end(log=logger)
def plot_treasuries(
short_term: Optional[list] = None,
long_term: Optional[list] = None,
forecast: bool = False,
start_date: Optional[str] = None,
end_date: Optional[str] = None,
raw: bool = False,
export: str = "",
sheet_name: str = "",
external_axes: bool = False,
limit: int = 10,
):
"""Gets interest rates data from selected countries (3 month and 10 year)
Short-term interest rates are the rates at which short-term borrowings are effected between financial
institutions or the rate at which short-term government paper is issued or traded in the market. Short-term
interest rates are generally averages of daily rates, measured as a percentage. Short-term interest rates are
based on three-month money market rates where available. Typical standardised names are "money market rate" and
"treasury bill rate".
Long-term interest rates refer to government bonds maturing in ten years. Rates are mainly determined by the
price charged by the lender, the risk from the borrower and the fall in the capital value. Long-term interest
rates are generally averages of daily rates, measured as a percentage. These interest rates are implied by the
prices at which the government bonds are traded on financial markets, not the interest rates at which the loans
were issued. In all cases, they refer to bonds whose capital repayment is guaranteed by governments. Long-term
interest rates are one of the determinants of business investment. Low long-term interest rates encourage
investment in new equipment and high interest rates discourage it. Investment is, in turn, a major source of
economic growth.
Parameters
----------
short_term: list
Countries you wish to plot the 3-month interest rate for
long_term: list
Countries you wish to plot the 10-year interest rate for
forecast: bool
If True, plot forecasts for short term interest rates
start_date: str
Start date of data, in YYYY-MM-DD format
end_date: str
End date of data, in YYYY-MM-DD format
raw: bool
If True, print raw data
export: str
Export data to csv or excel file
external_axes : bool, optional
Whether to return the figure object or not, by default False
"""
df = oecd_model.get_treasury(short_term, long_term, forecast, start_date, end_date)
fig = OpenBBFigure(yaxis_title="Yield (%)")
for country in df.columns:
fig.add_scatter(
x=df.index,
y=df[country],
name=country.replace("_", " ").title(),
mode="lines",
line_width=2.5,
showlegend=True,
)
term = (
"Short and Long"
if short_term and long_term
else "Long"
if long_term
else "Short"
)
title = f"{term} Term Interest Rates {' with forecasts' if forecast else ''}"
fig.set_title(title)
if raw:
# was a -iloc so we need to flip the index as we use head
df = df.sort_index(ascending=False)
print_rich_table(
df,
headers=list(df.columns),
show_index=True,
title=title,
floatfmt=".3f",
export=bool(export),
limit=limit,
)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"treasury",
df / 100,
sheet_name,
fig,
)
return fig.show(external=raw or external_axes)