Merge pull request #430 from DidierRLopes/economic-calendar

Latest economy calendar impact events
This commit is contained in:
DidierRLopes
2021-05-02 22:40:14 +01:00
committed by GitHub
6 changed files with 172 additions and 15 deletions

View File

@@ -172,6 +172,7 @@ ___
## Economy
* [x] Implement Economic data (gpd, unemployment rate, ...) (@jmaslek) - [PR #167](https://github.com/DidierRLopes/GamestonkTerminal/pull/167)
* [x] Refactor FRED to ECON menu and add VIX view (@jmaslek) - [PR #405](https://github.com/DidierRLopes/GamestonkTerminal/pull/405)
* [x] Output economic impact events calendar (@didier) - [PR #430](https://github.com/DidierRLopes/GamestonkTerminal/pull/430)
**NEXT**

View File

@@ -329,19 +329,21 @@ Command|Description|Source
 
## Economy [»](econ/README.md)
Command|Description
------ | --------
`vixcls` | Volatility Index
`gdp` | Gross Domestic Product
`unrate` | Unemployment Rate
`dgs1` | 1-Year Treasury Constant Maturity Rate
`dgs5` | 5-Year Treasury Constant Maturity Rate
`dgs10` | 10-Year Treasury Constant Maturity Rate
`dgs30` | 30-Year Treasury Constant Maturity Rate
`mortgage30us` | 30-Year Fixed Rate Mortgage Average
`fedfunds` | Effective Federal Funds Rate
`aaa` | Moody's Seasoned AAA Corporate Bond Yield
`dexcaus` | Canada / U.S. Foreign Exchange Rate (CAD per 1 USD)
Command|Description|Source
------ | -------- | --------
`events` | economic impact events | https://finnhub.io
`fred` | display customized FRED data | https://fred.stlouisfed.org
`vixcls` | Volatility Index | https://fred.stlouisfed.org
`gdp` | Gross Domestic Product | https://fred.stlouisfed.org
`unrate` | Unemployment Rate | https://fred.stlouisfed.org
`dgs1` | 1-Year Treasury Constant Maturity Rate | https://fred.stlouisfed.org
`dgs5` | 5-Year Treasury Constant Maturity Rate | https://fred.stlouisfed.org
`dgs10` | 10-Year Treasury Constant Maturity Rate | https://fred.stlouisfed.org
`dgs30` | 30-Year Treasury Constant Maturity Rate | https://fred.stlouisfed.org
`mortgage30us` | 30-Year Fixed Rate Mortgage Average | https://fred.stlouisfed.org
`fedfunds` | Effective Federal Funds Rate | https://fred.stlouisfed.org
`aaa` | Moody's Seasoned AAA Corporate Bond Yield | https://fred.stlouisfed.org
`dexcaus` | Canada / U.S. Foreign Exchange Rate (CAD per 1 USD) | https://fred.stlouisfed.org
 

View File

@@ -1,7 +1,9 @@
# ECONONMY
# ECONOMY
This menu aims to assess economy data, and the usage of the following commands along with an example will be exploited below.
* [events](#events)
* economic impact events [Finnhub]
* [fred](#fred)
* display customized FRED from https://fred.stlouisfed.org
* [vixcls](#vixcls)
@@ -28,6 +30,20 @@ This menu aims to assess economy data, and the usage of the following commands a
* Canada / U.S. Foreign Exchange Rate (CAD per 1 USD)
## events <a name="events"></a>
```text
usage: events [-c {NZ,AU,ERL,CA,EU,US,JP,CN,GB,CH}] [-i {low,medium,high,all}] [-n NUM]
```
Output economy impact calendar impact events. [Source: https://finnhub.io]
* -c : Country from where to get economy calendar impact events, between NZ,AU,ERL,CA,EU,US,JP,CN,GB,CH. Default: US.
* -i : Impact of the economy event, between low,medium,high,all. Default: all.
* -n : Number economy calendar impact events to display. Default: 10.
<img width="1055" alt="Captura de ecrã 2021-05-02, às 19 51 47" src="https://user-images.githubusercontent.com/25267873/116824200-def9ab80-ab80-11eb-948a-48a94f662b53.png">
## fred <a name="fred"></a>
```text
usage: fred [-i SERIES_ID] [-s START_DATE] [-t]

View File

@@ -9,6 +9,7 @@ from gamestonk_terminal import feature_flags as gtff
from gamestonk_terminal.helper_funcs import get_flair
from gamestonk_terminal.menu import session
from gamestonk_terminal.econ import fred_view
from gamestonk_terminal.econ import finnhub_view
class EconController:
@@ -19,6 +20,7 @@ class EconController:
"help",
"q",
"quit",
"events",
"fred",
"vixcls",
"gdp",
@@ -50,6 +52,7 @@ class EconController:
print(" q quit this menu, and shows back to main menu")
print(" quit quit to abandon program")
print(" ")
print(" events economic impact events [Finnhub]")
print(
" fred display customized FRED data from https://fred.stlouisfed.org"
)
@@ -95,6 +98,10 @@ class EconController:
"""Process Quit command - quit the program"""
return True
def call_events(self, other_args: List[str]):
"""Process events command"""
finnhub_view.economy_calendar_events(other_args)
def call_fred(self, other_args: List[str]):
"""Process fred command"""
fred_view.display_fred(other_args, "")

View File

@@ -0,0 +1,131 @@
import argparse
from typing import List
import requests
import pandas as pd
from gamestonk_terminal import config_terminal as cfg
from gamestonk_terminal.helper_funcs import (
parse_known_args_and_warn,
check_positive,
)
def get_economy_calendar_events() -> pd.DataFrame:
"""Get economic calendar events
Returns
-------
pd.DataFrame
Get dataframe with economic calendar events
"""
response = requests.get(
f"https://finnhub.io/api/v1/calendar/economic?token={cfg.API_FINNHUB_KEY}"
)
if response.status_code == 200:
d_data = response.json()
if "economicCalendar" in d_data:
return pd.DataFrame(d_data["economicCalendar"])
return pd.DataFrame()
def economy_calendar_events(other_args: List[str]):
"""Output economy calendar impact events
Parameters
----------
other_args : List[str]
Command line arguments to be processed with argparse
"""
parser = argparse.ArgumentParser(
add_help=False,
prog="events",
description="""
Output economy impact calendar impact events. [Source: https://finnhub.io]
""",
)
parser.add_argument(
"-c",
"--country",
action="store",
dest="country",
type=str,
default="US",
choices=["NZ", "AU", "ERL", "CA", "EU", "US", "JP", "CN", "GB", "CH"],
help="Country from where to get economy calendar impact events",
)
parser.add_argument(
"-n",
"--num",
action="store",
dest="num",
type=check_positive,
default=10,
help="Number economy calendar impact events to display",
)
parser.add_argument(
"-i",
"--impact",
action="store",
dest="impact",
type=str,
default="all",
choices=["low", "medium", "high", "all"],
help="Impact of the economy event",
)
try:
if other_args:
if "-" not in other_args[0]:
other_args.insert(0, "-c")
ns_parser = parse_known_args_and_warn(parser, other_args)
if not ns_parser:
return
df_events = get_economy_calendar_events()
if df_events.empty:
print("No latest economy calendar events found\n")
return
df_econ_calendar = df_events[
df_events["country"] == ns_parser.country
].sort_values("time", ascending=False)
if df_econ_calendar.empty:
print("No latet economy calendar events found in the specified country\n")
return
if ns_parser.impact != "all":
df_econ_calendar = df_econ_calendar[
df_econ_calendar["impact"] == ns_parser.impact
]
if df_econ_calendar.empty:
print(
"No latet economy calendar events found in the specified country with this impact\n"
)
return
df_econ_calendar = df_econ_calendar.fillna("---").head(n=ns_parser.num)
d_econ_calendar_map = {
"actual": "Actual release",
"prev": "Previous release",
"country": "Country",
"unit": "Unit",
"estimate": "Estimate",
"event": "Event",
"impact": "Impact Level",
"time": "Release time",
}
df_econ_calendar = df_econ_calendar[
["time", "event", "impact", "prev", "estimate", "actual", "unit"]
].rename(columns=d_econ_calendar_map)
print(df_econ_calendar.to_string(index=False))
print("")
except Exception as e:
print(e, "\n")

View File

@@ -55,7 +55,7 @@ def print_help(s_ticker, s_start, s_interval, b_is_market_open):
" > scr screener stocks, \t\t e.g. overview/performance, using preset filters"
)
print(" > mill papermill menu, \t\t menu to generate notebook reports")
print(" > econ economic data, \t\t from: FRED, VIX")
print(" > econ economic data, \t\t e.g.: FRED, events")
print(
" > pa portfolio analysis, \t\t supports: robinhood, alpaca, ally "
)