美国的金融市场(主要是股市、债市和汇市)经常受到其国内各项经济数据影响而波动。不仅如此,这些经济数据甚至会影响远在太平洋对岸的港股和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 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 的内容如下:
里面包含了就业相关的许多数据,包括我们关注的非农数据等。
如果你想要更换关键词下载其他关键词的数据,也可以在keywords中进行增删。请注意,这里搜索必须使用小写单词。
获取数据只是第一步,最重要的是如何分析这些数据与股市的相关性。
德意志银行有一个研究发现历年来ISM(即PMI)指数的数值和标普500的同比增长数值是高度相关的。
类似于这样的数据分析切入点是非常有意思的,大家也可以尝试基于这些数据做一些自己的研究分析,说不定会有意外的发现。
我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
点击下方阅读原文可获得更好的阅读体验
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典