mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
Merge pull request #430 from DidierRLopes/economic-calendar
Latest economy calendar impact events
This commit is contained in:
@@ -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**
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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, "")
|
||||
|
||||
131
gamestonk_terminal/econ/finnhub_view.py
Normal file
131
gamestonk_terminal/econ/finnhub_view.py
Normal 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")
|
||||
@@ -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 "
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user