Merge branch 'develop' of https://github.com/OpenBB-finance/OpenBBTerminal into feature/docs-intros-updates

This commit is contained in:
Danglewood
2023-02-24 10:22:19 -08:00
86 changed files with 35983 additions and 1012 deletions

2
README.md vendored
View File

@@ -27,7 +27,7 @@
| OpenBB is committed to build the future of investment research by focusing on an open source infrastructure accessible to everyone, everywhere. |
|:--:|
| ![openbb.jpg](/images/openbb_gradient.png) |
| [![openbb.jpg](/images/openbb_gradient.png)](https://openbb.co) |
| Check our website at [openbb.co](https://openbb.co) |
<br />

View File

@@ -60,7 +60,6 @@ added_files = [
(os.path.join(pathex, "user_agent"), "user_agent"),
(os.path.join(pathex, "vaderSentiment"), "vaderSentiment"),
(os.path.join(pathex, "prophet"), "prophet"),
(os.path.join(pathex, "frozendict", "VERSION"), "frozendict"),
(
os.path.join(pathex, "linearmodels", "datasets"),
os.path.join("linearmodels", "datasets"),
@@ -99,7 +98,6 @@ hidden_imports = [
"statsmodels",
"user_agent",
"vaderSentiment",
"frozendict",
"pyEX",
"feedparser",
"_sysconfigdata__darwin_darwin",

View File

@@ -200,3 +200,6 @@ OPENBB_PERSONAL_ACCESS_TOKEN = (
# https://intrinio.com/starter-plan
API_INTRINIO_KEY = os.getenv("OPENBB_API_INTRINIO_KEY") or "REPLACE_ME"
# https://databento.com/
API_DATABENTO_KEY = os.getenv("OPENBB_API_DATABENTO_KEY") or "REPLACE_ME"

View File

@@ -13,7 +13,7 @@ from multiprocessing import cpu_count
from multiprocessing.pool import Pool
from pathlib import Path
from traceback import FrameSummary, extract_tb, format_list
from typing import Any, Dict, List, Optional, Tuple
from typing import Any, Callable, Dict, List, Optional, Tuple
from openbb_terminal.core.config.paths import (
MISCELLANEOUS_DIRECTORY,
@@ -353,6 +353,7 @@ def run_test_files(
verbose: bool = False,
special_arguments: Optional[Dict[str, str]] = None,
subprocesses: Optional[int] = None,
ordered: bool = False,
) -> Tuple[int, int, Dict[str, Dict[str, Any]], float]:
"""Runs the test scripts and returns the fails dictionary
@@ -366,6 +367,8 @@ def run_test_files(
The special arguments to use in the scripts
subprocesses: Optional[int]
The number of subprocesses to use to run the tests
ordered: bool
Multiprocessing is not ordered by default. Use this flag to run the tests in order
Returns
-------
@@ -410,8 +413,10 @@ def run_test_files(
if extra:
chunksize += 1
runner: Callable = pool.imap if ordered else pool.imap_unordered
for i, result in enumerate(
pool.imap(
runner(
partial(
run_test,
verbose=verbose,
@@ -531,6 +536,7 @@ def run_test_session(
special_arguments: Optional[Dict[str, str]] = None,
verbose: bool = False,
subprocesses: Optional[int] = None,
ordered: bool = False,
):
"""Run the integration test session
@@ -552,11 +558,13 @@ def run_test_session(
Whether or not to print the output of the scripts
subprocesses
The number of subprocesses to use to run the tests
ordered: bool
Multiprocessing is not ordered by default. Use this flag to run the tests in order.
"""
console.print(to_section_title("integration test session starts"), style="bold")
test_files = collect_test_files(path_list, skip_list)
n_successes, n_failures, fails, seconds = run_test_files(
test_files, verbose, special_arguments, subprocesses
test_files, verbose, special_arguments, subprocesses, ordered
)
display_failures(fails)
display_summary(fails, n_successes, n_failures, seconds)
@@ -645,6 +653,14 @@ def parse_args_and_run():
action="store_true",
default=False,
)
parser.add_argument(
"-o",
"--ordered",
help="Multiprocessing is not ordered by default. Use this flag to run the tests in order.",
dest="ordered",
action="store_true",
default=False,
)
for arg in special_arguments_values:
parser.add_argument(
f"--{arg}",
@@ -680,6 +696,7 @@ def parse_args_and_run():
special_arguments=special_args_dict,
verbose=ns_parser.verbose,
subprocesses=ns_parser.subprocesses,
ordered=ns_parser.ordered,
)

View File

@@ -511,11 +511,19 @@ def load(
start_date: Optional[Union[datetime, Union[str, None]]] = None,
interval: Union[str, int] = "1440",
exchange: str = "binance",
to_symbol: str = "usdt",
to_symbol: str = "usd",
end_date: Optional[Union[datetime, Union[str, None]]] = None,
source: str = "CCXT",
source: str = "CoinGecko",
) -> pd.DataFrame:
"""Load crypto currency to get data for
"""
Load crypto currency to get data for
Note:
take into consideration that the data might not be found if the data provider
(example) uses `usd` instead of `usdt` as the quote currency, so you might need to adjust
the `to_symbol` parameter.
For `CCXT` a valid pair would be: "BTC/USDT"
For `CoinGecko` a valid pair would be: "BTC-USD"
For `YahooFinance` a valid pair would be: "BTC-USD"
Parameters
----------
@@ -549,7 +557,7 @@ def load(
if isinstance(interval, int):
interval = str(interval)
if start_date is None:
start_date = (datetime.now() - timedelta(days=1100)).strftime("%Y-%m-%d")
start_date = (datetime.now() - timedelta(days=365)).strftime("%Y-%m-%d")
if end_date is None:
end_date = datetime.now().strftime("%Y-%m-%d")

View File

@@ -68,8 +68,6 @@ class EconomyController(BaseController):
"map",
"rtps",
"bigmac",
"ycrv",
# "spread",
"events",
"edebt",
]
@@ -254,7 +252,6 @@ class EconomyController(BaseController):
mt.add_cmd("futures")
mt.add_cmd("map")
mt.add_cmd("bigmac")
mt.add_cmd("ycrv")
mt.add_cmd("events")
mt.add_cmd("edebt")
mt.add_raw("\n")
@@ -1043,42 +1040,6 @@ class EconomyController(BaseController):
if obbff.ENABLE_EXIT_AUTO_HELP:
self.print_help()
@log_start_end(log=logger)
def call_ycrv(self, other_args: List[str]):
"""Process ycrv command"""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
prog="ycrv",
description="Generate country yield curve. The yield curve shows the bond rates"
" at different maturities.",
)
parser.add_argument(
"-d",
"--date",
type=valid_date,
help="Date to get data from FRED. If not supplied, the most recent entry will be used.",
dest="date",
default=None,
)
ns_parser = self.parse_known_args_and_warn(
parser,
other_args,
export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED,
raw=True,
)
if ns_parser:
fred_view.display_yield_curve(
date=ns_parser.date.strftime("%Y-%m-%d") if ns_parser.date else "",
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
# TODO: Add `Investing` to sources again when `investpy` is fixed
@log_start_end(log=logger)
def call_events(self, other_args: List[str]):
"""Process events command"""

View File

@@ -4,7 +4,6 @@ __docformat__ = "numpy"
import logging
import os
import textwrap
from datetime import datetime, timedelta
from typing import List, Optional, Tuple
import certifi
@@ -247,105 +246,3 @@ def get_aggregated_series_data(
data[s_id] = series[s_id]
return data, detail
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def get_yield_curve(
date: str = "", return_date: bool = False
) -> Tuple[pd.DataFrame, str]:
"""Gets yield curve data from FRED
Parameters
----------
date: str
Date to get curve for. If empty, gets most recent date (format yyyy-mm-dd)
return_date: bool
If True, returns date of yield curve
Returns
-------
Tuple[pd.DataFrame, str]
Dataframe of yields and maturities,
Date for which the yield curve is obtained
Examples
--------
>>> from openbb_terminal.sdk import openbb
>>> ycrv_df = openbb.economy.ycrv()
Since there is a delay with the data, the most recent date is returned and can be accessed with return_date=True
>>> ycrv_df, ycrv_date = openbb.economy.ycrv(return_date=True)
"""
# Necessary for installer so that it can locate the correct certificates for
# API calls and https
# https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error/73270162#73270162
# os.environ["REQUESTS_CA_BUNDLE"] = certifi.where()
# os.environ["SSL_CERT_FILE"] = certifi.where()
fredapi_client = Fred(cfg.API_FRED_KEY)
fred_series = {
"1Month": "DGS1MO",
"3Month": "DGS3MO",
"6Month": "DGS6MO",
"1Year": "DGS1",
"2Year": "DGS2",
"3Year": "DGS3",
"5Year": "DGS5",
"7Year": "DGS7",
"10Year": "DGS10",
"20Year": "DGS20",
"30Year": "DGS30",
}
df = pd.DataFrame()
# Check that the date is in the past
today = datetime.now().strftime("%Y-%m-%d")
if date and date >= today:
console.print("[red]Date cannot be today or in the future[/red]")
if return_date:
return pd.DataFrame(), date
return pd.DataFrame()
# Add in logic that will get the most recent date.
get_last = False
if not date:
date = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")
get_last = True
for key, s_id in fred_series.items():
df = pd.concat(
[
df,
pd.DataFrame(fredapi_client.get_series(s_id, date), columns=[key]),
],
axis=1,
)
if df.empty:
if return_date:
return pd.DataFrame(), date
return pd.DataFrame()
# Drop rows with NaN -- corresponding to weekends typically
df = df.dropna()
if date not in df.index or get_last:
# If the get_last flag is true, we want the first date, otherwise we want the last date.
idx = -1 if get_last else 0
date_of_yield = df.index[idx].strftime("%Y-%m-%d")
rates = pd.DataFrame(df.iloc[idx, :].values, columns=["Rate"])
else:
date_of_yield = date
series = df[df.index == date]
if series.empty:
return pd.DataFrame(), date_of_yield
rates = pd.DataFrame(series.values.T, columns=["Rate"])
rates.insert(
0,
"Maturity",
[1 / 12, 0.25, 0.5, 1, 2, 3, 5, 7, 10, 20, 30],
)
if return_date:
return rates, date_of_yield
return rates

View File

@@ -182,62 +182,3 @@ def format_data_to_plot(data: pd.DataFrame, detail: dict) -> Tuple[pd.DataFrame,
data_to_plot.index = pd.to_datetime(data_to_plot.index)
return data_to_plot, title
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def display_yield_curve(
date: str = "",
external_axes: Optional[List[plt.Axes]] = None,
raw: bool = False,
export: str = "",
sheet_name: Optional[str] = None,
):
"""Display yield curve based on US Treasury rates for a specified date.
Parameters
----------
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, True)
if rates.empty:
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)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
ax.plot(rates["Maturity"], rates["Rate"], "-o")
ax.set_xlabel("Maturity")
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} ")
theme.visualize_output()
if raw:
print_rich_table(
rates,
headers=list(rates.columns),
show_index=False,
title=f"United States Yield Curve for {date_of_yield}",
floatfmt=".3f",
)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"ycrv",
rates,
sheet_name,
)

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,201 @@
""" ECB model """
__docformat__ = "numpy"
import logging
from datetime import datetime, timedelta
from typing import Tuple
import pandas as pd
from openbb_terminal.decorators import log_start_end
from openbb_terminal.rich_config import console, optional_rich_track
logger = logging.getLogger(__name__)
# pylint: disable=too-many-return-statements
@log_start_end(log=logger)
def get_series_data(
series_id: str = "EST.B.EU000A2X2A25.WT", start_date: str = "", end_date: str = ""
):
"""Get ECB data
Parameters
----------
series_id: str
ECB ID of data
start_date: Optional[str]
Start date, formatted YYYY-MM-DD
end_date: Optional[str]
End date, formatted YYYY-MM-DD
"""
start_date = start_date[0:4] + start_date[4:7] + start_date[8:9]
end_date = end_date[0:4] + end_date[4:7] + end_date[8:9]
df = pd.read_csv(
f"https://sdw.ecb.europa.eu/quickviewexport.do?trans=N&start={start_date}&end={end_date}&SERIES_KEY={series_id}&type=csv",
header=5,
usecols=[0, 1],
index_col=0,
parse_dates=True,
)
df = df.iloc[::-1]
return df
@log_start_end(log=logger)
def get_ecb_yield_curve(
date: str = "",
yield_type: str = "spot_rate",
return_date: bool = False,
detailed: bool = False,
any_rating: bool = True,
) -> Tuple[pd.DataFrame, str]:
"""Gets euro area yield curve data from ECB.
The graphic depiction of the relationship between the yield on bonds of the same credit quality but different
maturities is known as the yield curve. In the past, most market participants have constructed yield curves from
the observations of prices and yields in the Treasury market. Two reasons account for this tendency. First,
Treasury securities are viewed as free of default risk, and differences in creditworthiness do not affect yield
estimates. Second, as the most active bond market, the Treasury market offers the fewest problems of illiquidity
or infrequent trading. The key function of the Treasury yield curve is to serve as a benchmark for pricing bonds
and setting yields in other sectors of the debt market.
It is clear that the market’s expectations of future rate changes are one important determinant of the
yield-curve shape. For example, a steeply upward-sloping curve may indicate market expectations of near-term Fed
tightening or of rising inflation. However, it may be too restrictive to assume that the yield differences across
bonds with different maturities only reflect the market’s rate expectations. The well-known pure expectations
hypothesis has such an extreme implication. The pure expectations hypothesis asserts that all government bonds
have the same near-term expected return (as the nominally riskless short-term bond) because the return-seeking
activity of risk-neutral traders removes all expected return differentials across bonds.
Parameters
----------
date: str
Date to get curve for. If empty, gets most recent date (format yyyy-mm-dd)
yield_type: str
What type of yield curve to get, options: ['spot_rate', 'instantaneous_forward', 'par_yield']
return_date: bool
If True, returns date of yield curve
detailed: bool
If True, returns detailed data. Note that this is very slow.
aaa_only: bool
If True, it only returns rates for AAA rated bonds. If False, it returns rates for all bonds
Returns
-------
Tuple[pd.DataFrame, str]
Dataframe of yields and maturities,
Date for which the yield curve is obtained
Examples
--------
>>> from openbb_terminal.sdk import openbb
>>> ycrv_df = openbb.fixedincome.ycrv()
Since there is a delay with the data, the most recent date is returned and can be accessed with return_date=True
>>> ycrv_df, ycrv_date = openbb.fixedincome.ycrv(return_date=True)
"""
if yield_type == "spot_rate":
yield_type = f"YC.B.U2.EUR.4F.G_N_{'A' if any_rating else 'C'}.SV_C_YM.SR_"
elif yield_type == "instantaneous_forward":
yield_type = f"YC.B.U2.EUR.4F.G_N_{'A' if any_rating else 'C'}.SV_C_YM.IF_"
elif yield_type == "par_yield":
yield_type = f"YC.B.U2.EUR.4F.G_N_{'A' if any_rating else 'C'}.SV_C_YM.PY"
else:
console.print("[red]Incorrect input for parameter yield_type[/red]")
if return_date:
return pd.DataFrame(), date
return pd.DataFrame()
if detailed:
console.print(
"Note that due to the large amount of data, this may take a while. Use CTRL + C to cancel."
)
series_id = [
f"{yield_type}{y}Y{m}M" if y != 0 else f"{yield_type}{m}M"
for y in range(0, 30)
for m in range(1, 12)
if (y != 0 or m >= 3)
]
series_id.append(f"{type}30Y")
labels = [
f"{y}Year{m}Month" if y != 0 else f"{m}Month"
for y in range(0, 30)
for m in range(1, 12)
if (y != 0 or m >= 3)
]
labels.append("30Year")
years = [
y + m / 12 for y in range(0, 30) for m in range(1, 12) if (y != 0 or m >= 3)
]
years.append(30)
else:
series_id = [f"{yield_type}{m}M" for m in [3, 6]]
series_id += [f"{yield_type}{y}Y" for y in [1, 2, 3, 5, 7, 10, 20, 30]]
labels = [f"{m}Month" for m in [3, 6]]
labels += [f"{y}Year" for y in [1, 2, 3, 5, 7, 10, 20, 30]]
years = [0.25, 0.5, 1, 2, 3, 5, 7, 10, 20, 30]
df = pd.DataFrame()
# Check that the date is in the past
today = datetime.now().strftime("%Y-%m-%d")
if date and date >= today:
console.print("[red]Date cannot be today or in the future[/red]")
if return_date:
return pd.DataFrame(), date
return pd.DataFrame()
# Add in logic that will get the most recent date.
if not date:
date = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")
try:
for i in optional_rich_track(
range(len(series_id)), desc="Obtaining yield curve data"
):
temp = get_series_data(series_id[i], date, date)
temp.columns = [labels[i]]
df = pd.concat([df, temp], axis=1)
except KeyboardInterrupt:
console.print("Data collection was canceled.")
return pd.DataFrame(), date
if df.empty:
if return_date:
return pd.DataFrame(), date
return pd.DataFrame()
# Drop rows with NaN -- corresponding to weekends typically
df = df.dropna()
if datetime.strptime(date, "%Y-%m-%d") not in df.index:
nearest_value = df.index.get_indexer(
[datetime.strptime(date, "%Y-%m-%d")], method="nearest"
)
date_of_yield = df.iloc[nearest_value].index[0].date()
series = df[df.index == df.iloc[nearest_value].index[0]]
if series.empty:
return pd.DataFrame(), date_of_yield
rates = pd.DataFrame(series.values.T, columns=["Rate"])
console.print(
f"{date} not available, therefore selecting the nearest date, {date_of_yield}."
)
else:
date_of_yield = date
series = df[df.index == datetime.strptime(date, "%Y-%m-%d")]
if series.empty:
return pd.DataFrame(), date_of_yield
rates = pd.DataFrame(series.values.T, columns=["Rate"])
rates.insert(
0,
"Maturity",
years,
)
if return_date:
return rates, date_of_yield
return rates

View File

@@ -0,0 +1,204 @@
""" ECB view """
__docformat__ = "numpy"
import logging
import os
from itertools import cycle
from typing import List, Optional
import pandas as pd
from matplotlib import pyplot as plt
from openbb_terminal.config_plot import PLOT_DPI
from openbb_terminal.config_terminal import theme
from openbb_terminal.decorators import log_start_end
from openbb_terminal.fixedincome import ecb_model
from openbb_terminal.helper_funcs import (
export_data,
is_valid_axes_count,
plot_autoscale,
print_rich_table,
)
from openbb_terminal.rich_config import console
logger = logging.getLogger(__name__)
# pylint: disable=too-many-function-args
ID_TO_NAME = {
"EST.B.EU000A2X2A25.WT": "Euro Short-Term Rate: Volume-Weighted Trimmed Mean Rate [Percent]",
"EST.B.EU000A2X2A25.TT": "Euro Short-Term Rate: Total Volume [Millions of EUR]",
"EST.B.EU000A2X2A25.NT": "Euro Short-Term Rate: Number of Transactions",
"EST.B.EU000A2X2A25.R75": "Euro Short-Term Rate: Rate at 75th Percentile of Volume [Percent]",
"EST.B.EU000A2X2A25.NB": "Euro Short-Term Rate: Number of Active Banks",
"EST.B.EU000A2X2A25.VL": "Euro Short-Term Rate: Share of Volume of the 5 Largest Active Banks [Percent]",
"EST.B.EU000A2X2A25.R25": "Euro Short-Term Rate: Rate at 25th Percentile of Volume [Percent]",
}
ESTR_PARAMETER_TO_ECB_ID = {
"volume_weighted_trimmed_mean_rate": "EST.B.EU000A2X2A25.WT",
"number_of_transactions": "EST.B.EU000A2X2A25.NT",
"number_of_active_banks": "EST.B.EU000A2X2A25.NB",
"total_volume": "EST.B.EU000A2X2A25.TT",
"share_of_volume_of_the_5_largest_active_banks": "EST.B.EU000A2X2A25.VL",
"rate_at_75th_percentile_of_volume": "EST.B.EU000A2X2A25.R75",
"rate_at_25th_percentile_of_volume": "EST.B.EU000A2X2A25.R25",
}
@log_start_end(log=logger)
def plot_estr(
parameter: str = "EST.B.EU000A2X2A25.WT",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
export: str = "",
sheet_name: str = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plot Euro Short-Term Rate (ESTR)
Parameters
----------
series_id: str
ECB ID of ESTR data to plot, options: ['EST.B.EU000A2X2A25.WT', 'EST.B.EU000A2X2A25.TT',
'EST.B.EU000A2X2A25.NT', 'EST.B.EU000A2X2A25.R75', 'EST.B.EU000A2X2A25.NB',
'EST.B.EU000A2X2A25.VL', 'EST.B.EU000A2X2A25.R25']
start_date: Optional[str]
Start date, formatted YYYY-MM-DD
end_date: Optional[str]
End date, formatted YYYY-MM-DD
export: str
Export data to csv or excel file
external_axes: Optional[List[plt.Axes]]
External axes (1 axis is expected in the list)
"""
series_id = ESTR_PARAMETER_TO_ECB_ID.get(parameter, "")
df = ecb_model.get_series_data(
series_id, start_date if start_date else "", end_date if end_date else ""
)
# This plot has 1 axis
if not external_axes:
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
colors = cycle(theme.get_colors())
ax.plot(
df.index,
df.values,
color=next(colors, "#FCED00"),
)
ax.set_title(ID_TO_NAME[series_id])
theme.style_primary_axis(ax)
if external_axes is None:
theme.visualize_output()
if export:
if "[Percent]" in ID_TO_NAME[series_id]:
# Check whether it is a percentage, relevant for exporting
df_transformed = pd.DataFrame(df, columns=[series_id]) / 100
else:
df_transformed = pd.DataFrame(df, columns=[series_id])
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
series_id,
df_transformed,
sheet_name,
)
@log_start_end(log=logger)
def display_ecb_yield_curve(
date: str = "",
yield_type: str = "spot_rate",
detailed: bool = False,
any_rating: bool = True,
external_axes: Optional[List[plt.Axes]] = None,
raw: bool = False,
export: str = "",
sheet_name: str = "",
):
"""Display yield curve based on ECB Treasury rates for a specified date.
The graphic depiction of the relationship between the yield on bonds of the same credit quality but different
maturities is known as the yield curve. In the past, most market participants have constructed yield curves from
the observations of prices and yields in the Treasury market. Two reasons account for this tendency. First,
Treasury securities are viewed as free of default risk, and differences in creditworthiness do not affect yield
estimates. Second, as the most active bond market, the Treasury market offers the fewest problems of illiquidity
or infrequent trading. The key function of the Treasury yield curve is to serve as a benchmark for pricing bonds
and setting yields in other sectors of the debt market.
It is clear that the market’s expectations of future rate changes are one important determinant of the
yield-curve shape. For example, a steeply upward-sloping curve may indicate market expectations of near-term Fed
tightening or of rising inflation. However, it may be too restrictive to assume that the yield differences across
bonds with different maturities only reflect the market’s rate expectations. The well-known pure expectations
hypothesis has such an extreme implication. The pure expectations hypothesis asserts that all government bonds
have the same near-term expected return (as the nominally riskless short-term bond) because the return-seeking
activity of risk-neutral traders removes all expected return differentials across bonds.
Parameters
----------
date: str
Date to get curve for. If None, gets most recent date (format yyyy-mm-dd)
yield_type: str
What type of yield curve to get, options: ['spot_rate', 'instantaneous_forward', 'par_yield']
detailed: bool
If True, returns detailed data. Note that this is very slow.
aaa_only: bool
If True, it only returns rates for AAA rated bonds. If False, it returns rates for all bonds
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 = ecb_model.get_ecb_yield_curve(
date, yield_type, True, detailed, any_rating
)
if rates.empty:
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)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
ax.plot(rates["Maturity"], rates["Rate"], "-o")
ax.set_xlabel("Maturity")
ax.set_ylabel("Rate (%)")
theme.style_primary_axis(ax)
if external_axes is None:
ax.set_title(
f"Euro Area{' AAA Bonds' if not any_rating else ' All Bonds'} {yield_type.replace('_', ' ').title()} "
f"Yield Curve for {date_of_yield}",
fontsize=15,
)
theme.visualize_output()
if raw:
print_rich_table(
rates,
headers=list(rates.columns),
show_index=False,
title=f"Euro Area{' AAA Bonds' if not any_rating else ' All Bonds'} {yield_type.replace('_', ' ').title()} "
f"Yield Curve for {date_of_yield}",
floatfmt=".3f",
)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"ecbycrv",
rates / 100,
sheet_name,
)

View File

@@ -0,0 +1,175 @@
""" EconDB Model """
__docformat__ = "numpy"
import logging
from datetime import datetime
from typing import Any, Dict, Optional
import pandas as pd
import pandas_datareader.data as web
from openbb_terminal.decorators import log_start_end
from openbb_terminal.rich_config import console
logger = logging.getLogger(__name__)
TREASURIES: Dict = {
"frequencies": {
"annually": 203,
"monthly": 129,
"weekly": 21,
"daily": 9,
},
"instruments": {
"nominal": {
"identifier": "TCMNOM",
"maturities": {
"1m": "1-month",
"3m": "3-month",
"6m": "6-month",
"1y": "1-year",
"2y": "2-year",
"3y": "3-year",
"5y": "5-year",
"7y": "7-year",
"10y": "10-year",
"20y": "20-year",
"30y": "30-year",
},
},
"inflation": {
"identifier": "TCMII",
"maturities": {
"5y": "5-year",
"7y": "7-year",
"10y": "10-year",
"20y": "20-year",
"30y": "30-year",
},
},
"average": {
"identifier": "LTAVG",
"maturities": {
"Longer than 10-year": "Longer than 10-year",
},
},
"secondary": {
"identifier": "TB",
"maturities": {
"4w": "4-week",
"3m": "3-month",
"6m": "6-month",
"1y": "1-year",
},
},
},
}
@log_start_end(log=logger)
def get_treasuries(
instruments: Optional[list] = None,
maturities: Optional[list] = None,
frequency: str = "monthly",
start_date: str = "1900-01-01",
end_date: Optional[str] = None,
) -> pd.DataFrame:
"""Get U.S. Treasury rates [Source: EconDB]
Parameters
----------
instruments: list
Type(s) of treasuries, nominal, inflation-adjusted (long term average) or secondary market.
Available options can be accessed through economy.treasury_maturities().
maturities : list
Treasury maturities to get. Available options can be accessed through economy.treasury_maturities().
frequency : str
Frequency of the data, this can be annually, monthly, weekly or daily.
start_date : str
Starting date, format "YEAR-MONTH-DAY", i.e. 2010-12-31.
end_date : Optional[str]
End date, format "YEAR-MONTH-DAY", i.e. 2020-06-05.
Returns
-------
treasury_data: pd.Dataframe
Holds data of the selected types and maturities
"""
if end_date is None:
end_date = datetime.today().strftime("%Y-%m-%d")
if instruments is None:
instruments = ["nominal"]
if maturities is None:
maturities = ["10y"]
treasury_data: Dict[Any, Dict[Any, pd.Series]] = {}
for instrument in instruments:
if instrument not in TREASURIES["instruments"]:
console.print(
f"{instrument} is not an option. Please choose between: "
f"{', '.join(TREASURIES['instruments'].keys())}"
)
else:
instrument_identifier = TREASURIES["instruments"][instrument]["identifier"]
frequency_number = TREASURIES["frequencies"][frequency]
df = web.DataReader(
"&".join(
[
"dataset=FRB_H15",
"v=Instrument",
"h=TIME",
f"instrument=[{instrument_identifier}]",
f"from={start_date}",
f"to={end_date}",
f"freq=[{frequency_number}",
"UNIT=[PERCENT:_PER_YEAR]",
]
),
"econdb",
)
if instrument == "average":
maturities_list = ["Longer than 10-year"]
type_string = "Long-term average"
else:
maturities_list = maturities
type_string = instrument.capitalize()
treasury_data[type_string] = {}
for maturity in maturities_list:
if maturity not in TREASURIES["instruments"][instrument]["maturities"]:
console.print(
f"The maturity {maturity} is not an option for {instrument}. Please choose between "
f"{', '.join(TREASURIES['instruments'][instrument]['maturities'].keys())}"
)
else:
maturity_string = TREASURIES["instruments"][instrument][
"maturities"
][maturity]
for column in df.columns:
# check if type inside the name and maturity inside the maturity string
if (
type_string.lower() in column[2].lower()
and maturity_string in column[3]
):
treasury_data[type_string][maturity_string] = df[
column
].dropna()
break
if maturity_string not in treasury_data[type_string]:
console.print(
f"No data found for the combination {instrument} and {maturity}."
)
df = pd.DataFrame.from_dict(treasury_data, orient="index").stack().to_frame()
df = pd.DataFrame(df[0].values.tolist(), index=df.index).T
df.columns = ["_".join(column) for column in df.columns]
return df

View File

@@ -0,0 +1,252 @@
""" EconDB view """
__docformat__ = "numpy"
import logging
import os
from itertools import cycle
from typing import List, Optional
import pandas as pd
from matplotlib import pyplot as plt
from openbb_terminal.config_plot import PLOT_DPI
from openbb_terminal.config_terminal import theme
from openbb_terminal.decorators import check_api_key, log_start_end
from openbb_terminal.fixedincome import econdb_model
from openbb_terminal.helper_funcs import (
export_data,
is_valid_axes_count,
plot_autoscale,
)
logger = logging.getLogger(__name__)
MATURITY_TO_ID = {
"4_week": "4w",
"3_month": "3m",
"6_month": "6m",
"1_year": "1y",
"1_month": "1m",
"2_year": "2y",
"3_year": "3y",
"5_year": "5y",
"7_year": "7y",
"10_year": "10y",
"20_year": "20y",
"30_year": "30y",
}
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def plot_cmn(
maturity: str = "3_month",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
export: str = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plot Treasury Constant Maturity Nominal Market Yield.
Yields on Treasury nominal securities at “constant maturity” are interpolated by the U.S. Treasury from the daily
yield curve for non-inflation-indexed Treasury securities. This curve, which relates the yield on a security to
its time to maturity, is based on the closing market bid yields on actively traded Treasury securities in the
over-the-counter market. These market yields are calculated from composites of quotations obtained by the Federal
Reserve Bank of New York. The constant maturity yield values are read from the yield curve at fixed maturities,
currently 1, 3, and 6 months and 1, 2, 3, 5, 7, 10, 20, and 30 years. This method provides a yield for a 10-year
maturity, for example, even if no outstanding security has exactly 10 years remaining to maturity. Similarly,
yields on inflation-indexed securities at “constant maturity” are interpolated from the daily yield curve for
Treasury inflation protected securities in the over-the-counter market. The inflation-indexed constant maturity
yields are read from this yield curve at fixed maturities, currently 5, 7, 10, 20, and 30 years.
Parameters
----------
maturity: str
Maturity to plot, options: ['1_month', '3_month', '6_month', '1_year', '2_year',
'3_year', '5_year', '7_year', '10_year', '20_year', '30_year']
start_date: Optional[str]
Start date, formatted YYYY-MM-DD
end_date: Optional[str]
End date, formatted YYYY-MM-DD
export: str
Export data to csv or excel file
external_axes: Optional[List[plt.Axes]]
External axes (1 axis is expected in the list)
"""
df = econdb_model.get_treasuries(
instruments=["nominal"],
maturities=[MATURITY_TO_ID[maturity]],
frequency="daily",
start_date=start_date,
end_date=end_date,
)
# This plot has 1 axis
if not external_axes:
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
colors = cycle(theme.get_colors())
ax.plot(
df.index,
df.values,
color=next(colors, "#FCED00"),
)
ax.set_title(
f"{maturity.replace('-', ' ')} Treasury Constant Maturity Nominal Market Yield [Percent]"
)
theme.style_primary_axis(ax)
if external_axes is None:
theme.visualize_output()
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
f"cmn, {maturity}",
pd.DataFrame(df, columns=[maturity]) / 100,
)
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def plot_tips(
maturity: str = "10_year",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
export: str = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plot Yields on Treasury inflation protected securities (TIPS) adjusted to constant maturities.
Yields on Treasury nominal securities at “constant maturity” are interpolated by the U.S. Treasury from the daily
yield curve for non-inflation-indexed Treasury securities. This curve, which relates the yield on a security to
its time to maturity, is based on the closing market bid yields on actively traded Treasury securities in the
over-the-counter market. These market yields are calculated from composites of quotations obtained by the Federal
Reserve Bank of New York. The constant maturity yield values are read from the yield curve at fixed maturities,
currently 1, 3, and 6 months and 1, 2, 3, 5, 7, 10, 20, and 30 years. This method provides a yield for a 10-year
maturity, for example, even if no outstanding security has exactly 10 years remaining to maturity. Similarly,
yields on inflation-indexed securities at “constant maturity” are interpolated from the daily yield curve for
Treasury inflation protected securities in the over-the-counter market. The inflation-indexed constant maturity
yields are read from this yield curve at fixed maturities, currently 5, 7, 10, 20, and 30 years.
Parameters
----------
maturity: str
Maturity to plot, options: ['5_year', '7_year', '10_year', '20_year', '30_year']
start_date: Optional[str]
Start date, formatted YYYY-MM-DD
end_date: Optional[str]
End date, formatted YYYY-MM-DD
export: str
Export data to csv or excel file
external_axes: Optional[List[plt.Axes]]
External axes (1 axis is expected in the list)
"""
df = econdb_model.get_treasuries(
instruments=["inflation"],
maturities=[MATURITY_TO_ID[maturity]],
frequency="daily",
start_date=start_date,
end_date=end_date,
)
# This plot has 1 axis
if not external_axes:
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
colors = cycle(theme.get_colors())
ax.plot(
df.index,
df.values,
color=next(colors, "#FCED00"),
)
ax.set_title(
f"{maturity.replace('-', ' ')} Yields on Treasury inflation protected securities (TIPS) adjusted to "
f"constant maturities [Percent]"
)
theme.style_primary_axis(ax)
if external_axes is None:
theme.visualize_output()
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
f"tips, {maturity}",
pd.DataFrame(df, columns=[maturity]) / 100,
)
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def plot_tbill(
maturity: str = "3_month",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
export: str = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plot the Treasury Bill Secondary Market Rate.
A Treasury Bill (T-Bill) is a short-term U.S. government debt obligation backed by the Treasury Department with a
maturity of one year or less. Treasury bills are usually sold in denominations of $1,000. However, some can reach
a maximum denomination of $5 million in non-competitive bids. These securities are widely regarded as low-risk
and secure investments.
Parameters
----------
maturity: str
Maturity to plot, options: ['4_week', '3_month', '6_month', '1_year']
start_date: Optional[str]
Start date, formatted YYYY-MM-DD
end_date: Optional[str]
End date, formatted YYYY-MM-DD
export: str
Export data to csv or excel file
external_axes: Optional[List[plt.Axes]]
External axes (1 axis is expected in the list)
"""
df = econdb_model.get_treasuries(
instruments=["secondary"],
maturities=[MATURITY_TO_ID[maturity]],
frequency="daily",
start_date=start_date,
end_date=end_date,
)
# This plot has 1 axis
if not external_axes:
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
colors = cycle(theme.get_colors())
ax.plot(
df.index,
df.values,
color=next(colors, "#FCED00"),
)
ax.set_title(
f"{maturity.replace('-', ' ')} Treasury Bill Secondary Market Rate, Discount Basis [Percent]"
)
theme.style_primary_axis(ax)
if external_axes is None:
theme.visualize_output()
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
f"tbill, {maturity}",
pd.DataFrame(df, columns=[maturity]) / 100,
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,242 @@
""" OECD model """
__docformat__ = "numpy"
import logging
from datetime import datetime
from typing import List, Optional
import pandas as pd
from openbb_terminal.decorators import log_start_end
logger = logging.getLogger(__name__)
COUNTRY_TO_CODE = {
"australia": "AUS",
"austria": "AUT",
"belgium": "BEL",
"bulgaria": "BGR",
"brazil": "BRA",
"canada": "CAN",
"switzerland": "CHE",
"chile": "CHL",
"china": "CHN",
"colombia": "COL",
"costa_rica": "CRI",
"czech_republic": "CZE",
"germany": "DEU",
"denmark": "DNK",
"spain": "ESP",
"estonia": "EST",
"finland": "FIN",
"france": "FRA",
"united_kingdom": "GBR",
"greece": "GRC",
"croatia": "HRV",
"hungary": "HUN",
"indonesia": "IDN",
"india": "IND",
"ireland": "IRL",
"iceland": "ISL",
"israel": "ISR",
"italy": "ITA",
"japan": "JPN",
"korea": "KOR",
"lithuania": "LTU",
"luxembourg": "LUX",
"latvia": "LVA",
"mexico": "MEX",
"netherlands": "NLD",
"norway": "NOR",
"new_zealand": "NZL",
"poland": "POL",
"portugal": "PRT",
"romania": "ROU",
"russia": "RUS",
"slovak_republic": "SVK",
"slovenia": "SVN",
"sweden": "SWE",
"united_states": "USA",
"south_africa": "ZAF",
}
@log_start_end(log=logger)
def get_interest_rate_data(
data: str = "short",
countries: Optional[List[str]] = None,
start_date: str = "",
end_date: str = "",
) -> pd.DataFrame:
"""Gets interest rate data from selected countries.
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.
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".
Parameters
----------
data: str
Type of data to getz, options ['short', 'short_forecast', 'long', 'long_forecast']
countries: list
List of countries to get data for
start_date: str
Start date of data, in YYYY-MM-DD format
end_date: str
End date of data, in YYYY-MM-DD format
Returns
-------
pd.DataFrame
Dataframe with the interest rate data
"""
if data == "short":
if isinstance(start_date, datetime):
start_date = start_date.strftime("%Y-%m")
elif len(start_date) > 8:
start_date = start_date[:8]
if isinstance(end_date, datetime):
end_date = end_date.strftime("%Y-%m")
elif len(end_date) > 8:
end_date = end_date[:8]
df = pd.read_csv(
f"https://stats.oecd.org/sdmx-json/data/DP_LIVE/.LTINT.TOT.PC_PA.M/OECD?contentType=csv&detail=code"
f"&separator=comma&csv-lang=en&startPeriod={start_date}&endPeriod={end_date}",
index_col=5,
)
data_name = "3 month"
elif data == "short_forecast":
if isinstance(start_date, datetime):
month = start_date.month
start_date = start_date.strftime("%Y") + "-Q" + str((month - 1) // 3 + 1)
elif len(start_date) > 7:
month = int(start_date[5:7])
start_date = start_date[:4] + "-Q" + str((month - 1) // 3 + 1)
if isinstance(end_date, datetime):
month = end_date.month
end_date = end_date.strftime("%Y") + "-Q" + str((month - 1) // 3 + 1)
elif len(end_date) > 7:
month = int(end_date[5:7])
end_date = end_date[:4] + "-Q" + str((month - 1) // 3 + 1)
df = pd.read_csv(
f"https://stats.oecd.org/sdmx-json/data/DP_LIVE/.LTINTFORECAST.TOT.PC_PA.Q/OECD?contentType=csv&detail"
f"=code&separator=comma&csv-lang=en&startPeriod={start_date}&endPeriod={end_date}",
index_col=5,
)
data_name = "3 month with forecast"
elif data == "long":
if isinstance(start_date, datetime):
start_date = start_date.strftime("%Y-%m")
elif len(start_date) > 8:
start_date = start_date[:8]
if isinstance(end_date, datetime):
end_date = end_date.strftime("%Y-%m")
elif len(end_date) > 8:
end_date = end_date[:8]
df = pd.read_csv(
f"https://stats.oecd.org/sdmx-json/data/DP_LIVE/.STINT.TOT.PC_PA.M/OECD?contentType=csv&detail=code"
f"&separator=comma&csv-lang=en&startPeriod={start_date}&endPeriod={end_date}",
index_col=5,
)
data_name = "10 year"
elif data == "long_forecast":
if isinstance(start_date, datetime):
month = start_date.month
start_date = start_date.strftime("%Y") + "-Q" + str((month - 1) // 3 + 1)
elif len(start_date) > 7:
month = int(start_date[5:7])
start_date = start_date[:4] + "-Q" + str((month - 1) // 3 + 1)
if isinstance(end_date, datetime):
month = end_date.month
end_date = end_date.strftime("%Y") + "-Q" + str((month - 1) // 3 + 1)
elif len(end_date) > 7:
month = int(end_date[5:7])
end_date = end_date[:4] + "-Q" + str((month - 1) // 3 + 1)
df = pd.read_csv(
f"https://stats.oecd.org/sdmx-json/data/DP_LIVE/.STINTFORECAST.TOT.PC_PA.Q/OECD?contentType=csv&detail"
f"=code&separator=comma&csv-lang=en&startPeriod={start_date}&endPeriod={end_date}",
index_col=5,
)
data_name = "10 year with forecast"
else:
return pd.DataFrame()
df = df.iloc[:, [0, 5]]
result = pd.DataFrame()
for country in countries: # type: ignore
temp = pd.DataFrame(df[df["LOCATION"] == COUNTRY_TO_CODE[country]]["Value"])
temp.columns = [f"{country} ({data_name})"]
result = pd.concat([result, temp], axis=1)
result.index = pd.to_datetime(result.index).date
result.sort_index(inplace=True)
return result
def get_treasury(
short_term: Optional[list] = None,
long_term: Optional[list] = None,
forecast: bool = False,
start_date: Optional[str] = None,
end_date: Optional[str] = None,
) -> pd.DataFrame:
"""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
"""
if short_term:
df_short = get_interest_rate_data(
f"short{'_forecast' if forecast else ''}",
short_term,
start_date if start_date is not None else "",
end_date if end_date is not None else "",
)
if long_term:
df_long = get_interest_rate_data(
f"long{'_forecast' if forecast else ''}",
long_term,
start_date if start_date is not None else "",
end_date if end_date is not None else "",
)
df = pd.concat([df_short, df_long], axis=1)
return df

View File

@@ -0,0 +1,118 @@
""" OECD view """
__docformat__ = "numpy"
import logging
import os
from typing import List, Optional
from matplotlib import pyplot as plt
from openbb_terminal.config_plot import PLOT_DPI
from openbb_terminal.config_terminal import theme
from openbb_terminal.decorators import log_start_end
from openbb_terminal.fixedincome import oecd_model
from openbb_terminal.helper_funcs import (
export_data,
is_valid_axes_count,
plot_autoscale,
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: Optional[List[plt.Axes]] = None,
):
"""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: Optional[List[plt.Axes]]
External axes (1 axis is expected in the list)
"""
df = oecd_model.get_treasury(short_term, long_term, forecast, start_date, end_date)
# This plot has 1 axis
if not external_axes:
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
ax.plot(df.index, df.values, linewidth=1)
if short_term and long_term:
title = f"Short and Long Term Interest Rates {' with forecasts' if forecast else ''}"
elif short_term:
title = f"Short Term Interest Rates {' with forecasts' if forecast else ''}"
elif long_term:
title = f"Long Term Interest Rates {' with forecasts' if forecast else ''}"
ax.set_title(title)
style_countries = [country.replace("_", " ").title() for country in df.columns]
ax.legend(style_countries)
ax.set_ylabel("Yield (%)")
theme.style_primary_axis(ax)
if external_axes is None:
theme.visualize_output()
if raw:
print_rich_table(
df.iloc[-10:],
headers=list(df.columns),
show_index=True,
title=title,
floatfmt=".3f",
)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"treasury",
df / 100,
sheet_name,
)

View File

@@ -0,0 +1,77 @@
""" Yahoo Finance Model """
__docformat__ = "numpy"
import logging
from datetime import datetime
from typing import Optional
import pandas as pd
import yfinance as yf
from openbb_terminal.decorators import log_start_end
from openbb_terminal.rich_config import console
logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def get_series(
series_id: str,
interval: str = "1d",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
column: str = "Adj Close",
) -> pd.Series:
"""Obtain data on any index [Source: Yahoo Finance]
Parameters
----------
series_id: str
The series you wish to collect data for.
start_date : Optional[str]
the selected country
end_date : Optional[str]
The currency you wish to convert the data to.
interval : str
Valid intervals: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo or 3mo
Intraday data cannot extend last 60 days
column : str
The column you wish to select, by default this is Adjusted Close.
Returns
-------
pd.Series
A series with the requested index
"""
try:
if start_date:
datetime.strptime(str(start_date), "%Y-%m-%d")
if end_date:
datetime.strptime(str(end_date), "%Y-%m-%d")
except ValueError:
console.print("[red]Please format date as YYYY-MM-DD[/red]\n")
return pd.Series(dtype="object")
index_data = yf.download(
series_id,
start=start_date,
end=end_date,
interval=interval,
progress=False,
show_errors=False,
)
if column not in index_data.columns:
console.print(
f"The chosen column is not available for {series_id}. Please choose "
f"between: {', '.join(index_data.columns)}\n"
)
return pd.Series(dtype="float64")
if index_data.empty or len(index_data) < 2:
console.print(
f"The chosen index {series_id}, returns no data. Please check if "
f"there is any data available.\n"
)
return pd.Series(dtype="float64")
return index_data[column]

View File

@@ -0,0 +1,84 @@
""" Yahoo Finance view """
__docformat__ = "numpy"
import logging
import os
from itertools import cycle
from typing import List, Optional
import pandas as pd
from matplotlib import pyplot as plt
from openbb_terminal.config_plot import PLOT_DPI
from openbb_terminal.config_terminal import theme
from openbb_terminal.decorators import check_api_key, log_start_end
from openbb_terminal.fixedincome import yfinance_model
from openbb_terminal.helper_funcs import (
export_data,
is_valid_axes_count,
plot_autoscale,
)
logger = logging.getLogger(__name__)
TY_TO_ID = {
"5_year": "^FVX",
"10_year": "^TNX",
"30_year": "^TYX",
}
@log_start_end(log=logger)
@check_api_key(["API_FRED_KEY"])
def plot_ty(
maturity: str = "3_month",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
export: str = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plot Treasury Yield.
Parameters
----------
maturity: str
Maturity to plot, options: ['5_year', '10_year', '30_year']
start_date: Optional[str]
Start date, formatted YYYY-MM-DD
end_date: Optional[str]
End date, formatted YYYY-MM-DD
export: str
Export data to csv or excel file
external_axes: Optional[List[plt.Axes]]
External axes (1 axis is expected in the list)
"""
df = yfinance_model.get_series(
TY_TO_ID[maturity], start_date=start_date, end_date=end_date
)
# This plot has 1 axis
if not external_axes:
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
elif is_valid_axes_count(external_axes, 1):
(ax,) = external_axes
else:
return
colors = cycle(theme.get_colors())
ax.plot(
df.index,
df.values,
color=next(colors, "#FCED00"),
)
ax.set_title(f"{maturity.replace('-', ' ')} Treasury Yield [Percent]")
theme.style_primary_axis(ax)
if external_axes is None:
theme.visualize_output()
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
maturity,
pd.DataFrame(df, columns=[maturity]) / 100,
)

Binary file not shown.

View File

@@ -0,0 +1,118 @@
"""DataBento view"""
__docformat__ = "numpy"
import os
from typing import List, Optional
import mplfinance as mpf
from matplotlib import pyplot as plt
from openbb_terminal.config_terminal import theme
from openbb_terminal.helper_funcs import (
export_data,
is_valid_axes_count,
lambda_long_number_format_y_axis,
plot_autoscale,
print_rich_table,
)
from openbb_terminal.rich_config import console
from openbb_terminal.stocks import databento_model
def display_historical(
symbol: str,
start_date: Optional[str] = None,
end_date: Optional[str] = None,
raw: bool = False,
export: str = "",
sheet_name: Optional[str] = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display historical futures [Source: DataBento]
Parameters
----------
symbol: List[str]
Symbol to display
start_date: Optional[str]
Start date of the historical data with format YYYY-MM-DD
end_date: Optional[str]
End date of the historical data with format YYYY-MM-DD
raw: bool
Display futures timeseries in raw format
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Type of format to export data
external_axes : Optional[List[plt.Axes]], optional
External axes (1 axis is expected in the list), by default None
"""
data = databento_model.get_historical_futures(
symbol.upper(), start_date=start_date, end_date=end_date
)
if data.empty:
console.print(f"No data found for {symbol}.")
return
# We check if there's Volume data to avoid errors and empty subplots
has_volume = False
if "Volume" in data.columns:
has_volume = bool(data["Volume"].sum() > 0)
candle_chart_kwargs = {
"type": "candle",
"style": theme.mpf_style,
"volume": has_volume,
"addplot": [],
"xrotation": theme.xticks_rotation,
"scale_padding": {"left": 0.3, "right": 1, "top": 0.8, "bottom": 0.8},
"update_width_config": {
"candle_linewidth": 0.6,
"candle_width": 0.8,
"volume_linewidth": 0.8,
"volume_width": 0.8,
},
"warn_too_much_data": 10000,
}
if external_axes is None:
candle_chart_kwargs["returnfig"] = True
candle_chart_kwargs["figratio"] = (10, 7)
candle_chart_kwargs["figscale"] = 1.10
candle_chart_kwargs["figsize"] = plot_autoscale()
candle_chart_kwargs["warn_too_much_data"] = 100_000
fig, ax = mpf.plot(data, **candle_chart_kwargs)
if has_volume:
lambda_long_number_format_y_axis(data, "Volume", ax)
fig.suptitle(
f"{symbol}",
x=0.055,
y=0.965,
horizontalalignment="left",
)
theme.visualize_output(force_tight_layout=False)
elif (has_volume and is_valid_axes_count(external_axes, 2)) or (
not has_volume and is_valid_axes_count(external_axes, 1)
):
candle_chart_kwargs["ax"] = external_axes[0]
if has_volume:
candle_chart_kwargs["volume"] = external_axes[1]
mpf.plot(data, **candle_chart_kwargs)
if raw:
print_rich_table(
data,
headers=list(data.columns),
show_index=True,
title="Futures timeseries",
)
console.print()
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"historical_db",
data,
sheet_name,
)

View File

@@ -11,7 +11,7 @@ from typing import List, Optional
from openbb_terminal import feature_flags as obbff
from openbb_terminal.custom_prompt_toolkit import NestedCompleter
from openbb_terminal.decorators import log_start_end
from openbb_terminal.futures import yfinance_model, yfinance_view
from openbb_terminal.futures import databento_view, yfinance_model, yfinance_view
from openbb_terminal.helper_funcs import (
EXPORT_BOTH_RAW_DATA_AND_FIGURES,
EXPORT_ONLY_RAW_DATA_ALLOWED,
@@ -165,8 +165,8 @@ class FuturesController(BaseController):
"--start",
dest="start",
type=valid_date,
help="Initial date. Default: 3 years ago",
default=(datetime.now() - timedelta(days=3 * 365)),
help="Initial date. Default: 2 years ago",
default=(datetime.now() - timedelta(days=2 * 365)),
)
parser.add_argument(
"-e",
@@ -193,17 +193,29 @@ class FuturesController(BaseController):
raw=True,
)
if ns_parser:
yfinance_view.display_historical(
symbols=ns_parser.ticker.upper().split(","),
expiry=ns_parser.expiry,
start_date=ns_parser.start.strftime("%Y-%m-%d"),
end_date=ns_parser.end.strftime("%Y-%m-%d"),
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
if ns_parser.source == "YahooFinance":
yfinance_view.display_historical(
symbols=ns_parser.ticker.upper().split(","),
expiry=ns_parser.expiry,
start_date=ns_parser.start.strftime("%Y-%m-%d"),
end_date=ns_parser.end.strftime("%Y-%m-%d"),
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
if ns_parser.source == "DataBento":
databento_view.display_historical(
symbol=ns_parser.ticker,
start_date=ns_parser.start.strftime("%Y-%m-%d"),
end_date=ns_parser.end.strftime("%Y-%m-%d"),
raw=ns_parser.raw,
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_curve(self, other_args: List[str]):

View File

@@ -0,0 +1,31 @@
"""SDK Helper Functions"""
__docformat__ = "numpy"
from typing import List, Optional, Union
import pandas as pd
from openbb_terminal.futures import yfinance_model
from openbb_terminal.stocks import databento_model
def get_historical(
symbols: Union[str, List[str]],
start_date: str,
end_date: str,
source: Optional[str] = "YahooFinance",
expiry: Optional[str] = "",
) -> pd.DataFrame:
"""Get historical futures data"""
if source == "YahooFinance":
if isinstance(symbols, str):
symbols = [symbols]
return yfinance_model.get_historical_futures(
symbols, expiry, start_date, end_date
)
if source == "DataBento":
if isinstance(symbols, list):
print("DataBento only supports one symbol at a time. Using first symbol.")
symbols = symbols[0]
return databento_model.get_historical_futures(symbols, start_date, end_date)
return pd.DataFrame()

View File

@@ -99,7 +99,7 @@ def get_historical_futures(
Returns
-------
pd.DataFrame
Dictionary with sector weightings allocation
Historical futures data
"""
if start_date is None:

View File

@@ -44,10 +44,7 @@ from openbb_terminal import (
config_terminal as cfg,
feature_flags as obbff,
)
from openbb_terminal.core.config.paths import (
HOME_DIRECTORY,
USER_EXPORTS_DIRECTORY,
)
from openbb_terminal.core.config.paths import HOME_DIRECTORY, USER_EXPORTS_DIRECTORY
from openbb_terminal.rich_config import console
try:
@@ -1967,7 +1964,9 @@ def check_start_less_than_end(start_date: str, end_date: str) -> bool:
# Write an abstract helper to make requests from a url with potential headers and params
def request(url: str, method="GET", **kwargs) -> requests.Response:
def request(
url: str, method: str = "GET", timeout: int = 0, **kwargs
) -> requests.Response:
"""Abstract helper to make requests from a url with potential headers and params.
Parameters
@@ -1990,15 +1989,15 @@ def request(url: str, method="GET", **kwargs) -> requests.Response:
# We want to add a user agent to the request, so check if there are any headers
# If there are headers, check if there is a user agent, if not add one.
# Some requests seem to work only with a specific user agent, so we want to be able to override it.
headers = kwargs.pop("headers") if "headers" in kwargs else {}
headers = kwargs.pop("headers", {})
timeout = timeout or cfg.REQUEST_TIMEOUT
if "User-Agent" not in headers:
headers["User-Agent"] = get_user_agent()
if method.upper() == "GET":
return requests.get(url, headers=headers, timeout=cfg.REQUEST_TIMEOUT, **kwargs)
return requests.get(url, headers=headers, timeout=timeout, **kwargs)
if method.upper() == "POST":
return requests.post(
url, headers=headers, timeout=cfg.REQUEST_TIMEOUT, **kwargs
)
return requests.post(url, headers=headers, timeout=timeout, **kwargs)
raise ValueError("Method must be GET or POST")

View File

@@ -1140,6 +1140,34 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods
key=ns_parser.key, persist=True, show_output=True
)
@log_start_end(log=logger)
def call_databento(self, other_args: List[str]):
"""Process databento command"""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
prog="databento",
description="Set DataBento API key.",
)
parser.add_argument(
"-k",
"--key",
type=str,
dest="key",
help="key",
)
if not other_args:
console.print("For your API Key, https://databento.com")
return
if other_args and "-" not in other_args[0][0]:
other_args.insert(0, "-k")
ns_parser = self.parse_simple_args(parser, other_args)
if ns_parser:
self.status_dict["databento"] = keys_model.set_databento_key(
key=ns_parser.key, persist=True, show_output=True
)
@log_start_end(log=logger)
def call_openbb(self, other_args: List[str]):
"""Process openbb command"""

View File

@@ -58,6 +58,7 @@ API_DICT: Dict = {
"quandl": "QUANDL",
"polygon": "POLYGON",
"intrinio": "INTRINIO",
"databento": "DATABENTO",
"fred": "FRED",
"news": "NEWSAPI",
"tradier": "TRADIER",
@@ -2592,7 +2593,7 @@ def set_intrinio_key(key: str, persist: bool = False, show_output: bool = False)
def check_intrinio_key(show_output: bool = False) -> str:
"""Check Polygon key
"""Check Intrinio key
Parameters
----------
@@ -2626,3 +2627,72 @@ def check_intrinio_key(show_output: bool = False) -> str:
console.print(status.colorize())
return str(status)
def set_databento_key(
key: str, persist: bool = False, show_output: bool = False
) -> str:
"""Set DataBento key
Parameters
----------
key: str
API key
persist: bool, optional
If False, api key change will be contained to where it was changed. For example, a Jupyter notebook session.
If True, api key change will be global, i.e. it will affect terminal environment variables.
By default, False.
show_output: bool, optional
Display status string or not. By default, False.
Returns
-------
str
Status of key set
Examples
--------
>>> from openbb_terminal.sdk import openbb
>>> openbb.keys.databento(key="example_key")
"""
set_key("OPENBB_API_DATABENTO_KEY", key, persist)
return check_databento_key(show_output)
def check_databento_key(show_output: bool = False) -> str:
"""Check DataBento key
Parameters
----------
show_output: bool
Display status string or not. By default, False.
Returns
-------
str
Status of key set
"""
if cfg.API_DATABENTO_KEY == "REPLACE_ME":
logger.info("DataBento key not defined")
status = KeyStatus.NOT_DEFINED
else:
r = request(
"https://hist.databento.com/v0/metadata.list_datasets",
auth=(f"{cfg.API_DATABENTO_KEY}", ""),
)
if r.status_code in [403, 401, 429]:
logger.warning("DataBento key defined, test failed")
status = KeyStatus.DEFINED_TEST_FAILED
elif r.status_code == 200:
logger.info("DataBento key defined, test passed")
status = KeyStatus.DEFINED_TEST_PASSED
else:
logger.warning("DataBento key defined, test inconclusive")
status = KeyStatus.DEFINED_TEST_INCONCLUSIVE
if show_output:
console.print(status.colorize())
return str(status)

View File

@@ -6,7 +6,7 @@
"candle": [],
"codes": ["Polygon"],
"news": ["Feedparser", "NewsApi"],
"load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD", "Intrinio"],
"load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD", "Intrinio", "DataBento"],
"th": {
"symbol": ["FinanceDatabase"],
"open": ["Bursa"],
@@ -457,7 +457,6 @@
"futures": ["WallStreetJournal", "Finviz"],
"map": ["Finviz"],
"bigmac": ["Nasdaq"],
"ycrv": ["FRED"],
"events": ["Nasdaq"],
"edebt": ["Wikipedia"],
"rtps": ["AlphaVantage"],
@@ -489,9 +488,33 @@
},
"futures": {
"search": ["YahooFinance"],
"historical": ["YahooFinance"],
"historical": ["YahooFinance", "DataBento"],
"curve": ["YahooFinance"]
},
"fixedincome": {
"estr": ["FRED", "ECB"],
"sofr": ["FRED"],
"sonia": ["FRED"],
"ameribor": ["FRED"],
"fed": ["FRED"],
"iorb": ["FRED"],
"projection": ["FRED"],
"dwpcr": ["FRED"],
"ecb": ["FRED"],
"treasury": ["OECD"],
"usrates": ["FRED"],
"ycrv": ["FRED"],
"ecbycrv": ["ECB"],
"icebofa": ["FRED"],
"moody": ["FRED"],
"spot": ["FRED"],
"cp": ["FRED"],
"hqm": ["FRED"],
"icespread": ["FRED"],
"tmc": ["FRED"],
"ffrmc": ["FRED"],
"tbffr": ["FRED"]
},
"portfolio": {
"po": {
"maxsharpe": ["YahooFinance"],

View File

@@ -784,6 +784,34 @@ en:
economy/qa/raw: print raw data
economy/qa/decompose: decomposition in cyclic-trend, season, and residuals of prices
economy/qa/cusum: detects abrupt changes using cumulative sum algorithm of prices
fixedincome/_reference_rates_: Reference rates
fixedincome/estr: euro short-term rate (estr)
fixedincome/sofr: secured overnight financing rate (sofr)
fixedincome/sonia: sterling overnight index average (sonia)
fixedincome/ameribor: american interbank offered rate (ameribor)
fixedincome/_central_bank_rates_: Central bank rates
fixedincome/fed: effective federal funds rate
fixedincome/obfr: overnight bank funding rate (obfr)
fixedincome/iorb: interest rate on reserve balances
fixedincome/projection: the Federal Reserve's projection of the federal funds rate.
fixedincome/dwpcr: discount window primary credit rate
fixedincome/ecb: key ECB interest rates
fixedincome/_government_bonds_: Government Bonds
fixedincome/treasury: plot countries (including forecast) treasury rates
fixedincome/usrates: plot U.S. secondary market, constant maturity or inflation protected treasuries
fixedincome/ycrv: plot the yield curve based on constant maturity U.S. treasuries
fixedincome/ecbycrv: plot the yield curve based on Euro Area treasuries
fixedincome/_corporate_bonds_: Corporate Bonds
fixedincome/icebofa: display ICE BofA Corporate Indices
fixedincome/moody: display Moody's AAA and BAA Corporate indices
fixedincome/cp: display short-term, promissory notes issued by corporations
fixedincome/spot: display spot rates ranging from 1 year to a 100 years
fixedincome/hqm: display the High Quality Market (HQM) corporate yield curve
fixedincome/_spreads_: Spreads
fixedincome/icespread: display spread between ICE BofA Corporate Indices and spot treasury curve
fixedincome/tmc: 10-year treasury constant maturity minus selected treasury constant maturity
fixedincome/ffrmc: selected treasury constant maturity minus federal funds rate
fixedincome/tbffr: selected treasury bill minus federal funds rate
forex/_ticker: Ticker
forex/_from: From
forex/_to: To

View File

@@ -0,0 +1,23 @@
fixedincome
estr -s 2022-01-01 -e 2023-01-01
sofr -s 2022-01-01 -e 2023-01-01
sonia -s 2022-01-01 -e 2023-01-01
ameribor -s 2022-01-01 -e 2023-01-01
fed -s 2022-01-01 -e 2023-01-01
iorb -s 2022-01-01 -e 2023-01-01
projection
dwpcr -s 2022-01-01 -e 2023-01-01
ecb -s 2022-01-01 -e 2023-01-01
treasury --short australia --long united_kingdom,united_states -s 2022-01-01 -e 2023-01-01
usrates -s 2022-01-01 -e 2023-01-01
ycrv -d 2023-02-17
ecbycrv -d 2023-02-17
icebofa -s 2022-01-01 -e 2023-01-01
moody -s 2022-01-01 -e 2023-01-01
cp -s 2022-01-01 -e 2023-01-01
spot -s 2022-01-01 -e 2023-01-01
hqm -d 2023-02-17
icespread -s 2022-01-01 -e 2023-01-01
tmc -s 2022-01-01 -e 2023-01-01
ffrmc -s 2022-01-01 -e 2023-01-01
tbffr -s 2022-01-01 -e 2023-01-01

View File

@@ -235,6 +235,14 @@ forex.oanda.order,openbb_terminal.forex.oanda.oanda_model.create_order_request,o
forex.oanda.orderbook,openbb_terminal.forex.oanda.oanda_model.orderbook_plot_data_request,openbb_terminal.forex.oanda.oanda_view.get_order_book
forex.oanda.pending,openbb_terminal.forex.oanda.oanda_model.pending_orders_request,openbb_terminal.forex.oanda.oanda_view.get_pending_orders
forex.oanda.positionbook,openbb_terminal.forex.oanda.oanda_model.positionbook_plot_data_request,openbb_terminal.forex.oanda.oanda_view.get_position_book
fixedincome.estr,openbb_terminal.fixedincome.ecb_model.get_series_data,openbb_terminal.fixedincome.ecb_view.plot_estr
fixedincome.sonia,openbb_terminal.fixedincome.fred_model.get_series_data,openbb_terminal.fixedincome.fred_view.plot_sonia
fixedincome.ameribor,openbb_terminal.fixedincome.fred_model.get_series_data,openbb_terminal.fixedincome.fred_view.plot_ameribor
fixedincome.ffer,openbb_terminal.fixedincome.fred_model.get_series_data,openbb_terminal.fixedincome.fred_view.plot_ffer
fixedincome.iorb,openbb_terminal.fixedincome.fred_model.get_series_data,openbb_terminal.fixedincome.fred_view.plot_iobr
fixedincome.projection,openbb_terminal.fixedincome.fred_model.get_series_data,openbb_terminal.fixedincome.fred_view.plot_projection
fixedincome.oldprojection,openbb_terminal.fixedincome.fred_model.get_series_data,openbb_terminal.fixedincome.fred_view.plot_oldprojection
fixedincome.ycrv,openbb_terminal.fixedincome.fred_model.get_yield_curve,openbb_terminal.economy.fixedincome.display_yield_curve
forex.oanda.price,openbb_terminal.forex.oanda.oanda_model.fx_price_request,openbb_terminal.forex.oanda.oanda_view.get_fx_price
forex.oanda.summary,openbb_terminal.forex.oanda.oanda_model.account_summary_request,openbb_terminal.forex.oanda.oanda_view.get_account_summary
forex.quote,openbb_terminal.forex.sdk_helpers.quote,
1 trail model view
235 forex.oanda.orderbook openbb_terminal.forex.oanda.oanda_model.orderbook_plot_data_request openbb_terminal.forex.oanda.oanda_view.get_order_book
236 forex.oanda.pending openbb_terminal.forex.oanda.oanda_model.pending_orders_request openbb_terminal.forex.oanda.oanda_view.get_pending_orders
237 forex.oanda.positionbook openbb_terminal.forex.oanda.oanda_model.positionbook_plot_data_request openbb_terminal.forex.oanda.oanda_view.get_position_book
238 fixedincome.estr openbb_terminal.fixedincome.ecb_model.get_series_data openbb_terminal.fixedincome.ecb_view.plot_estr
239 fixedincome.sonia openbb_terminal.fixedincome.fred_model.get_series_data openbb_terminal.fixedincome.fred_view.plot_sonia
240 fixedincome.ameribor openbb_terminal.fixedincome.fred_model.get_series_data openbb_terminal.fixedincome.fred_view.plot_ameribor
241 fixedincome.ffer openbb_terminal.fixedincome.fred_model.get_series_data openbb_terminal.fixedincome.fred_view.plot_ffer
242 fixedincome.iorb openbb_terminal.fixedincome.fred_model.get_series_data openbb_terminal.fixedincome.fred_view.plot_iobr
243 fixedincome.projection openbb_terminal.fixedincome.fred_model.get_series_data openbb_terminal.fixedincome.fred_view.plot_projection
244 fixedincome.oldprojection openbb_terminal.fixedincome.fred_model.get_series_data openbb_terminal.fixedincome.fred_view.plot_oldprojection
245 fixedincome.ycrv openbb_terminal.fixedincome.fred_model.get_yield_curve openbb_terminal.economy.fixedincome.display_yield_curve
246 forex.oanda.price openbb_terminal.forex.oanda.oanda_model.fx_price_request openbb_terminal.forex.oanda.oanda_view.get_fx_price
247 forex.oanda.summary openbb_terminal.forex.oanda.oanda_model.account_summary_request openbb_terminal.forex.oanda.oanda_view.get_account_summary
248 forex.quote openbb_terminal.forex.sdk_helpers.quote

View File

@@ -134,10 +134,15 @@
"source": [
"info = openbb.stocks.fa.info(symbol=symbol).transpose()\n",
"\n",
"if info[\"Long business summary\"][0] != \"NA\":\n",
" overview = info[\"Long business summary\"][0]\n",
"long_summary = \"Long business summary\"\n",
"long_name = \"Long name\"\n",
"\n",
"if long_summary in info and info[long_summary][0] != \"NA\":\n",
" overview = info[long_summary][0]\n",
"elif long_name in info:\n",
" overview = info[long_name][0]\n",
"else:\n",
" overview = info[\"Long name\"][0]"
" overview = \"\""
]
},
{
@@ -181,7 +186,7 @@
"metadata": {},
"outputs": [],
"source": [
"tables = openbb.etf.news(info[\"Short name\"][0], 5)\n",
"tables = openbb.etf.news(info[\"Short name\"][0], 5) if \"Short name\" in info else []\n",
"for table in tables:\n",
" table[0].loc[\"link\"] = (\n",
" table[0].loc[\"link\"].apply(lambda x: f'<a href=\"{x}\">{x}</a>')\n",
@@ -195,7 +200,7 @@
"metadata": {},
"outputs": [],
"source": [
"quote_data = openbb.stocks.quote_fmp(symbol)\n",
"quote_data = openbb.stocks.quote(symbol)\n",
"quote_data"
]
},
@@ -240,9 +245,7 @@
"metadata": {},
"outputs": [],
"source": [
"df_sec_filings = openbb.stocks.fa.sec(symbol=symbol)[[\"Type\", \"Category\", \"Link\"]].head(\n",
" 5\n",
")\n",
"df_sec_filings = openbb.stocks.fa.sec(symbol)[[\"Type\", \"Category\", \"Link\"]].head(5)\n",
"df_sec_filings[\"Link\"] = df_sec_filings[\"Link\"].apply(\n",
" lambda x: f'<a href=\"{x}\">{x}</a>'\n",
")\n",
@@ -1195,7 +1198,7 @@
" \"Buffet Score is neutral\",\n",
" \"Buffet Score is favourable\",\n",
" ],\n",
" float(score[\"Total Score\"], 2),\n",
" float(round(score[\"Total Score\"], 2)),\n",
" )\n",
"if predictions:\n",
" htmlcode += widgets.kpi(\n",
@@ -1208,7 +1211,9 @@
" )\n",
"body += widgets.add_tab(\"SUMMARY\", htmlcode)\n",
"\n",
"htmlcode = widgets.row([widgets.h(3, \"Description\") + widgets.p(overview)])\n",
"htmlcode=\"\"\n",
"if overview:\n",
" htmlcode += widgets.row([widgets.h(3, \"Description\") + widgets.p(overview)])\n",
"htmlcode += widgets.row([widgets.h(3, \"Price Chart\") + price_chart])\n",
"htmlcode += widgets.row([widgets.h(3, \"Quote\") + quote_data.to_html()])\n",
"htmlcode += widgets.row([widgets.h(3, \"Latest News for \" + symbol)])\n",
@@ -1466,7 +1471,7 @@
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
"display_name": "obb",
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
@@ -1480,11 +1485,11 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.6"
"version": "3.9.13"
},
"vscode": {
"interpreter": {
"hash": "100174a9203096c0c10fb537684ff280825ee9e252451beb8786068677204f06"
"hash": "af870c0f9615f5bb08692efcc9bf540319fe60e6793056508a4dab09c9fa8dda"
}
}
},

View File

@@ -22,7 +22,6 @@ from openbb_terminal.sdk_core import (
)
from openbb_terminal import feature_flags as obbff
from openbb_terminal.session.user import User
from openbb_terminal.terminal_helper import is_auth_enabled
if User.is_guest():
load_dotenv_and_reload_configs()
@@ -49,14 +48,6 @@ class OpenBBSDK:
self.logout = lib.sdk_session.logout
self.news = lib.common_feedparser_model.get_news
self.whoami = lib.sdk_session.whoami
self._try_to_login()
def _try_to_login(self):
if User.is_guest() and is_auth_enabled():
try:
self.login()
except Exception:
pass
@property
def alt(self):
@@ -172,8 +163,6 @@ class OpenBBSDK:
`treasury_maturities`: Get treasury maturity options [Source: EconDB]\n
`usbonds`: Scrape data for us bonds\n
`valuation`: Get group (sectors, industry or country) valuation data. [Source: Finviz]\n
`ycrv`: Gets yield curve data from FRED\n
`ycrv_chart`: Display yield curve based on US Treasury rates for a specified date.\n
"""
return model.EconomyRoot()
@@ -204,6 +193,17 @@ class OpenBBSDK:
return ctrl.EtfController()
@property
def fixedincome(self):
"""Fixedincome Submodule
Attributes:
`ecbycrv`: Gets euro area yield curve data from ECB.\n
`ycrv`: Gets yield curve data from FRED.\n
"""
return model.FixedincomeRoot()
@property
def forecast(self):
"""Forecasting Submodule
@@ -297,7 +297,7 @@ class OpenBBSDK:
Attributes:
`curve`: Get curve futures [Source: Yahoo Finance]\n
`curve_chart`: Display curve futures [Source: Yahoo Finance]\n
`historical`: Get historical futures [Source: Yahoo Finance]\n
`historical`: Get historical futures data\n
`historical_chart`: Display historical futures [Source: Yahoo Finance]\n
`search`: Get search futures [Source: Yahoo Finance]\n
"""
@@ -316,6 +316,7 @@ class OpenBBSDK:
`coinbase`: Set Coinbase key\n
`coinglass`: Set Coinglass key.\n
`cpanic`: Set Cpanic key.\n
`databento`: Set DataBento key\n
`degiro`: Set Degiro key\n
`eodhd`: Set Eodhd key.\n
`ethplorer`: Set Ethplorer key.\n

View File

@@ -6,6 +6,7 @@ from .crypto_sdk_model import CryptoRoot
from .econometrics_sdk_model import EconometricsRoot
from .economy_sdk_model import EconomyRoot
from .etf_sdk_model import EtfRoot
from .fixedincome_sdk_model import FixedincomeRoot
from .forecast_sdk_model import ForecastRoot
from .forex_sdk_model import ForexRoot
from .futures_sdk_model import FuturesRoot

View File

@@ -41,8 +41,6 @@ class EconomyRoot(Category):
`treasury_maturities`: Get treasury maturity options [Source: EconDB]\n
`usbonds`: Scrape data for us bonds\n
`valuation`: Get group (sectors, industry or country) valuation data. [Source: Finviz]\n
`ycrv`: Gets yield curve data from FRED\n
`ycrv_chart`: Display yield curve based on US Treasury rates for a specified date.\n
"""
_location_path = "economy"
@@ -82,5 +80,3 @@ class EconomyRoot(Category):
self.treasury_maturities = lib.economy_econdb_model.get_treasury_maturities
self.usbonds = lib.economy_wsj_model.us_bonds
self.valuation = lib.economy_finviz_model.get_valuation_data
self.ycrv = lib.economy_fred_model.get_yield_curve
self.ycrv_chart = lib.economy_fred_view.display_yield_curve

View File

@@ -0,0 +1,40 @@
# flake8: noqa
# pylint: disable=C0301,R0902,R0903
from openbb_terminal.sdk_core.sdk_helpers import Category
import openbb_terminal.sdk_core.sdk_init as lib
class FixedincomeRoot(Category):
"""Fixedincome Module
Attributes:
`ecbycrv`: Gets euro area yield curve data from ECB.\n
`ycrv`: Gets yield curve data from FRED.\n
"""
_location_path = "fixedincome"
def __init__(self):
super().__init__()
self.ameribor = lib.fixedincome_fred_model.get_ameribor
self.cp = lib.fixedincome_fred_model.get_cp
self.dwpcr = lib.fixedincome_fred_model.get_dwpcr
self.ecb = lib.fixedincome_fred_model.get_ecb
self.ecbycrv = lib.fixedincome_ecb_model.get_ecb_yield_curve
self.estr = lib.fixedincome_fred_model.get_estr
self.fed = lib.fixedincome_fred_model.get_fed
self.ffrmc = lib.fixedincome_fred_model.get_ffrmc
self.hqm = lib.fixedincome_fred_model.get_hqm
self.icebofa = lib.fixedincome_fred_model.get_icebofa
self.icespread = lib.fixedincome_fred_model.get_icespread
self.iorb = lib.fixedincome_fred_model.get_iorb
self.moody = lib.fixedincome_fred_model.get_moody
self.projection = lib.fixedincome_fred_model.get_projection
self.sofr = lib.fixedincome_fred_model.get_sofr
self.sonia = lib.fixedincome_fred_model.get_sonia
self.spot = lib.fixedincome_fred_model.get_spot
self.tbffr = lib.fixedincome_fred_model.get_tbffr
self.tmc = lib.fixedincome_fred_model.get_tmc
self.treasury = lib.fixedincome_oecd_model.get_treasury
self.usrates = lib.fixedincome_fred_model.get_usrates
self.ycrv = lib.fixedincome_fred_model.get_yield_curve

View File

@@ -77,7 +77,6 @@ class ForecastRoot(Category):
if not lib.FORECASTING_TOOLKIT_ENABLED:
# pylint: disable=C0415
from openbb_terminal.rich_config import console
console.print(lib.FORECASTING_TOOLKIT_WARNING)

View File

@@ -10,7 +10,7 @@ class FuturesRoot(Category):
Attributes:
`curve`: Get curve futures [Source: Yahoo Finance]\n
`curve_chart`: Display curve futures [Source: Yahoo Finance]\n
`historical`: Get historical futures [Source: Yahoo Finance]\n
`historical`: Get historical futures data\n
`historical_chart`: Display historical futures [Source: Yahoo Finance]\n
`search`: Get search futures [Source: Yahoo Finance]\n
"""
@@ -21,6 +21,6 @@ class FuturesRoot(Category):
super().__init__()
self.curve = lib.futures_yfinance_model.get_curve_futures
self.curve_chart = lib.futures_yfinance_view.display_curve
self.historical = lib.futures_yfinance_model.get_historical_futures
self.historical = lib.futures_sdk_model.get_historical
self.historical_chart = lib.futures_yfinance_view.display_historical
self.search = lib.futures_yfinance_model.get_search_futures

View File

@@ -15,6 +15,7 @@ class KeysRoot(Category):
`coinbase`: Set Coinbase key\n
`coinglass`: Set Coinglass key.\n
`cpanic`: Set Cpanic key.\n
`databento`: Set DataBento key\n
`degiro`: Set Degiro key\n
`eodhd`: Set Eodhd key.\n
`ethplorer`: Set Ethplorer key.\n
@@ -55,6 +56,7 @@ class KeysRoot(Category):
self.coinbase = lib.keys_model.set_coinbase_key
self.coinglass = lib.keys_model.set_coinglass_key
self.cpanic = lib.keys_model.set_cpanic_key
self.databento = lib.keys_model.set_databento_key
self.degiro = lib.keys_model.set_degiro_key
self.eodhd = lib.keys_model.set_eodhd_key
self.ethplorer = lib.keys_model.set_ethplorer_key

View File

@@ -177,7 +177,6 @@ class PortfolioPortfolioOptimization(Category):
if not lib.OPTIMIZATION_TOOLKIT_ENABLED:
# pylint: disable=C0415
from openbb_terminal.rich_config import console
console.print(lib.OPTIMIZATION_TOOLKIT_WARNING)

View File

@@ -211,6 +211,14 @@ from openbb_terminal.econometrics import (
regression_view as econometrics_regression_view,
)
# Fixedincome
from openbb_terminal.fixedincome import (
fred_model as fixedincome_fred_model,
ecb_model as fixedincome_ecb_model,
oecd_model as fixedincome_oecd_model,
)
# Economy
from openbb_terminal.economy import (
alphavantage_model as economy_alphavantage_model,
@@ -252,6 +260,7 @@ from openbb_terminal.forex import (
from openbb_terminal.futures import (
yfinance_model as futures_yfinance_model,
yfinance_view as futures_yfinance_view,
sdk_helper as futures_sdk_model,
)
# Stocks Helpers

File diff suppressed because it is too large Load Diff

View File

@@ -1,39 +1,39 @@
trail,model,view
forecast.anom,forecast_anom_model.get_anomaly_detection_data,forecast_anom_view.display_anomaly_detection
forecast.atr,forecast_model.add_atr,
forecast.autoarima,forecast_autoarima_model.get_autoarima_data,forecast_autoarima_view.display_autoarima_forecast
forecast.autoces,forecast_autoces_model.get_autoces_data,forecast_autoces_view.display_autoces_forecast
forecast.autoets,forecast_autoets_model.get_autoets_data,forecast_autoets_view.display_autoets_forecast
forecast.autoselect,forecast_autoselect_model.get_autoselect_data,forecast_autoselect_view.display_autoselect_forecast
forecast.brnn,forecast_brnn_model.get_brnn_data,forecast_brnn_view.display_brnn_forecast
forecast.clean,forecast_model.clean,
forecast.combine,forecast_model.combine_dfs,
forecast.corr,forecast_model.corr_df,forecast_view.display_corr
forecast.delete,forecast_model.delete_column,
forecast.delta,forecast_model.add_delta,
forecast.desc,forecast_model.describe_df,forecast_view.describe_df
forecast.ema,forecast_model.add_ema,
forecast.expo,forecast_expo_model.get_expo_data,forecast_expo_view.display_expo_forecast
forecast.export,forecast_view.export_df,
forecast.linregr,forecast_linregr_model.get_linear_regression_data,forecast_linregr_view.display_linear_regression
forecast.load,common_model.load,
forecast.mom,forecast_model.add_momentum,
forecast.mstl,forecast_mstl_model.get_mstl_data,forecast_mstl_view.display_mstl_forecast
forecast.nbeats,forecast_nbeats_model.get_NBEATS_data,forecast_nbeats_view.display_nbeats_forecast
forecast.nhits,forecast_nhits_model.get_nhits_data,forecast_nhits_view.display_nhits_forecast
forecast.plot,forecast_view.display_plot,forecast_view.display_plot
forecast.regr,forecast_regr_model.get_regression_data,forecast_regr_view.display_regression
forecast.rename,forecast_model.rename_column,
forecast.rnn,forecast_rnn_model.get_rnn_data,forecast_rnn_view.display_rnn_forecast
forecast.roc,forecast_model.add_roc,
forecast.rsi,forecast_model.add_rsi,
forecast.rwd,forecast_rwd_model.get_rwd_data,forecast_rwd_view.display_rwd_forecast
forecast.season,,forecast_view.display_seasonality
forecast.seasonalnaive,forecast_seasonalnaive_model.get_seasonalnaive_data,forecast_seasonalnaive_view.display_seasonalnaive_forecast
forecast.show,forecast_view.show_df,
forecast.signal,forecast_model.add_signal,
forecast.sto,forecast_model.add_sto,
forecast.tcn,forecast_tcn_model.get_tcn_data,forecast_tcn_view.display_tcn_forecast
forecast.tft,forecast_tft_model.get_tft_data,forecast_tft_view.display_tft_forecast
forecast.theta,forecast_theta_model.get_theta_data,forecast_theta_view.display_theta_forecast
forecast.trans,forecast_trans_model.get_trans_data,forecast_trans_view.display_trans_forecast
trail,model,view
forecast.anom,forecast_anom_model.get_anomaly_detection_data,forecast_anom_view.display_anomaly_detection
forecast.atr,forecast_model.add_atr,
forecast.autoarima,forecast_autoarima_model.get_autoarima_data,forecast_autoarima_view.display_autoarima_forecast
forecast.autoces,forecast_autoces_model.get_autoces_data,forecast_autoces_view.display_autoces_forecast
forecast.autoets,forecast_autoets_model.get_autoets_data,forecast_autoets_view.display_autoets_forecast
forecast.autoselect,forecast_autoselect_model.get_autoselect_data,forecast_autoselect_view.display_autoselect_forecast
forecast.brnn,forecast_brnn_model.get_brnn_data,forecast_brnn_view.display_brnn_forecast
forecast.clean,forecast_model.clean,
forecast.combine,forecast_model.combine_dfs,
forecast.corr,forecast_model.corr_df,forecast_view.display_corr
forecast.delete,forecast_model.delete_column,
forecast.delta,forecast_model.add_delta,
forecast.desc,forecast_model.describe_df,forecast_view.describe_df
forecast.ema,forecast_model.add_ema,
forecast.expo,forecast_expo_model.get_expo_data,forecast_expo_view.display_expo_forecast
forecast.export,forecast_view.export_df,
forecast.linregr,forecast_linregr_model.get_linear_regression_data,forecast_linregr_view.display_linear_regression
forecast.load,common_model.load,
forecast.mom,forecast_model.add_momentum,
forecast.mstl,forecast_mstl_model.get_mstl_data,forecast_mstl_view.display_mstl_forecast
forecast.nbeats,forecast_nbeats_model.get_NBEATS_data,forecast_nbeats_view.display_nbeats_forecast
forecast.nhits,forecast_nhits_model.get_nhits_data,forecast_nhits_view.display_nhits_forecast
forecast.plot,forecast_view.display_plot,forecast_view.display_plot
forecast.regr,forecast_regr_model.get_regression_data,forecast_regr_view.display_regression
forecast.rename,forecast_model.rename_column,
forecast.rnn,forecast_rnn_model.get_rnn_data,forecast_rnn_view.display_rnn_forecast
forecast.roc,forecast_model.add_roc,
forecast.rsi,forecast_model.add_rsi,
forecast.rwd,forecast_rwd_model.get_rwd_data,forecast_rwd_view.display_rwd_forecast
forecast.season,,forecast_view.display_seasonality
forecast.seasonalnaive,forecast_seasonalnaive_model.get_seasonalnaive_data,forecast_seasonalnaive_view.display_seasonalnaive_forecast
forecast.show,forecast_view.show_df,
forecast.signal,forecast_model.add_signal,
forecast.sto,forecast_model.add_sto,
forecast.tcn,forecast_tcn_model.get_tcn_data,forecast_tcn_view.display_tcn_forecast
forecast.tft,forecast_tft_model.get_tft_data,forecast_tft_view.display_tft_forecast
forecast.theta,forecast_theta_model.get_theta_data,forecast_theta_view.display_theta_forecast
forecast.trans,forecast_trans_model.get_trans_data,forecast_trans_view.display_trans_forecast
1 trail model view
2 forecast.anom forecast_anom_model.get_anomaly_detection_data forecast_anom_view.display_anomaly_detection
3 forecast.atr forecast_model.add_atr
4 forecast.autoarima forecast_autoarima_model.get_autoarima_data forecast_autoarima_view.display_autoarima_forecast
5 forecast.autoces forecast_autoces_model.get_autoces_data forecast_autoces_view.display_autoces_forecast
6 forecast.autoets forecast_autoets_model.get_autoets_data forecast_autoets_view.display_autoets_forecast
7 forecast.autoselect forecast_autoselect_model.get_autoselect_data forecast_autoselect_view.display_autoselect_forecast
8 forecast.brnn forecast_brnn_model.get_brnn_data forecast_brnn_view.display_brnn_forecast
9 forecast.clean forecast_model.clean
10 forecast.combine forecast_model.combine_dfs
11 forecast.corr forecast_model.corr_df forecast_view.display_corr
12 forecast.delete forecast_model.delete_column
13 forecast.delta forecast_model.add_delta
14 forecast.desc forecast_model.describe_df forecast_view.describe_df
15 forecast.ema forecast_model.add_ema
16 forecast.expo forecast_expo_model.get_expo_data forecast_expo_view.display_expo_forecast
17 forecast.export forecast_view.export_df
18 forecast.linregr forecast_linregr_model.get_linear_regression_data forecast_linregr_view.display_linear_regression
19 forecast.load common_model.load
20 forecast.mom forecast_model.add_momentum
21 forecast.mstl forecast_mstl_model.get_mstl_data forecast_mstl_view.display_mstl_forecast
22 forecast.nbeats forecast_nbeats_model.get_NBEATS_data forecast_nbeats_view.display_nbeats_forecast
23 forecast.nhits forecast_nhits_model.get_nhits_data forecast_nhits_view.display_nhits_forecast
24 forecast.plot forecast_view.display_plot forecast_view.display_plot
25 forecast.regr forecast_regr_model.get_regression_data forecast_regr_view.display_regression
26 forecast.rename forecast_model.rename_column
27 forecast.rnn forecast_rnn_model.get_rnn_data forecast_rnn_view.display_rnn_forecast
28 forecast.roc forecast_model.add_roc
29 forecast.rsi forecast_model.add_rsi
30 forecast.rwd forecast_rwd_model.get_rwd_data forecast_rwd_view.display_rwd_forecast
31 forecast.season forecast_view.display_seasonality
32 forecast.seasonalnaive forecast_seasonalnaive_model.get_seasonalnaive_data forecast_seasonalnaive_view.display_seasonalnaive_forecast
33 forecast.show forecast_view.show_df
34 forecast.signal forecast_model.add_signal
35 forecast.sto forecast_model.add_sto
36 forecast.tcn forecast_tcn_model.get_tcn_data forecast_tcn_view.display_tcn_forecast
37 forecast.tft forecast_tft_model.get_tft_data forecast_tft_view.display_tft_forecast
38 forecast.theta forecast_theta_model.get_theta_data forecast_theta_view.display_theta_forecast
39 forecast.trans forecast_trans_model.get_trans_data forecast_trans_view.display_trans_forecast

View File

@@ -1,19 +1,19 @@
trail,model,view
portfolio.po.blacklitterman,portfolio_optimization_po_model.get_blacklitterman,
portfolio.po.ef,portfolio_optimization_po_model.get_ef,portfolio_optimization_po_view.display_ef
portfolio.po.file,portfolio_optimization_po_model.load_parameters_file,
portfolio.po.herc,portfolio_optimization_po_model.get_herc,
portfolio.po.hrp,portfolio_optimization_po_model.get_hrp,
portfolio.po.load,portfolio_optimization_po_model.generate_portfolio,
portfolio.po.load_bl_views,portfolio_optimization_excel_model.load_bl_views,
portfolio.po.maxdecorr,portfolio_optimization_po_model.get_maxdecorr,
portfolio.po.maxdiv,portfolio_optimization_po_model.get_maxdiv,
portfolio.po.maxret,portfolio_optimization_po_model.get_maxret,
portfolio.po.maxsharpe,portfolio_optimization_po_model.get_maxsharpe,
portfolio.po.maxutil,portfolio_optimization_po_model.get_maxutil,
portfolio.po.minrisk,portfolio_optimization_po_model.get_minrisk,
portfolio.po.nco,portfolio_optimization_po_model.get_nco,
portfolio.po.plot,portfolio_optimization_po_view.display_plot,portfolio_optimization_po_view.display_plot
portfolio.po.relriskparity,portfolio_optimization_po_model.get_relriskparity,
portfolio.po.riskparity,portfolio_optimization_po_model.get_riskparity,
portfolio.po.show,portfolio_optimization_po_model.show,
trail,model,view
portfolio.po.blacklitterman,portfolio_optimization_po_model.get_blacklitterman,
portfolio.po.ef,portfolio_optimization_po_model.get_ef,portfolio_optimization_po_view.display_ef
portfolio.po.file,portfolio_optimization_po_model.load_parameters_file,
portfolio.po.herc,portfolio_optimization_po_model.get_herc,
portfolio.po.hrp,portfolio_optimization_po_model.get_hrp,
portfolio.po.load,portfolio_optimization_po_model.generate_portfolio,
portfolio.po.load_bl_views,portfolio_optimization_excel_model.load_bl_views,
portfolio.po.maxdecorr,portfolio_optimization_po_model.get_maxdecorr,
portfolio.po.maxdiv,portfolio_optimization_po_model.get_maxdiv,
portfolio.po.maxret,portfolio_optimization_po_model.get_maxret,
portfolio.po.maxsharpe,portfolio_optimization_po_model.get_maxsharpe,
portfolio.po.maxutil,portfolio_optimization_po_model.get_maxutil,
portfolio.po.minrisk,portfolio_optimization_po_model.get_minrisk,
portfolio.po.nco,portfolio_optimization_po_model.get_nco,
portfolio.po.plot,portfolio_optimization_po_view.display_plot,portfolio_optimization_po_view.display_plot
portfolio.po.relriskparity,portfolio_optimization_po_model.get_relriskparity,
portfolio.po.riskparity,portfolio_optimization_po_model.get_riskparity,
portfolio.po.show,portfolio_optimization_po_model.show,
1 trail model view
2 portfolio.po.blacklitterman portfolio_optimization_po_model.get_blacklitterman
3 portfolio.po.ef portfolio_optimization_po_model.get_ef portfolio_optimization_po_view.display_ef
4 portfolio.po.file portfolio_optimization_po_model.load_parameters_file
5 portfolio.po.herc portfolio_optimization_po_model.get_herc
6 portfolio.po.hrp portfolio_optimization_po_model.get_hrp
7 portfolio.po.load portfolio_optimization_po_model.generate_portfolio
8 portfolio.po.load_bl_views portfolio_optimization_excel_model.load_bl_views
9 portfolio.po.maxdecorr portfolio_optimization_po_model.get_maxdecorr
10 portfolio.po.maxdiv portfolio_optimization_po_model.get_maxdiv
11 portfolio.po.maxret portfolio_optimization_po_model.get_maxret
12 portfolio.po.maxsharpe portfolio_optimization_po_model.get_maxsharpe
13 portfolio.po.maxutil portfolio_optimization_po_model.get_maxutil
14 portfolio.po.minrisk portfolio_optimization_po_model.get_minrisk
15 portfolio.po.nco portfolio_optimization_po_model.get_nco
16 portfolio.po.plot portfolio_optimization_po_view.display_plot portfolio_optimization_po_view.display_plot
17 portfolio.po.relriskparity portfolio_optimization_po_model.get_relriskparity
18 portfolio.po.riskparity portfolio_optimization_po_model.get_riskparity
19 portfolio.po.show portfolio_optimization_po_model.show

View File

@@ -30,7 +30,7 @@ def get_similar(symbol: str, source="Finviz") -> List[str]:
--------
To get similar tickers to AAPL from Finviz:
>>> from openbb_terminal.sdk import openbb
>>> similar_tickers = openbb.stocks.ca.similar("AAPL)
>>> similar_tickers = openbb.stocks.ca.similar("AAPL")
To use our custom TSNE model for similar tickers in the SP500:
>>> similar_tickers = openbb.stocks.ca.similar("AAPL", source="TSNE")

View File

@@ -0,0 +1,154 @@
__docformat__ = "numpy"
import logging
from datetime import datetime, timedelta
from io import StringIO
import pandas as pd
import requests
from pydantic import BaseModel
from openbb_terminal import config_terminal as cfg
from openbb_terminal.decorators import check_api_key, log_start_end
from openbb_terminal.helper_funcs import request
from openbb_terminal.rich_config import console
logger = logging.getLogger(__name__)
# pylint:disable=too-few-public-methods
class DataBento(BaseModel):
symbol: str
exchange: str = "XNAS.ITCH"
stype: str = "native"
start: str = (datetime.now() - timedelta(days=365)).strftime("%Y-%m-%d")
end: str = datetime.now().strftime("%Y-%m-%d")
class Config:
arbitrary_types_allowed = True
def get_historical_stock(self):
"""Gets historical EOD stock data from DataBento. Currnetly, just NASDAQ is supported.
Note that only nonadjusted data is available."""
self.exchange = "XNAS.ITCH"
self.stype = "native"
if not self.validate_symbol():
return pd.DataFrame()
return self.get_historical()
def validate_symbol(self):
"""Validates the symbol is supported by DataBento. There is no API for this, so we will use their
Symbology endpoint to see if something exists. Doing a long time range can make this request on the order of
one minute, so try to keep smaller requests."""
base_url = "https://hist.databento.com/v0/symbology.resolve"
params = {
"dataset": self.exchange,
"symbols": self.symbol,
"start_date": self.start,
"end_date": self.end,
"stype_in": "smart",
"stype_out": "product_id",
}
auth = requests.auth.HTTPBasicAuth(cfg.API_DATABENTO_KEY, "")
# This seems to only work for futures? Assume the user is entering correct stock ticker
if self.exchange == "XNAS.ITCH":
return True
result = request(base_url, params=params, auth=auth, timeout=30)
if "message" not in result.json():
console.print(
"Issue validating symbol in the date range. Please check with DataBento for symbology."
)
return False
return result.json()["message"] != "Not found"
def get_historical_futures(self):
"""Gets historical EODfutures data from DataBento. Currently, just CME is supported.
Note this gets the highest volume contract each day"""
self.exchange = "GLBX.MDP3"
self.stype = "smart"
if not self.validate_symbol():
return pd.DataFrame()
return self.get_historical()
@log_start_end(log=logger)
@check_api_key(["API_DATABENTO_KEY"])
def get_historical(self) -> pd.DataFrame:
"""Prepares the request to be made. I am using their https interface instead of their python client.
Their next update will change symbol.V.0 to symbol.C.0"""
base_url = "https://hist.databento.com/v0/timeseries.stream"
symbol = self.symbol + ".V.0" if self.exchange == "GLBX.MDP3" else self.symbol
params = {
"dataset": self.exchange,
"symbols": symbol,
"schema": "ohlcv-1d",
"start": self.start,
"end": self.end,
"stype_in": self.stype,
"encoding": "csv",
}
auth = requests.auth.HTTPBasicAuth(cfg.API_DATABENTO_KEY, "")
data = self.process_request(base_url, params, auth)
if data.empty:
console.print(f"No data found for symbol `{self.symbol}`.")
return data
def process_request(self, base_url, params, auth) -> pd.DataFrame:
"""Takes the request and returns the adjusted dataframe"""
r = request(base_url, params=params, auth=auth)
if r.status_code != 200:
raise Exception(f"Error: Status Code {r.status_code}")
df = pd.read_csv(StringIO(r.text))
df["time"] = pd.to_datetime(df.ts_event, unit="ns")
df[["open", "high", "low", "close"]] /= 1_000_000_000
df = df.drop(columns=["ts_event", "publisher_id", "product_id"]).set_index(
"time"
)
df = df.rename(
columns={
"open": "Open",
"high": "High",
"low": "Low",
"close": "Close",
"volume": "Volume",
}
)
return df
@log_start_end(log=logger)
@check_api_key(["API_DATABENTO_KEY"])
def get_historical_stock(symbol: str, start_date: str, end_date: str) -> pd.DataFrame:
"""Gets historical EOD data from DataBento. Currently, just NASDAQ is supported.
Parameters
----------
symbol : str
Symbol to get data for
start_date : str
Start date of data
end_date : str
End date to get data for
"""
db = DataBento(symbol=symbol, start=start_date, end=end_date)
return db.get_historical_stock()
@log_start_end(log=logger)
@check_api_key(["API_DATABENTO_KEY"])
def get_historical_futures(symbol: str, start_date: str, end_date: str) -> pd.DataFrame:
"""Gets historical EODfutures data from DataBento. Currently, just CME is supported.
Parameters
----------
symbol : str
Symbol to get data for
start_date : str
Start date of data
end_date : str
End date to get data for
"""
db = DataBento(symbol=symbol, start=start_date, end=end_date)
return db.get_historical_futures()

View File

@@ -176,12 +176,12 @@ def option_expirations(symbol: str) -> List[str]:
List of expiration dates
"""
df = get_full_option_chain(symbol)
if df.empty:
return []
# get everything that is not an empty string
exps = [exp for exp in list(df.expirygroup.unique()) if exp]
# Convert 'January 11, 1993' into '1993-01-11'
return [datetime.strptime(exp, "%B %d, %Y").strftime("%Y-%m-%d") for exp in exps]
return [exp for exp in list(df.expiration.unique()) if exp]
@log_start_end(log=logger)

View File

@@ -56,6 +56,8 @@ from openbb_terminal.stocks.stocks_model import (
load_stock_yf,
)
from . import databento_model
logger = logging.getLogger(__name__)
@@ -335,6 +337,12 @@ def load(
elif source == "Intrinio":
df_stock_candidate = load_stock_intrinio(symbol, start_date, end_date)
elif source == "DataBento":
df_stock_candidate = databento_model.get_historical_stock(
symbol, start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d")
)
else:
console.print("[red]Invalid source for stock[/red]\n")
return
@@ -545,7 +553,7 @@ def display_candle(
start_date = check_datetime(start_date)
end_date = check_datetime(end_date, start=False)
if data is None:
if data is None or data.empty:
data = load(
symbol,
start_date,

View File

@@ -105,6 +105,7 @@ class TerminalController(BaseController):
"sources",
"forecast",
"futures",
"fixedincome",
"funds",
]
@@ -193,6 +194,7 @@ class TerminalController(BaseController):
mt.add_menu("economy")
mt.add_menu("forex")
mt.add_menu("futures")
mt.add_menu("fixedincome")
mt.add_menu("alternative")
mt.add_menu("funds")
mt.add_raw("\n")
@@ -482,6 +484,14 @@ class TerminalController(BaseController):
self.queue = self.load_class(FuturesController, self.queue)
def call_fixedincome(self, _):
"""Process fixedincome command."""
from openbb_terminal.fixedincome.fixedincome_controller import (
FixedIncomeController,
)
self.queue = self.load_class(FixedIncomeController, self.queue)
def call_funds(self, _):
"""Process etf command"""
from openbb_terminal.mutual_funds.mutual_fund_controller import FundController

View File

@@ -12,76 +12,53 @@ interactions:
- 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/v8/finance/chart/%5EFCHI?period1=1262300400&period2=1454713200&interval=3mo&includePrePost=False&events=div%2Csplits
uri: https://query2.finance.yahoo.com/v8/finance/chart/CAC40?range=1d&interval=1d
response:
body:
string: !!binary |
H4sIAAAAAAAAAO1WTW/cNhD9L3tesCSHQ3JyKxy3yaGBEbhAgcAFVK/ibLu7crXaNK6x/71vKNmi
nEPbWw+9aEej4XA+3rzZx9Xtp6YfVq8eV317PO0gfXhc7duhUdXtqe/bw+3D6tXq8sf3q/Xq+LD/
pdvh9efvLt68haL9gvOHu/Zds2+hvvpWrbaH49Cf9u1huH64V/Xbd68vf8KHj9v+OFz3zaZ93Qz4
ECn6lIO1a9x+d9o1/Q9N/1s7XG/Vm4shZZaU8PluP3QfPx5bxEdR7QeY/Nkd1PvF5XUVyfX0YYro
8tR39+03V02/Pa5eXHPVb281iujIcFqPpbjq28/b7nS82HVHfCShaIjWq3s1frM9IAK/nipTctke
7q7afttttGL3fas/X0d32EwJBSnxH4dS9lr1Isfzc7R/4zFb/4893nfH4d+7m1Qv3cHfphma7/vm
oGFuBwUK7Tuts7YCbxA/N7vt5r2+HwGuldtAx/pwxXK0j+XpHvDw+mB9OKvPh0GN982X1c157DtC
29/Dl/Ms0SM0u3Y+JpI8iokpkC9iJi+TgTjHk4FkoVBEsjEnKbbkQvajAXkfZTIgyxzDKGa2LhYx
xMB21HIgNxlEb8WPYrKW0mibkuTJIHPmyQC48gX6LljHqaAaorAfDYJLlCcDz7hhFImcldE2OMuT
Qci4F+KNDt9me9sMXX/UPv9+6nTQMNO3I54/ILJsNM2QkS5KuCa2yTB8IjihBEUQa5IgA7FRDaKz
JpBIQICqCA4KHLOSIheFtdFIZUGeo9H8n03IcTAokHPJ5XIJexOCCD9rrEvGuvpMwGRalDJmmkJj
Tka7hLZKLKeSh82aJGTDiDmnPEUtRCbVpsELG7QI9SvOULFsLCxSqUNgJ6iDZB98CShQdka7PNUB
JbDGZYTJ0wkEb0ISAC+UG1CSZHA/oDDmFCKyFMBGmKYTydRlCcQgn/DkAQ38tL37hD4htmwcfBd0
jUXOUTPFNC5rLdGZKFUlg4ticrLze2CT/BxnsCjaslroqfFOJKHeJVQCqBbJKUSXCoaXXMGAGDEr
VzylS0nI+EW+NnnjEb0ghFC64NRLXTMCdnwSkL8bzwRvFxkHBilnmhsn2cRQuWSLTs6N/apN4AWT
ZiCwB/IWbUQxFg4lcXUAXcJSOeg0YV5rSBFY6MUsAUORRZx3k4mOW9UcioTBcAB+esId2MzEaKfs
rQtG53zulU+APNcj7JBhPZAUQjBM9ZxYnw0t5h6egc05do4K3jlrSg4jCkyMYRFcmVgjkiSFmigw
YGFZN3DmwqAgpm4+oRMVK6D3ASNWtRqhgXvmmWOkhKGcocxZF/Tc6whqAuOOSaJTn7vdSf8KfGAl
g4RhBGNaQCon5Zq1OOsjxgeiLjoq6nUOLkfRE+uEFah6PQemFuyWwrresscH1SPgmHFfcZ0IBDou
HcSJhjg1kUgovTZgHZlIXNlQQEYUVwhduXwy4OTQ/sjFAIl63IM4COQPdlKtgFgCl5gDK/OTitan
WBYiRJCvlO0AkXRrqQddl9iUqgWGXNLgUaJd94diGR6N2BqqPmMzLPiX/EugpbzkAHTTROxi8VPH
KIIE6vH1WZxxNeK9mlRjBBzhmgonHrxk6tUAXPsls6DqznBNPhxpyUYocYUNvGOqQZUzvsHN/vlz
sBiqsu2ybhisWzHYvvNoYx6XacADsFiPasjgMt3wz+TmCSQ64x//fxc7h1A3E56H8uaM9jSbX5+2
92P98v8q/0+v8vPNWbvX9n2Hv/D4i7w7n/8CslMmJ3ANAAA=
string: '{"chart":{"result":null,"error":{"code":"Not Found","description":"No
data found, symbol may be delisted"}}}'
headers:
Age:
- '0'
Cache-Control:
- max-age=0, private
Connection:
- keep-alive
Expect-CT:
- max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
Expires:
- '-1'
Referrer-Policy:
- no-referrer-when-downgrade
Strict-Transport-Security:
- max-age=15552000
- max-age=31536000
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-XSS-Protection:
- 1; mode=block
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-encoding:
- gzip
content-length:
- '1346'
- '108'
content-type:
- application/json;charset=utf-8
date:
- Mon, 21 Mar 2022 11:04:33 GMT
- Fri, 24 Feb 2023 16:00:33 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
- Origin
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
- finance-chart-api--mtls-canary-production-bf1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '4'
- '3'
x-request-id:
- f383d400-d576-47cd-8902-b1f3cb20505a
- 7e200c20-47ba-491e-95e7-2a20fed8e68a
x-yahoo-request-id:
- 0ohs2v5h3gmu1
- bi2i331hvhnp1
y-rid:
- 0ohs2v5h3gmu1
- bi2i331hvhnp1
status:
code: 200
message: OK
code: 404
message: Not Found
version: 1

View File

@@ -12,50 +12,53 @@ interactions:
- 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/v8/finance/chart/%5EDJI?period1=1420066800&period2=1422831600&interval=1mo&includePrePost=False&events=div%2Csplits
uri: https://query2.finance.yahoo.com/v8/finance/chart/DOWJONES?range=1d&interval=1d
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"^DJI","exchangeName":"DJI","instrumentType":"INDEX","firstTradeDate":694362600,"regularMarketTime":1647637670,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":34754.93,"chartPreviousClose":17823.07,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","start":1647849600,"end":1647869400,"gmtoffset":-14400},"regular":{"timezone":"EDT","start":1647869400,"end":1647892800,"gmtoffset":-14400},"post":{"timezone":"EDT","start":1647892800,"end":1647907200,"gmtoffset":-14400}},"dataGranularity":"1mo","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1420088400,1422766800],"indicators":{"quote":[{"close":[17164.94921875,18132.69921875],"volume":[2173260000,1751250000],"open":[17823.0703125,17169.990234375],"low":[17136.30078125,17037.759765625],"high":[17951.779296875,18244.380859375]}],"adjclose":[{"adjclose":[17164.94921875,18132.69921875]}]}}],"error":null}}'
string: '{"chart":{"result":null,"error":{"code":"Not Found","description":"No
data found, symbol may be delisted"}}}'
headers:
Age:
- '0'
Cache-Control:
- max-age=0, private
Connection:
- keep-alive
Expect-CT:
- max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
Expires:
- '-1'
Referrer-Policy:
- no-referrer-when-downgrade
Strict-Transport-Security:
- max-age=15552000
- max-age=31536000
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-XSS-Protection:
- 1; mode=block
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '1030'
- '108'
content-type:
- application/json;charset=utf-8
date:
- Mon, 21 Mar 2022 11:04:33 GMT
- Fri, 24 Feb 2023 16:00:33 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
- Origin
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
- finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '2'
- '3'
x-request-id:
- de69ead3-565b-4403-ba11-398acfad5c3d
- c5f42423-f9ec-47e8-9c17-0ae2df60d59e
x-yahoo-request-id:
- 16dtef9h3gmu1
- f0rn7qphvhnp1
y-rid:
- 16dtef9h3gmu1
- f0rn7qphvhnp1
status:
code: 200
message: OK
code: 404
message: Not Found
version: 1

View File

@@ -12,10 +12,69 @@ interactions:
- 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/v8/finance/chart/%5EIXIC?period1=1591394400&period2=1594072800&interval=1wk&includePrePost=False&events=div%2Csplits
uri: https://query2.finance.yahoo.com/v8/finance/chart/%5EIXIC?range=1d&interval=1d
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"^IXIC","exchangeName":"NIM","instrumentType":"INDEX","firstTradeDate":34612200,"regularMarketTime":1647638159,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":13893.837,"chartPreviousClose":9814.08,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","end":1647869400,"start":1647849600,"gmtoffset":-14400},"regular":{"timezone":"EDT","end":1647892800,"start":1647869400,"gmtoffset":-14400},"post":{"timezone":"EDT","end":1647907200,"start":1647892800,"gmtoffset":-14400}},"dataGranularity":"1wk","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1590984000,1591588800,1592193600,1592798400,1593403200,1594008000],"indicators":{"quote":[{"volume":[6572850000,26190570000,23693060000,27718740000,17393620000,4529480000],"low":[9685.349609375,9413.6201171875,9403.0,9749.0703125,9663.6103515625,10354.98046875],"high":[9845.6904296875,10086.8896484375,10053.91015625,10221.849609375,10310.3603515625,10462.0498046875],"close":[9814.080078125,9588.8095703125,9946.1201171875,9757.2197265625,10207.6298828125,10433.650390625],"open":[9703.5400390625,9823.4404296875,9426.900390625,9945.490234375,9771.7197265625,10360.3798828125]}],"adjclose":[{"adjclose":[9814.080078125,9588.8095703125,9946.1201171875,9757.2197265625,10207.6298828125,10433.650390625]}]}}],"error":null}}'
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"^IXIC","exchangeName":"NIM","instrumentType":"INDEX","firstTradeDate":34612200,"regularMarketTime":1677254424,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":11346.033,"chartPreviousClose":11590.401,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1677229200,"end":1677249000,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1677249000,"end":1677272400,"gmtoffset":-18000},"post":{"timezone":"EST","start":1677272400,"end":1677286800,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1677254424],"indicators":{"quote":[{"volume":[1281909000],"close":[11346.033203125],"high":[11434.3642578125],"low":[11334.4658203125],"open":[11404.2001953125]}],"adjclose":[{"adjclose":[11346.033203125]}]}}],"error":null}}'
headers:
Age:
- '4'
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=31536000
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-XSS-Protection:
- 1; mode=block
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '941'
content-type:
- application/json;charset=utf-8
date:
- Fri, 24 Feb 2023 16:00:29 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '2'
x-request-id:
- b0961b9f-ab9e-4e44-882e-d77971a49e58
x-yahoo-request-id:
- 2veavkhhvhnot
y-rid:
- 2veavkhhvhnot
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/v8/finance/chart/%5EIXIC?period1=1591416000&period2=1594094400&interval=1wk&includePrePost=False&events=div%2Csplits%2CcapitalGains
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"^IXIC","exchangeName":"NIM","instrumentType":"INDEX","firstTradeDate":34612200,"regularMarketTime":1677254431,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":11346.06,"chartPreviousClose":9814.08,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1677229200,"end":1677249000,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1677249000,"end":1677272400,"gmtoffset":-18000},"post":{"timezone":"EST","start":1677272400,"end":1677286800,"gmtoffset":-18000}},"dataGranularity":"1wk","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1591588800,1592193600,1592798400,1593403200,1594008000],"indicators":{"quote":[{"close":[9588.8095703125,9946.1201171875,9757.2197265625,10207.6298828125,10343.8896484375],"high":[10086.8896484375,10053.91015625,10221.849609375,10310.3603515625,10518.98046875],"low":[9413.6201171875,9403.0,9749.0703125,9663.6103515625,10337.98046875],"volume":[26377480000,23854180000,27940280000,17509830000,8907390000],"open":[9823.4404296875,9426.900390625,9945.490234375,9771.7197265625,10360.3798828125]}],"adjclose":[{"adjclose":[9588.8095703125,9946.1201171875,9757.2197265625,10207.6298828125,10343.8896484375]}]}}],"error":null}}'
headers:
Age:
- '0'
@@ -26,7 +85,7 @@ interactions:
Referrer-Policy:
- no-referrer-when-downgrade
Strict-Transport-Security:
- max-age=15552000
- max-age=31536000
X-Content-Type-Options:
- nosniff
X-Frame-Options:
@@ -36,25 +95,25 @@ interactions:
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '1436'
- '1336'
content-type:
- application/json;charset=utf-8
date:
- Mon, 21 Mar 2022 11:04:33 GMT
- Fri, 24 Feb 2023 16:00:33 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
- finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '2'
- '8'
x-request-id:
- ce51e5cf-c2fa-49d8-a0a6-e21425fc0b95
- 79fd3cef-06ee-4e5c-b10c-4f9bad009dca
x-yahoo-request-id:
- c4g1ttlh3gmu1
- 7i1ddclhvhnp1
y-rid:
- c4g1ttlh3gmu1
- 7i1ddclhvhnp1
status:
code: 200
message: OK

View File

@@ -12,30 +12,89 @@ interactions:
- 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/v8/finance/chart/%5EGSPC?period1=1640991600&period2=1643756400&interval=1d&includePrePost=False&events=div%2Csplits
uri: https://query2.finance.yahoo.com/v8/finance/chart/%5EGSPC?range=1d&interval=1d
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"^GSPC","exchangeName":"SNP","instrumentType":"INDEX","firstTradeDate":-1325583000,"regularMarketTime":1677254431,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":3948.55,"chartPreviousClose":4012.32,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1677249000,"start":1677229200,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1677272400,"start":1677249000,"gmtoffset":-18000},"post":{"timezone":"EST","end":1677286800,"start":1677272400,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1677254431],"indicators":{"quote":[{"high":[3973.239990234375],"low":[3943.080078125],"close":[3948.550048828125],"volume":[579373084],"open":[3973.239990234375]}],"adjclose":[{"adjclose":[3948.550048828125]}]}}],"error":null}}'
headers:
Age:
- '1'
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=31536000
X-Content-Type-Options:
- nosniff
X-Frame-Options:
- SAMEORIGIN
X-XSS-Protection:
- 1; mode=block
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '943'
content-type:
- application/json;charset=utf-8
date:
- Fri, 24 Feb 2023 16:00:32 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
x-envoy-decorator-operation:
- finance-chart-api--mtls-baseline-production-bf1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '3'
x-request-id:
- 1151c690-d755-4dcd-b01d-bce1dd80ca9c
x-yahoo-request-id:
- 3athbr5hvhnp1
y-rid:
- 3athbr5hvhnp1
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/v8/finance/chart/%5EGSPC?period1=1641013200&period2=1643778000&interval=1d&includePrePost=False&events=div%2Csplits%2CcapitalGains
response:
body:
string: !!binary |
H4sIAAAAAAAAAO1WwW4bNxD9F51VluSQQzK3Ig7SHmoYtQu0MNxia61tNZLWXa2cuIb+PW9WXIl0
WuTWUy/UkBwO37x5w9XL7Pah6YfZm5dZ3253K1jXL7N1OzSydLvr+3Zz+zx7M/v58mw2n22f1390
K0x/e3958RYL7Sec39y35826xfLl+QUWl5vt0O/W7Wa4en6U5R/Oz979go27Zb8drvpm0Z41Aza+
MWS9j6S1nuP++92q6X9s+g/tcLWUeIZdYAocsH2/Hrq7u207yDHn5MQAp7+7jdzw7uyqQHOVNzKq
79Ztv7xtvj1vP/7+a9d/mL267AK78HOOSRk7P1By0bdPy263fbvqtrIZmJWJ89mjOH+/3ACHuI4M
jTktN/cXuKdbCHOPfSs/XyDcDiPbklh0iSWLdrPIC5zGtL7IdH/E+9WYOcQpZrLx32I+dtvhqwHz
+WPApIP954CIuGiG5n3fbATqchDZmIWQLTXBBOZTs1oufpL5Fko7bHsZzLrDSOPI42ieMVgZvAxG
y/g8iPO6+TS72R8EALDrR8QCOJ3YiJRgGmu1zSZp5slMNDkgFZdNzz5mM1o/OSRjJoeUQnawOroc
15qgc1zrDU+rrO20yjHlYDYEn4ORJpcdyNgJL1kdJgebKN9GMHJcYprwUrCC90YabQFdD12/lTr+
teukqdC/twfNXmfRahN8iMb6OZJm5XG9jz5RGBdICTRKmkcHrZVEz/4Mf+1S1I6juHMISlvQ4cHa
6BC0sqk4b0hpTtGCn/FEsKwIpKbA+YRPr0KwVbH08LjE6BSZ7AGFJ6uCP+67iKlNJ1SUgkqUEqp6
QOGMRienGHMA8qyc1yZ5OsxdwoGCFwJKf0KA0ryCZDxoOt3oHRe0oRRP3Wonj821xTNipO56LlXP
JkFF2h/MQCRHxaRgbF61IcWQfUGdPphgkbMpYsvHPKXx0RSHiFkOZscXZTRjoBzMhfGkmMn5aEbT
G2goB0sxiaRhOmRnQzYD1JcdiDXlVaEwZ5HYjSaS7x7bzSi34JXVCSiyuEJUKIkhDgcxgL+S5hBR
t6QtudGdoUUQenJn1BW9O+nEe0WAm5051bGDjVDutA2Sa6HjO1LdBUlZd5z6GGtRehdq2ULZCklX
kiJTCJ3Qa1wCcjoqV4ksVr1FJM1ZqhaqC0UvQTzI4XgFiF51Hw9t7dWYpAe/nNLUasEpqd9R5tgC
guIGQFP21EjSeaEkoeKEKdbh8N6pUJSXfd37bNwIy3NU5TkIFLI4zQFUpbIbU1lYa63Ca2pMptHG
V68BQUSh7H4NmuCXLHr8hA5JK11dGyGJU41B58Py/mHkM7KShioeyaqS0cQKUoAuK2KsV4VUgq7z
40A1kgBo5fMUXKzud/U2o9zVvNYuG1O9TfgC1YS5hK6rmDCvxY0Q5dSTsuUDiyKUQnHyHuMDa1yu
Gb5/Kpad6yENN3XbzR5cN4s/p8/SSzn5/xv1H32j9jd7qUPb9x3+R+I/2mq//wwCtIM0/wsAAA==
H4sIAAAAAAAAAO1WTW/jNhD9Lzq7LMnh8GNvxWax7aGB0aRAiyAtVFtJ3LUtV5Kzmwb+7/soUTGZ
bbGn3nqhhuRwPt68IfVcrR7qbqjePFdd0x+3kG6eq10z1HFpdey6Zr96qt5UP19dVIuqf9r90W4x
/e391fItFppPOL+/by7rXYPlq8slFjf7fuiOu2Y/XD8d4vIPlxfvfsHG3abrh+uuXjcX9YCNbxRp
Zk9SygX83x+3dfdj3X1ohutNtKesc5qNIb2o7ndDe3fXN0M85scTA5T+bvfRw7ur6yya67SRovpu
13SbVf3tZfPx91/b7kP1ytkSu9CjYLxgt5ggWXbN46Y99m+3bY9N46wVyi+qQ1T+frNHHIhqQmjM
abO/X8JPu47IHbomfr6IsB9GtMfEdNAxi2a/TgsmjGl9kenpJd6v2kwmzjax9G82D20/fNVgOn82
6K3/Z4OwuK6H+n1X72OomyHSRq0j2LEmmEB8rLeb9U9x3oNp0zbHQe1ajDSOdhzVEwYdB46DknF8
GqLyrv5U3Z4mAiDY3QG2lDVKaxkhjSJJa2cxjASLonHBJJEt+yR6zbNCUGpWCMElBS29SXa1cjLZ
1azsvGqlnletD8mYdo6TMZJkkgIprZICaelmBR0oeSMIyS5ZmuMlNAIUbmN3rUHmoe36WLy/jm3s
JDTtaiLqDXK0guGNPQdyvMACiRgJBWl1nEspojHnVZxa6EsTvDTWR3VUWUiN7BkgjQpOCh2y84qE
tMFrwDGecNoKAobB2XSCwysTVgufazCcKBm8JT1FwaSF45d94zHV4RwVBScChYAiTlEYJYXSwftk
gNgKw1IFpmluAg5I5TjlSYiSzxGgEq9CUgyYzh7Z2Aw2IN8emv0IsPMCUSiybsofR3LLziPUIDWZ
EX4L+GHjrG6RCtg5Q8MsiIJPyjaUttFxKNa87YjK2loqfQFFdOw8Ze/LOrBxZaVQTEGuRJFUVlvC
vWfzgIz0whS4+oJORPGizAsFoF1GH1YBOby4ALDb9uOIKwNXG8LMKmeEBldfKooteM4sIyShz5yJ
JHN58gUWlnxpDp0snAzBygQllzS3yojRjvUiP8cEvWyOQEXIiRfygmqtBe4JpRJ82r8iPoE8Lie6
BDzQCxp0PkeHpIUs3HpQ4VxbwPiwuX+YL4CiZF75IgYHAhZIaBYZJ5wsE7KOStcOseSt5/Bwxlfc
zdNy21ou5yVJrVJF3+EyLREyAe1VpK5esxgm8imT0PnlAdRzZph41+CtUCYVCVe58HmLMrhg5rYC
tI/t9hj/JW7Ik4pY4FaGbcJzMIreA/RJ1IG1n0TlFatJZIVJWkXnh0mUuOaSMTwnjiYRL4BJCkB2
9AAR/IyvxegYPTg5xt9TUJOCDYBrcsEKFyEnBdB8OsbIV0+6LJFFSCKQTpF5ZcefMXl7Qs71+s/5
TXnOJ/8/MP/NA3O6PUXYm65r8aOHn6jt6fQZST2vJ6ALAAA=
headers:
Age:
- '0'
@@ -46,7 +105,7 @@ interactions:
Referrer-Policy:
- no-referrer-when-downgrade
Strict-Transport-Security:
- max-age=15552000
- max-age=31536000
X-Content-Type-Options:
- nosniff
X-Frame-Options:
@@ -58,25 +117,25 @@ interactions:
content-encoding:
- gzip
content-length:
- '1138'
- '1118'
content-type:
- application/json;charset=utf-8
date:
- Mon, 21 Mar 2022 11:04:33 GMT
- Fri, 24 Feb 2023 16:00:33 GMT
server:
- ATS
vary:
- Origin,Accept-Encoding
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
- finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '3'
- '4'
x-request-id:
- cdf4cc2c-b308-4c63-ba32-08cb56153f0e
- 98131962-ad56-459c-a7a0-05a51e54f38c
x-yahoo-request-id:
- 1bd3i4hh3gmu1
- 47l9j5thvhnp1
y-rid:
- 1bd3i4hh3gmu1
- 47l9j5thvhnp1
status:
code: 200
message: OK

View File

@@ -82,35 +82,6 @@ def test_load_data(func, kwargs_dict, recorder):
recorder.capture(result_df)
@pytest.mark.skip(reason="Date needs to be mocked.")
@pytest.mark.vcr
@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 == 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", ["2021-07-17"])
def test_yield_curve_weekend(date):
result_df, returned_date = fred_model.get_yield_curve(date)
assert date == returned_date
assert result_df.empty
@pytest.mark.skip(reason="Date needs to be mocked.")
@pytest.mark.vcr
@pytest.mark.parametrize("date", [None])
def test_yield_curve_none(date, recorder):
result_df, returned_date = fred_model.get_yield_curve(date)
assert returned_date.strftime("%Y-%m-%d") == "2022-03-21"
assert not result_df.empty
recorder.capture(result_df)
@pytest.mark.vcr
@pytest.mark.parametrize(
"func, kwargs_dict",

View File

@@ -2,7 +2,6 @@
futures display a futures and commodities overview [WallStreetJournal, Finviz]
map S&P500 index stocks map [Finviz]
bigmac The Economist Big Mac index [Nasdaq]
ycrv show sovereign yield curves [FRED]
events show economic calendar [Nasdaq]
edebt show external debt statistics for various countries [Wikipedia]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,479 @@
interactions:
- request:
body: null
headers:
Connection:
- close
Host:
- sdw.ecb.europa.eu
User-Agent:
- Python-urllib/3.9
method: GET
uri: https://sdw.ecb.europa.eu/quickviewexport.do?trans=N&start=2022-010&end=2022-013&SERIES_KEY=EST.B.EU000A2X2A25.WT&type=csv
response:
body:
string: "Data Source in SDW: null\r\n,EST.B.EU000A2X2A25.WT\r\n,Euro short-term
rate - Volume-weighted trimmed mean rate - Unsecured - Overnight - Borrowing
- Financial corporations\r\nCollection:,Average of observations through period
(A)\r\nPeriod\\Unit:,[Percent ]\r\n,,obs. status\r\n2023-02-20,2.400,Normal
value (A)\r\n2023-02-17,2.398,Normal value (A)\r\n2023-02-16,2.400,Normal
value (A)\r\n2023-02-15,2.405,Normal value (A)\r\n2023-02-14,2.400,Normal
value (A)\r\n2023-02-13,2.400,Normal value (A)\r\n2023-02-10,2.401,Normal
value (A)\r\n2023-02-09,2.401,Normal value (A)\r\n2023-02-08,2.401,Normal
value (A)\r\n2023-02-07,1.902,Normal value (A)\r\n2023-02-06,1.901,Normal
value (A)\r\n2023-02-03,1.898,Normal value (A)\r\n2023-02-02,1.902,Normal
value (A)\r\n2023-02-01,1.901,Normal value (A)\r\n2023-01-31,1.894,Normal
value (A)\r\n2023-01-30,1.904,Normal value (A)\r\n2023-01-27,1.906,Normal
value (A)\r\n2023-01-26,1.904,Normal value (A)\r\n2023-01-25,1.904,Normal
value (A)\r\n2023-01-24,1.904,Normal value (A)\r\n2023-01-23,1.902,Normal
value (A)\r\n2023-01-20,1.903,Normal value (A)\r\n2023-01-19,1.903,Normal
value (A)\r\n2023-01-18,1.902,Normal value (A)\r\n2023-01-17,1.901,Normal
value (A)\r\n2023-01-16,1.902,Normal value (A)\r\n2023-01-13,1.901,Normal
value (A)\r\n2023-01-12,1.900,Normal value (A)\r\n2023-01-11,1.900,Normal
value (A)\r\n2023-01-10,1.900,Normal value (A)\r\n2023-01-09,1.900,Normal
value (A)\r\n2023-01-06,1.898,Normal value (A)\r\n2023-01-05,1.900,Normal
value (A)\r\n2023-01-04,1.904,Normal value (A)\r\n2023-01-03,1.904,Normal
value (A)\r\n2023-01-02,1.906,Normal value (A)\r\n2022-12-30,1.890,Normal
value (A)\r\n2022-12-29,1.905,Normal value (A)\r\n2022-12-28,1.906,Normal
value (A)\r\n2022-12-27,1.906,Normal value (A)\r\n2022-12-23,1.907,Normal
value (A)\r\n2022-12-22,1.904,Normal value (A)\r\n2022-12-21,1.902,Normal
value (A)\r\n2022-12-20,1.403,Normal value (A)\r\n2022-12-19,1.403,Normal
value (A)\r\n2022-12-16,1.402,Normal value (A)\r\n2022-12-15,1.403,Normal
value (A)\r\n2022-12-14,1.402,Normal value (A)\r\n2022-12-13,1.400,Normal
value (A)\r\n2022-12-12,1.400,Normal value (A)\r\n2022-12-09,1.400,Normal
value (A)\r\n2022-12-08,1.400,Normal value (A)\r\n2022-12-07,1.399,Normal
value (A)\r\n2022-12-06,1.406,Normal value (A)\r\n2022-12-05,1.398,Normal
value (A)\r\n2022-12-02,1.400,Normal value (A)\r\n2022-12-01,1.400,Normal
value (A)\r\n2022-11-30,1.391,Normal value (A)\r\n2022-11-29,1.402,Normal
value (A)\r\n2022-11-28,1.403,Normal value (A)\r\n2022-11-25,1.403,Normal
value (A)\r\n2022-11-24,1.405,Normal value (A)\r\n2022-11-23,1.405,Normal
value (A)\r\n2022-11-22,1.404,Normal value (A)\r\n2022-11-21,1.403,Normal
value (A)\r\n2022-11-18,1.403,Normal value (A)\r\n2022-11-17,1.402,Normal
value (A)\r\n2022-11-16,1.401,Normal value (A)\r\n2022-11-15,1.400,Normal
value (A)\r\n2022-11-14,1.401,Normal value (A)\r\n2022-11-11,1.404,Normal
value (A)\r\n2022-11-10,1.402,Normal value (A)\r\n2022-11-09,1.400,Normal
value (A)\r\n2022-11-08,1.400,Normal value (A)\r\n2022-11-07,1.400,Normal
value (A)\r\n2022-11-04,1.401,Normal value (A)\r\n2022-11-03,1.403,Normal
value (A)\r\n2022-11-02,1.403,Normal value (A)\r\n2022-11-01,0.659,Normal
value (A)\r\n2022-10-31,0.648,Normal value (A)\r\n2022-10-28,0.656,Normal
value (A)\r\n2022-10-27,0.657,Normal value (A)\r\n2022-10-26,0.656,Normal
value (A)\r\n2022-10-25,0.656,Normal value (A)\r\n2022-10-24,0.658,Normal
value (A)\r\n2022-10-21,0.657,Normal value (A)\r\n2022-10-20,0.656,Normal
value (A)\r\n2022-10-19,0.656,Normal value (A)\r\n2022-10-18,0.657,Normal
value (A)\r\n2022-10-17,0.658,Normal value (A)\r\n2022-10-14,0.657,Normal
value (A)\r\n2022-10-13,0.658,Normal value (A)\r\n2022-10-12,0.658,Normal
value (A)\r\n2022-10-11,0.657,Normal value (A)\r\n2022-10-10,0.655,Normal
value (A)\r\n2022-10-07,0.656,Normal value (A)\r\n2022-10-06,0.655,Normal
value (A)\r\n2022-10-05,0.652,Normal value (A)\r\n2022-10-04,0.657,Normal
value (A)\r\n2022-10-03,0.656,Normal value (A)\r\n2022-09-30,0.642,Normal
value (A)\r\n2022-09-29,0.661,Normal value (A)\r\n2022-09-28,0.662,Normal
value (A)\r\n2022-09-27,0.662,Normal value (A)\r\n2022-09-26,0.663,Normal
value (A)\r\n2022-09-23,0.662,Normal value (A)\r\n2022-09-22,0.661,Normal
value (A)\r\n2022-09-21,0.661,Normal value (A)\r\n2022-09-20,0.659,Normal
value (A)\r\n2022-09-19,0.657,Normal value (A)\r\n2022-09-16,0.660,Normal
value (A)\r\n2022-09-15,0.660,Normal value (A)\r\n2022-09-14,0.662,Normal
value (A)\r\n2022-09-13,-0.083,Normal value (A)\r\n2022-09-12,-0.086,Normal
value (A)\r\n2022-09-09,-0.085,Normal value (A)\r\n2022-09-08,-0.086,Normal
value (A)\r\n2022-09-07,-0.076,Normal value (A)\r\n2022-09-06,-0.085,Normal
value (A)\r\n2022-09-05,-0.087,Normal value (A)\r\n2022-09-02,-0.083,Normal
value (A)\r\n2022-09-01,-0.084,Normal value (A)\r\n2022-08-31,-0.091,Normal
value (A)\r\n2022-08-30,-0.084,Normal value (A)\r\n2022-08-29,-0.081,Normal
value (A)\r\n2022-08-26,-0.080,Normal value (A)\r\n2022-08-25,-0.080,Normal
value (A)\r\n2022-08-24,-0.082,Normal value (A)\r\n2022-08-23,-0.080,Normal
value (A)\r\n2022-08-22,-0.082,Normal value (A)\r\n2022-08-19,-0.084,Normal
value (A)\r\n2022-08-18,-0.084,Normal value (A)\r\n2022-08-17,-0.087,Normal
value (A)\r\n2022-08-16,-0.087,Normal value (A)\r\n2022-08-15,-0.088,Normal
value (A)\r\n2022-08-12,-0.088,Normal value (A)\r\n2022-08-11,-0.085,Normal
value (A)\r\n2022-08-10,-0.086,Normal value (A)\r\n2022-08-09,-0.085,Normal
value (A)\r\n2022-08-08,-0.085,Normal value (A)\r\n2022-08-05,-0.085,Normal
value (A)\r\n2022-08-04,-0.084,Normal value (A)\r\n2022-08-03,-0.087,Normal
value (A)\r\n2022-08-02,-0.087,Normal value (A)\r\n2022-08-01,-0.088,Normal
value (A)\r\n2022-07-29,-0.091,Normal value (A)\r\n2022-07-28,-0.087,Normal
value (A)\r\n2022-07-27,-0.085,Normal value (A)\r\n2022-07-26,-0.581,Normal
value (A)\r\n2022-07-25,-0.583,Normal value (A)\r\n2022-07-22,-0.582,Normal
value (A)\r\n2022-07-21,-0.584,Normal value (A)\r\n2022-07-20,-0.582,Normal
value (A)\r\n2022-07-19,-0.583,Normal value (A)\r\n2022-07-18,-0.582,Normal
value (A)\r\n2022-07-15,-0.582,Normal value (A)\r\n2022-07-14,-0.582,Normal
value (A)\r\n2022-07-13,-0.581,Normal value (A)\r\n2022-07-12,-0.580,Normal
value (A)\r\n2022-07-11,-0.580,Normal value (A)\r\n2022-07-08,-0.579,Normal
value (A)\r\n2022-07-07,-0.579,Normal value (A)\r\n2022-07-06,-0.580,Normal
value (A)\r\n2022-07-05,-0.580,Normal value (A)\r\n2022-07-04,-0.580,Normal
value (A)\r\n2022-07-01,-0.580,Normal value (A)\r\n2022-06-30,-0.591,Normal
value (A)\r\n2022-06-29,-0.578,Normal value (A)\r\n2022-06-28,-0.581,Normal
value (A)\r\n2022-06-27,-0.579,Normal value (A)\r\n2022-06-24,-0.580,Normal
value (A)\r\n2022-06-23,-0.578,Normal value (A)\r\n2022-06-22,-0.579,Normal
value (A)\r\n2022-06-21,-0.582,Normal value (A)\r\n2022-06-20,-0.581,Normal
value (A)\r\n2022-06-17,-0.582,Normal value (A)\r\n2022-06-16,-0.582,Normal
value (A)\r\n2022-06-15,-0.580,Normal value (A)\r\n2022-06-14,-0.578,Normal
value (A)\r\n2022-06-13,-0.580,Normal value (A)\r\n2022-06-10,-0.581,Normal
value (A)\r\n2022-06-09,-0.582,Normal value (A)\r\n2022-06-08,-0.582,Normal
value (A)\r\n2022-06-07,-0.583,Normal value (A)\r\n2022-06-06,-0.590,Normal
value (A)\r\n2022-06-03,-0.587,Normal value (A)\r\n2022-06-02,-0.585,Normal
value (A)\r\n2022-06-01,-0.582,Normal value (A)\r\n2022-05-31,-0.589,Normal
value (A)\r\n2022-05-30,-0.586,Normal value (A)\r\n2022-05-27,-0.585,Normal
value (A)\r\n2022-05-26,-0.590,Normal value (A)\r\n2022-05-25,-0.587,Normal
value (A)\r\n2022-05-24,-0.587,Normal value (A)\r\n2022-05-23,-0.586,Normal
value (A)\r\n2022-05-20,-0.585,Normal value (A)\r\n2022-05-19,-0.585,Normal
value (A)\r\n2022-05-18,-0.585,Normal value (A)\r\n2022-05-17,-0.585,Normal
value (A)\r\n2022-05-16,-0.585,Normal value (A)\r\n2022-05-13,-0.586,Normal
value (A)\r\n2022-05-12,-0.577,Normal value (A)\r\n2022-05-11,-0.584,Normal
value (A)\r\n2022-05-10,-0.584,Normal value (A)\r\n2022-05-09,-0.586,Normal
value (A)\r\n2022-05-06,-0.585,Normal value (A)\r\n2022-05-05,-0.585,Normal
value (A)\r\n2022-05-04,-0.585,Normal value (A)\r\n2022-05-03,-0.579,Normal
value (A)\r\n2022-05-02,-0.583,Normal value (A)\r\n2022-04-29,-0.586,Normal
value (A)\r\n2022-04-28,-0.583,Normal value (A)\r\n2022-04-27,-0.583,Normal
value (A)\r\n2022-04-26,-0.582,Normal value (A)\r\n2022-04-25,-0.585,Normal
value (A)\r\n2022-04-22,-0.583,Normal value (A)\r\n2022-04-21,-0.585,Normal
value (A)\r\n2022-04-20,-0.583,Normal value (A)\r\n2022-04-19,-0.580,Normal
value (A)\r\n2022-04-14,-0.586,Normal value (A)\r\n2022-04-13,-0.585,Normal
value (A)\r\n2022-04-12,-0.583,Normal value (A)\r\n2022-04-11,-0.584,Normal
value (A)\r\n2022-04-08,-0.583,Normal value (A)\r\n2022-04-07,-0.582,Normal
value (A)\r\n2022-04-06,-0.584,Normal value (A)\r\n2022-04-05,-0.586,Normal
value (A)\r\n2022-04-04,-0.585,Normal value (A)\r\n2022-04-01,-0.582,Normal
value (A)\r\n2022-03-31,-0.593,Normal value (A)\r\n2022-03-30,-0.579,Normal
value (A)\r\n2022-03-29,-0.579,Normal value (A)\r\n2022-03-28,-0.580,Normal
value (A)\r\n2022-03-25,-0.581,Normal value (A)\r\n2022-03-24,-0.579,Normal
value (A)\r\n2022-03-23,-0.578,Normal value (A)\r\n2022-03-22,-0.578,Normal
value (A)\r\n2022-03-21,-0.578,Normal value (A)\r\n2022-03-18,-0.578,Normal
value (A)\r\n2022-03-17,-0.578,Normal value (A)\r\n2022-03-16,-0.577,Normal
value (A)\r\n2022-03-15,-0.573,Normal value (A)\r\n2022-03-14,-0.577,Normal
value (A)\r\n2022-03-11,-0.577,Normal value (A)\r\n2022-03-10,-0.576,Normal
value (A)\r\n2022-03-09,-0.580,Normal value (A)\r\n2022-03-08,-0.579,Normal
value (A)\r\n2022-03-07,-0.579,Normal value (A)\r\n2022-03-04,-0.577,Normal
value (A)\r\n2022-03-03,-0.579,Normal value (A)\r\n2022-03-02,-0.578,Normal
value (A)\r\n2022-03-01,-0.577,Normal value (A)\r\n2022-02-28,-0.580,Normal
value (A)\r\n2022-02-25,-0.575,Normal value (A)\r\n2022-02-24,-0.576,Normal
value (A)\r\n2022-02-23,-0.576,Normal value (A)\r\n2022-02-22,-0.575,Normal
value (A)\r\n2022-02-21,-0.576,Normal value (A)\r\n2022-02-18,-0.576,Normal
value (A)\r\n2022-02-17,-0.576,Normal value (A)\r\n2022-02-16,-0.576,Normal
value (A)\r\n2022-02-15,-0.576,Normal value (A)\r\n2022-02-14,-0.578,Normal
value (A)\r\n2022-02-11,-0.578,Normal value (A)\r\n2022-02-10,-0.572,Normal
value (A)\r\n2022-02-09,-0.578,Normal value (A)\r\n2022-02-08,-0.574,Normal
value (A)\r\n2022-02-07,-0.578,Normal value (A)\r\n2022-02-04,-0.578,Normal
value (A)\r\n2022-02-03,-0.577,Normal value (A)\r\n2022-02-02,-0.578,Normal
value (A)\r\n2022-02-01,-0.578,Normal value (A)\r\n2022-01-31,-0.579,Normal
value (A)\r\n2022-01-28,-0.573,Normal value (A)\r\n2022-01-27,-0.573,Normal
value (A)\r\n2022-01-26,-0.576,Normal value (A)\r\n2022-01-25,-0.578,Normal
value (A)\r\n2022-01-24,-0.579,Normal value (A)\r\n2022-01-21,-0.579,Normal
value (A)\r\n2022-01-20,-0.579,Normal value (A)\r\n2022-01-19,-0.578,Normal
value (A)\r\n2022-01-18,-0.579,Normal value (A)\r\n2022-01-17,-0.578,Normal
value (A)\r\n2022-01-14,-0.578,Normal value (A)\r\n2022-01-13,-0.578,Normal
value (A)\r\n2022-01-12,-0.578,Normal value (A)\r\n2022-01-11,-0.579,Normal
value (A)\r\n2022-01-10,-0.579,Normal value (A)\r\n2022-01-07,-0.580,Normal
value (A)\r\n2022-01-06,-0.578,Normal value (A)\r\n2022-01-05,-0.578,Normal
value (A)\r\n2022-01-04,-0.578,Normal value (A)\r\n2022-01-03,-0.578,Normal
value (A)\r\n2021-12-31,-0.590,Normal value (A)\r\n2021-12-30,-0.580,Normal
value (A)\r\n2021-12-29,-0.578,Normal value (A)\r\n2021-12-28,-0.575,Normal
value (A)\r\n2021-12-27,-0.576,Normal value (A)\r\n2021-12-24,-0.580,Normal
value (A)\r\n2021-12-23,-0.576,Normal value (A)\r\n2021-12-22,-0.574,Normal
value (A)\r\n2021-12-21,-0.571,Normal value (A)\r\n2021-12-20,-0.576,Normal
value (A)\r\n2021-12-17,-0.576,Normal value (A)\r\n2021-12-16,-0.577,Normal
value (A)\r\n2021-12-15,-0.577,Normal value (A)\r\n2021-12-14,-0.577,Normal
value (A)\r\n2021-12-13,-0.579,Normal value (A)\r\n2021-12-10,-0.577,Normal
value (A)\r\n2021-12-09,-0.578,Normal value (A)\r\n2021-12-08,-0.577,Normal
value (A)\r\n2021-12-07,-0.577,Normal value (A)\r\n2021-12-06,-0.578,Normal
value (A)\r\n2021-12-03,-0.578,Normal value (A)\r\n2021-12-02,-0.575,Normal
value (A)\r\n2021-12-01,-0.574,Normal value (A)\r\n2021-11-30,-0.575,Normal
value (A)\r\n2021-11-29,-0.573,Normal value (A)\r\n2021-11-26,-0.573,Normal
value (A)\r\n2021-11-25,-0.573,Normal value (A)\r\n2021-11-24,-0.570,Normal
value (A)\r\n2021-11-23,-0.574,Normal value (A)\r\n2021-11-22,-0.573,Normal
value (A)\r\n2021-11-19,-0.573,Normal value (A)\r\n2021-11-18,-0.571,Normal
value (A)\r\n2021-11-17,-0.571,Normal value (A)\r\n2021-11-16,-0.571,Normal
value (A)\r\n2021-11-15,-0.569,Normal value (A)\r\n2021-11-12,-0.572,Normal
value (A)\r\n2021-11-11,-0.575,Normal value (A)\r\n2021-11-10,-0.576,Normal
value (A)\r\n2021-11-09,-0.575,Normal value (A)\r\n2021-11-08,-0.575,Normal
value (A)\r\n2021-11-05,-0.572,Normal value (A)\r\n2021-11-04,-0.573,Normal
value (A)\r\n2021-11-03,-0.574,Normal value (A)\r\n2021-11-02,-0.569,Normal
value (A)\r\n2021-11-01,-0.579,Normal value (A)\r\n2021-10-29,-0.578,Normal
value (A)\r\n2021-10-28,-0.573,Normal value (A)\r\n2021-10-27,-0.573,Normal
value (A)\r\n2021-10-26,-0.570,Normal value (A)\r\n2021-10-25,-0.571,Normal
value (A)\r\n2021-10-22,-0.569,Normal value (A)\r\n2021-10-21,-0.573,Normal
value (A)\r\n2021-10-20,-0.571,Normal value (A)\r\n2021-10-19,-0.573,Normal
value (A)\r\n2021-10-18,-0.574,Normal value (A)\r\n2021-10-15,-0.572,Normal
value (A)\r\n2021-10-14,-0.570,Normal value (A)\r\n2021-10-13,-0.569,Normal
value (A)\r\n2021-10-12,-0.562,Normal value (A)\r\n2021-10-11,-0.570,Normal
value (A)\r\n2021-10-08,-0.568,Normal value (A)\r\n2021-10-07,-0.568,Normal
value (A)\r\n2021-10-06,-0.569,Normal value (A)\r\n2021-10-05,-0.569,Normal
value (A)\r\n2021-10-04,-0.569,Normal value (A)\r\n2021-10-01,-0.571,Normal
value (A)\r\n2021-09-30,-0.580,Normal value (A)\r\n2021-09-29,-0.572,Normal
value (A)\r\n2021-09-28,-0.573,Normal value (A)\r\n2021-09-27,-0.571,Normal
value (A)\r\n2021-09-24,-0.569,Normal value (A)\r\n2021-09-23,-0.570,Normal
value (A)\r\n2021-09-22,-0.566,Normal value (A)\r\n2021-09-21,-0.571,Normal
value (A)\r\n2021-09-20,-0.566,Normal value (A)\r\n2021-09-17,-0.571,Normal
value (A)\r\n2021-09-16,-0.567,Normal value (A)\r\n2021-09-15,-0.573,Normal
value (A)\r\n2021-09-14,-0.568,Normal value (A)\r\n2021-09-13,-0.571,Normal
value (A)\r\n2021-09-10,-0.570,Normal value (A)\r\n2021-09-09,-0.570,Normal
value (A)\r\n2021-09-08,-0.569,Normal value (A)\r\n2021-09-07,-0.569,Normal
value (A)\r\n2021-09-06,-0.569,Normal value (A)\r\n2021-09-03,-0.568,Normal
value (A)\r\n2021-09-02,-0.569,Normal value (A)\r\n2021-09-01,-0.569,Normal
value (A)\r\n2021-08-31,-0.570,Normal value (A)\r\n2021-08-30,-0.568,Normal
value (A)\r\n2021-08-27,-0.570,Normal value (A)\r\n2021-08-26,-0.570,Normal
value (A)\r\n2021-08-25,-0.564,Normal value (A)\r\n2021-08-24,-0.567,Normal
value (A)\r\n2021-08-23,-0.568,Normal value (A)\r\n2021-08-20,-0.567,Normal
value (A)\r\n2021-08-19,-0.567,Normal value (A)\r\n2021-08-18,-0.567,Normal
value (A)\r\n2021-08-17,-0.568,Normal value (A)\r\n2021-08-16,-0.569,Normal
value (A)\r\n2021-08-13,-0.569,Normal value (A)\r\n2021-08-12,-0.568,Normal
value (A)\r\n2021-08-11,-0.567,Normal value (A)\r\n2021-08-10,-0.567,Normal
value (A)\r\n2021-08-09,-0.568,Normal value (A)\r\n2021-08-06,-0.569,Normal
value (A)\r\n2021-08-05,-0.566,Normal value (A)\r\n2021-08-04,-0.570,Normal
value (A)\r\n2021-08-03,-0.570,Normal value (A)\r\n2021-08-02,-0.565,Normal
value (A)\r\n2021-07-30,-0.571,Normal value (A)\r\n2021-07-29,-0.567,Normal
value (A)\r\n2021-07-28,-0.567,Normal value (A)\r\n2021-07-27,-0.563,Normal
value (A)\r\n2021-07-26,-0.567,Normal value (A)\r\n2021-07-23,-0.567,Normal
value (A)\r\n2021-07-22,-0.563,Normal value (A)\r\n2021-07-21,-0.568,Normal
value (A)\r\n2021-07-20,-0.567,Normal value (A)\r\n2021-07-19,-0.566,Normal
value (A)\r\n2021-07-16,-0.567,Normal value (A)\r\n2021-07-15,-0.566,Normal
value (A)\r\n2021-07-14,-0.566,Normal value (A)\r\n2021-07-13,-0.566,Normal
value (A)\r\n2021-07-12,-0.568,Normal value (A)\r\n2021-07-09,-0.566,Normal
value (A)\r\n2021-07-08,-0.566,Normal value (A)\r\n2021-07-07,-0.565,Normal
value (A)\r\n2021-07-06,-0.565,Normal value (A)\r\n2021-07-05,-0.566,Normal
value (A)\r\n2021-07-02,-0.565,Normal value (A)\r\n2021-07-01,-0.565,Normal
value (A)\r\n2021-06-30,-0.581,Normal value (A)\r\n2021-06-29,-0.568,Normal
value (A)\r\n2021-06-28,-0.566,Normal value (A)\r\n2021-06-25,-0.565,Normal
value (A)\r\n2021-06-24,-0.565,Normal value (A)\r\n2021-06-23,-0.563,Normal
value (A)\r\n2021-06-22,-0.564,Normal value (A)\r\n2021-06-21,-0.564,Normal
value (A)\r\n2021-06-18,-0.563,Normal value (A)\r\n2021-06-17,-0.563,Normal
value (A)\r\n2021-06-16,-0.562,Normal value (A)\r\n2021-06-15,-0.561,Normal
value (A)\r\n2021-06-14,-0.565,Normal value (A)\r\n2021-06-11,-0.566,Normal
value (A)\r\n2021-06-10,-0.561,Normal value (A)\r\n2021-06-09,-0.564,Normal
value (A)\r\n2021-06-08,-0.563,Normal value (A)\r\n2021-06-07,-0.564,Normal
value (A)\r\n2021-06-04,-0.563,Normal value (A)\r\n2021-06-03,-0.563,Normal
value (A)\r\n2021-06-02,-0.563,Normal value (A)\r\n2021-06-01,-0.564,Normal
value (A)\r\n2021-05-31,-0.571,Normal value (A)\r\n2021-05-28,-0.566,Normal
value (A)\r\n2021-05-27,-0.564,Normal value (A)\r\n2021-05-26,-0.565,Normal
value (A)\r\n2021-05-25,-0.565,Normal value (A)\r\n2021-05-24,-0.566,Normal
value (A)\r\n2021-05-21,-0.564,Normal value (A)\r\n2021-05-20,-0.563,Normal
value (A)\r\n2021-05-19,-0.564,Normal value (A)\r\n2021-05-18,-0.558,Normal
value (A)\r\n2021-05-17,-0.565,Normal value (A)\r\n2021-05-14,-0.564,Normal
value (A)\r\n2021-05-13,-0.564,Normal value (A)\r\n2021-05-12,-0.564,Normal
value (A)\r\n2021-05-11,-0.564,Normal value (A)\r\n2021-05-10,-0.567,Normal
value (A)\r\n2021-05-07,-0.563,Normal value (A)\r\n2021-05-06,-0.565,Normal
value (A)\r\n2021-05-05,-0.566,Normal value (A)\r\n2021-05-04,-0.564,Normal
value (A)\r\n2021-05-03,-0.567,Normal value (A)\r\n2021-04-30,-0.569,Normal
value (A)\r\n2021-04-29,-0.566,Normal value (A)\r\n2021-04-28,-0.566,Normal
value (A)\r\n2021-04-27,-0.560,Normal value (A)\r\n2021-04-26,-0.567,Normal
value (A)\r\n2021-04-23,-0.565,Normal value (A)\r\n2021-04-22,-0.565,Normal
value (A)\r\n2021-04-21,-0.565,Normal value (A)\r\n2021-04-20,-0.567,Normal
value (A)\r\n2021-04-19,-0.567,Normal value (A)\r\n2021-04-16,-0.565,Normal
value (A)\r\n2021-04-15,-0.566,Normal value (A)\r\n2021-04-14,-0.560,Normal
value (A)\r\n2021-04-13,-0.563,Normal value (A)\r\n2021-04-12,-0.567,Normal
value (A)\r\n2021-04-09,-0.568,Normal value (A)\r\n2021-04-08,-0.570,Normal
value (A)\r\n2021-04-07,-0.567,Normal value (A)\r\n2021-04-06,-0.567,Normal
value (A)\r\n2021-04-01,-0.566,Normal value (A)\r\n2021-03-31,-0.574,Normal
value (A)\r\n2021-03-30,-0.570,Normal value (A)\r\n2021-03-29,-0.570,Normal
value (A)\r\n2021-03-26,-0.568,Normal value (A)\r\n2021-03-25,-0.564,Normal
value (A)\r\n2021-03-24,-0.564,Normal value (A)\r\n2021-03-23,-0.563,Normal
value (A)\r\n2021-03-22,-0.566,Normal value (A)\r\n2021-03-19,-0.565,Normal
value (A)\r\n2021-03-18,-0.566,Normal value (A)\r\n2021-03-17,-0.561,Normal
value (A)\r\n2021-03-16,-0.562,Normal value (A)\r\n2021-03-15,-0.564,Normal
value (A)\r\n2021-03-12,-0.562,Normal value (A)\r\n2021-03-11,-0.561,Normal
value (A)\r\n2021-03-10,-0.562,Normal value (A)\r\n2021-03-09,-0.560,Normal
value (A)\r\n2021-03-08,-0.558,Normal value (A)\r\n2021-03-05,-0.562,Normal
value (A)\r\n2021-03-04,-0.565,Normal value (A)\r\n2021-03-03,-0.565,Normal
value (A)\r\n2021-03-02,-0.565,Normal value (A)\r\n2021-03-01,-0.563,Normal
value (A)\r\n2021-02-26,-0.566,Normal value (A)\r\n2021-02-25,-0.564,Normal
value (A)\r\n2021-02-24,-0.564,Normal value (A)\r\n2021-02-23,-0.565,Normal
value (A)\r\n2021-02-22,-0.564,Normal value (A)\r\n2021-02-19,-0.563,Normal
value (A)\r\n2021-02-18,-0.562,Normal value (A)\r\n2021-02-17,-0.563,Normal
value (A)\r\n2021-02-16,-0.564,Normal value (A)\r\n2021-02-15,-0.563,Normal
value (A)\r\n2021-02-12,-0.564,Normal value (A)\r\n2021-02-11,-0.565,Normal
value (A)\r\n2021-02-10,-0.564,Normal value (A)\r\n2021-02-09,-0.564,Normal
value (A)\r\n2021-02-08,-0.563,Normal value (A)\r\n2021-02-05,-0.565,Normal
value (A)\r\n2021-02-04,-0.564,Normal value (A)\r\n2021-02-03,-0.558,Normal
value (A)\r\n2021-02-02,-0.564,Normal value (A)\r\n2021-02-01,-0.566,Normal
value (A)\r\n2021-01-29,-0.564,Normal value (A)\r\n2021-01-28,-0.561,Normal
value (A)\r\n2021-01-27,-0.563,Normal value (A)\r\n2021-01-26,-0.558,Normal
value (A)\r\n2021-01-25,-0.564,Normal value (A)\r\n2021-01-22,-0.561,Normal
value (A)\r\n2021-01-21,-0.562,Normal value (A)\r\n2021-01-20,-0.564,Normal
value (A)\r\n2021-01-19,-0.564,Normal value (A)\r\n2021-01-18,-0.565,Normal
value (A)\r\n2021-01-15,-0.566,Normal value (A)\r\n2021-01-14,-0.564,Normal
value (A)\r\n2021-01-13,-0.562,Normal value (A)\r\n2021-01-12,-0.563,Normal
value (A)\r\n2021-01-11,-0.564,Normal value (A)\r\n2021-01-08,-0.562,Normal
value (A)\r\n2021-01-07,-0.565,Normal value (A)\r\n2021-01-06,-0.566,Normal
value (A)\r\n2021-01-05,-0.563,Normal value (A)\r\n2021-01-04,-0.566,Normal
value (A)\r\n2020-12-31,-0.583,Normal value (A)\r\n2020-12-30,-0.555,Normal
value (A)\r\n2020-12-29,-0.557,Normal value (A)\r\n2020-12-28,-0.553,Normal
value (A)\r\n2020-12-24,-0.555,Normal value (A)\r\n2020-12-23,-0.559,Normal
value (A)\r\n2020-12-22,-0.558,Normal value (A)\r\n2020-12-21,-0.557,Normal
value (A)\r\n2020-12-18,-0.558,Normal value (A)\r\n2020-12-17,-0.556,Normal
value (A)\r\n2020-12-16,-0.557,Normal value (A)\r\n2020-12-15,-0.551,Normal
value (A)\r\n2020-12-14,-0.558,Normal value (A)\r\n2020-12-11,-0.557,Normal
value (A)\r\n2020-12-10,-0.556,Normal value (A)\r\n2020-12-09,-0.556,Normal
value (A)\r\n2020-12-08,-0.559,Normal value (A)\r\n2020-12-07,-0.555,Normal
value (A)\r\n2020-12-04,-0.555,Normal value (A)\r\n2020-12-03,-0.556,Normal
value (A)\r\n2020-12-02,-0.556,Normal value (A)\r\n2020-12-01,-0.557,Normal
value (A)\r\n2020-11-30,-0.560,Normal value (A)\r\n2020-11-27,-0.557,Normal
value (A)\r\n2020-11-26,-0.556,Normal value (A)\r\n2020-11-25,-0.554,Normal
value (A)\r\n2020-11-24,-0.556,Normal value (A)\r\n2020-11-23,-0.557,Normal
value (A)\r\n2020-11-20,-0.557,Normal value (A)\r\n2020-11-19,-0.557,Normal
value (A)\r\n2020-11-18,-0.557,Normal value (A)\r\n2020-11-17,-0.557,Normal
value (A)\r\n2020-11-16,-0.558,Normal value (A)\r\n2020-11-13,-0.556,Normal
value (A)\r\n2020-11-12,-0.548,Normal value (A)\r\n2020-11-11,-0.558,Normal
value (A)\r\n2020-11-10,-0.557,Normal value (A)\r\n2020-11-09,-0.558,Normal
value (A)\r\n2020-11-06,-0.558,Normal value (A)\r\n2020-11-05,-0.556,Normal
value (A)\r\n2020-11-04,-0.558,Normal value (A)\r\n2020-11-03,-0.553,Normal
value (A)\r\n2020-11-02,-0.555,Normal value (A)\r\n2020-10-30,-0.557,Normal
value (A)\r\n2020-10-29,-0.552,Normal value (A)\r\n2020-10-28,-0.555,Normal
value (A)\r\n2020-10-27,-0.554,Normal value (A)\r\n2020-10-26,-0.552,Normal
value (A)\r\n2020-10-23,-0.553,Normal value (A)\r\n2020-10-22,-0.554,Normal
value (A)\r\n2020-10-21,-0.552,Normal value (A)\r\n2020-10-20,-0.553,Normal
value (A)\r\n2020-10-19,-0.553,Normal value (A)\r\n2020-10-16,-0.553,Normal
value (A)\r\n2020-10-15,-0.556,Normal value (A)\r\n2020-10-14,-0.556,Normal
value (A)\r\n2020-10-13,-0.555,Normal value (A)\r\n2020-10-12,-0.556,Normal
value (A)\r\n2020-10-09,-0.553,Normal value (A)\r\n2020-10-08,-0.553,Normal
value (A)\r\n2020-10-07,-0.555,Normal value (A)\r\n2020-10-06,-0.556,Normal
value (A)\r\n2020-10-05,-0.555,Normal value (A)\r\n2020-10-02,-0.555,Normal
value (A)\r\n2020-10-01,-0.558,Normal value (A)\r\n2020-09-30,-0.570,Normal
value (A)\r\n2020-09-29,-0.556,Normal value (A)\r\n2020-09-28,-0.555,Normal
value (A)\r\n2020-09-25,-0.554,Normal value (A)\r\n2020-09-24,-0.553,Normal
value (A)\r\n2020-09-23,-0.551,Normal value (A)\r\n2020-09-22,-0.552,Normal
value (A)\r\n2020-09-21,-0.552,Normal value (A)\r\n2020-09-18,-0.552,Normal
value (A)\r\n2020-09-17,-0.553,Normal value (A)\r\n2020-09-16,-0.556,Normal
value (A)\r\n2020-09-15,-0.551,Normal value (A)\r\n2020-09-14,-0.555,Normal
value (A)\r\n2020-09-11,-0.553,Normal value (A)\r\n2020-09-10,-0.554,Normal
value (A)\r\n2020-09-09,-0.554,Normal value (A)\r\n2020-09-08,-0.553,Normal
value (A)\r\n2020-09-07,-0.551,Normal value (A)\r\n2020-09-04,-0.552,Normal
value (A)\r\n2020-09-03,-0.551,Normal value (A)\r\n2020-09-02,-0.555,Normal
value (A)\r\n2020-09-01,-0.554,Normal value (A)\r\n2020-08-31,-0.557,Normal
value (A)\r\n2020-08-28,-0.552,Normal value (A)\r\n2020-08-27,-0.552,Normal
value (A)\r\n2020-08-26,-0.554,Normal value (A)\r\n2020-08-25,-0.553,Normal
value (A)\r\n2020-08-24,-0.552,Normal value (A)\r\n2020-08-21,-0.554,Normal
value (A)\r\n2020-08-20,-0.553,Normal value (A)\r\n2020-08-19,-0.553,Normal
value (A)\r\n2020-08-18,-0.554,Normal value (A)\r\n2020-08-17,-0.553,Normal
value (A)\r\n2020-08-14,-0.549,Normal value (A)\r\n2020-08-13,-0.552,Normal
value (A)\r\n2020-08-12,-0.552,Normal value (A)\r\n2020-08-11,-0.552,Normal
value (A)\r\n2020-08-10,-0.554,Normal value (A)\r\n2020-08-07,-0.553,Normal
value (A)\r\n2020-08-06,-0.553,Normal value (A)\r\n2020-08-05,-0.552,Normal
value (A)\r\n2020-08-04,-0.551,Normal value (A)\r\n2020-08-03,-0.552,Normal
value (A)\r\n2020-07-31,-0.550,Normal value (A)\r\n2020-07-30,-0.552,Normal
value (A)\r\n2020-07-29,-0.553,Normal value (A)\r\n2020-07-28,-0.551,Normal
value (A)\r\n2020-07-27,-0.552,Normal value (A)\r\n2020-07-24,-0.551,Normal
value (A)\r\n2020-07-23,-0.550,Normal value (A)\r\n2020-07-22,-0.550,Normal
value (A)\r\n2020-07-21,-0.549,Normal value (A)\r\n2020-07-20,-0.551,Normal
value (A)\r\n2020-07-17,-0.551,Normal value (A)\r\n2020-07-16,-0.541,Normal
value (A)\r\n2020-07-15,-0.551,Normal value (A)\r\n2020-07-14,-0.551,Normal
value (A)\r\n2020-07-13,-0.552,Normal value (A)\r\n2020-07-10,-0.549,Normal
value (A)\r\n2020-07-09,-0.549,Normal value (A)\r\n2020-07-08,-0.549,Normal
value (A)\r\n2020-07-07,-0.550,Normal value (A)\r\n2020-07-06,-0.550,Normal
value (A)\r\n2020-07-03,-0.549,Normal value (A)\r\n2020-07-02,-0.548,Normal
value (A)\r\n2020-07-01,-0.548,Normal value (A)\r\n2020-06-30,-0.555,Normal
value (A)\r\n2020-06-29,-0.545,Normal value (A)\r\n2020-06-26,-0.547,Normal
value (A)\r\n2020-06-25,-0.547,Normal value (A)\r\n2020-06-24,-0.546,Normal
value (A)\r\n2020-06-23,-0.544,Normal value (A)\r\n2020-06-22,-0.545,Normal
value (A)\r\n2020-06-19,-0.546,Normal value (A)\r\n2020-06-18,-0.544,Normal
value (A)\r\n2020-06-17,-0.544,Normal value (A)\r\n2020-06-16,-0.546,Normal
value (A)\r\n2020-06-15,-0.547,Normal value (A)\r\n2020-06-12,-0.546,Normal
value (A)\r\n2020-06-11,-0.547,Normal value (A)\r\n2020-06-10,-0.548,Normal
value (A)\r\n2020-06-09,-0.542,Normal value (A)\r\n2020-06-08,-0.547,Normal
value (A)\r\n2020-06-05,-0.544,Normal value (A)\r\n2020-06-04,-0.545,Normal
value (A)\r\n2020-06-03,-0.543,Normal value (A)\r\n2020-06-02,-0.542,Normal
value (A)\r\n2020-06-01,-0.546,Normal value (A)\r\n2020-05-29,-0.540,Normal
value (A)\r\n2020-05-28,-0.541,Normal value (A)\r\n2020-05-27,-0.541,Normal
value (A)\r\n2020-05-26,-0.541,Normal value (A)\r\n2020-05-25,-0.540,Normal
value (A)\r\n2020-05-22,-0.539,Normal value (A)\r\n2020-05-21,-0.545,Normal
value (A)\r\n2020-05-20,-0.545,Normal value (A)\r\n2020-05-19,-0.542,Normal
value (A)\r\n2020-05-18,-0.542,Normal value (A)\r\n2020-05-15,-0.543,Normal
value (A)\r\n2020-05-14,-0.541,Normal value (A)\r\n2020-05-13,-0.542,Normal
value (A)\r\n2020-05-12,-0.543,Normal value (A)\r\n2020-05-11,-0.544,Normal
value (A)\r\n2020-05-08,-0.541,Normal value (A)\r\n2020-05-07,-0.541,Normal
value (A)\r\n2020-05-06,-0.542,Normal value (A)\r\n2020-05-05,-0.539,Normal
value (A)\r\n2020-05-04,-0.543,Normal value (A)\r\n2020-04-30,-0.531,Normal
value (A)\r\n2020-04-29,-0.543,Normal value (A)\r\n2020-04-28,-0.541,Normal
value (A)\r\n2020-04-27,-0.539,Normal value (A)\r\n2020-04-24,-0.539,Normal
value (A)\r\n2020-04-23,-0.539,Normal value (A)\r\n2020-04-22,-0.539,Normal
value (A)\r\n2020-04-21,-0.541,Normal value (A)\r\n2020-04-20,-0.541,Normal
value (A)\r\n2020-04-17,-0.538,Normal value (A)\r\n2020-04-16,-0.534,Normal
value (A)\r\n2020-04-15,-0.535,Normal value (A)\r\n2020-04-14,-0.534,Normal
value (A)\r\n2020-04-09,-0.536,Normal value (A)\r\n2020-04-08,-0.535,Normal
value (A)\r\n2020-04-07,-0.533,Normal value (A)\r\n2020-04-06,-0.533,Normal
value (A)\r\n2020-04-03,-0.539,Normal value (A)\r\n2020-04-02,-0.534,Normal
value (A)\r\n2020-04-01,-0.527,Normal value (A)\r\n2020-03-31,-0.522,Normal
value (A)\r\n2020-03-30,-0.528,Normal value (A)\r\n2020-03-27,-0.530,Normal
value (A)\r\n2020-03-26,-0.529,Normal value (A)\r\n2020-03-25,-0.527,Normal
value (A)\r\n2020-03-24,-0.527,Normal value (A)\r\n2020-03-23,-0.525,Normal
value (A)\r\n2020-03-20,-0.524,Normal value (A)\r\n2020-03-19,-0.526,Normal
value (A)\r\n2020-03-18,-0.529,Normal value (A)\r\n2020-03-17,-0.531,Normal
value (A)\r\n2020-03-16,-0.536,Normal value (A)\r\n2020-03-13,-0.541,Normal
value (A)\r\n2020-03-12,-0.540,Normal value (A)\r\n2020-03-11,-0.543,Normal
value (A)\r\n2020-03-10,-0.541,Normal value (A)\r\n2020-03-09,-0.539,Normal
value (A)\r\n2020-03-06,-0.541,Normal value (A)\r\n2020-03-05,-0.540,Normal
value (A)\r\n2020-03-04,-0.541,Normal value (A)\r\n2020-03-03,-0.542,Normal
value (A)\r\n2020-03-02,-0.542,Normal value (A)\r\n2020-02-28,-0.540,Normal
value (A)\r\n2020-02-27,-0.538,Normal value (A)\r\n2020-02-26,-0.539,Normal
value (A)\r\n2020-02-25,-0.539,Normal value (A)\r\n2020-02-24,-0.540,Normal
value (A)\r\n2020-02-21,-0.539,Normal value (A)\r\n2020-02-20,-0.538,Normal
value (A)\r\n2020-02-19,-0.538,Normal value (A)\r\n2020-02-18,-0.536,Normal
value (A)\r\n2020-02-17,-0.541,Normal value (A)\r\n2020-02-14,-0.538,Normal
value (A)\r\n2020-02-13,-0.540,Normal value (A)\r\n2020-02-12,-0.541,Normal
value (A)\r\n2020-02-11,-0.541,Normal value (A)\r\n2020-02-10,-0.537,Normal
value (A)\r\n2020-02-07,-0.537,Normal value (A)\r\n2020-02-06,-0.535,Normal
value (A)\r\n2020-02-05,-0.536,Normal value (A)\r\n2020-02-04,-0.536,Normal
value (A)\r\n2020-02-03,-0.537,Normal value (A)\r\n2020-01-31,-0.539,Normal
value (A)\r\n2020-01-30,-0.539,Normal value (A)\r\n2020-01-29,-0.540,Normal
value (A)\r\n2020-01-28,-0.536,Normal value (A)\r\n2020-01-27,-0.538,Normal
value (A)\r\n2020-01-24,-0.537,Normal value (A)\r\n2020-01-23,-0.537,Normal
value (A)\r\n2020-01-22,-0.536,Normal value (A)\r\n2020-01-21,-0.535,Normal
value (A)\r\n2020-01-20,-0.538,Normal value (A)\r\n2020-01-17,-0.537,Normal
value (A)\r\n2020-01-16,-0.536,Normal value (A)\r\n2020-01-15,-0.538,Normal
value (A)\r\n2020-01-14,-0.538,Normal value (A)\r\n2020-01-13,-0.537,Normal
value (A)\r\n2020-01-10,-0.538,Normal value (A)\r\n2020-01-09,-0.539,Normal
value (A)\r\n2020-01-08,-0.536,Normal value (A)\r\n2020-01-07,-0.540,Normal
value (A)\r\n2020-01-06,-0.539,Normal value (A)\r\n2020-01-03,-0.537,Normal
value (A)\r\n2020-01-02,-0.539,Normal value (A)\r\n2019-12-31,-0.531,Normal
value (A)\r\n2019-12-30,-0.541,Normal value (A)\r\n2019-12-27,-0.542,Normal
value (A)\r\n2019-12-24,-0.549,Normal value (A)\r\n2019-12-23,-0.545,Normal
value (A)\r\n2019-12-20,-0.540,Normal value (A)\r\n2019-12-19,-0.540,Normal
value (A)\r\n2019-12-18,-0.540,Normal value (A)\r\n2019-12-17,-0.536,Normal
value (A)\r\n2019-12-16,-0.543,Normal value (A)\r\n2019-12-13,-0.543,Normal
value (A)\r\n2019-12-12,-0.544,Normal value (A)\r\n2019-12-11,-0.544,Normal
value (A)\r\n2019-12-10,-0.544,Normal value (A)\r\n2019-12-09,-0.541,Normal
value (A)\r\n2019-12-06,-0.541,Normal value (A)\r\n2019-12-05,-0.540,Normal
value (A)\r\n2019-12-04,-0.540,Normal value (A)\r\n2019-12-03,-0.539,Normal
value (A)\r\n2019-12-02,-0.541,Normal value (A)\r\n2019-11-29,-0.532,Normal
value (A)\r\n2019-11-28,-0.531,Normal value (A)\r\n2019-11-27,-0.533,Normal
value (A)\r\n2019-11-26,-0.533,Normal value (A)\r\n2019-11-25,-0.533,Normal
value (A)\r\n2019-11-22,-0.536,Normal value (A)\r\n2019-11-21,-0.542,Normal
value (A)\r\n2019-11-20,-0.511,Normal value (A)\r\n2019-11-19,-0.542,Normal
value (A)\r\n2019-11-18,-0.541,Normal value (A)\r\n2019-11-15,-0.541,Normal
value (A)\r\n2019-11-14,-0.536,Normal value (A)\r\n2019-11-13,-0.531,Normal
value (A)\r\n2019-11-12,-0.537,Normal value (A)\r\n2019-11-11,-0.541,Normal
value (A)\r\n2019-11-08,-0.540,Normal value (A)\r\n2019-11-07,-0.537,Normal
value (A)\r\n2019-11-06,-0.539,Normal value (A)\r\n2019-11-05,-0.541,Normal
value (A)\r\n2019-11-04,-0.536,Normal value (A)\r\n2019-11-01,-0.549,Normal
value (A)\r\n2019-10-31,-0.543,Normal value (A)\r\n2019-10-30,-0.545,Normal
value (A)\r\n2019-10-29,-0.545,Normal value (A)\r\n2019-10-28,-0.548,Normal
value (A)\r\n2019-10-25,-0.548,Normal value (A)\r\n2019-10-24,-0.548,Normal
value (A)\r\n2019-10-23,-0.547,Normal value (A)\r\n2019-10-22,-0.548,Normal
value (A)\r\n2019-10-21,-0.549,Normal value (A)\r\n2019-10-18,-0.547,Normal
value (A)\r\n2019-10-17,-0.548,Normal value (A)\r\n2019-10-16,-0.548,Normal
value (A)\r\n2019-10-15,-0.551,Normal value (A)\r\n2019-10-14,-0.549,Normal
value (A)\r\n2019-10-11,-0.550,Normal value (A)\r\n2019-10-10,-0.552,Normal
value (A)\r\n2019-10-09,-0.552,Normal value (A)\r\n2019-10-08,-0.552,Normal
value (A)\r\n2019-10-07,-0.554,Normal value (A)\r\n2019-10-04,-0.553,Normal
value (A)\r\n2019-10-03,-0.555,Normal value (A)\r\n2019-10-02,-0.551,Normal
value (A)\r\n2019-10-01,-0.549,Normal value (A)"
headers:
Cache-Control:
- no-transform, proxy-revalidate, public, max-age=30
Connection:
- close
Content-Type:
- text/csv
Content-disposition:
- attachment; filename=data.csv
Date:
- Tue, 21 Feb 2023 17:56:15 GMT
Expires:
- Tue, 21 Feb 2023 17:29:32 GMT
Last-Modified:
- Tue, 21 Feb 2023 07:04:00 GMT
Server:
- myracloud
Transfer-Encoding:
- chunked
Vary:
- accept, origin
status:
code: 200
message: ''
version: 1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,482 @@
interactions:
- request:
body: null
headers:
Connection:
- close
Host:
- api.stlouisfed.org
method: GET
uri: https://api.stlouisfed.org/fred/series/observations?api_key=MOCK_API_KEY&observation_start=2022-12-20&series_id=DFII5
response:
body:
string: "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<observations realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" observation_start=\"2022-12-20\" observation_end=\"9999-12-31\"
units=\"lin\" output_type=\"1\" file_type=\"xml\" order_by=\"observation_date\"
sort_order=\"asc\" count=\"44\" offset=\"0\" limit=\"100000\">\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-20\"
value=\"1.53\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-21\" value=\"1.47\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-22\" value=\"1.55\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-23\"
value=\"1.57\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-26\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-27\" value=\"1.61\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-28\"
value=\"1.64\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-29\" value=\"1.62\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-30\" value=\"1.66\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-02\"
value=\".\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-03\" value=\"1.65\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-04\" value=\"1.64\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-05\"
value=\"1.68\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-06\" value=\"1.51\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-09\" value=\"1.48\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-10\"
value=\"1.52\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-11\" value=\"1.45\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-12\" value=\"1.32\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-13\"
value=\"1.40\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-16\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-17\" value=\"1.42\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-18\"
value=\"1.34\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-19\" value=\"1.27\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-20\" value=\"1.33\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-23\"
value=\"1.33\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-24\" value=\"1.29\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-25\" value=\"1.26\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-26\"
value=\"1.26\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-27\" value=\"1.29\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-30\" value=\"1.38\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-31\"
value=\"1.36\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-01\" value=\"1.19\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-02\" value=\"1.23\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-03\"
value=\"1.40\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-06\" value=\"1.48\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-07\" value=\"1.45\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-08\"
value=\"1.36\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-09\" value=\"1.42\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-10\" value=\"1.46\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-13\"
value=\"1.49\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-14\" value=\"1.55\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-15\" value=\"1.53\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-16\"
value=\"1.54\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-17\" value=\"1.53\"/>\n</observations>\n\n\n\n"
headers:
Connection:
- close
Content-Length:
- '4793'
Content-Type:
- text/xml; charset=UTF-8
Date:
- Wed, 22 Feb 2023 17:22:09 GMT
Expires:
- Wed, 22 Feb 2023 17:23:09 GMT
Last-Modified:
- Tue, 21 Feb 2023 21:20:14 GMT
Vary:
- Accept-Encoding
x-rate-limit-limit:
- '120'
x-rate-limit-remaining:
- '120'
status:
code: 200
message: OK
- request:
body: null
headers:
Connection:
- close
Host:
- api.stlouisfed.org
method: GET
uri: https://api.stlouisfed.org/fred/series/observations?api_key=MOCK_API_KEY&observation_start=2022-12-20&series_id=DFII7
response:
body:
string: "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<observations realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" observation_start=\"2022-12-20\" observation_end=\"9999-12-31\"
units=\"lin\" output_type=\"1\" file_type=\"xml\" order_by=\"observation_date\"
sort_order=\"asc\" count=\"44\" offset=\"0\" limit=\"100000\">\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-20\"
value=\"1.48\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-21\" value=\"1.43\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-22\" value=\"1.51\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-23\"
value=\"1.56\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-26\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-27\" value=\"1.59\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-28\"
value=\"1.62\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-29\" value=\"1.58\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-30\" value=\"1.61\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-02\"
value=\".\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-03\" value=\"1.58\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-04\" value=\"1.54\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-05\"
value=\"1.57\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-06\" value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-09\" value=\"1.38\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-10\"
value=\"1.43\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-11\" value=\"1.37\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-12\" value=\"1.26\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-13\"
value=\"1.35\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-16\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-17\" value=\"1.38\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-18\"
value=\"1.29\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-19\" value=\"1.22\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-20\" value=\"1.28\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-23\"
value=\"1.28\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-24\" value=\"1.23\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-25\" value=\"1.21\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-26\"
value=\"1.20\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-27\" value=\"1.23\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-30\" value=\"1.31\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-31\"
value=\"1.31\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-01\" value=\"1.16\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-02\" value=\"1.20\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-03\"
value=\"1.34\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-06\" value=\"1.42\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-07\" value=\"1.40\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-08\"
value=\"1.32\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-09\" value=\"1.38\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-10\" value=\"1.43\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-13\"
value=\"1.44\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-14\" value=\"1.49\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-15\" value=\"1.49\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-16\"
value=\"1.51\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-17\" value=\"1.49\"/>\n</observations>\n\n\n\n"
headers:
Connection:
- close
Content-Length:
- '4793'
Content-Type:
- text/xml; charset=UTF-8
Date:
- Wed, 22 Feb 2023 17:22:09 GMT
Expires:
- Wed, 22 Feb 2023 17:23:09 GMT
Last-Modified:
- Tue, 21 Feb 2023 21:20:15 GMT
Vary:
- Accept-Encoding
x-rate-limit-limit:
- '120'
x-rate-limit-remaining:
- '119'
status:
code: 200
message: OK
- request:
body: null
headers:
Connection:
- close
Host:
- api.stlouisfed.org
method: GET
uri: https://api.stlouisfed.org/fred/series/observations?api_key=MOCK_API_KEY&observation_start=2022-12-20&series_id=DFII10
response:
body:
string: "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<observations realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" observation_start=\"2022-12-20\" observation_end=\"9999-12-31\"
units=\"lin\" output_type=\"1\" file_type=\"xml\" order_by=\"observation_date\"
sort_order=\"asc\" count=\"44\" offset=\"0\" limit=\"100000\">\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-20\"
value=\"1.45\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-21\" value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-22\" value=\"1.48\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-23\"
value=\"1.55\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-26\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-27\" value=\"1.58\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-28\"
value=\"1.60\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-29\" value=\"1.56\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-30\" value=\"1.58\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-02\"
value=\".\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-03\" value=\"1.53\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-04\" value=\"1.47\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-05\"
value=\"1.49\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-06\" value=\"1.34\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-09\" value=\"1.31\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-10\"
value=\"1.37\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-11\" value=\"1.31\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-12\" value=\"1.22\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-13\"
value=\"1.31\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-16\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-17\" value=\"1.36\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-18\"
value=\"1.25\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-19\" value=\"1.19\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-20\" value=\"1.25\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-23\"
value=\"1.24\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-24\" value=\"1.19\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-25\" value=\"1.17\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-26\"
value=\"1.16\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-27\" value=\"1.19\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-30\" value=\"1.26\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-31\"
value=\"1.28\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-01\" value=\"1.14\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-02\" value=\"1.18\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-03\"
value=\"1.31\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-06\" value=\"1.38\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-07\" value=\"1.36\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-08\"
value=\"1.29\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-09\" value=\"1.34\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-10\" value=\"1.41\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-13\"
value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-14\" value=\"1.46\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-15\" value=\"1.46\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-16\"
value=\"1.49\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-17\" value=\"1.46\"/>\n</observations>\n\n\n\n"
headers:
Connection:
- close
Content-Length:
- '4793'
Content-Type:
- text/xml; charset=UTF-8
Date:
- Wed, 22 Feb 2023 17:22:09 GMT
Expires:
- Wed, 22 Feb 2023 17:23:09 GMT
Last-Modified:
- Tue, 21 Feb 2023 21:20:12 GMT
Vary:
- Accept-Encoding
x-rate-limit-limit:
- '120'
x-rate-limit-remaining:
- '118'
status:
code: 200
message: OK
- request:
body: null
headers:
Connection:
- close
Host:
- api.stlouisfed.org
method: GET
uri: https://api.stlouisfed.org/fred/series/observations?api_key=MOCK_API_KEY&observation_start=2022-12-20&series_id=DFII20
response:
body:
string: "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<observations realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" observation_start=\"2022-12-20\" observation_end=\"9999-12-31\"
units=\"lin\" output_type=\"1\" file_type=\"xml\" order_by=\"observation_date\"
sort_order=\"asc\" count=\"44\" offset=\"0\" limit=\"100000\">\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-20\"
value=\"1.47\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-21\" value=\"1.44\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-22\" value=\"1.50\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-23\"
value=\"1.57\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-26\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-27\" value=\"1.61\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-28\"
value=\"1.63\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-29\" value=\"1.59\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-30\" value=\"1.62\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-02\"
value=\".\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-03\" value=\"1.56\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-04\" value=\"1.51\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-05\"
value=\"1.50\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-06\" value=\"1.37\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-09\" value=\"1.35\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-10\"
value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-11\" value=\"1.35\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-12\" value=\"1.27\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-13\"
value=\"1.37\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-16\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-17\" value=\"1.42\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-18\"
value=\"1.32\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-19\" value=\"1.27\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-20\" value=\"1.33\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-23\"
value=\"1.32\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-24\" value=\"1.26\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-25\" value=\"1.25\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-26\"
value=\"1.23\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-27\" value=\"1.26\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-30\" value=\"1.32\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-31\"
value=\"1.36\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-01\" value=\"1.24\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-02\" value=\"1.28\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-03\"
value=\"1.38\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-06\" value=\"1.42\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-07\" value=\"1.41\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-08\"
value=\"1.35\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-09\" value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-10\" value=\"1.47\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-13\"
value=\"1.46\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-14\" value=\"1.49\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-15\" value=\"1.49\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-16\"
value=\"1.52\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-17\" value=\"1.50\"/>\n</observations>\n\n\n\n"
headers:
Connection:
- close
Content-Length:
- '4793'
Content-Type:
- text/xml; charset=UTF-8
Date:
- Wed, 22 Feb 2023 17:22:09 GMT
Expires:
- Wed, 22 Feb 2023 17:23:09 GMT
Last-Modified:
- Tue, 21 Feb 2023 21:20:13 GMT
Vary:
- Accept-Encoding
x-rate-limit-limit:
- '120'
x-rate-limit-remaining:
- '117'
status:
code: 200
message: OK
- request:
body: null
headers:
Connection:
- close
Host:
- api.stlouisfed.org
method: GET
uri: https://api.stlouisfed.org/fred/series/observations?api_key=MOCK_API_KEY&observation_start=2022-12-20&series_id=DFII30
response:
body:
string: "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<observations realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" observation_start=\"2022-12-20\" observation_end=\"9999-12-31\"
units=\"lin\" output_type=\"1\" file_type=\"xml\" order_by=\"observation_date\"
sort_order=\"asc\" count=\"44\" offset=\"0\" limit=\"100000\">\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-20\"
value=\"1.50\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-21\" value=\"1.48\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-22\" value=\"1.53\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-23\"
value=\"1.60\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-26\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-27\" value=\"1.65\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2022-12-28\"
value=\"1.67\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2022-12-29\" value=\"1.63\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2022-12-30\" value=\"1.67\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-02\"
value=\".\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-03\" value=\"1.61\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-04\" value=\"1.57\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-05\"
value=\"1.55\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-06\" value=\"1.43\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-09\" value=\"1.41\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-10\"
value=\"1.47\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-11\" value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-12\" value=\"1.33\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-13\"
value=\"1.44\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-16\" value=\".\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-17\" value=\"1.47\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-18\"
value=\"1.40\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-19\" value=\"1.34\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-20\" value=\"1.42\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-23\"
value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-24\" value=\"1.34\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-25\" value=\"1.33\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-26\"
value=\"1.30\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-01-27\" value=\"1.33\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-01-30\" value=\"1.39\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-01-31\"
value=\"1.43\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-01\" value=\"1.33\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-02\" value=\"1.38\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-03\"
value=\"1.46\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-06\" value=\"1.47\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-07\" value=\"1.47\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-08\"
value=\"1.41\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-09\" value=\"1.47\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-10\" value=\"1.53\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-13\"
value=\"1.51\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-14\" value=\"1.53\"/>\n <observation realtime_start=\"2023-02-22\"
realtime_end=\"2023-02-22\" date=\"2023-02-15\" value=\"1.54\"/>\n <observation
realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\" date=\"2023-02-16\"
value=\"1.57\"/>\n <observation realtime_start=\"2023-02-22\" realtime_end=\"2023-02-22\"
date=\"2023-02-17\" value=\"1.54\"/>\n</observations>\n\n\n\n"
headers:
Connection:
- close
Content-Length:
- '4793'
Content-Type:
- text/xml; charset=UTF-8
Date:
- Wed, 22 Feb 2023 17:22:09 GMT
Expires:
- Wed, 22 Feb 2023 17:23:09 GMT
Last-Modified:
- Tue, 21 Feb 2023 21:20:14 GMT
Vary:
- Accept-Encoding
x-rate-limit-limit:
- '120'
x-rate-limit-remaining:
- '116'
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,39 @@
interactions:
- request:
body: null
headers:
Connection:
- close
Host:
- stats.oecd.org
User-Agent:
- Python-urllib/3.9
method: GET
uri: https://stats.oecd.org/sdmx-json/data/DP_LIVE/.STINT.TOT.PC_PA.M/OECD?contentType=csv&detail=code&separator=comma&csv-lang=en&startPeriod=2022-01&endPeriod=2022-01
response:
body:
string: "\uFEFF\"LOCATION\",\"INDICATOR\",\"SUBJECT\",\"MEASURE\",\"FREQUENCY\",\"TIME\",\"Value\",\"Flag
Codes\"\r\n\"CHL\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",5.56,\r\n\"USA\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.22,\r\n\"NZL\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.03,\r\n\"DNK\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.29,\r\n\"ISR\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.02,\r\n\"GBR\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.53,\r\n\"BEL\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"RUS\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",8.96,\r\n\"IDN\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.75,\r\n\"HUN\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",4.0645,\r\n\"FIN\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"LUX\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"ESP\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"NOR\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.1,\r\n\"JPN\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.049,\r\n\"GRC\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"KOR\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.39,\r\n\"AUT\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"SVK\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"EST\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"SVN\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"CAN\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.4571955,\r\n\"DEU\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"PRT\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"ISL\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",2.71,\r\n\"AUS\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.07,\r\n\"IRL\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"NLD\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"CHE\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.72,\r\n\"ZAF\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.87,\r\n\"CZE\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",4.21,\r\n\"POL\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.02,\r\n\"CHN\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.32,\r\n\"SWE\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.16,\r\n\"MEX\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",5.87,\r\n\"FRA\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"ITA\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"COL\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.47,\r\n\"LVA\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"EA19\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"LTU\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"CRI\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.83,\r\n\"IND\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.63,\r\n\"BGR\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.0089,\r\n\"HRV\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.5601,\r\n\"ROU\",\"STINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.0465,\r\n"
headers:
Access-Control-Allow-Headers:
- Content-Type
Access-Control-Allow-Methods:
- POST,GET,OPTIONS
Access-Control-Allow-Origin:
- '*'
Cache-Control:
- private
Connection:
- close
Content-Disposition:
- attachment;filename=DP_LIVE_21022023190450184.csv
Content-Type:
- text/csv
Date:
- Tue, 21 Feb 2023 18:04:49 GMT
Transfer-Encoding:
- chunked
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,39 @@
interactions:
- request:
body: null
headers:
Connection:
- close
Host:
- stats.oecd.org
User-Agent:
- Python-urllib/3.9
method: GET
uri: https://stats.oecd.org/sdmx-json/data/DP_LIVE/.STINTFORECAST.TOT.PC_PA.Q/OECD?contentType=csv&detail=code&separator=comma&csv-lang=en&startPeriod=2022-Q1&endPeriod=2022-Q1
response:
body:
string: "\uFEFF\"LOCATION\",\"INDICATOR\",\"SUBJECT\",\"MEASURE\",\"FREQUENCY\",\"TIME\",\"Value\",\"Flag
Codes\"\r\n\"AUS\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.103333333333333,\r\n\"AUT\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"BEL\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"CAN\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.651304655666667,\r\n\"CZE\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4.58666666666667,\r\n\"DNK\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.266666666666667,\r\n\"FIN\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"FRA\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"DEU\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"GRC\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"HUN\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4.1475,\r\n\"ISL\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",3.25,\r\n\"IRL\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"JPN\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.0177644703243616,\r\n\"KOR\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.46333333333333,\r\n\"LUX\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"MEX\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",6.29666666666667,\r\n\"NLD\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"NZL\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.24333333333333,\r\n\"NOR\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.19666666666667,\r\n\"POL\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",3.81333333333333,\r\n\"PRT\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"SVK\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"ESP\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"SWE\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.0154079020013803,\r\n\"CHE\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.655,\r\n\"GBR\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.776666666666667,\r\n\"USA\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.443333333333333,\r\n\"CHL\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",6.51692788129744,\r\n\"EST\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"IND\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4,\r\n\"IDN\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",3.07,\r\n\"ISR\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.03,\r\n\"SVN\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"ITA\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"CHN\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4.35,\r\n\"LTU\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"BRA\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",9.5,\r\n\"ZAF\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4.45,\r\n\"LVA\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666667,\r\n\"EA17\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.528866666666666,\r\n\"BGR\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",-0.690425900371123,\r\n\"COL\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4.25,\r\n\"CRI\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.73620024123188,\r\n\"HRV\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.0111111,\r\n\"PER\",\"STINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",3.2446316752019,\r\n"
headers:
Access-Control-Allow-Headers:
- Content-Type
Access-Control-Allow-Methods:
- POST,GET,OPTIONS
Access-Control-Allow-Origin:
- '*'
Cache-Control:
- private
Connection:
- close
Content-Disposition:
- attachment;filename=DP_LIVE_21022023190450871.csv
Content-Type:
- text/csv
Date:
- Tue, 21 Feb 2023 18:04:49 GMT
Transfer-Encoding:
- chunked
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,39 @@
interactions:
- request:
body: null
headers:
Connection:
- close
Host:
- stats.oecd.org
User-Agent:
- Python-urllib/3.9
method: GET
uri: https://stats.oecd.org/sdmx-json/data/DP_LIVE/.LTINT.TOT.PC_PA.M/OECD?contentType=csv&detail=code&separator=comma&csv-lang=en&startPeriod=2022-01&endPeriod=2022-01
response:
body:
string: "\uFEFF\"LOCATION\",\"INDICATOR\",\"SUBJECT\",\"MEASURE\",\"FREQUENCY\",\"TIME\",\"Value\",\"Flag
Codes\"\r\n\"IRL\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.3803,\r\n\"AUS\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.88,\r\n\"POL\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",4,\r\n\"CHE\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.045,\r\n\"NLD\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.098,\r\n\"DEU\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.1147619,\r\n\"ISL\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",4.48,\r\n\"PRT\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.58,\r\n\"CAN\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.759,\r\n\"ITA\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.346,\r\n\"FRA\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.31,\r\n\"CHL\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",5.886167,\r\n\"CZE\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",3.12,\r\n\"SWE\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.36,\r\n\"SVN\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.4,\r\n\"ZAF\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",9.83,\r\n\"USA\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.76,\r\n\"FIN\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.17909,\r\n\"NZL\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",2.56,\r\n\"ESP\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.6645238,\r\n\"HUN\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",4.71,\r\n\"LUX\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",-0.039,\r\n\"DNK\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.114,\r\n\"BEL\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.26,\r\n\"ISR\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.43,\r\n\"GBR\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.2051,\r\n\"AUT\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.1813,\r\n\"KOR\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",2.492,\r\n\"NOR\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.86,\r\n\"GRC\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",1.62,\r\n\"SVK\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.25235,\r\n\"JPN\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.17,\r\n\"LVA\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.38,\r\n\"EA19\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.5339,\r\n\"COL\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",9.26,\r\n\"LTU\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.16,\r\n\"CRI\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",8.33,\r\n\"IND\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",6.65,\r\n\"EST\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.31,\r\n\"IDN\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",6.413286,\r\n\"BRA\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",6.08,\r\n\"CHN\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",2.6997,\r\n\"BGR\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.57,\r\n\"HRV\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",0.7,\r\n\"ROU\",\"LTINT\",\"TOT\",\"PC_PA\",\"M\",\"2022-01\",5.37,\r\n"
headers:
Access-Control-Allow-Headers:
- Content-Type
Access-Control-Allow-Methods:
- POST,GET,OPTIONS
Access-Control-Allow-Origin:
- '*'
Cache-Control:
- private
Connection:
- close
Content-Disposition:
- attachment;filename=DP_LIVE_21022023190448325.csv
Content-Type:
- text/csv
Date:
- Tue, 21 Feb 2023 18:04:47 GMT
Transfer-Encoding:
- chunked
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,39 @@
interactions:
- request:
body: null
headers:
Connection:
- close
Host:
- stats.oecd.org
User-Agent:
- Python-urllib/3.9
method: GET
uri: https://stats.oecd.org/sdmx-json/data/DP_LIVE/.LTINTFORECAST.TOT.PC_PA.Q/OECD?contentType=csv&detail=code&separator=comma&csv-lang=en&startPeriod=2022-Q1&endPeriod=2022-Q1
response:
body:
string: "\uFEFF\"LOCATION\",\"INDICATOR\",\"SUBJECT\",\"MEASURE\",\"FREQUENCY\",\"TIME\",\"Value\",\"Flag
Codes\"\r\n\"AUS\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",2.16333333333333,\r\n\"AUT\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.480363333333333,\r\n\"BEL\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.546666666666667,\r\n\"CAN\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.923549199,\r\n\"CZE\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",3.22666666666667,\r\n\"DNK\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.379,\r\n\"FIN\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.468575797,\r\n\"FRA\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.59,\r\n\"DEU\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.105659075,\r\n\"GRC\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",2.23,\r\n\"HUN\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",5.16333333333333,\r\n\"ISL\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4.69,\r\n\"IRL\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.6949,\r\n\"JPN\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.173341818495514,\r\n\"KOR\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",2.65533333333333,\r\n\"LUX\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.303333333333333,\r\n\"MEX\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",7.52092733885445,\r\n\"NLD\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.160666666666667,\r\n\"NZL\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",2.79,\r\n\"NOR\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",2.08666666666667,\r\n\"POL\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",4.26,\r\n\"PRT\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.933333333333333,\r\n\"SVK\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.65265,\r\n\"ESP\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.00067387866667,\r\n\"SWE\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.5956,\r\n\"CHE\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.329333333333333,\r\n\"GBR\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.4133,\r\n\"USA\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.94,\r\n\"CHL\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",5.93606380333333,\r\n\"IND\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",6.79327333333333,\r\n\"ISR\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.76666666666667,\r\n\"ITA\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.6646,\r\n\"ZAF\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",9.86,\r\n\"SVN\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.713333333333334,\r\n\"LVA\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.79,\r\n\"LTU\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.00589603174603,\r\n\"EA17\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.642850336674733,\r\n\"BGR\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",0.756666666666667,\r\n\"COL\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",9.71249107700806,\r\n\"HRV\",\"LTINTFORECAST\",\"TOT\",\"PC_PA\",\"Q\",\"2022-Q1\",1.33333333333333,\r\n"
headers:
Access-Control-Allow-Headers:
- Content-Type
Access-Control-Allow-Methods:
- POST,GET,OPTIONS
Access-Control-Allow-Origin:
- '*'
Cache-Control:
- private
Connection:
- close
Content-Disposition:
- attachment;filename=DP_LIVE_21022023190449372.csv
Content-Type:
- text/csv
Date:
- Tue, 21 Feb 2023 18:04:48 GMT
Transfer-Encoding:
- chunked
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,11 @@
,Maturity,Rate
0,0.25,2.541376
1,0.5,2.824729
2,1.0,2.934256
3,2.0,2.746707
4,3.0,2.603793
5,5.0,2.506521
6,7.0,2.493358
7,10.0,2.501264
8,20.0,2.46916
9,30.0,2.348783
1 Maturity Rate
2 0 0.25 2.541376
3 1 0.5 2.824729
4 2 1.0 2.934256
5 3 2.0 2.746707
6 4 3.0 2.603793
7 5 5.0 2.506521
8 6 7.0 2.493358
9 7 10.0 2.501264
10 8 20.0 2.46916
11 9 30.0 2.348783

View File

@@ -0,0 +1,873 @@
,Unnamed: 1
2019-10-01,-0.549
2019-10-02,-0.551
2019-10-03,-0.555
2019-10-04,-0.553
2019-10-07,-0.554
2019-10-08,-0.552
2019-10-09,-0.552
2019-10-10,-0.552
2019-10-11,-0.55
2019-10-14,-0.549
2019-10-15,-0.551
2019-10-16,-0.548
2019-10-17,-0.548
2019-10-18,-0.547
2019-10-21,-0.549
2019-10-22,-0.548
2019-10-23,-0.547
2019-10-24,-0.548
2019-10-25,-0.548
2019-10-28,-0.548
2019-10-29,-0.545
2019-10-30,-0.545
2019-10-31,-0.543
2019-11-01,-0.549
2019-11-04,-0.536
2019-11-05,-0.541
2019-11-06,-0.539
2019-11-07,-0.537
2019-11-08,-0.54
2019-11-11,-0.541
2019-11-12,-0.537
2019-11-13,-0.531
2019-11-14,-0.536
2019-11-15,-0.541
2019-11-18,-0.541
2019-11-19,-0.542
2019-11-20,-0.511
2019-11-21,-0.542
2019-11-22,-0.536
2019-11-25,-0.533
2019-11-26,-0.533
2019-11-27,-0.533
2019-11-28,-0.531
2019-11-29,-0.532
2019-12-02,-0.541
2019-12-03,-0.539
2019-12-04,-0.54
2019-12-05,-0.54
2019-12-06,-0.541
2019-12-09,-0.541
2019-12-10,-0.544
2019-12-11,-0.544
2019-12-12,-0.544
2019-12-13,-0.543
2019-12-16,-0.543
2019-12-17,-0.536
2019-12-18,-0.54
2019-12-19,-0.54
2019-12-20,-0.54
2019-12-23,-0.545
2019-12-24,-0.549
2019-12-27,-0.542
2019-12-30,-0.541
2019-12-31,-0.531
2020-01-02,-0.539
2020-01-03,-0.537
2020-01-06,-0.539
2020-01-07,-0.54
2020-01-08,-0.536
2020-01-09,-0.539
2020-01-10,-0.538
2020-01-13,-0.537
2020-01-14,-0.538
2020-01-15,-0.538
2020-01-16,-0.536
2020-01-17,-0.537
2020-01-20,-0.538
2020-01-21,-0.535
2020-01-22,-0.536
2020-01-23,-0.537
2020-01-24,-0.537
2020-01-27,-0.538
2020-01-28,-0.536
2020-01-29,-0.54
2020-01-30,-0.539
2020-01-31,-0.539
2020-02-03,-0.537
2020-02-04,-0.536
2020-02-05,-0.536
2020-02-06,-0.535
2020-02-07,-0.537
2020-02-10,-0.537
2020-02-11,-0.541
2020-02-12,-0.541
2020-02-13,-0.54
2020-02-14,-0.538
2020-02-17,-0.541
2020-02-18,-0.536
2020-02-19,-0.538
2020-02-20,-0.538
2020-02-21,-0.539
2020-02-24,-0.54
2020-02-25,-0.539
2020-02-26,-0.539
2020-02-27,-0.538
2020-02-28,-0.54
2020-03-02,-0.542
2020-03-03,-0.542
2020-03-04,-0.541
2020-03-05,-0.54
2020-03-06,-0.541
2020-03-09,-0.539
2020-03-10,-0.541
2020-03-11,-0.543
2020-03-12,-0.54
2020-03-13,-0.541
2020-03-16,-0.536
2020-03-17,-0.531
2020-03-18,-0.529
2020-03-19,-0.526
2020-03-20,-0.524
2020-03-23,-0.525
2020-03-24,-0.527
2020-03-25,-0.527
2020-03-26,-0.529
2020-03-27,-0.53
2020-03-30,-0.528
2020-03-31,-0.522
2020-04-01,-0.527
2020-04-02,-0.534
2020-04-03,-0.539
2020-04-06,-0.533
2020-04-07,-0.533
2020-04-08,-0.535
2020-04-09,-0.536
2020-04-14,-0.534
2020-04-15,-0.535
2020-04-16,-0.534
2020-04-17,-0.538
2020-04-20,-0.541
2020-04-21,-0.541
2020-04-22,-0.539
2020-04-23,-0.539
2020-04-24,-0.539
2020-04-27,-0.539
2020-04-28,-0.541
2020-04-29,-0.543
2020-04-30,-0.531
2020-05-04,-0.543
2020-05-05,-0.539
2020-05-06,-0.542
2020-05-07,-0.541
2020-05-08,-0.541
2020-05-11,-0.544
2020-05-12,-0.543
2020-05-13,-0.542
2020-05-14,-0.541
2020-05-15,-0.543
2020-05-18,-0.542
2020-05-19,-0.542
2020-05-20,-0.545
2020-05-21,-0.545
2020-05-22,-0.539
2020-05-25,-0.54
2020-05-26,-0.541
2020-05-27,-0.541
2020-05-28,-0.541
2020-05-29,-0.54
2020-06-01,-0.546
2020-06-02,-0.542
2020-06-03,-0.543
2020-06-04,-0.545
2020-06-05,-0.544
2020-06-08,-0.547
2020-06-09,-0.542
2020-06-10,-0.548
2020-06-11,-0.547
2020-06-12,-0.546
2020-06-15,-0.547
2020-06-16,-0.546
2020-06-17,-0.544
2020-06-18,-0.544
2020-06-19,-0.546
2020-06-22,-0.545
2020-06-23,-0.544
2020-06-24,-0.546
2020-06-25,-0.547
2020-06-26,-0.547
2020-06-29,-0.545
2020-06-30,-0.555
2020-07-01,-0.548
2020-07-02,-0.548
2020-07-03,-0.549
2020-07-06,-0.55
2020-07-07,-0.55
2020-07-08,-0.549
2020-07-09,-0.549
2020-07-10,-0.549
2020-07-13,-0.552
2020-07-14,-0.551
2020-07-15,-0.551
2020-07-16,-0.541
2020-07-17,-0.551
2020-07-20,-0.551
2020-07-21,-0.549
2020-07-22,-0.55
2020-07-23,-0.55
2020-07-24,-0.551
2020-07-27,-0.552
2020-07-28,-0.551
2020-07-29,-0.553
2020-07-30,-0.552
2020-07-31,-0.55
2020-08-03,-0.552
2020-08-04,-0.551
2020-08-05,-0.552
2020-08-06,-0.553
2020-08-07,-0.553
2020-08-10,-0.554
2020-08-11,-0.552
2020-08-12,-0.552
2020-08-13,-0.552
2020-08-14,-0.549
2020-08-17,-0.553
2020-08-18,-0.554
2020-08-19,-0.553
2020-08-20,-0.553
2020-08-21,-0.554
2020-08-24,-0.552
2020-08-25,-0.553
2020-08-26,-0.554
2020-08-27,-0.552
2020-08-28,-0.552
2020-08-31,-0.557
2020-09-01,-0.554
2020-09-02,-0.555
2020-09-03,-0.551
2020-09-04,-0.552
2020-09-07,-0.551
2020-09-08,-0.553
2020-09-09,-0.554
2020-09-10,-0.554
2020-09-11,-0.553
2020-09-14,-0.555
2020-09-15,-0.551
2020-09-16,-0.556
2020-09-17,-0.553
2020-09-18,-0.552
2020-09-21,-0.552
2020-09-22,-0.552
2020-09-23,-0.551
2020-09-24,-0.553
2020-09-25,-0.554
2020-09-28,-0.555
2020-09-29,-0.556
2020-09-30,-0.57
2020-10-01,-0.558
2020-10-02,-0.555
2020-10-05,-0.555
2020-10-06,-0.556
2020-10-07,-0.555
2020-10-08,-0.553
2020-10-09,-0.553
2020-10-12,-0.556
2020-10-13,-0.555
2020-10-14,-0.556
2020-10-15,-0.556
2020-10-16,-0.553
2020-10-19,-0.553
2020-10-20,-0.553
2020-10-21,-0.552
2020-10-22,-0.554
2020-10-23,-0.553
2020-10-26,-0.552
2020-10-27,-0.554
2020-10-28,-0.555
2020-10-29,-0.552
2020-10-30,-0.557
2020-11-02,-0.555
2020-11-03,-0.553
2020-11-04,-0.558
2020-11-05,-0.556
2020-11-06,-0.558
2020-11-09,-0.558
2020-11-10,-0.557
2020-11-11,-0.558
2020-11-12,-0.548
2020-11-13,-0.556
2020-11-16,-0.558
2020-11-17,-0.557
2020-11-18,-0.557
2020-11-19,-0.557
2020-11-20,-0.557
2020-11-23,-0.557
2020-11-24,-0.556
2020-11-25,-0.554
2020-11-26,-0.556
2020-11-27,-0.557
2020-11-30,-0.56
2020-12-01,-0.557
2020-12-02,-0.556
2020-12-03,-0.556
2020-12-04,-0.555
2020-12-07,-0.555
2020-12-08,-0.559
2020-12-09,-0.556
2020-12-10,-0.556
2020-12-11,-0.557
2020-12-14,-0.558
2020-12-15,-0.551
2020-12-16,-0.557
2020-12-17,-0.556
2020-12-18,-0.558
2020-12-21,-0.557
2020-12-22,-0.558
2020-12-23,-0.559
2020-12-24,-0.555
2020-12-28,-0.553
2020-12-29,-0.557
2020-12-30,-0.555
2020-12-31,-0.583
2021-01-04,-0.566
2021-01-05,-0.563
2021-01-06,-0.566
2021-01-07,-0.565
2021-01-08,-0.562
2021-01-11,-0.564
2021-01-12,-0.563
2021-01-13,-0.562
2021-01-14,-0.564
2021-01-15,-0.566
2021-01-18,-0.565
2021-01-19,-0.564
2021-01-20,-0.564
2021-01-21,-0.562
2021-01-22,-0.561
2021-01-25,-0.564
2021-01-26,-0.558
2021-01-27,-0.563
2021-01-28,-0.561
2021-01-29,-0.564
2021-02-01,-0.566
2021-02-02,-0.564
2021-02-03,-0.558
2021-02-04,-0.564
2021-02-05,-0.565
2021-02-08,-0.563
2021-02-09,-0.564
2021-02-10,-0.564
2021-02-11,-0.565
2021-02-12,-0.564
2021-02-15,-0.563
2021-02-16,-0.564
2021-02-17,-0.563
2021-02-18,-0.562
2021-02-19,-0.563
2021-02-22,-0.564
2021-02-23,-0.565
2021-02-24,-0.564
2021-02-25,-0.564
2021-02-26,-0.566
2021-03-01,-0.563
2021-03-02,-0.565
2021-03-03,-0.565
2021-03-04,-0.565
2021-03-05,-0.562
2021-03-08,-0.558
2021-03-09,-0.56
2021-03-10,-0.562
2021-03-11,-0.561
2021-03-12,-0.562
2021-03-15,-0.564
2021-03-16,-0.562
2021-03-17,-0.561
2021-03-18,-0.566
2021-03-19,-0.565
2021-03-22,-0.566
2021-03-23,-0.563
2021-03-24,-0.564
2021-03-25,-0.564
2021-03-26,-0.568
2021-03-29,-0.57
2021-03-30,-0.57
2021-03-31,-0.574
2021-04-01,-0.566
2021-04-06,-0.567
2021-04-07,-0.567
2021-04-08,-0.57
2021-04-09,-0.568
2021-04-12,-0.567
2021-04-13,-0.563
2021-04-14,-0.56
2021-04-15,-0.566
2021-04-16,-0.565
2021-04-19,-0.567
2021-04-20,-0.567
2021-04-21,-0.565
2021-04-22,-0.565
2021-04-23,-0.565
2021-04-26,-0.567
2021-04-27,-0.56
2021-04-28,-0.566
2021-04-29,-0.566
2021-04-30,-0.569
2021-05-03,-0.567
2021-05-04,-0.564
2021-05-05,-0.566
2021-05-06,-0.565
2021-05-07,-0.563
2021-05-10,-0.567
2021-05-11,-0.564
2021-05-12,-0.564
2021-05-13,-0.564
2021-05-14,-0.564
2021-05-17,-0.565
2021-05-18,-0.558
2021-05-19,-0.564
2021-05-20,-0.563
2021-05-21,-0.564
2021-05-24,-0.566
2021-05-25,-0.565
2021-05-26,-0.565
2021-05-27,-0.564
2021-05-28,-0.566
2021-05-31,-0.571
2021-06-01,-0.564
2021-06-02,-0.563
2021-06-03,-0.563
2021-06-04,-0.563
2021-06-07,-0.564
2021-06-08,-0.563
2021-06-09,-0.564
2021-06-10,-0.561
2021-06-11,-0.566
2021-06-14,-0.565
2021-06-15,-0.561
2021-06-16,-0.562
2021-06-17,-0.563
2021-06-18,-0.563
2021-06-21,-0.564
2021-06-22,-0.564
2021-06-23,-0.563
2021-06-24,-0.565
2021-06-25,-0.565
2021-06-28,-0.566
2021-06-29,-0.568
2021-06-30,-0.581
2021-07-01,-0.565
2021-07-02,-0.565
2021-07-05,-0.566
2021-07-06,-0.565
2021-07-07,-0.565
2021-07-08,-0.566
2021-07-09,-0.566
2021-07-12,-0.568
2021-07-13,-0.566
2021-07-14,-0.566
2021-07-15,-0.566
2021-07-16,-0.567
2021-07-19,-0.566
2021-07-20,-0.567
2021-07-21,-0.568
2021-07-22,-0.563
2021-07-23,-0.567
2021-07-26,-0.567
2021-07-27,-0.563
2021-07-28,-0.567
2021-07-29,-0.567
2021-07-30,-0.571
2021-08-02,-0.565
2021-08-03,-0.57
2021-08-04,-0.57
2021-08-05,-0.566
2021-08-06,-0.569
2021-08-09,-0.568
2021-08-10,-0.567
2021-08-11,-0.567
2021-08-12,-0.568
2021-08-13,-0.569
2021-08-16,-0.569
2021-08-17,-0.568
2021-08-18,-0.567
2021-08-19,-0.567
2021-08-20,-0.567
2021-08-23,-0.568
2021-08-24,-0.567
2021-08-25,-0.564
2021-08-26,-0.57
2021-08-27,-0.57
2021-08-30,-0.568
2021-08-31,-0.57
2021-09-01,-0.569
2021-09-02,-0.569
2021-09-03,-0.568
2021-09-06,-0.569
2021-09-07,-0.569
2021-09-08,-0.569
2021-09-09,-0.57
2021-09-10,-0.57
2021-09-13,-0.571
2021-09-14,-0.568
2021-09-15,-0.573
2021-09-16,-0.567
2021-09-17,-0.571
2021-09-20,-0.566
2021-09-21,-0.571
2021-09-22,-0.566
2021-09-23,-0.57
2021-09-24,-0.569
2021-09-27,-0.571
2021-09-28,-0.573
2021-09-29,-0.572
2021-09-30,-0.58
2021-10-01,-0.571
2021-10-04,-0.569
2021-10-05,-0.569
2021-10-06,-0.569
2021-10-07,-0.568
2021-10-08,-0.568
2021-10-11,-0.57
2021-10-12,-0.562
2021-10-13,-0.569
2021-10-14,-0.57
2021-10-15,-0.572
2021-10-18,-0.574
2021-10-19,-0.573
2021-10-20,-0.571
2021-10-21,-0.573
2021-10-22,-0.569
2021-10-25,-0.571
2021-10-26,-0.57
2021-10-27,-0.573
2021-10-28,-0.573
2021-10-29,-0.578
2021-11-01,-0.579
2021-11-02,-0.569
2021-11-03,-0.574
2021-11-04,-0.573
2021-11-05,-0.572
2021-11-08,-0.575
2021-11-09,-0.575
2021-11-10,-0.576
2021-11-11,-0.575
2021-11-12,-0.572
2021-11-15,-0.569
2021-11-16,-0.571
2021-11-17,-0.571
2021-11-18,-0.571
2021-11-19,-0.573
2021-11-22,-0.573
2021-11-23,-0.574
2021-11-24,-0.57
2021-11-25,-0.573
2021-11-26,-0.573
2021-11-29,-0.573
2021-11-30,-0.575
2021-12-01,-0.574
2021-12-02,-0.575
2021-12-03,-0.578
2021-12-06,-0.578
2021-12-07,-0.577
2021-12-08,-0.577
2021-12-09,-0.578
2021-12-10,-0.577
2021-12-13,-0.579
2021-12-14,-0.577
2021-12-15,-0.577
2021-12-16,-0.577
2021-12-17,-0.576
2021-12-20,-0.576
2021-12-21,-0.571
2021-12-22,-0.574
2021-12-23,-0.576
2021-12-24,-0.58
2021-12-27,-0.576
2021-12-28,-0.575
2021-12-29,-0.578
2021-12-30,-0.58
2021-12-31,-0.59
2022-01-03,-0.578
2022-01-04,-0.578
2022-01-05,-0.578
2022-01-06,-0.578
2022-01-07,-0.58
2022-01-10,-0.579
2022-01-11,-0.579
2022-01-12,-0.578
2022-01-13,-0.578
2022-01-14,-0.578
2022-01-17,-0.578
2022-01-18,-0.579
2022-01-19,-0.578
2022-01-20,-0.579
2022-01-21,-0.579
2022-01-24,-0.579
2022-01-25,-0.578
2022-01-26,-0.576
2022-01-27,-0.573
2022-01-28,-0.573
2022-01-31,-0.579
2022-02-01,-0.578
2022-02-02,-0.578
2022-02-03,-0.577
2022-02-04,-0.578
2022-02-07,-0.578
2022-02-08,-0.574
2022-02-09,-0.578
2022-02-10,-0.572
2022-02-11,-0.578
2022-02-14,-0.578
2022-02-15,-0.576
2022-02-16,-0.576
2022-02-17,-0.576
2022-02-18,-0.576
2022-02-21,-0.576
2022-02-22,-0.575
2022-02-23,-0.576
2022-02-24,-0.576
2022-02-25,-0.575
2022-02-28,-0.58
2022-03-01,-0.577
2022-03-02,-0.578
2022-03-03,-0.579
2022-03-04,-0.577
2022-03-07,-0.579
2022-03-08,-0.579
2022-03-09,-0.58
2022-03-10,-0.576
2022-03-11,-0.577
2022-03-14,-0.577
2022-03-15,-0.573
2022-03-16,-0.577
2022-03-17,-0.578
2022-03-18,-0.578
2022-03-21,-0.578
2022-03-22,-0.578
2022-03-23,-0.578
2022-03-24,-0.579
2022-03-25,-0.581
2022-03-28,-0.58
2022-03-29,-0.579
2022-03-30,-0.579
2022-03-31,-0.593
2022-04-01,-0.582
2022-04-04,-0.585
2022-04-05,-0.586
2022-04-06,-0.584
2022-04-07,-0.582
2022-04-08,-0.583
2022-04-11,-0.584
2022-04-12,-0.583
2022-04-13,-0.585
2022-04-14,-0.586
2022-04-19,-0.58
2022-04-20,-0.583
2022-04-21,-0.585
2022-04-22,-0.583
2022-04-25,-0.585
2022-04-26,-0.582
2022-04-27,-0.583
2022-04-28,-0.583
2022-04-29,-0.586
2022-05-02,-0.583
2022-05-03,-0.579
2022-05-04,-0.585
2022-05-05,-0.585
2022-05-06,-0.585
2022-05-09,-0.586
2022-05-10,-0.584
2022-05-11,-0.584
2022-05-12,-0.577
2022-05-13,-0.586
2022-05-16,-0.585
2022-05-17,-0.585
2022-05-18,-0.585
2022-05-19,-0.585
2022-05-20,-0.585
2022-05-23,-0.586
2022-05-24,-0.587
2022-05-25,-0.587
2022-05-26,-0.59
2022-05-27,-0.585
2022-05-30,-0.586
2022-05-31,-0.589
2022-06-01,-0.582
2022-06-02,-0.585
2022-06-03,-0.587
2022-06-06,-0.59
2022-06-07,-0.583
2022-06-08,-0.582
2022-06-09,-0.582
2022-06-10,-0.581
2022-06-13,-0.58
2022-06-14,-0.578
2022-06-15,-0.58
2022-06-16,-0.582
2022-06-17,-0.582
2022-06-20,-0.581
2022-06-21,-0.582
2022-06-22,-0.579
2022-06-23,-0.578
2022-06-24,-0.58
2022-06-27,-0.579
2022-06-28,-0.581
2022-06-29,-0.578
2022-06-30,-0.591
2022-07-01,-0.58
2022-07-04,-0.58
2022-07-05,-0.58
2022-07-06,-0.58
2022-07-07,-0.579
2022-07-08,-0.579
2022-07-11,-0.58
2022-07-12,-0.58
2022-07-13,-0.581
2022-07-14,-0.582
2022-07-15,-0.582
2022-07-18,-0.582
2022-07-19,-0.583
2022-07-20,-0.582
2022-07-21,-0.584
2022-07-22,-0.582
2022-07-25,-0.583
2022-07-26,-0.581
2022-07-27,-0.085
2022-07-28,-0.087
2022-07-29,-0.091
2022-08-01,-0.088
2022-08-02,-0.087
2022-08-03,-0.087
2022-08-04,-0.084
2022-08-05,-0.085
2022-08-08,-0.085
2022-08-09,-0.085
2022-08-10,-0.086
2022-08-11,-0.085
2022-08-12,-0.088
2022-08-15,-0.088
2022-08-16,-0.087
2022-08-17,-0.087
2022-08-18,-0.084
2022-08-19,-0.084
2022-08-22,-0.082
2022-08-23,-0.08
2022-08-24,-0.082
2022-08-25,-0.08
2022-08-26,-0.08
2022-08-29,-0.081
2022-08-30,-0.084
2022-08-31,-0.091
2022-09-01,-0.084
2022-09-02,-0.083
2022-09-05,-0.087
2022-09-06,-0.085
2022-09-07,-0.076
2022-09-08,-0.086
2022-09-09,-0.085
2022-09-12,-0.086
2022-09-13,-0.083
2022-09-14,0.662
2022-09-15,0.66
2022-09-16,0.66
2022-09-19,0.657
2022-09-20,0.659
2022-09-21,0.661
2022-09-22,0.661
2022-09-23,0.662
2022-09-26,0.663
2022-09-27,0.662
2022-09-28,0.662
2022-09-29,0.661
2022-09-30,0.642
2022-10-03,0.656
2022-10-04,0.657
2022-10-05,0.652
2022-10-06,0.655
2022-10-07,0.656
2022-10-10,0.655
2022-10-11,0.657
2022-10-12,0.658
2022-10-13,0.658
2022-10-14,0.657
2022-10-17,0.658
2022-10-18,0.657
2022-10-19,0.656
2022-10-20,0.656
2022-10-21,0.657
2022-10-24,0.658
2022-10-25,0.656
2022-10-26,0.656
2022-10-27,0.657
2022-10-28,0.656
2022-10-31,0.648
2022-11-01,0.659
2022-11-02,1.403
2022-11-03,1.403
2022-11-04,1.401
2022-11-07,1.4
2022-11-08,1.4
2022-11-09,1.4
2022-11-10,1.402
2022-11-11,1.404
2022-11-14,1.401
2022-11-15,1.4
2022-11-16,1.401
2022-11-17,1.402
2022-11-18,1.403
2022-11-21,1.403
2022-11-22,1.404
2022-11-23,1.405
2022-11-24,1.405
2022-11-25,1.403
2022-11-28,1.403
2022-11-29,1.402
2022-11-30,1.391
2022-12-01,1.4
2022-12-02,1.4
2022-12-05,1.398
2022-12-06,1.406
2022-12-07,1.399
2022-12-08,1.4
2022-12-09,1.4
2022-12-12,1.4
2022-12-13,1.4
2022-12-14,1.402
2022-12-15,1.403
2022-12-16,1.402
2022-12-19,1.403
2022-12-20,1.403
2022-12-21,1.902
2022-12-22,1.904
2022-12-23,1.907
2022-12-27,1.906
2022-12-28,1.906
2022-12-29,1.905
2022-12-30,1.89
2023-01-02,1.906
2023-01-03,1.904
2023-01-04,1.904
2023-01-05,1.9
2023-01-06,1.898
2023-01-09,1.9
2023-01-10,1.9
2023-01-11,1.9
2023-01-12,1.9
2023-01-13,1.901
2023-01-16,1.902
2023-01-17,1.901
2023-01-18,1.902
2023-01-19,1.903
2023-01-20,1.903
2023-01-23,1.902
2023-01-24,1.904
2023-01-25,1.904
2023-01-26,1.904
2023-01-27,1.906
2023-01-30,1.904
2023-01-31,1.894
2023-02-01,1.901
2023-02-02,1.902
2023-02-03,1.898
2023-02-06,1.901
2023-02-07,1.902
2023-02-08,2.401
2023-02-09,2.401
2023-02-10,2.401
2023-02-13,2.4
2023-02-14,2.4
2023-02-15,2.405
2023-02-16,2.4
2023-02-17,2.398
2023-02-20,2.4
1 Unnamed: 1
2 2019-10-01 -0.549
3 2019-10-02 -0.551
4 2019-10-03 -0.555
5 2019-10-04 -0.553
6 2019-10-07 -0.554
7 2019-10-08 -0.552
8 2019-10-09 -0.552
9 2019-10-10 -0.552
10 2019-10-11 -0.55
11 2019-10-14 -0.549
12 2019-10-15 -0.551
13 2019-10-16 -0.548
14 2019-10-17 -0.548
15 2019-10-18 -0.547
16 2019-10-21 -0.549
17 2019-10-22 -0.548
18 2019-10-23 -0.547
19 2019-10-24 -0.548
20 2019-10-25 -0.548
21 2019-10-28 -0.548
22 2019-10-29 -0.545
23 2019-10-30 -0.545
24 2019-10-31 -0.543
25 2019-11-01 -0.549
26 2019-11-04 -0.536
27 2019-11-05 -0.541
28 2019-11-06 -0.539
29 2019-11-07 -0.537
30 2019-11-08 -0.54
31 2019-11-11 -0.541
32 2019-11-12 -0.537
33 2019-11-13 -0.531
34 2019-11-14 -0.536
35 2019-11-15 -0.541
36 2019-11-18 -0.541
37 2019-11-19 -0.542
38 2019-11-20 -0.511
39 2019-11-21 -0.542
40 2019-11-22 -0.536
41 2019-11-25 -0.533
42 2019-11-26 -0.533
43 2019-11-27 -0.533
44 2019-11-28 -0.531
45 2019-11-29 -0.532
46 2019-12-02 -0.541
47 2019-12-03 -0.539
48 2019-12-04 -0.54
49 2019-12-05 -0.54
50 2019-12-06 -0.541
51 2019-12-09 -0.541
52 2019-12-10 -0.544
53 2019-12-11 -0.544
54 2019-12-12 -0.544
55 2019-12-13 -0.543
56 2019-12-16 -0.543
57 2019-12-17 -0.536
58 2019-12-18 -0.54
59 2019-12-19 -0.54
60 2019-12-20 -0.54
61 2019-12-23 -0.545
62 2019-12-24 -0.549
63 2019-12-27 -0.542
64 2019-12-30 -0.541
65 2019-12-31 -0.531
66 2020-01-02 -0.539
67 2020-01-03 -0.537
68 2020-01-06 -0.539
69 2020-01-07 -0.54
70 2020-01-08 -0.536
71 2020-01-09 -0.539
72 2020-01-10 -0.538
73 2020-01-13 -0.537
74 2020-01-14 -0.538
75 2020-01-15 -0.538
76 2020-01-16 -0.536
77 2020-01-17 -0.537
78 2020-01-20 -0.538
79 2020-01-21 -0.535
80 2020-01-22 -0.536
81 2020-01-23 -0.537
82 2020-01-24 -0.537
83 2020-01-27 -0.538
84 2020-01-28 -0.536
85 2020-01-29 -0.54
86 2020-01-30 -0.539
87 2020-01-31 -0.539
88 2020-02-03 -0.537
89 2020-02-04 -0.536
90 2020-02-05 -0.536
91 2020-02-06 -0.535
92 2020-02-07 -0.537
93 2020-02-10 -0.537
94 2020-02-11 -0.541
95 2020-02-12 -0.541
96 2020-02-13 -0.54
97 2020-02-14 -0.538
98 2020-02-17 -0.541
99 2020-02-18 -0.536
100 2020-02-19 -0.538
101 2020-02-20 -0.538
102 2020-02-21 -0.539
103 2020-02-24 -0.54
104 2020-02-25 -0.539
105 2020-02-26 -0.539
106 2020-02-27 -0.538
107 2020-02-28 -0.54
108 2020-03-02 -0.542
109 2020-03-03 -0.542
110 2020-03-04 -0.541
111 2020-03-05 -0.54
112 2020-03-06 -0.541
113 2020-03-09 -0.539
114 2020-03-10 -0.541
115 2020-03-11 -0.543
116 2020-03-12 -0.54
117 2020-03-13 -0.541
118 2020-03-16 -0.536
119 2020-03-17 -0.531
120 2020-03-18 -0.529
121 2020-03-19 -0.526
122 2020-03-20 -0.524
123 2020-03-23 -0.525
124 2020-03-24 -0.527
125 2020-03-25 -0.527
126 2020-03-26 -0.529
127 2020-03-27 -0.53
128 2020-03-30 -0.528
129 2020-03-31 -0.522
130 2020-04-01 -0.527
131 2020-04-02 -0.534
132 2020-04-03 -0.539
133 2020-04-06 -0.533
134 2020-04-07 -0.533
135 2020-04-08 -0.535
136 2020-04-09 -0.536
137 2020-04-14 -0.534
138 2020-04-15 -0.535
139 2020-04-16 -0.534
140 2020-04-17 -0.538
141 2020-04-20 -0.541
142 2020-04-21 -0.541
143 2020-04-22 -0.539
144 2020-04-23 -0.539
145 2020-04-24 -0.539
146 2020-04-27 -0.539
147 2020-04-28 -0.541
148 2020-04-29 -0.543
149 2020-04-30 -0.531
150 2020-05-04 -0.543
151 2020-05-05 -0.539
152 2020-05-06 -0.542
153 2020-05-07 -0.541
154 2020-05-08 -0.541
155 2020-05-11 -0.544
156 2020-05-12 -0.543
157 2020-05-13 -0.542
158 2020-05-14 -0.541
159 2020-05-15 -0.543
160 2020-05-18 -0.542
161 2020-05-19 -0.542
162 2020-05-20 -0.545
163 2020-05-21 -0.545
164 2020-05-22 -0.539
165 2020-05-25 -0.54
166 2020-05-26 -0.541
167 2020-05-27 -0.541
168 2020-05-28 -0.541
169 2020-05-29 -0.54
170 2020-06-01 -0.546
171 2020-06-02 -0.542
172 2020-06-03 -0.543
173 2020-06-04 -0.545
174 2020-06-05 -0.544
175 2020-06-08 -0.547
176 2020-06-09 -0.542
177 2020-06-10 -0.548
178 2020-06-11 -0.547
179 2020-06-12 -0.546
180 2020-06-15 -0.547
181 2020-06-16 -0.546
182 2020-06-17 -0.544
183 2020-06-18 -0.544
184 2020-06-19 -0.546
185 2020-06-22 -0.545
186 2020-06-23 -0.544
187 2020-06-24 -0.546
188 2020-06-25 -0.547
189 2020-06-26 -0.547
190 2020-06-29 -0.545
191 2020-06-30 -0.555
192 2020-07-01 -0.548
193 2020-07-02 -0.548
194 2020-07-03 -0.549
195 2020-07-06 -0.55
196 2020-07-07 -0.55
197 2020-07-08 -0.549
198 2020-07-09 -0.549
199 2020-07-10 -0.549
200 2020-07-13 -0.552
201 2020-07-14 -0.551
202 2020-07-15 -0.551
203 2020-07-16 -0.541
204 2020-07-17 -0.551
205 2020-07-20 -0.551
206 2020-07-21 -0.549
207 2020-07-22 -0.55
208 2020-07-23 -0.55
209 2020-07-24 -0.551
210 2020-07-27 -0.552
211 2020-07-28 -0.551
212 2020-07-29 -0.553
213 2020-07-30 -0.552
214 2020-07-31 -0.55
215 2020-08-03 -0.552
216 2020-08-04 -0.551
217 2020-08-05 -0.552
218 2020-08-06 -0.553
219 2020-08-07 -0.553
220 2020-08-10 -0.554
221 2020-08-11 -0.552
222 2020-08-12 -0.552
223 2020-08-13 -0.552
224 2020-08-14 -0.549
225 2020-08-17 -0.553
226 2020-08-18 -0.554
227 2020-08-19 -0.553
228 2020-08-20 -0.553
229 2020-08-21 -0.554
230 2020-08-24 -0.552
231 2020-08-25 -0.553
232 2020-08-26 -0.554
233 2020-08-27 -0.552
234 2020-08-28 -0.552
235 2020-08-31 -0.557
236 2020-09-01 -0.554
237 2020-09-02 -0.555
238 2020-09-03 -0.551
239 2020-09-04 -0.552
240 2020-09-07 -0.551
241 2020-09-08 -0.553
242 2020-09-09 -0.554
243 2020-09-10 -0.554
244 2020-09-11 -0.553
245 2020-09-14 -0.555
246 2020-09-15 -0.551
247 2020-09-16 -0.556
248 2020-09-17 -0.553
249 2020-09-18 -0.552
250 2020-09-21 -0.552
251 2020-09-22 -0.552
252 2020-09-23 -0.551
253 2020-09-24 -0.553
254 2020-09-25 -0.554
255 2020-09-28 -0.555
256 2020-09-29 -0.556
257 2020-09-30 -0.57
258 2020-10-01 -0.558
259 2020-10-02 -0.555
260 2020-10-05 -0.555
261 2020-10-06 -0.556
262 2020-10-07 -0.555
263 2020-10-08 -0.553
264 2020-10-09 -0.553
265 2020-10-12 -0.556
266 2020-10-13 -0.555
267 2020-10-14 -0.556
268 2020-10-15 -0.556
269 2020-10-16 -0.553
270 2020-10-19 -0.553
271 2020-10-20 -0.553
272 2020-10-21 -0.552
273 2020-10-22 -0.554
274 2020-10-23 -0.553
275 2020-10-26 -0.552
276 2020-10-27 -0.554
277 2020-10-28 -0.555
278 2020-10-29 -0.552
279 2020-10-30 -0.557
280 2020-11-02 -0.555
281 2020-11-03 -0.553
282 2020-11-04 -0.558
283 2020-11-05 -0.556
284 2020-11-06 -0.558
285 2020-11-09 -0.558
286 2020-11-10 -0.557
287 2020-11-11 -0.558
288 2020-11-12 -0.548
289 2020-11-13 -0.556
290 2020-11-16 -0.558
291 2020-11-17 -0.557
292 2020-11-18 -0.557
293 2020-11-19 -0.557
294 2020-11-20 -0.557
295 2020-11-23 -0.557
296 2020-11-24 -0.556
297 2020-11-25 -0.554
298 2020-11-26 -0.556
299 2020-11-27 -0.557
300 2020-11-30 -0.56
301 2020-12-01 -0.557
302 2020-12-02 -0.556
303 2020-12-03 -0.556
304 2020-12-04 -0.555
305 2020-12-07 -0.555
306 2020-12-08 -0.559
307 2020-12-09 -0.556
308 2020-12-10 -0.556
309 2020-12-11 -0.557
310 2020-12-14 -0.558
311 2020-12-15 -0.551
312 2020-12-16 -0.557
313 2020-12-17 -0.556
314 2020-12-18 -0.558
315 2020-12-21 -0.557
316 2020-12-22 -0.558
317 2020-12-23 -0.559
318 2020-12-24 -0.555
319 2020-12-28 -0.553
320 2020-12-29 -0.557
321 2020-12-30 -0.555
322 2020-12-31 -0.583
323 2021-01-04 -0.566
324 2021-01-05 -0.563
325 2021-01-06 -0.566
326 2021-01-07 -0.565
327 2021-01-08 -0.562
328 2021-01-11 -0.564
329 2021-01-12 -0.563
330 2021-01-13 -0.562
331 2021-01-14 -0.564
332 2021-01-15 -0.566
333 2021-01-18 -0.565
334 2021-01-19 -0.564
335 2021-01-20 -0.564
336 2021-01-21 -0.562
337 2021-01-22 -0.561
338 2021-01-25 -0.564
339 2021-01-26 -0.558
340 2021-01-27 -0.563
341 2021-01-28 -0.561
342 2021-01-29 -0.564
343 2021-02-01 -0.566
344 2021-02-02 -0.564
345 2021-02-03 -0.558
346 2021-02-04 -0.564
347 2021-02-05 -0.565
348 2021-02-08 -0.563
349 2021-02-09 -0.564
350 2021-02-10 -0.564
351 2021-02-11 -0.565
352 2021-02-12 -0.564
353 2021-02-15 -0.563
354 2021-02-16 -0.564
355 2021-02-17 -0.563
356 2021-02-18 -0.562
357 2021-02-19 -0.563
358 2021-02-22 -0.564
359 2021-02-23 -0.565
360 2021-02-24 -0.564
361 2021-02-25 -0.564
362 2021-02-26 -0.566
363 2021-03-01 -0.563
364 2021-03-02 -0.565
365 2021-03-03 -0.565
366 2021-03-04 -0.565
367 2021-03-05 -0.562
368 2021-03-08 -0.558
369 2021-03-09 -0.56
370 2021-03-10 -0.562
371 2021-03-11 -0.561
372 2021-03-12 -0.562
373 2021-03-15 -0.564
374 2021-03-16 -0.562
375 2021-03-17 -0.561
376 2021-03-18 -0.566
377 2021-03-19 -0.565
378 2021-03-22 -0.566
379 2021-03-23 -0.563
380 2021-03-24 -0.564
381 2021-03-25 -0.564
382 2021-03-26 -0.568
383 2021-03-29 -0.57
384 2021-03-30 -0.57
385 2021-03-31 -0.574
386 2021-04-01 -0.566
387 2021-04-06 -0.567
388 2021-04-07 -0.567
389 2021-04-08 -0.57
390 2021-04-09 -0.568
391 2021-04-12 -0.567
392 2021-04-13 -0.563
393 2021-04-14 -0.56
394 2021-04-15 -0.566
395 2021-04-16 -0.565
396 2021-04-19 -0.567
397 2021-04-20 -0.567
398 2021-04-21 -0.565
399 2021-04-22 -0.565
400 2021-04-23 -0.565
401 2021-04-26 -0.567
402 2021-04-27 -0.56
403 2021-04-28 -0.566
404 2021-04-29 -0.566
405 2021-04-30 -0.569
406 2021-05-03 -0.567
407 2021-05-04 -0.564
408 2021-05-05 -0.566
409 2021-05-06 -0.565
410 2021-05-07 -0.563
411 2021-05-10 -0.567
412 2021-05-11 -0.564
413 2021-05-12 -0.564
414 2021-05-13 -0.564
415 2021-05-14 -0.564
416 2021-05-17 -0.565
417 2021-05-18 -0.558
418 2021-05-19 -0.564
419 2021-05-20 -0.563
420 2021-05-21 -0.564
421 2021-05-24 -0.566
422 2021-05-25 -0.565
423 2021-05-26 -0.565
424 2021-05-27 -0.564
425 2021-05-28 -0.566
426 2021-05-31 -0.571
427 2021-06-01 -0.564
428 2021-06-02 -0.563
429 2021-06-03 -0.563
430 2021-06-04 -0.563
431 2021-06-07 -0.564
432 2021-06-08 -0.563
433 2021-06-09 -0.564
434 2021-06-10 -0.561
435 2021-06-11 -0.566
436 2021-06-14 -0.565
437 2021-06-15 -0.561
438 2021-06-16 -0.562
439 2021-06-17 -0.563
440 2021-06-18 -0.563
441 2021-06-21 -0.564
442 2021-06-22 -0.564
443 2021-06-23 -0.563
444 2021-06-24 -0.565
445 2021-06-25 -0.565
446 2021-06-28 -0.566
447 2021-06-29 -0.568
448 2021-06-30 -0.581
449 2021-07-01 -0.565
450 2021-07-02 -0.565
451 2021-07-05 -0.566
452 2021-07-06 -0.565
453 2021-07-07 -0.565
454 2021-07-08 -0.566
455 2021-07-09 -0.566
456 2021-07-12 -0.568
457 2021-07-13 -0.566
458 2021-07-14 -0.566
459 2021-07-15 -0.566
460 2021-07-16 -0.567
461 2021-07-19 -0.566
462 2021-07-20 -0.567
463 2021-07-21 -0.568
464 2021-07-22 -0.563
465 2021-07-23 -0.567
466 2021-07-26 -0.567
467 2021-07-27 -0.563
468 2021-07-28 -0.567
469 2021-07-29 -0.567
470 2021-07-30 -0.571
471 2021-08-02 -0.565
472 2021-08-03 -0.57
473 2021-08-04 -0.57
474 2021-08-05 -0.566
475 2021-08-06 -0.569
476 2021-08-09 -0.568
477 2021-08-10 -0.567
478 2021-08-11 -0.567
479 2021-08-12 -0.568
480 2021-08-13 -0.569
481 2021-08-16 -0.569
482 2021-08-17 -0.568
483 2021-08-18 -0.567
484 2021-08-19 -0.567
485 2021-08-20 -0.567
486 2021-08-23 -0.568
487 2021-08-24 -0.567
488 2021-08-25 -0.564
489 2021-08-26 -0.57
490 2021-08-27 -0.57
491 2021-08-30 -0.568
492 2021-08-31 -0.57
493 2021-09-01 -0.569
494 2021-09-02 -0.569
495 2021-09-03 -0.568
496 2021-09-06 -0.569
497 2021-09-07 -0.569
498 2021-09-08 -0.569
499 2021-09-09 -0.57
500 2021-09-10 -0.57
501 2021-09-13 -0.571
502 2021-09-14 -0.568
503 2021-09-15 -0.573
504 2021-09-16 -0.567
505 2021-09-17 -0.571
506 2021-09-20 -0.566
507 2021-09-21 -0.571
508 2021-09-22 -0.566
509 2021-09-23 -0.57
510 2021-09-24 -0.569
511 2021-09-27 -0.571
512 2021-09-28 -0.573
513 2021-09-29 -0.572
514 2021-09-30 -0.58
515 2021-10-01 -0.571
516 2021-10-04 -0.569
517 2021-10-05 -0.569
518 2021-10-06 -0.569
519 2021-10-07 -0.568
520 2021-10-08 -0.568
521 2021-10-11 -0.57
522 2021-10-12 -0.562
523 2021-10-13 -0.569
524 2021-10-14 -0.57
525 2021-10-15 -0.572
526 2021-10-18 -0.574
527 2021-10-19 -0.573
528 2021-10-20 -0.571
529 2021-10-21 -0.573
530 2021-10-22 -0.569
531 2021-10-25 -0.571
532 2021-10-26 -0.57
533 2021-10-27 -0.573
534 2021-10-28 -0.573
535 2021-10-29 -0.578
536 2021-11-01 -0.579
537 2021-11-02 -0.569
538 2021-11-03 -0.574
539 2021-11-04 -0.573
540 2021-11-05 -0.572
541 2021-11-08 -0.575
542 2021-11-09 -0.575
543 2021-11-10 -0.576
544 2021-11-11 -0.575
545 2021-11-12 -0.572
546 2021-11-15 -0.569
547 2021-11-16 -0.571
548 2021-11-17 -0.571
549 2021-11-18 -0.571
550 2021-11-19 -0.573
551 2021-11-22 -0.573
552 2021-11-23 -0.574
553 2021-11-24 -0.57
554 2021-11-25 -0.573
555 2021-11-26 -0.573
556 2021-11-29 -0.573
557 2021-11-30 -0.575
558 2021-12-01 -0.574
559 2021-12-02 -0.575
560 2021-12-03 -0.578
561 2021-12-06 -0.578
562 2021-12-07 -0.577
563 2021-12-08 -0.577
564 2021-12-09 -0.578
565 2021-12-10 -0.577
566 2021-12-13 -0.579
567 2021-12-14 -0.577
568 2021-12-15 -0.577
569 2021-12-16 -0.577
570 2021-12-17 -0.576
571 2021-12-20 -0.576
572 2021-12-21 -0.571
573 2021-12-22 -0.574
574 2021-12-23 -0.576
575 2021-12-24 -0.58
576 2021-12-27 -0.576
577 2021-12-28 -0.575
578 2021-12-29 -0.578
579 2021-12-30 -0.58
580 2021-12-31 -0.59
581 2022-01-03 -0.578
582 2022-01-04 -0.578
583 2022-01-05 -0.578
584 2022-01-06 -0.578
585 2022-01-07 -0.58
586 2022-01-10 -0.579
587 2022-01-11 -0.579
588 2022-01-12 -0.578
589 2022-01-13 -0.578
590 2022-01-14 -0.578
591 2022-01-17 -0.578
592 2022-01-18 -0.579
593 2022-01-19 -0.578
594 2022-01-20 -0.579
595 2022-01-21 -0.579
596 2022-01-24 -0.579
597 2022-01-25 -0.578
598 2022-01-26 -0.576
599 2022-01-27 -0.573
600 2022-01-28 -0.573
601 2022-01-31 -0.579
602 2022-02-01 -0.578
603 2022-02-02 -0.578
604 2022-02-03 -0.577
605 2022-02-04 -0.578
606 2022-02-07 -0.578
607 2022-02-08 -0.574
608 2022-02-09 -0.578
609 2022-02-10 -0.572
610 2022-02-11 -0.578
611 2022-02-14 -0.578
612 2022-02-15 -0.576
613 2022-02-16 -0.576
614 2022-02-17 -0.576
615 2022-02-18 -0.576
616 2022-02-21 -0.576
617 2022-02-22 -0.575
618 2022-02-23 -0.576
619 2022-02-24 -0.576
620 2022-02-25 -0.575
621 2022-02-28 -0.58
622 2022-03-01 -0.577
623 2022-03-02 -0.578
624 2022-03-03 -0.579
625 2022-03-04 -0.577
626 2022-03-07 -0.579
627 2022-03-08 -0.579
628 2022-03-09 -0.58
629 2022-03-10 -0.576
630 2022-03-11 -0.577
631 2022-03-14 -0.577
632 2022-03-15 -0.573
633 2022-03-16 -0.577
634 2022-03-17 -0.578
635 2022-03-18 -0.578
636 2022-03-21 -0.578
637 2022-03-22 -0.578
638 2022-03-23 -0.578
639 2022-03-24 -0.579
640 2022-03-25 -0.581
641 2022-03-28 -0.58
642 2022-03-29 -0.579
643 2022-03-30 -0.579
644 2022-03-31 -0.593
645 2022-04-01 -0.582
646 2022-04-04 -0.585
647 2022-04-05 -0.586
648 2022-04-06 -0.584
649 2022-04-07 -0.582
650 2022-04-08 -0.583
651 2022-04-11 -0.584
652 2022-04-12 -0.583
653 2022-04-13 -0.585
654 2022-04-14 -0.586
655 2022-04-19 -0.58
656 2022-04-20 -0.583
657 2022-04-21 -0.585
658 2022-04-22 -0.583
659 2022-04-25 -0.585
660 2022-04-26 -0.582
661 2022-04-27 -0.583
662 2022-04-28 -0.583
663 2022-04-29 -0.586
664 2022-05-02 -0.583
665 2022-05-03 -0.579
666 2022-05-04 -0.585
667 2022-05-05 -0.585
668 2022-05-06 -0.585
669 2022-05-09 -0.586
670 2022-05-10 -0.584
671 2022-05-11 -0.584
672 2022-05-12 -0.577
673 2022-05-13 -0.586
674 2022-05-16 -0.585
675 2022-05-17 -0.585
676 2022-05-18 -0.585
677 2022-05-19 -0.585
678 2022-05-20 -0.585
679 2022-05-23 -0.586
680 2022-05-24 -0.587
681 2022-05-25 -0.587
682 2022-05-26 -0.59
683 2022-05-27 -0.585
684 2022-05-30 -0.586
685 2022-05-31 -0.589
686 2022-06-01 -0.582
687 2022-06-02 -0.585
688 2022-06-03 -0.587
689 2022-06-06 -0.59
690 2022-06-07 -0.583
691 2022-06-08 -0.582
692 2022-06-09 -0.582
693 2022-06-10 -0.581
694 2022-06-13 -0.58
695 2022-06-14 -0.578
696 2022-06-15 -0.58
697 2022-06-16 -0.582
698 2022-06-17 -0.582
699 2022-06-20 -0.581
700 2022-06-21 -0.582
701 2022-06-22 -0.579
702 2022-06-23 -0.578
703 2022-06-24 -0.58
704 2022-06-27 -0.579
705 2022-06-28 -0.581
706 2022-06-29 -0.578
707 2022-06-30 -0.591
708 2022-07-01 -0.58
709 2022-07-04 -0.58
710 2022-07-05 -0.58
711 2022-07-06 -0.58
712 2022-07-07 -0.579
713 2022-07-08 -0.579
714 2022-07-11 -0.58
715 2022-07-12 -0.58
716 2022-07-13 -0.581
717 2022-07-14 -0.582
718 2022-07-15 -0.582
719 2022-07-18 -0.582
720 2022-07-19 -0.583
721 2022-07-20 -0.582
722 2022-07-21 -0.584
723 2022-07-22 -0.582
724 2022-07-25 -0.583
725 2022-07-26 -0.581
726 2022-07-27 -0.085
727 2022-07-28 -0.087
728 2022-07-29 -0.091
729 2022-08-01 -0.088
730 2022-08-02 -0.087
731 2022-08-03 -0.087
732 2022-08-04 -0.084
733 2022-08-05 -0.085
734 2022-08-08 -0.085
735 2022-08-09 -0.085
736 2022-08-10 -0.086
737 2022-08-11 -0.085
738 2022-08-12 -0.088
739 2022-08-15 -0.088
740 2022-08-16 -0.087
741 2022-08-17 -0.087
742 2022-08-18 -0.084
743 2022-08-19 -0.084
744 2022-08-22 -0.082
745 2022-08-23 -0.08
746 2022-08-24 -0.082
747 2022-08-25 -0.08
748 2022-08-26 -0.08
749 2022-08-29 -0.081
750 2022-08-30 -0.084
751 2022-08-31 -0.091
752 2022-09-01 -0.084
753 2022-09-02 -0.083
754 2022-09-05 -0.087
755 2022-09-06 -0.085
756 2022-09-07 -0.076
757 2022-09-08 -0.086
758 2022-09-09 -0.085
759 2022-09-12 -0.086
760 2022-09-13 -0.083
761 2022-09-14 0.662
762 2022-09-15 0.66
763 2022-09-16 0.66
764 2022-09-19 0.657
765 2022-09-20 0.659
766 2022-09-21 0.661
767 2022-09-22 0.661
768 2022-09-23 0.662
769 2022-09-26 0.663
770 2022-09-27 0.662
771 2022-09-28 0.662
772 2022-09-29 0.661
773 2022-09-30 0.642
774 2022-10-03 0.656
775 2022-10-04 0.657
776 2022-10-05 0.652
777 2022-10-06 0.655
778 2022-10-07 0.656
779 2022-10-10 0.655
780 2022-10-11 0.657
781 2022-10-12 0.658
782 2022-10-13 0.658
783 2022-10-14 0.657
784 2022-10-17 0.658
785 2022-10-18 0.657
786 2022-10-19 0.656
787 2022-10-20 0.656
788 2022-10-21 0.657
789 2022-10-24 0.658
790 2022-10-25 0.656
791 2022-10-26 0.656
792 2022-10-27 0.657
793 2022-10-28 0.656
794 2022-10-31 0.648
795 2022-11-01 0.659
796 2022-11-02 1.403
797 2022-11-03 1.403
798 2022-11-04 1.401
799 2022-11-07 1.4
800 2022-11-08 1.4
801 2022-11-09 1.4
802 2022-11-10 1.402
803 2022-11-11 1.404
804 2022-11-14 1.401
805 2022-11-15 1.4
806 2022-11-16 1.401
807 2022-11-17 1.402
808 2022-11-18 1.403
809 2022-11-21 1.403
810 2022-11-22 1.404
811 2022-11-23 1.405
812 2022-11-24 1.405
813 2022-11-25 1.403
814 2022-11-28 1.403
815 2022-11-29 1.402
816 2022-11-30 1.391
817 2022-12-01 1.4
818 2022-12-02 1.4
819 2022-12-05 1.398
820 2022-12-06 1.406
821 2022-12-07 1.399
822 2022-12-08 1.4
823 2022-12-09 1.4
824 2022-12-12 1.4
825 2022-12-13 1.4
826 2022-12-14 1.402
827 2022-12-15 1.403
828 2022-12-16 1.402
829 2022-12-19 1.403
830 2022-12-20 1.403
831 2022-12-21 1.902
832 2022-12-22 1.904
833 2022-12-23 1.907
834 2022-12-27 1.906
835 2022-12-28 1.906
836 2022-12-29 1.905
837 2022-12-30 1.89
838 2023-01-02 1.906
839 2023-01-03 1.904
840 2023-01-04 1.904
841 2023-01-05 1.9
842 2023-01-06 1.898
843 2023-01-09 1.9
844 2023-01-10 1.9
845 2023-01-11 1.9
846 2023-01-12 1.9
847 2023-01-13 1.901
848 2023-01-16 1.902
849 2023-01-17 1.901
850 2023-01-18 1.902
851 2023-01-19 1.903
852 2023-01-20 1.903
853 2023-01-23 1.902
854 2023-01-24 1.904
855 2023-01-25 1.904
856 2023-01-26 1.904
857 2023-01-27 1.906
858 2023-01-30 1.904
859 2023-01-31 1.894
860 2023-02-01 1.901
861 2023-02-02 1.902
862 2023-02-03 1.898
863 2023-02-06 1.901
864 2023-02-07 1.902
865 2023-02-08 2.401
866 2023-02-09 2.401
867 2023-02-10 2.401
868 2023-02-13 2.4
869 2023-02-14 2.4
870 2023-02-15 2.405
871 2023-02-16 2.4
872 2023-02-17 2.398
873 2023-02-20 2.4

View File

@@ -0,0 +1,12 @@
,Maturity,Rate
0,0.08333333333333333,4.64
1,0.25,4.72
2,0.5,4.88
3,1.0,4.87
4,2.0,4.45
5,3.0,4.08
6,5.0,3.82
7,7.0,3.75
8,10.0,3.63
9,20.0,3.86
10,30.0,3.7
1 Maturity Rate
2 0 0.08333333333333333 4.64
3 1 0.25 4.72
4 2 0.5 4.88
5 3 1.0 4.87
6 4 2.0 4.45
7 5 3.0 4.08
8 6 5.0 3.82
9 7 7.0 3.75
10 8 10.0 3.63
11 9 20.0 3.86
12 10 30.0 3.7

View File

@@ -0,0 +1,6 @@
,Maturity,Rate
0,5,1.36
1,7,1.32
2,10,1.29
3,20,1.35
4,30,1.41
1 Maturity Rate
2 0 5 1.36
3 1 7 1.32
4 2 10 1.29
5 3 20 1.35
6 4 30 1.41

View File

@@ -0,0 +1,2 @@
,united_states (10 year),canada (10 year)
2022-01-01,0.22,0.4571955
1 united_states (10 year) canada (10 year)
2 2022-01-01 0.22 0.4571955

View File

@@ -0,0 +1,2 @@
,united_states (10 year with forecast),canada (10 year with forecast)
2022-01-01,0.443333333333333,0.651304655666667
1 united_states (10 year with forecast) canada (10 year with forecast)
2 2022-01-01 0.443333333333333 0.651304655666667

View File

@@ -0,0 +1,2 @@
,united_states (3 month),canada (3 month)
2022-01-01,1.76,1.759
1 united_states (3 month) canada (3 month)
2 2022-01-01 1.76 1.759

View File

@@ -0,0 +1,2 @@
,united_states (3 month with forecast),canada (3 month with forecast)
2022-01-01,1.94,1.923549199
1 united_states (3 month with forecast) canada (3 month with forecast)
2 2022-01-01 1.94 1.923549199

View File

@@ -0,0 +1,28 @@
import pandas as pd
import pytest
from openbb_terminal.fixedincome import ecb_model
@pytest.mark.vcr
def test_get_series_data(recorder):
"""Test get_series_data"""
data = ecb_model.get_series_data(
"EST.B.EU000A2X2A25.WT", start_date="2022-01-01", end_date="2022-01-31"
)
assert isinstance(data, pd.DataFrame)
recorder.capture(data)
@pytest.mark.vcr
def test_get_ecb_yield_curve(recorder):
"""Test get_ecb_yield_curve"""
data = ecb_model.get_ecb_yield_curve(
date="2023-02-15",
yield_type="spot_rate",
return_date=True,
detailed=False,
any_rating=True,
)
assert isinstance(data, tuple)
recorder.capture(data[0])

View File

@@ -0,0 +1,602 @@
import os
from datetime import datetime
import pytest
from openbb_terminal.fixedincome import fixedincome_controller
MOCK_START = datetime.strptime("2022-01-01", "%Y-%m-%d")
MOCK_END = datetime.strptime("2022-01-31", "%Y-%m-%d")
@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.fixedincome.fixedincome_controller"
# MOCK SWITCH
mocker.patch(
target=f"{path_controller}.FixedIncomeController.switch",
return_value=["quit"],
)
result_menu = fixedincome_controller.FixedIncomeController(queue=queue).menu()
assert result_menu == expected
@pytest.mark.vcr(record_mode="none")
def test_menu_without_queue_completion(mocker):
path_controller = "openbb_terminal.fixedincome.fixedincome_controller"
# ENABLE AUTO-COMPLETION : HELPER_FUNCS.MENU
mocker.patch(
target="openbb_terminal.feature_flags.USE_PROMPT_TOOLKIT",
new=True,
)
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
mocker.patch.object(
target=fixedincome_controller.obbff,
attribute="USE_PROMPT_TOOLKIT",
new=True,
)
mocker.patch(
target=f"{path_controller}.session",
)
mocker.patch(
target=f"{path_controller}.session.prompt",
return_value="quit",
)
result_menu = fixedincome_controller.FixedIncomeController(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.fixedincome.fixedincome_controller"
# DISABLE AUTO-COMPLETION
mocker.patch.object(
target=fixedincome_controller.obbff,
attribute="USE_PROMPT_TOOLKIT",
new=False,
)
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}.FixedIncomeController.switch",
new=mock_switch,
)
result_menu = fixedincome_controller.FixedIncomeController(queue=None).menu()
assert result_menu == ["help"]
@pytest.mark.vcr(record_mode="none")
@pytest.mark.record_stdout
def test_print_help():
controller = fixedincome_controller.FixedIncomeController(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",
"reset",
"fixedincome",
],
),
],
)
def test_switch(an_input, expected_queue):
controller = fixedincome_controller.FixedIncomeController(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 = fixedincome_controller.FixedIncomeController(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"],
),
("call_exit", ["help"], ["quit", "quit", "help"]),
("call_home", [], ["quit"]),
("call_help", [], []),
("call_quit", [], ["quit"]),
("call_quit", ["help"], ["quit", "help"]),
(
"call_reset",
[],
[
"quit",
"reset",
"fixedincome",
],
),
(
"call_reset",
["help"],
[
"quit",
"reset",
"fixedincome",
"help",
],
),
],
)
def test_call_func_expect_queue(expected_queue, func, queue):
controller = fixedincome_controller.FixedIncomeController(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_estr",
[
"-p=total_volume",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_estr",
[],
dict(
parameter="total_volume",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_estr",
[
"--source=ECB",
"-p=total_volume",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"ecb_view.plot_estr",
[],
dict(
parameter="total_volume",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_sofr",
[
"-p=180_day_average",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_sofr",
[],
dict(
parameter="180_day_average",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_sonia",
[
"-p=index",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_sonia",
[],
dict(
parameter="index",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_ameribor",
[
"-p=2_year_term_structure",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_ameribor",
[],
dict(
parameter="2_year_term_structure",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_fed",
[
"-p=monthly",
"--overnight",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_fed",
[],
dict(
parameter="monthly",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
overnight=True,
quantiles=False,
target=False,
raw=False,
),
),
(
"call_iorb",
[
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_iorb",
[],
dict(
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_dwpcr",
[
"-p=annual",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_dwpcr",
[],
dict(
parameter="annual",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_ecb",
[
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"fred_view.plot_ecb",
[],
dict(
interest_type=None,
raw=False,
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_treasury",
[
"--short=united_kingdom",
"--long=united_states,canada",
"--forecast",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
],
"oecd_view.plot_treasuries",
[],
dict(
forecast=True,
raw=False,
long_term=["united_states", "canada"],
short_term=["united_kingdom"],
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
),
),
(
"call_usrates",
[
"-m=7_year",
"-p=tips",
"--forecast",
"-s=2022-01-01",
"-e=2022-01-31",
"--export=csv",
"--raw",
],
"fred_view.plot_usrates",
[],
dict(
parameter="tips",
maturity="7_year",
start_date=MOCK_START,
end_date=MOCK_END,
export="csv",
sheet_name=None,
raw=True,
),
),
(
"call_ycrv",
["-d=2022-01-01", "--raw"],
"fred_view.display_yield_curve",
[],
dict(
date="2022-01-01",
inflation_adjusted=False,
export="",
sheet_name=None,
raw=True,
),
),
(
"call_ecbycrv",
["-d=2022-01-01", "--raw", "-p=spot_rate"],
"ecb_view.display_ecb_yield_curve",
[],
dict(
date="2022-01-01",
yield_type="spot_rate",
export="",
detailed=False,
any_rating=False,
sheet_name=None,
raw=True,
),
),
(
"call_tmc",
[
"-s=2022-01-01",
"-e=2022-01-31",
],
"fred_view.plot_tmc",
[],
dict(
parameter="3_month",
start_date=MOCK_START,
end_date=MOCK_END,
sheet_name=None,
export="",
),
),
(
"call_ffrmc",
[
"-s=2022-01-01",
"-e=2022-01-31",
],
"fred_view.plot_ffrmc",
[],
dict(
parameter="10_year",
start_date=MOCK_START,
end_date=MOCK_END,
sheet_name=None,
export="",
),
),
(
"call_tbffr",
[
"-s=2022-01-01",
"-e=2022-01-31",
],
"fred_view.plot_tbffr",
[],
dict(
parameter="3_month",
start_date=MOCK_START,
end_date=MOCK_END,
sheet_name=None,
export="",
),
),
(
"call_icebofa",
[
"-t=yield",
"-a=us",
"-g=aaa",
"-s=2022-01-01",
"-e=2022-01-31",
],
"fred_view.plot_icebofa",
[],
dict(
data_type="yield",
category="all",
grade="aaa",
area="us",
raw=False,
options=False,
description=False,
start_date=MOCK_START,
end_date=MOCK_END,
sheet_name=None,
export="",
),
),
(
"call_moody",
[
"-t=aaa",
"--spread=fed_funds",
"-s=2022-01-01",
"-e=2022-01-31",
],
"fred_view.plot_moody",
[],
dict(
data_type="aaa",
spread="fed_funds",
raw=False,
start_date=MOCK_START,
end_date=MOCK_END,
sheet_name=None,
export="",
),
),
(
"call_cp",
[
"-m=overnight",
"-c=non_financial",
"-s=2022-01-01",
"-e=2022-01-31",
],
"fred_view.plot_cp",
[],
dict(
maturity="overnight",
category="non_financial",
grade="aa",
description=False,
raw=False,
options=False,
start_date=MOCK_START,
end_date=MOCK_END,
sheet_name=None,
export="",
),
),
(
"call_spot",
[
"-s=2022-01-01",
"-e=2022-01-31",
],
"fred_view.plot_spot",
[],
dict(
maturity=["10y"],
category=["spot_rate"],
description=False,
raw=False,
start_date=MOCK_START,
end_date=MOCK_END,
sheet_name=None,
export="",
),
),
],
)
def test_call_cmd(
tested_func, mocked_func, other_args, called_args, called_kwargs, mocker
):
path_controller = "openbb_terminal.fixedincome.fixedincome_controller"
if mocked_func:
mock = mocker.Mock()
mocker.patch(
target=f"{path_controller}.{mocked_func}",
new=mock,
)
controller = fixedincome_controller.FixedIncomeController(queue=None)
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 = fixedincome_controller.FixedIncomeController(queue=None)
getattr(controller, tested_func)(other_args)

View File

@@ -0,0 +1,23 @@
import pandas as pd
import pytest
from openbb_terminal.fixedincome import fred_model
@pytest.fixture(scope="module")
def vcr_config():
return {
"filter_headers": [("User-Agent", None)],
"filter_query_parameters": [
("api_key", "MOCK_API_KEY"),
],
}
@pytest.mark.vcr
@pytest.mark.parametrize("inflation", [True, False])
def test_yield_curve(recorder, inflation):
data = fred_model.get_yield_curve(date="2023-02-08", inflation_adjusted=inflation)
assert isinstance(data, pd.DataFrame)
recorder.capture(data)

View File

@@ -0,0 +1,20 @@
from datetime import datetime
import pandas as pd
import pytest
from openbb_terminal.fixedincome import oecd_model
@pytest.mark.vcr
@pytest.mark.parametrize("data", ["short", "short_forecast", "long", "long_forecast"])
def test_get_interest_rates(recorder, data):
"""Test get_interest_rates"""
data = oecd_model.get_interest_rate_data(
data=data,
countries=["united_states", "canada"],
start_date=datetime.strptime("2022-01-01", "%Y-%m-%d"),
end_date=datetime.strptime("2022-01-31", "%Y-%m-%d"),
)
assert isinstance(data, pd.DataFrame)
recorder.capture(data)

View File

@@ -0,0 +1,32 @@
Reference rates:
estr euro short-term rate (estr) [FRED, ECB]
sofr secured overnight financing rate (sofr) [FRED]
sonia sterling overnight index average (sonia) [FRED]
ameribor american interbank offered rate (ameribor) [FRED]
Central bank rates:
fed effective federal funds rate [FRED]
projection the Federal Reserve's projection of the federal funds rate. [FRED]
iorb interest rate on reserve balances [FRED]
dwpcr discount window primary credit rate [FRED]
ecb key ECB interest rates [FRED]
Government Bonds:
treasury plot countries (including forecast) treasury rates [OECD]
usrates plot U.S. secondary market, constant maturity or inflation protected treasuries [FRED]
ycrv plot the yield curve based on constant maturity U.S. treasuries [FRED]
ecbycrv plot the yield curve based on Euro Area treasuries [ECB]
Corporate Bonds:
icebofa display ICE BofA Corporate Indices [FRED]
moody display Moody's AAA and BAA Corporate indices [FRED]
cp display short-term, promissory notes issued by corporations [FRED]
spot display spot rates ranging from 1 year to a 100 years [FRED]
hqm display the High Quality Market (HQM) corporate yield curve [FRED]
Spreads:
icespread display spread between ICE BofA Corporate Indices and spot treasury curve [FRED]
tmc 10-year treasury constant maturity minus selected treasury constant maturity [FRED]
ffrmc selected treasury constant maturity minus federal funds rate [FRED]
tbffr selected treasury bill minus federal funds rate [FRED]

View File

@@ -1,5 +1,5 @@
search search for a future based on category or exchange [YahooFinance]
historical get historical timeseries [YahooFinance]
historical get historical timeseries [YahooFinance, DataBento]
curve get futures curves [YahooFinance]

View File

@@ -0,0 +1,118 @@
interactions:
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate
Authorization:
- MOCK_AUTHORIZATION
Connection:
- keep-alive
method: GET
uri: https://hist.databento.com/v0/timeseries.stream?dataset=XNAS.ITCH&symbols=AAPL&schema=ohlcv-1d&start=2022-08-01&end=2022-12-01&stype_in=native&encoding=csv
response:
body:
string: 'ts_event,publisher_id,product_id,open,high,low,close,volume
1659312000000000000,2,27,162200000000,163590000000,160830000000,161400000000,10045637
1659398400000000000,2,27,160730000000,162410000000,159550000000,160010000000,10065910
1659484800000000000,2,27,160060000000,166595000000,159850000000,165840000000,13326012
1659571200000000000,2,27,165830000000,167190000000,164430000000,165850000000,9578445
1659657600000000000,2,27,166000000000,166230000000,162790000000,164920000000,9683719
1659916800000000000,2,27,166080000000,167800000000,164200000000,165150000000,9135766
1660003200000000000,2,29,164990000000,165810000000,163460000000,164970000000,9230005
1660089600000000000,2,29,165010000000,169310000000,164560000000,169130000000,11638513
1660176000000000000,2,29,169240000000,170990000000,168190000000,168800000000,9732568
1660262400000000000,2,29,169180000000,172170000000,168650000000,171850000000,11916663
1660521600000000000,2,29,171140000000,173390000000,170740000000,173150000000,8485815
1660608000000000000,2,29,172830000000,174080000000,171670000000,173700000000,9979182
1660694400000000000,2,29,172670000000,176150000000,172140000000,173320000000,13581411
1660780800000000000,2,29,173200000000,174890000000,173130000000,174090000000,11175367
1660867200000000000,2,29,173600000000,173730000000,170700000000,170790000000,11296793
1661126400000000000,2,29,169400000000,169860000000,167135000000,167950000000,13070702
1661212800000000000,2,29,167610000000,168700000000,166650000000,167130000000,10629743
1661299200000000000,2,29,166930000000,168410000000,166245000000,167910000000,9482192
1661385600000000000,2,29,169270000000,170340000000,168230000000,170200000000,9874644
1661472000000000000,2,29,169900000000,171130000000,162300000000,162450000000,14062181
1661731200000000000,2,29,161790000000,162910000000,159830000000,161780000000,12363097
1661817600000000000,2,29,162600000000,163340000000,157730000000,158960000000,11853126
1661904000000000000,2,29,159650000000,160570000000,155770000000,156000000000,13343001
1661990400000000000,2,29,155890000000,158690000000,154675000000,158620000000,13016463
1662076800000000000,2,29,157710000000,160360000000,154965000000,155650000000,12975036
1662422400000000000,2,29,156790000000,157390000000,153730000000,154490000000,14840703
1662508800000000000,2,29,154800000000,156660000000,153610000000,155960000000,13205605
1662595200000000000,2,29,155950000000,156430000000,152680000000,154620000000,14072194
1662681600000000000,2,29,155260000000,157805000000,154760000000,157520000000,10213517
1662940800000000000,2,29,158000000000,164260000000,158000000000,164100000000,15959461
1663027200000000000,2,29,164150000000,164900000000,153385000000,154250000000,19181953
1663113600000000000,2,29,154470000000,157100000000,153250000000,156000000000,15250245
1663200000000000000,2,29,155960000000,156040000000,151100000000,151270000000,13929824
1663286400000000000,2,29,151350000000,151510000000,148360000000,151290000000,19608708
1663545600000000000,2,29,149820000000,155000000000,148700000000,155000000000,13024172
1663632000000000000,2,29,154270000000,158080000000,153090000000,156480000000,16126729
1663718400000000000,2,29,156580000000,158740000000,152240000000,152400000000,16938650
1663804800000000000,2,29,153530000000,154960000000,150920000000,153090000000,14902502
1663891200000000000,2,29,152250000000,152550000000,148560000000,150570000000,16074945
1664150400000000000,2,29,150420000000,153770000000,149140000000,151100000000,14918149
1664236800000000000,2,29,152840000000,154690000000,149950000000,151870000000,14873042
1664323200000000000,2,29,148500000000,150640000000,144840000000,149370000000,24532649
1664409600000000000,2,29,148000000000,148180000000,140680000000,142410000000,21075773
1664496000000000000,2,29,143160000000,143580000000,137220000000,137540000000,20801834
'
headers:
date:
- Tue, 21 Feb 2023 14:37:29 GMT
server:
- uvicorn
transfer-encoding:
- chunked
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,45 @@
time,Open,High,Low,Close,Volume
2022-08-01,162.2,163.59,160.83,161.4,10045637
2022-08-02,160.73,162.41,159.55,160.01,10065910
2022-08-03,160.06,166.595,159.85,165.84,13326012
2022-08-04,165.83,167.19,164.43,165.85,9578445
2022-08-05,166.0,166.23,162.79,164.92,9683719
2022-08-08,166.08,167.8,164.2,165.15,9135766
2022-08-09,164.99,165.81,163.46,164.97,9230005
2022-08-10,165.01,169.31,164.56,169.13,11638513
2022-08-11,169.24,170.99,168.19,168.8,9732568
2022-08-12,169.18,172.17,168.65,171.85,11916663
2022-08-15,171.14,173.39,170.74,173.15,8485815
2022-08-16,172.83,174.08,171.67,173.7,9979182
2022-08-17,172.67,176.15,172.14,173.32,13581411
2022-08-18,173.2,174.89,173.13,174.09,11175367
2022-08-19,173.6,173.73,170.7,170.79,11296793
2022-08-22,169.4,169.86,167.135,167.95,13070702
2022-08-23,167.61,168.7,166.65,167.13,10629743
2022-08-24,166.93,168.41,166.245,167.91,9482192
2022-08-25,169.27,170.34,168.23,170.2,9874644
2022-08-26,169.9,171.13,162.3,162.45,14062181
2022-08-29,161.79,162.91,159.83,161.78,12363097
2022-08-30,162.6,163.34,157.73,158.96,11853126
2022-08-31,159.65,160.57,155.77,156.0,13343001
2022-09-01,155.89,158.69,154.675,158.62,13016463
2022-09-02,157.71,160.36,154.965,155.65,12975036
2022-09-06,156.79,157.39,153.73,154.49,14840703
2022-09-07,154.8,156.66,153.61,155.96,13205605
2022-09-08,155.95,156.43,152.68,154.62,14072194
2022-09-09,155.26,157.805,154.76,157.52,10213517
2022-09-12,158.0,164.26,158.0,164.1,15959461
2022-09-13,164.15,164.9,153.385,154.25,19181953
2022-09-14,154.47,157.1,153.25,156.0,15250245
2022-09-15,155.96,156.04,151.1,151.27,13929824
2022-09-16,151.35,151.51,148.36,151.29,19608708
2022-09-19,149.82,155.0,148.7,155.0,13024172
2022-09-20,154.27,158.08,153.09,156.48,16126729
2022-09-21,156.58,158.74,152.24,152.4,16938650
2022-09-22,153.53,154.96,150.92,153.09,14902502
2022-09-23,152.25,152.55,148.56,150.57,16074945
2022-09-26,150.42,153.77,149.14,151.1,14918149
2022-09-27,152.84,154.69,149.95,151.87,14873042
2022-09-28,148.5,150.64,144.84,149.37,24532649
2022-09-29,148.0,148.18,140.68,142.41,21075773
2022-09-30,143.16,143.58,137.22,137.54,20801834
1 time Open High Low Close Volume
2 2022-08-01 162.2 163.59 160.83 161.4 10045637
3 2022-08-02 160.73 162.41 159.55 160.01 10065910
4 2022-08-03 160.06 166.595 159.85 165.84 13326012
5 2022-08-04 165.83 167.19 164.43 165.85 9578445
6 2022-08-05 166.0 166.23 162.79 164.92 9683719
7 2022-08-08 166.08 167.8 164.2 165.15 9135766
8 2022-08-09 164.99 165.81 163.46 164.97 9230005
9 2022-08-10 165.01 169.31 164.56 169.13 11638513
10 2022-08-11 169.24 170.99 168.19 168.8 9732568
11 2022-08-12 169.18 172.17 168.65 171.85 11916663
12 2022-08-15 171.14 173.39 170.74 173.15 8485815
13 2022-08-16 172.83 174.08 171.67 173.7 9979182
14 2022-08-17 172.67 176.15 172.14 173.32 13581411
15 2022-08-18 173.2 174.89 173.13 174.09 11175367
16 2022-08-19 173.6 173.73 170.7 170.79 11296793
17 2022-08-22 169.4 169.86 167.135 167.95 13070702
18 2022-08-23 167.61 168.7 166.65 167.13 10629743
19 2022-08-24 166.93 168.41 166.245 167.91 9482192
20 2022-08-25 169.27 170.34 168.23 170.2 9874644
21 2022-08-26 169.9 171.13 162.3 162.45 14062181
22 2022-08-29 161.79 162.91 159.83 161.78 12363097
23 2022-08-30 162.6 163.34 157.73 158.96 11853126
24 2022-08-31 159.65 160.57 155.77 156.0 13343001
25 2022-09-01 155.89 158.69 154.675 158.62 13016463
26 2022-09-02 157.71 160.36 154.965 155.65 12975036
27 2022-09-06 156.79 157.39 153.73 154.49 14840703
28 2022-09-07 154.8 156.66 153.61 155.96 13205605
29 2022-09-08 155.95 156.43 152.68 154.62 14072194
30 2022-09-09 155.26 157.805 154.76 157.52 10213517
31 2022-09-12 158.0 164.26 158.0 164.1 15959461
32 2022-09-13 164.15 164.9 153.385 154.25 19181953
33 2022-09-14 154.47 157.1 153.25 156.0 15250245
34 2022-09-15 155.96 156.04 151.1 151.27 13929824
35 2022-09-16 151.35 151.51 148.36 151.29 19608708
36 2022-09-19 149.82 155.0 148.7 155.0 13024172
37 2022-09-20 154.27 158.08 153.09 156.48 16126729
38 2022-09-21 156.58 158.74 152.24 152.4 16938650
39 2022-09-22 153.53 154.96 150.92 153.09 14902502
40 2022-09-23 152.25 152.55 148.56 150.57 16074945
41 2022-09-26 150.42 153.77 149.14 151.1 14918149
42 2022-09-27 152.84 154.69 149.95 151.87 14873042
43 2022-09-28 148.5 150.64 144.84 149.37 24532649
44 2022-09-29 148.0 148.18 140.68 142.41 21075773
45 2022-09-30 143.16 143.58 137.22 137.54 20801834

View File

@@ -0,0 +1,35 @@
import pytest
from openbb_terminal.stocks import databento_model
@pytest.fixture(scope="module")
def vcr_config():
return {
"filter_headers": [
("User-Agent", None),
("Authorization", "MOCK_AUTHORIZATION"),
],
}
def test_databento_model():
"""Tests the DataBento model."""
model = databento_model.DataBento(
symbol="AAPL", start="2021-08-10", end="2021-08-11"
)
assert model.symbol == "AAPL"
assert model.exchange == "XNAS.ITCH"
assert model.stype == "native"
assert model.start == "2021-08-10"
assert model.end == "2021-08-11"
@pytest.mark.vcr
def test_stock_load(recorder):
"""Tests the stock load function."""
result = databento_model.get_historical_stock(
symbol="AAPL", start_date="2022-08-01", end_date="2022-12-01"
)
assert result.empty is False
recorder.capture(result)

View File

@@ -1,5 +1,5 @@
search search a specific stock ticker for analysis [FinanceDatabase]
load load a specific stock ticker and additional info for analysis [YahooFinance, AlphaVantage, Polygon, EODHD, Intrinio]
load load a specific stock ticker and additional info for analysis [YahooFinance, AlphaVantage, Polygon, EODHD, Intrinio, DataBento]
Stock:

View File

@@ -0,0 +1,235 @@
---
title: Fixed Income
keywords: [fixed income, government bonds, bonds, corporate bonds, fixed, income, interest, rates, inflation, central bank, reference, rates, sofr, sonia, ester, estr]
description: The Fixed Income menu is the high-level menu for the Fixed Income asset class. It contains reference rates, central bank rates, government bonds, yield curves, corporate bond benchmarks and more.
---
The Fixed Income module is the high-level menu for the Fixed Income asset class. It contains reference rates (ESTER, SOFR, SONIA and Ameribor), central bank rates (FRED, FOMC projections and ECB key interest rates), government bonds (treasury rates for any country, us-specific rates, yield curves), corporate bonds (ICE BofA Corporate Indices, Moody's AAA and BAA Corporate Indices, Commercial Paper, Spot Rates and HQM Corporate Yield Curve) and spread (ICE BofA spreads, constant maturity spreads, and federal funds rate)
## How to Use
​The examples provided below will assume that the following import block is included at the beginning of the Python script or Notebook file:
​
```python
from openbb_terminal.sdk import openbb
import pandas as pd
```
​Below is a brief description of each function within the Fixed Income module:
|Path |Type |Description |
|:---------|:---------:|------------------------------:|
|openbb.fixedincome.ameribor |Function | Obtain data for American Interbank Offered Rate (AMERIBOR) |
|openbb.fixedincome.cp | Function | Obtain Commercial Paper data |
|openbb.fixedincome.dwpcr |Function | Obtain data for the Discount Window Primary Credit Rate |
|openbb.fixedincome.ecb |Function | Obtain data for ECB interest rates |
|openbb.fixedincome.ecbycrv |Function | Gets euro area yield curve data from ECB |
|openbb.fixedincome.estr |Function | Obtain data for Euro Short-Term Rate (ESTR) |
|openbb.fixedincome.fed |Function | Obtain data for Effective Federal Funds Rate |
|openbb.fixedincome.ffrmc |Function | Get data for Selected Treasury Constant Maturity Minus Federal Funds Rate |
|openbb.fixedincome.hqm |Function | Obtain the HQM yield curve |
|openbb.fixedincome.icebofa |Function | Get data for ICE BofA US Corporate Bond Indices |
|openbb.fixedincome.icespread |Function | Get data for ICE BofA US Corporate Bond Spreads |
|openbb.fixedincome.iorb |Function | Obtain data for Interest Rate on Reserve Balances. |
|openbb.fixedincome.moody |Function | Get data for Moody Corporate Bond Index |
|openbb.fixedincome.projection |Function | Obtain data for the Federal Reserve's projection of the federal funds rate |
|openbb.fixedincome.sofr |Function | Obtain data for Secured Overnight Financing Rate (SOFR)|
|openbb.fixedincome.sonia |Function | Obtain data for Sterling Overnight Index Average (SONIA) |
|openbb.fixedincome.spot |Function | Obtain HQM spot rate data |
|openbb.fixedincome.tbffr |Function | Get data for Selected Treasury Bill Minus Federal Funds Rate |
|openbb.fixedincome.tmc |Function | Get data for 10-Year Treasury Constant Maturity Minus Selected Treasury Constant Maturity |
|openbb.fixedincome.treasury |Function | Obtain 3-month or 10-year treasury rates for any country |
|openbb.fixedincome.usrates |Function | Plot various treasury rates from the United States |
|openbb.fixedincome.ycrv |Function | Gets yield curve data from FRED |
Alteratively you can print the contents of the Fixed Income SDK with:
​
```python
help(openbb.fixedincome)
```
## Examples
Starting off by calling some reference rates, these can be either `estr`, `sofr`, `sonia` or `ameribor`. For example the 1 year term structure of Ameribor is plotted with `openbb.fixedincome.ameribor('1_year_term_structure')` as shown below, showing only the last 10 periods in this example:
| | AMERIBOR|
|:--------------------|--------:|
| 2023-02-12 00:00:00 | 5.13275 |
| 2023-02-13 00:00:00 | 5.15549 |
| 2023-02-14 00:00:00 | 5.22839 |
| 2023-02-15 00:00:00 | 5.20813 |
| 2023-02-16 00:00:00 | 5.20832 |
| 2023-02-17 00:00:00 | 5.2491 |
| 2023-02-19 00:00:00 | 5.2491 |
| 2023-02-20 00:00:00 | 5.2491 |
| 2023-02-21 00:00:00 | 5.32425 |
| 2023-02-22 00:00:00 | 5.32988 |
The two most prominent central bank rates, those of the Federal Reserve and the European Central Bank can be obtained with `openbb.fixedincome.fed` and `openbb.fixedincome.ecb` respectively. For instance `openbb.fixedincome.fed` shows the monthly Federal Funds Rate, showing only the last 10 periods in this example:
| | FED |
|:--------------------|-----:|
| 2022-04-01 00:00:00 | 0.33 |
| 2022-05-01 00:00:00 | 0.77 |
| 2022-06-01 00:00:00 | 1.21 |
| 2022-07-01 00:00:00 | 1.68 |
| 2022-08-01 00:00:00 | 2.33 |
| 2022-09-01 00:00:00 | 2.56 |
| 2022-10-01 00:00:00 | 3.08 |
| 2022-11-01 00:00:00 | 3.78 |
| 2022-12-01 00:00:00 | 4.1 |
| 2023-01-01 00:00:00 | 4.33 |
This can be accompanied with the projections, officially published by the FOMC. Here the long run expectations are plotted, which also backtracks several years, with `openbb.fixedincome.projection(long_run=True)`, showing only the last 5 periods in this example:
| | Range High | Central tendency High | Median | Range Midpoint | Central tendency Midpoint | Range Low | Central tendency Low |
|:-----------|-------------:|------------------------:|---------:|-----------------:|----------------------------:|------------:|-----------------------:|
| 2021-12-15 | 3 | 2.5 | 2.5 | 2.5 | 2.4 | 2 | 2.3 |
| 2022-03-16 | 3 | 2.5 | 2.4 | 2.5 | 2.4 | 2 | 2.3 |
| 2022-06-15 | 3 | 2.5 | 2.5 | 2.5 | 2.4 | 2 | 2.3 |
| 2022-09-21 | 3 | 2.5 | 2.5 | 2.65 | 2.4 | 2.3 | 2.3 |
| 2022-12-14 | 3.3 | 2.5 | 2.5 | 2.8 | 2.4 | 2.3 | 2.3 |
The European Central Bank rates can be shown with `openbb.fixedincome.ecb`. The ECB publishes three different rates that can be shown separately with `openbb.fixedincome.ecb('deposit)` for example or plotted together with `openbb.fixedincome.ecb` as shown below, showing only the last 10 periods in this example:
| | Deposit | Lending | Refinancing |
|:-----------|----------:|----------:|--------------:|
| 2023-02-14 | 2.5 | 3.25 | 3 |
| 2023-02-15 | 2.5 | 3.25 | 3 |
| 2023-02-16 | 2.5 | 3.25 | 3 |
| 2023-02-17 | 2.5 | 3.25 | 3 |
| 2023-02-18 | 2.5 | 3.25 | 3 |
| 2023-02-19 | 2.5 | 3.25 | 3 |
| 2023-02-20 | 2.5 | 3.25 | 3 |
| 2023-02-21 | 2.5 | 3.25 | 3 |
| 2023-02-22 | 2.5 | 3.25 | 3 |
| 2023-02-23 | 2.5 | 3.25 | 3 |
In terms of government bonds, any combination of short term (3 month) and long term (10 year) government bonds for any country can be plotted with `openbb.fixedincome.treasury` for example `openbb.fixedincome.treasury(short_term=['canada', 'united_states'], long_term=['canada', 'united_states'])` as shown below, showing only the last 10 periods in this example:
| | canada (3 month) | united_states (3 month) | canada (10 year) | united_states (10 year) |
|:-----------|-------------------:|--------------------------:|-------------------:|--------------------------:|
| 2022-04-01 | 2.704 | 2.75 | 1.34664 | 0.91 |
| 2022-05-01 | 2.91857 | 2.9 | 1.78189 | 1.33 |
| 2022-06-01 | 3.31545 | 3.14 | 2.24735 | 1.87 |
| 2022-07-01 | 3.04316 | 2.9 | 3.01411 | 2.5 |
| 2022-08-01 | 2.85909 | 2.9 | 3.38221 | 2.76 |
| 2022-09-01 | 3.1479 | 3.52 | 3.79193 | 3.21 |
| 2022-10-01 | 3.38053 | 3.98 | 4.23083 | 3.85 |
| 2022-11-01 | 3.16619 | 3.89 | 4.37634 | 4.46 |
| 2022-12-01 | 2.9415 | 3.62 | 4.55302 | 4.51 |
| 2023-01-01 | 2.93762 | 3.53 | 4.7638 | 4.61 |
For both the United States and the Eurozone, it is possible to see the current government bond yield curve. For the Eurozone, it is an aggregation of countries that match a specific credit rating, by default AAA, as shown with `openbb.fixedincome.ecbycrv`.
| | Maturity | Rate |
|---:|-----------:|--------:|
| 0 | 0.25 | 2.61446 |
| 1 | 0.5 | 2.86441 |
| 2 | 1 | 2.97514 |
| 3 | 2 | 2.82012 |
| 4 | 3 | 2.68811 |
| 5 | 5 | 2.58939 |
| 6 | 7 | 2.57123 |
| 7 | 10 | 2.57545 |
| 8 | 20 | 2.55717 |
| 9 | 30 | 2.45648 |
When it comes to Corporate Bonds, the major indices are included. These are the ICE BofA indices and the Moody's Aaa and Baa indices. Based on a query, specific benchmarks can be found. For example a collection of indices matching a variety of bond maturities with `openbb.fixedincome.icebofa(category='duration')`, showing only the last 5 periods in this example:
| | ICE BofA 1-3 Year US Corporate Index Effective Yield | ICE BofA 3-5 Year US Corporate Index Effective Yield | ICE BofA 5-7 Year US Corporate Index Effective Yield | ICE BofA 7-10 Year US Corporate Index Effective Yield | ICE BofA 10-15 Year US Corporate Index Effective Yield | ICE BofA 15+ Year US Corporate Index Effective Yield |
|:-----------|-------------------------------------------------------:|-------------------------------------------------------:|-------------------------------------------------------:|--------------------------------------------------------:|---------------------------------------------------------:|-------------------------------------------------------:|
| 2023-02-09 | 5.22 | 5.04 | 5.12 | 5.2 | 5.34 | 5.32 |
| 2023-02-10 | 5.27 | 5.11 | 5.21 | 5.3 | 5.43 | 5.41 |
| 2023-02-13 | 5.28 | 5.14 | 5.2 | 5.28 | 5.41 | 5.38 |
| 2023-02-14 | 5.36 | 5.23 | 5.28 | 5.32 | 5.44 | 5.39 |
| 2023-02-15 | 5.36 | 5.26 | 5.31 | 5.36 | 5.48 | 5.43 |
| 2023-02-16 | 5.38 | 5.29 | 5.35 | 5.42 | 5.54 | 5.52 |
| 2023-02-17 | 5.37 | 5.26 | 5.33 | 5.42 | 5.53 | 5.5 |
| 2023-02-20 | 5.39 | 5.27 | 5.33 | 5.42 | 5.53 | 5.5 |
| 2023-02-21 | 5.49 | 5.41 | 5.49 | 5.58 | 5.68 | 5.63 |
| 2023-02-22 | 5.49 | 5.4 | 5.48 | 5.56 | 5.65 | 5.59 |
The Moody's Aaa is often referred to as a great alternative to the federal ten-year Treasury bill as an indicator for interest rates and can be plotted with `openbb.fixedincome.moody`, showing only the last 5 periods in this example:
| | aaa_index |
|:-----------|------------:|
| 2023-02-15 | 4.59 |
| 2023-02-16 | 4.64 |
| 2023-02-17 | 4.65 |
| 2023-02-21 | 4.76 |
| 2023-02-22 | 4.71 |
Next to that, there are spot rates available for the High Quality Market (HQM) ranging from 1 year to a 100 years through `openbb.fixedincome.spot`. With this, it is also possible to plot the yield curve with `openbb.fixedincome.hqm` for any date in the past. For example `openbb.fixedincome.hqm(date='2020-01-01')` as shown below:
| Maturity | spot |
|-----------:|-------:|
| 0.5 | 1.76 |
| 1 | 1.8 |
| 2 | 1.86 |
| 3 | 1.91 |
| 5 | 2.07 |
| 7 | 2.35 |
| 10 | 2.79 |
| 20 | 3.35 |
| 30 | 3.48 |
| 50 | 3.6 |
| 75 | 3.65 |
| 100 | 3.68 |
Furthermore, it is possible to see spreads between a variety of assets. For example the Emerging Markets spread can be shown with `openbb.fixedincome.icespread(category='all', area='emea')`. This is based on the spot treasury curve. Showing only the last 5 periods in this example:
| | ICE BofA EMEA Emerging Markets Corporate Plus Index Option-Adjusted Spread |
|:-----------|-----------------------------------------------------------------------------:|
| 2023-02-16 | 2.66 |
| 2023-02-17 | 2.75 |
| 2023-02-20 | 2.75 |
| 2023-02-21 | 2.74 |
| 2023-02-22 | 2.77 |
For both `openbb.fixedincome.icebofa` and `openbb.fixedincome.icespread` it is possible to see all the options with `options`. Find an example for `openbb.fixedincome.icespread(options=True)` below.
| | Type | Category | Area | Grade | Title |
|----:|:-------|:-----------|:--------------|:---------------|:------------------------------------------------------------------------------------------------------|
| 2 | spread | duration | us | non_sovereign | ICE BofA 1-3 Year US Corporate Index Option-Adjusted Spread |
| 6 | spread | duration | us | non_sovereign | ICE BofA 3-5 Year US Corporate Index Option-Adjusted Spread |
| 10 | spread | duration | us | non_sovereign | ICE BofA 5-7 Year US Corporate Index Option-Adjusted Spread |
| 14 | spread | duration | us | non_sovereign | ICE BofA 7-10 Year US Corporate Index Option-Adjusted Spread |
| 18 | spread | duration | us | non_sovereign | ICE BofA 10-15 Year US Corporate Index Option-Adjusted Spread |
| 22 | spread | duration | us | non_sovereign | ICE BofA 15+ Year US Corporate Index Option-Adjusted Spread |
| 26 | spread | all | us | non_sovereign | ICE BofA US Corporate Index Option-Adjusted Spread |
| 30 | spread | usd | us | high_yield | ICE BofA US High Yield Index Option-Adjusted Spread |
| 34 | spread | eur | eu | high_yield | ICE BofA Euro High Yield Index Option-Adjusted Spread |
| 38 | spread | all | ex_g10 | non_sovereign | ICE BofA Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 42 | spread | all | ex_g10 | private_sector | ICE BofA Private Sector Financial Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 46 | spread | usd | ex_g10 | non_sovereign | ICE BofA US Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 50 | spread | eur | ex_g10 | non_sovereign | ICE BofA Euro Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 54 | spread | usd | ex_g10 | non_sovereign | ICE BofA US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 58 | spread | usd | ex_g10 | non_financial | ICE BofA Non-Financial US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 62 | spread | usd | ex_g10 | public_sector | ICE BofA Public Sector Issuers US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 66 | spread | all | emea | non_sovereign | ICE BofA EMEA Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 70 | spread | usd | emea | non_sovereign | ICE BofA EMEA US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 74 | spread | all | asia | non_sovereign | ICE BofA Asia Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 78 | spread | usd | asia | non_sovereign | ICE BofA Asia US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 82 | spread | all | latin_america | non_sovereign | ICE BofA Latin America Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 86 | spread | usd | latin_america | non_sovereign | ICE BofA Latin America US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 90 | spread | all | ex_g10 | aaa | ICE BofA AAA-A Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 94 | spread | usd | ex_g10 | aaa | ICE BofA AAA-A US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 98 | spread | all | ex_g10 | high_grade | ICE BofA High Grade Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 102 | spread | all | ex_g10 | bbb | ICE BofA BBB Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 106 | spread | usd | ex_g10 | bbb | ICE BofA BBB US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread |
| 110 | spread | all | ex_g10 | crossover | ICE BofA Crossover Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 114 | spread | all | ex_g10 | bb | ICE BofA BB Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 118 | spread | all | ex_g10 | high_yield | ICE BofA High Yield Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 122 | spread | all | ex_g10 | b | ICE BofA B & Lower Emerging Markets Corporate Plus Index Option-Adjusted Spread |
| 126 | spread | usd | us | aaa | ICE BofA AAA US Corporate Index Option-Adjusted Spread |
| 130 | spread | usd | us | aa | ICE BofA AA US Corporate Index Option-Adjusted Spread |
| 134 | spread | usd | us | a | ICE BofA Single-A US Corporate Index Option-Adjusted Spread |
| 138 | spread | usd | us | bbb | ICE BofA BBB US Corporate Index Option-Adjusted Spread |
| 142 | spread | usd | us | bb | ICE BofA BB US High Yield Index Option-Adjusted Spread |
| 146 | spread | usd | us | b | ICE BofA Single-B US High Yield Index Option-Adjusted Spread |
| 150 | spread | usd | us | ccc | ICE BofA CCC & Lower US High Yield Index Option-Adjusted Spread |

View File

@@ -0,0 +1,171 @@
---
title: Fixed Income
keywords: [fixed income, government bonds, bonds, corporate bonds, fixed, income, interest, rates, inflation, central bank, reference, rates, sofr, sonia, ester, estr]
description: The Fixed Income menu is the high-level menu for the Fixed Income asset class. It contains reference rates, central bank rates, government bonds, yield curves, corporate bond benchmarks and more.
---
The Fixed Income menu is the high-level menu for the Fixed Income asset class. It contains reference rates (ESTER, SOFR, SONIA and Ameribor), central bank rates (FRED, FOMC projections and ECB key interest rates), government bonds (treasury rates for any country, us-specific rates, yield curves), corporate bonds (ICE BofA Corporate Indices, Moody's AAA and BAA Corporate Indices, Commercial Paper, Spot Rates and HQM Corporate Yield Curve) and spread (ICE BofA spreads, constant maturity spreads, and federal funds rate)
## How to Use
The Fixed Income menu can be accessed directly from the `home` screen by typing `fixedincome`. This opens the menu as shown below. The menu heavily relies on FRED to obtain the data as seen below, please refer to the [API keys guide](https://docs.openbb.co/terminal/guides/advanced/api-keys) for information on how to obtain and set a key for FRED.
![Fixed Income Menu](https://user-images.githubusercontent.com/46355364/220970904-d32a63b5-aa14-47b4-bfe6-b5efc1cf2cd4.png)
## Examples
Starting off by calling some reference rates, these can be either `estr`, `sofr`, `sonia` or `ameribor`. For example the 1 year term structure of Ameribor is plotted with ` ameribor --parameter 1_year_term_structure` as shown below.
![Ameribor](https://user-images.githubusercontent.com/46355364/220971559-341f3144-b902-479d-998f-b68face9ba47.png)
The two most prominent central bank rates, those of the Federal Reserve and the European Central Bank can be plotted with `fed` and `ecb` respectively. For instance `fed` plots the monthly Federal Funds Rate.
![FED](https://user-images.githubusercontent.com/46355364/220971850-3ce5db4c-810a-49ba-a0bc-9043aa2a6090.png)
This can be accompanied with the projections, officially published by the FOMC. Here the long run expectations are plotted, which also backtracks several years, with `projection --long-run`:
![Projection](https://user-images.githubusercontent.com/46355364/220972251-688b12de-cf06-4907-9857-edda4aac64fb.png)
The European Central Bank rates can be shown with `ecb`. The ECB publishes three different rates that can be shown separately with ` ecb --type deposit` for example or plotted together with `ecb` as shown below.
![ECB](https://user-images.githubusercontent.com/46355364/220972670-0e5b11c6-7174-497a-ad18-36266e6a68c6.png)
In terms of government bonds, any combination of short term (3 month) and long term (10 year) government bonds for any country can be plotted with `treasury` for example `treasury --short canada,united_states --long canada,united_states` as shown below.
![Treasury Rates](https://user-images.githubusercontent.com/46355364/220973452-f7bdd468-e4fd-4c7a-aa45-3ce3c41f1f33.png)
With all of these functionalities, it is always possible to `--export` to Excel or show the raw data with `--raw` as shown below:
```
(🦋) /fixedincome/ $ treasury --short canada,united_states --long canada,united_states --raw
Short and Long Term Interest Rates
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃ canada (3 month) ┃ united_states (3 month) ┃ canada (10 year) ┃ united_states (10 year) ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 2022-04-01 │ 2.704 │ 2.750 │ 1.347 │ 0.910 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-05-01 │ 2.919 │ 2.900 │ 1.782 │ 1.330 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-06-01 │ 3.315 │ 3.140 │ 2.247 │ 1.870 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-07-01 │ 3.043 │ 2.900 │ 3.014 │ 2.500 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-08-01 │ 2.859 │ 2.900 │ 3.382 │ 2.760 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-09-01 │ 3.148 │ 3.520 │ 3.792 │ 3.210 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-10-01 │ 3.381 │ 3.980 │ 4.231 │ 3.850 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-11-01 │ 3.166 │ 3.890 │ 4.376 │ 4.460 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2022-12-01 │ 2.942 │ 3.620 │ 4.553 │ 4.510 │
├────────────┼──────────────────┼─────────────────────────┼──────────────────┼─────────────────────────┤
│ 2023-01-01 │ 2.938 │ 3.530 │ 4.764 │ 4.610 │
└────────────┴──────────────────┴─────────────────────────┴──────────────────┴─────────────────────────┘
```
For both the United States and the Eurozone, it is possible to see the current government bond yield curve. For the Eurozone, it is an aggregation of countries that match a specific credit rating, by default AAA, as shown with `ecbycrv`.
![Euro Area Yield Curve](https://user-images.githubusercontent.com/46355364/220974746-bd0fcf31-1108-458f-8f0f-893d3704ad7b.png)
When it comes to Corporate Bonds, the major indices are included. These are the ICE BofA indices and the Moody's Aaa and Baa indices. Based on a query, specific benchmarks can be found. For example a collection of indices matching a variety of bond maturities with `icebofa --duration`.
![ICE BOFA](https://user-images.githubusercontent.com/46355364/220975450-c3940875-8f47-48ca-9e19-c736bbc3f733.png)
The Moody's Aaa is often referred to as a great alternative to the federal ten-year Treasury bill as an indicator for interest rates and can be plotted with `moody`:
![Moody](https://user-images.githubusercontent.com/46355364/220976111-419e0b42-3ae8-41d4-8e41-95774be42a64.png)
Next to that, there are spot rates available for the High Quality Market (HQM) ranging from 1 year to a 100 years through `spot`. With this, it is also possible to plot the yield curve with `hqm` for any date in the past. For example `hqm --date 2020-01-01` as shown below:
![HQM](https://user-images.githubusercontent.com/46355364/220976622-58bcab69-4901-4b00-99d4-7462082a088d.png)
Furthermore, it is possible to see spreads between a variety of assets. For example the Emerging Markets spread can be shown with `icespread --category all --area emea`. This is based on the spot treasury curve.
![Emerging Market Spread](https://user-images.githubusercontent.com/46355364/220977016-98bde6f5-7432-40c4-a07b-598199c7381d.png)
For both `icebofa` and `icespread` it is possible to see all the options with `--options`. Find an example for `icespread` below.
```
(🦋) /fixedincome/ $ icespread --options
┏━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Type ┃ Category ┃ Area ┃ Grade ┃ Title ┃
┡━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ spread │ duration │ us │ non_sovereign │ ICE BofA 1-3 Year US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ duration │ us │ non_sovereign │ ICE BofA 3-5 Year US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ duration │ us │ non_sovereign │ ICE BofA 5-7 Year US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ duration │ us │ non_sovereign │ ICE BofA 7-10 Year US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ duration │ us │ non_sovereign │ ICE BofA 10-15 Year US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ duration │ us │ non_sovereign │ ICE BofA 15+ Year US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ us │ non_sovereign │ ICE BofA US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ high_yield │ ICE BofA US High Yield Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ eur │ eu │ high_yield │ ICE BofA Euro High Yield Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ non_sovereign │ ICE BofA Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ private_sector │ ICE BofA Private Sector Financial Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ ex_g10 │ non_sovereign │ ICE BofA US Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ eur │ ex_g10 │ non_sovereign │ ICE BofA Euro Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ ex_g10 │ non_sovereign │ ICE BofA US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ ex_g10 │ non_financial │ ICE BofA Non-Financial US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ ex_g10 │ public_sector │ ICE BofA Public Sector Issuers US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ emea │ non_sovereign │ ICE BofA EMEA Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ emea │ non_sovereign │ ICE BofA EMEA US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ asia │ non_sovereign │ ICE BofA Asia Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ asia │ non_sovereign │ ICE BofA Asia US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ latin_america │ non_sovereign │ ICE BofA Latin America Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ latin_america │ non_sovereign │ ICE BofA Latin America US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ aaa │ ICE BofA AAA-A Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ ex_g10 │ aaa │ ICE BofA AAA-A US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ high_grade │ ICE BofA High Grade Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ bbb │ ICE BofA BBB Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ ex_g10 │ bbb │ ICE BofA BBB US Emerging Markets Liquid Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ crossover │ ICE BofA Crossover Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ bb │ ICE BofA BB Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ high_yield │ ICE BofA High Yield Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ all │ ex_g10 │ b │ ICE BofA B & Lower Emerging Markets Corporate Plus Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ aaa │ ICE BofA AAA US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ aa │ ICE BofA AA US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ a │ ICE BofA Single-A US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ bbb │ ICE BofA BBB US Corporate Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ bb │ ICE BofA BB US High Yield Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ b │ ICE BofA Single-B US High Yield Index Option-Adjusted Spread │
├────────┼──────────┼───────────────┼────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ spread │ usd │ us │ ccc │ ICE BofA CCC & Lower US High Yield Index Option-Adjusted Spread │
└────────┴──────────┴───────────────┴────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────┘
```