mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-04 00:12:29 +00:00
added more options for available series - more user friendly?
This commit is contained in:
@@ -1,31 +1,41 @@
|
||||
# FRED
|
||||
|
||||
The purpose of fred is to have the ability to look at economic data.
|
||||
https://fred.stlouisfed.org
|
||||
|
||||
* [gdp](#gdp)
|
||||
* Get GDP data
|
||||
The purpose of fred is to have the ability to look at economic data. This page offers 2 options:
|
||||
|
||||
* [predefined](#gdp)
|
||||
* Get predefined data
|
||||
* [cust](#cust)
|
||||
* Get custom fred data
|
||||
|
||||
## gdp <a name="gdp"></a>
|
||||
```text
|
||||
usage: gdp [-n N_TO_GET] [-s START_DATE] [--noplot] [--hidedata]
|
||||
```
|
||||
Gets GDP data. Data is released quarterly
|
||||
* -n : Number of points to display. If unspecified, it will display all available.
|
||||
* -s : Start Date. Format YYYY-mm-dd. First point to get. Defaults to Jan 1 2015
|
||||
* --noplot : Flag to hide plot
|
||||
* --hidedata : Flag to suppress printing output
|
||||
The current predefined options are
|
||||
* GDP
|
||||
* 1,5,10,30 Year Treasury Rates
|
||||
* 30 Year Mortgage Rates
|
||||
* Unemployment Rate
|
||||
* 3 Month LIBOR
|
||||
* Moody's AAA Corporate Bond
|
||||
|
||||
To get and plot the last 20 reported GDP values:
|
||||
## predefined <a name="predefined"></a>
|
||||
```text
|
||||
usage: selected [-n N_TO_GET] [-s START_DATE] [--noplot] [--hidedata]
|
||||
```
|
||||
Gets predefined data. Arguments
|
||||
* selected : Key from the predefined list.
|
||||
* -s : Start Date. Format YYYY-mm-dd. First point to get. Defaults to Jan 1 2019
|
||||
* --noplot : Flag to hide plot
|
||||
* --hidedata : Flag to suppress printing output. Useful for data released daily/weekly.
|
||||
|
||||
To plot the 30-Year Mortgage rates since 2018-01-01 suppressing the output.
|
||||
````
|
||||
gdp -n 20
|
||||
mort30 -s 2018-01-01 --hidedata
|
||||
````
|
||||
To show all GDP data since 1/1/2016, with no plot.
|
||||
````
|
||||
gdp -s 2016-01-01 --noplot
|
||||
````
|
||||
Outputs:
|
||||
Output:
|
||||
````
|
||||
GDP
|
||||
Date
|
||||
@@ -64,41 +74,46 @@ usage: cust [-i --id] [-s START_DATE] [--noplot] [--hidedata]
|
||||
* --noplot : Flag to suppress output plot.
|
||||
* --hidedata : Flag to suppress data output
|
||||
|
||||
An example of custom data could be the unemployment rate. According to https://fred.stlouisfed.org/series/UNRATE , the series ID is UNRATE. So to plot this for 2019 to now
|
||||
An example of custom data could be the USD/EURO exchange rate.
|
||||
According to https://fred.stlouisfed.org/series/DEXUSEU , the series ID is DEXUSEU. So to plot this from the start of February 2021 to now (3/17)
|
||||
|
||||
````
|
||||
cust --id UNRATE -s 2019-01-01
|
||||
cust --id UNRATE -s 2021-02-01
|
||||
````
|
||||
This will plot and display:
|
||||
|
||||
|
||||
````
|
||||
UNRATE
|
||||
Date
|
||||
2019-01-01 4.0
|
||||
2019-02-01 3.8
|
||||
2019-03-01 3.8
|
||||
2019-04-01 3.7
|
||||
2019-05-01 3.7
|
||||
2019-06-01 3.6
|
||||
2019-07-01 3.6
|
||||
2019-08-01 3.7
|
||||
2019-09-01 3.5
|
||||
2019-10-01 3.6
|
||||
2019-11-01 3.6
|
||||
2019-12-01 3.6
|
||||
2020-01-01 3.5
|
||||
2020-02-01 3.5
|
||||
2020-03-01 4.4
|
||||
2020-04-01 14.8
|
||||
2020-05-01 13.3
|
||||
2020-06-01 11.1
|
||||
2020-07-01 10.2
|
||||
2020-08-01 8.4
|
||||
2020-09-01 7.8
|
||||
2020-10-01 6.9
|
||||
2020-11-01 6.7
|
||||
2020-12-01 6.7
|
||||
2021-01-01 6.3
|
||||
2021-02-01 6.2
|
||||
````
|
||||
DEXUSEU
|
||||
Date
|
||||
2021-02-01 1.2070
|
||||
2021-02-02 1.2020
|
||||
2021-02-03 1.2025
|
||||
2021-02-04 1.1974
|
||||
2021-02-05 1.2035
|
||||
2021-02-08 1.2045
|
||||
2021-02-09 1.2106
|
||||
2021-02-10 1.2132
|
||||
2021-02-11 1.2127
|
||||
2021-02-12 1.2126
|
||||
2021-02-15 NaN
|
||||
2021-02-16 1.2107
|
||||
2021-02-17 1.2042
|
||||
2021-02-18 1.2078
|
||||
2021-02-19 1.2136
|
||||
2021-02-22 1.2155
|
||||
2021-02-23 1.2142
|
||||
2021-02-24 1.2143
|
||||
2021-02-25 1.2229
|
||||
2021-02-26 1.2093
|
||||
2021-03-01 1.2054
|
||||
2021-03-02 1.2079
|
||||
2021-03-03 1.2073
|
||||
2021-03-04 1.2045
|
||||
2021-03-05 1.1914
|
||||
2021-03-08 1.1849
|
||||
2021-03-09 1.1885
|
||||
2021-03-10 1.1900
|
||||
2021-03-11 1.1978
|
||||
````
|
||||
|
||||
Note the NaN on 2-15, which corresponds to President's Day.
|
||||
@@ -14,32 +14,48 @@ from gamestonk_terminal import feature_flags as gtff
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
api_map = {
|
||||
"gdp": "GDP",
|
||||
"t10": "DGS10",
|
||||
"t01": "DGS1",
|
||||
"t05": "DGS5",
|
||||
"t30": "DGS30",
|
||||
"mort30": "MORTGAGE30US",
|
||||
"libor3m": "USD3MTD156N",
|
||||
"moodAAA": "AAA",
|
||||
"unemp": "UNRATE",
|
||||
}
|
||||
title_map = {
|
||||
"gdp": "GDP",
|
||||
"t10": "10-Year Treasury Constant Maturity Rate",
|
||||
"t01": "1-Year Treasury Constant Maturity Rate",
|
||||
"t05": "5-Year Treasury Constant Maturity Rate",
|
||||
"t30": "30-Year Treasury Constant Maturity Rate",
|
||||
"mort30": "30-Year Treasury Constant Maturity Rate",
|
||||
"libor3m": "3-Month LIBOR, based on U.S. Dollar",
|
||||
"moodAAA": "Moody's Seasoned AAA Corporate Bond Yield",
|
||||
"unemp": "Unemployment Rate",
|
||||
}
|
||||
|
||||
def get_GDP(l_args):
|
||||
|
||||
def get_fred_data(l_args, choice):
|
||||
fred = Fred(api_key=API_FRED_KEY)
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
prog="GDP",
|
||||
prog="Custom",
|
||||
description="""
|
||||
GDP
|
||||
""",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-n",
|
||||
dest="n_to_get",
|
||||
type=int,
|
||||
default=-1,
|
||||
required=False,
|
||||
help="Number of GDP Values to Grab",
|
||||
Custom Data
|
||||
""",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
dest="start_date",
|
||||
type=valid_date,
|
||||
default="2015-01-01",
|
||||
default="2019-01-01",
|
||||
required=False,
|
||||
help="Date to Start",
|
||||
help="Starting date (YYYY-MM-DD) of data",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
@@ -64,32 +80,33 @@ def get_GDP(l_args):
|
||||
if not ns_parser:
|
||||
return
|
||||
|
||||
gdp = fred.get_series("GDP", ns_parser.start_date)
|
||||
gdp = pd.DataFrame(gdp, columns=["GDP"])
|
||||
gdp.index.name = "Date"
|
||||
if int(ns_parser.n_to_get) > 0:
|
||||
lastn = gdp.tail(int(ns_parser.n_to_get))
|
||||
|
||||
else:
|
||||
lastn = gdp
|
||||
string_to_get = api_map[choice]
|
||||
title = title_map[choice]
|
||||
data = fred.get_series(string_to_get, ns_parser.start_date)
|
||||
|
||||
data = pd.DataFrame(data, columns=[f"{string_to_get}"])
|
||||
data.index.name = "Date"
|
||||
if ns_parser.hidedata:
|
||||
print(lastn)
|
||||
print(data)
|
||||
print("")
|
||||
|
||||
if ns_parser.noplot:
|
||||
plt.figure(figsize=plot_autoscale(), dpi=PLOT_DPI)
|
||||
plt.plot(lastn.index, lastn.GDP, "-ok")
|
||||
plt.plot(data.index, data.iloc[:, 0], "-ok")
|
||||
plt.xlabel("Time")
|
||||
plt.xlim(lastn.index[0], lastn.index[-1])
|
||||
plt.ylabel("GDP (bn $)")
|
||||
plt.title("FRED GDP Data (in Billions of USD)")
|
||||
plt.xlim(data.index[0], data.index[-1])
|
||||
plt.ylabel(f"{string_to_get}")
|
||||
plt.grid(b=True, which="major", color="#666666", linestyle="-")
|
||||
plt.minorticks_on()
|
||||
plt.grid(b=True, which="minor", color="#999999", linestyle="-", alpha=0.2)
|
||||
plt.title(title)
|
||||
plt.show()
|
||||
print("")
|
||||
|
||||
if gtff.USE_ION:
|
||||
plt.ion()
|
||||
|
||||
except SystemExit:
|
||||
print("")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print("")
|
||||
@@ -114,7 +131,7 @@ def custom_data(l_args):
|
||||
"-s",
|
||||
dest="start_date",
|
||||
type=valid_date,
|
||||
default="2015-01-01",
|
||||
default="2019-01-01",
|
||||
required=False,
|
||||
help="Starting date (YYYY-MM-DD) of data",
|
||||
)
|
||||
|
||||
@@ -14,15 +14,36 @@ def print_fred():
|
||||
print(" q quit this menu, and shows back to main menu")
|
||||
print(" quit quit to abandon program")
|
||||
print(" ")
|
||||
print(" gdp get GDP")
|
||||
print(" cust User Specified FRED Data")
|
||||
print(" gdp GDP")
|
||||
print(" unemp Unemployment Rate")
|
||||
print(" t01 1-Year Treasury Constant Maturity Rate")
|
||||
print(" t05 5-Year Treasury Constant Maturity Rate")
|
||||
print(" t10 10-Year Treasury Constant Maturity Rate")
|
||||
print(" t30 30-Year Treasury Constant Maturity Rate")
|
||||
print(" mort30 30-Year Fixed Rate Mortgage Average")
|
||||
print(" libor3m 3-Month LIBOR, based on U.S. Dollar")
|
||||
print(" moodAAA Moody's Seasoned AAA Corporate Bond Yield")
|
||||
print("")
|
||||
print(" cust User Specified FRED Data - Please Specify --id")
|
||||
print("")
|
||||
return
|
||||
|
||||
|
||||
def fred_menu():
|
||||
fred_parser = argparse.ArgumentParser(prog="fred", add_help=False)
|
||||
choices = ["help", "q", "quit", "gdp", "cust"]
|
||||
defined_choices = [
|
||||
"gdp",
|
||||
"unemp",
|
||||
"t01",
|
||||
"t05",
|
||||
"t10",
|
||||
"t30",
|
||||
"mort30",
|
||||
"libor3m",
|
||||
"moodAAA",
|
||||
]
|
||||
choices = ["help", "q", "quit", "cust"] + defined_choices
|
||||
|
||||
fred_parser.add_argument("cmd", choices=choices)
|
||||
completer = NestedCompleter.from_nested_dict({c: None for c in choices})
|
||||
|
||||
@@ -58,8 +79,8 @@ def fred_menu():
|
||||
# Abandon the program
|
||||
return True
|
||||
|
||||
elif ns_known_args.cmd == "gdp":
|
||||
fred_api.get_GDP(l_args)
|
||||
elif ns_known_args.cmd in defined_choices:
|
||||
fred_api.get_fred_data(l_args, ns_known_args.cmd)
|
||||
|
||||
elif ns_known_args.cmd == "cust":
|
||||
fred_api.custom_data(l_args)
|
||||
|
||||
Reference in New Issue
Block a user