教你使用 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

78e88add9a06cf05d9f24696242e125b.png

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

24bc7eafc8e38256dd66376c81af3c25.png

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

64f8f3a52106871fb515d422fb55fd01.png

申请API秘钥:

17aa46ad08090b4199e68fb3395a1b98.png

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

1fa55577c1f7955c4ba149f3edcce5ea.png

每个大分类中有许多子项目,比如 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 dtdef 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_releasesdef fetch_release_id_data(release_id):"""按照分类ID获取数据Args:release_id (int): 大分类IDReturns: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_dataapi_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 的内容如下:

be64d0e84d3acb689df3607236f340e7.png

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

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

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

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

af2144a6e99cec563b28ba27cd60fc25.png

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

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

有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。

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

点击下方阅读原文可获得更好的阅读体验

Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

3552578e9d3b3239ec3fb1cba59aeee1.png

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注