教你使用 Python 获取美国重要经济指标数据
美国的金融市场(主要是股市、债市和汇市)经常受到其国内各项经济数据影响而波动。不仅如此,这些经济数据甚至会影响远在太平洋对岸的港股和A股。因此对于世界经济火车头的美国,我们要有对其经济数据有一定程度的理解。
对于股市而言,几个比较重要的经济指标为:
1. 联储局公开市场委员会会议声明
联储局公开市场委员会(FOMC)是决定美国利率走向的主宰者,而利率是美国经济未来增长的最重要因素,它的变化都会令消费支出、公司利润、政府预算及股票债券和美元的价值都受到影响。
2.消费者物价指数 Consumer Price Index (CPI)
这个指标是市场上最瞩目的经济指标之一,通胀(缩)率是联储局决定是否加息的最主要参考指标,而消费者物价指数则是最重要的通胀(缩)指标。通胀(缩)会影响到民生、政府的财政政策和民间的所有经济活动。通胀(缩)对于投资市场来说是件非常可怕的事情,因为它制造了经济的不稳定性和不确定性,给股市会带来波动和风险。
3.生产者物价指数 Producer Price Index (PPI)
跟CPI一样,这个指标是预测通货膨胀的重要指标之一,不过它反映的是生产者这个环节,是在通胀转移到消费者之前的数据,也就是说它对通胀和利率政策更具前瞻性,尽管其对消费者的影响力不如CPI。
4.采购经理人指数 Purchasing Managers Index (PMI)
PMI是一项全面的经济指标,概括了美国整体制造业状况、就业及物价表现,是全球最受关注的经济资料之一。采购经理人指数为每月第一个公布的重要数据,加上其所反映的经济状况较为全面,因此市场十分重视数据所反映的具体结果。在一般意义上讲采购经理人指数上升,会带来美元汇价上涨;采购经理人指数下降,会带来美元汇价的下跌。
5.非农就业数据 Non-farm Payrolls (NFP)
是美国非农业人口的就业数据,由美国劳工部每月公布一次,反应美国经济的趋势,数据好说明经济好转,数据差说明经济转坏。非农数据会影响美联储对美元的货币政策,经济差,美联储会倾向减息,美元贬值,经济好,美联储会倾向加息,美元升值。
本文将教你如何使用Python调用 FRED(Federal Reserve Economic Data) 数据库API获取以上相关数据。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章: 超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda: Python数据分析与挖掘好帮手—Anaconda ,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点: Python 编程的最好搭档—VSCode 详细指南 。
请选择以下任一种方式输入命令安装依赖
:
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install fredapi
2.注册账户获取API
为了能够获取FRED的数据,你需要先注册账号、然后申请一个API秘钥,完全免费,三分钟就能解决。
进入FRED主页: https:// research.stlouisfed.org
右上角有一个『My Account』,点进去后,选择『Create New Account』申请 FRED 账号:
注册完成后,会跳转到会员页,点击左侧API Keys:
申请API秘钥:
申请完毕后就能获得一个API Key了。
3.通过接口获取FRED数据
FRED 数据量非常庞大,其分为大分类和大分类的子项目。大分类我们可以通过这样的代码获得:
import requests
import pandas as pd
import datetime as dt
def fetch_releases(api_key):
取得 FRED 大分类信息
Args:
api_key (str): 秘钥
r = requests.get('https://api.stlouisfed.org/fred/releases?api_key='+api_key+'&file_type=json', verify=True)
full_releases = r.json()['releases']
full_releases = pd.DataFrame.from_dict(full_releases)
full_releases = full_releases.set_index('id')
# full_releases.to_csv("full_releases.csv")
return full_releases
导出为CSV后,你能看到所有的大分类ID及其说明。
每个大分类中有许多子项目,比如 355:Minimum Wage Rates 底下会有:
* FEDMINNFRWG:Nonfarm Workers Minimum Hourly Wage* FEDMINFRMWG:Farm Workers Minimum Hourly Wage
每一个子项目也有一个专属的『子项目英文代码』,就是前面的那串英文字。
我们可以通过对大分类进行关键字搜索,获取我们文首提到的五个指标:
from fredapi import Fred
import requests
import numpy as np
import pandas as pd
import datetime as dt
def fetch_releases(api_key):
取得 FRED 大分类信息
Args:
api_key (str): 秘钥
r = requests.get('https://api.stlouisfed.org/fred/releases?api_key='+api_key+'&file_type=json', verify=True)
full_releases = r.json()['releases']
full_releases = pd.DataFrame.from_dict(full_releases)
full_releases = full_releases.set_index('id')
# full_releases.to_csv("full_releases.csv")
return full_releases
def fetch_release_id_data(release_id):
按照分类ID获取数据
Args:
release_id (int): 大分类ID
Returns:
dataframe: 数据
econ_data = pd.DataFrame(index=pd.date_range(start='2000-01-01', end=dt.datetime.today(), freq='MS'))
series_df = fred.search_by_release(release_id, limit=3, order_by='popularity', sort_order='desc')
for topic_label in series_df.index:
econ_data[series_df.loc[topic_label].title] = fred.get_series(topic_label, observation_start='2000-01-01', observation_end=dt.datetime.today())
return econ_data
api_key = '填入你的API秘钥'
fred = Fred(api_key)
full_releases = fetch_releases(api_key)
keywords = ["producer price", "consumer price", "fomc", "manufacturing", "employment"]
for search_keywords in keywords:
search_result = full_releases.name[full_releases.name.apply(lambda x: search_keywords in x.lower())]