diff --git a/gamestonk_terminal/fred/README.md b/gamestonk_terminal/fred/README.md
index 5ccf25df3ac..65e5a814155 100644
--- a/gamestonk_terminal/fred/README.md
+++ b/gamestonk_terminal/fred/README.md
@@ -4,7 +4,9 @@ The purpose of fred is to have the ability to look at economic data.
* [GDP](#GDP)
* Get GDP data
-
+* [cust](#cust)
+ * Get custom fred data
+
## GDP
```text
usage: GDP [-n N_TO_GET] [-s START_DATE] [-p PLOT]]
@@ -21,4 +23,24 @@ GDP -n 20
To plot all GDP data since 1/1/2010:
````
GDP -s 1/1/2010 -p True
-````
\ No newline at end of file
+````
+
+
+## cust
+
+The fred database has many different datasets freely available. They each have their own custom SERIES_ID which can be obtained through the website.
+
+````
+usage: cust [-id] [-s START_DATE] [-p PLOT] [-disp DISP]
+````
+* -id : Series ID for FRED data. Required argument
+* -s : Start data to acquire data. Defaults to 1/1/2020
+* -p : Option to plot. Defaults to False
+* -disp : Option to print data to console. Defaults to True.
+
+The GDP is specifically defined in this menu, but to reproduce it with the custom function, it would be
+````
+cust -id GDP -s 1/1/2020 -p True -disp False
+````
+
+The plot flag allows for plotting and the disp flag tells whether or not to print data to the console.
\ No newline at end of file
diff --git a/gamestonk_terminal/fred/fred_api.py b/gamestonk_terminal/fred/fred_api.py
index 9c3844cf758..dbad6692689 100644
--- a/gamestonk_terminal/fred/fred_api.py
+++ b/gamestonk_terminal/fred/fred_api.py
@@ -63,4 +63,67 @@ def get_GDP(l_args):
print("")
return
+def custom_data(l_args):
+ fred = Fred(api_key=FRED_API_KEY)
+
+ parser = argparse.ArgumentParser(
+ add_help=False,
+ prog="Custom",
+ description="""
+ Custom Data
+ """,
+ )
+ parser.add_argument('-id',
+ dest = 'series_id',
+ required = True,
+ type=str,
+ help = 'FRED Series ID')
+ parser.add_argument("-s",
+ dest="start_date",
+ type=str,
+ default='1/1/2020',
+ required=False,
+ help='Date to Start')
+ parser.add_argument("-p",
+ dest="plot_",
+ type=bool,
+ default=False,
+ required=False,
+ help='Plot data')
+ parser.add_argument("-disp",
+ dest="disp_",
+ type=bool,
+ default=True,
+ required=False,
+ help='Printdata')
+
+
+ try:
+ ns_parser = parse_known_args_and_warn(parser, l_args)
+
+ if not ns_parser:
+ return
+
+ data = fred.get_series(ns_parser.series_id,ns_parser.start_date)
+ if ns_parser.disp_:
+ for date, val in data.iteritems():
+ print(f'Date: {date.strftime("%m-%d-%Y")}, DATA: {val} ')
+ try:
+ if ns_parser.plot_:
+ plt.figure()
+ data.plot(style='ok')
+ plt.xlabel('Time')
+ plt.ylabel('DATA')
+ plt.show()
+ except Exception as e:
+ print(e)
+ print("")
+ return
+ except Exception as e:
+ print(e)
+ print("")
+ return
+
+
+
diff --git a/gamestonk_terminal/fred/fred_menu.py b/gamestonk_terminal/fred/fred_menu.py
index 3563b3c3596..96ed35f3130 100644
--- a/gamestonk_terminal/fred/fred_menu.py
+++ b/gamestonk_terminal/fred/fred_menu.py
@@ -16,6 +16,7 @@ def print_fred():
print(" quit quit to abandon program")
print(" ")
print(" GDP get GDP")
+ print(" cust User Specified FRED Data")
return
def fred_menu():
@@ -24,7 +25,8 @@ def fred_menu():
"help",
"q",
"quit",
- "GDP"]
+ "GDP",
+ "cust"]
fred_parser.add_argument("cmd", choices=choices)
completer = NestedCompleter.from_nested_dict({c: None for c in choices})
@@ -62,3 +64,6 @@ def fred_menu():
elif ns_known_args.cmd == "GDP":
fred_api.get_GDP(l_args)
+
+ elif ns_known_args.cmd == "cust":
+ fred_api.custom_data(l_args)
diff --git a/requirements.txt b/requirements.txt
index a6b36ab22f8..e2b6c236cc2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -25,6 +25,7 @@ decorator==4.4.2; python_full_version >= "3.6.1" and python_version >= "3.6" and
defusedxml==0.7.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
entrypoints==0.3; python_version >= "3.6"
finviz==1.3.4
+fredapi==0.4.3
fundamentalanalysis==0.2.6
hijri-converter==2.1.1; python_version >= "3.6"
holidays==0.10.5.2