美国的金融市场(主要是股市、债市和汇市)经常受到其国内各项经济数据影响而波动。不仅如此,这些经济数据甚至会影响远在太平洋对岸的港股和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

教你使用 Python 获取美国重要经济指标数据_json


右上角有一个『My Account』,点进去后,选择『Create New Account』申请 FRED 账号:

教你使用 Python 获取美国重要经济指标数据_python_02


注册完成后,会跳转到会员页,点击左侧API Keys:

教你使用 Python 获取美国重要经济指标数据_数据_03


申请API秘钥:

教你使用 Python 获取美国重要经济指标数据_json_04


申请完毕后就能获得一个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及其说明。

教你使用 Python 获取美国重要经济指标数据_数据_05


每个大分类中有许多子项目,比如 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())]
econ_data = pd.DataFrame(index=pd.date_range(start='2000-01-01', end=dt.datetime.today(), freq='MS'))

for release_id in search_result.index:
print("scraping release_id: ", release_id)
econ_data = pd.concat([econ_data, fetch_release_id_data(release_id)], axis=1)
econ_data.to_csv(f"{search_keywords}.csv")


上面就是完整的数据下载代码,如果你想直接获取脚本文件,请在Python实用宝典后台回复:​FRED ​下载。

填入你申请的 API 秘钥,运行脚本,就能获取我们想要的五个指标数据。会在当前文件夹下生成相应关键词的csv文件。比如 employment.csv 的内容如下:

教你使用 Python 获取美国重要经济指标数据_json_06


里面包含了就业相关的许多数据,包括我们关注的非农数据等。

如果你想要更换关键词下载其他关键词的数据,也可以在keywords中进行增删。请注意,这里搜索必须使用小写单词。

获取数据只是第一步,最重要的是如何分析这些数据与股市的相关性。

德意志银行有一个研究发现历年来ISM(即PMI)指数的数值和标普500的同比增长数值是高度相关的。

教你使用 Python 获取美国重要经济指标数据_json_07


类似于这样的数据分析切入点是非常有意思的,大家也可以尝试基于这些数据做一些自己的研究分析,说不定会有意外的发现。


我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。

原创不易,希望你能在下面点个赞支持我继续创作,谢谢!

Python实用宝典 (pythondict.com)

不只是一个宝典

欢迎关注公众号:Python实用宝典

教你使用 Python 获取美国重要经济指标数据_python_08