美国的金融市场(主要是股市、债市和汇市)经常受到其国内各项经济数据影响而波动。不仅如此,这些经济数据甚至会影响远在太平洋对岸的港股和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项目:Python 编程的最好搭档—VSCode 详细指南
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),输入命令安装依赖:
pip install fredapi
2.注册账户获取FredApi权限
为了能够获取FRED的数据,你需要先注册账号、然后申请一个API秘钥,完全免费,三分钟就能解决。
进入FRED主页:https://research.stlouisfed.org
右上角有一个『My Account』,点进去后,选择『Create New Account』申请 FRED 账号:
注册完成后,会跳转到会员页,点击左侧API Keys:
申请API秘钥:
申请完毕后就能获得一个API Key了。
3.通过接口获取Fredapi经济指标数据
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())] 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实用宝典