您的位置:首页 > 编程语言

如何使用沃顿研究数据中心(WRDS,CRSP)查询美股历史交易数据(R语言的调用方法以及代码示例)

2018-04-10 19:53 1801 查看
https://wrds-web.wharton.upenn.edu/wrds/
WRDS 沃顿商学院金融系列数据库是由宾夕法尼亚大学沃顿商学院开发的金融领域的跨库研究工具,同时也包含Compustat(

标准普尔公司会计数据库)和 CRSP(美国股票和指数资料数据)。
此处主要是使用其中的 CRSP 数据库,该数据库包含了自1926年以来各美国上市公司的股票价格、收益、交易信息等数据(包括中途退市的公司信息),非常有利于研究。
这里记录的主要是我自己使用的时候用到的一些部分。

1.注册

http://wrds-web.wharton.upenn.edu
上面是WRDS的注册页面,许多高校和企业都订购了这个数据库,可以在[Institution]下拉菜单中看是否有自己的学校或者机构,然后根据学校图书馆提供的方法注册WRDS用户 。



在获得WRDS用户并成功登陆以后就可以在 Your Subscription看到该账户订购的数据库。博主想要使用的是其中的 CRSP 数据库,因此点击 CRSP ,会出现三种分别是按年度,季度,月度更新的数据(此处的更新方式是指指标的更新方式而非returns 或 price 的记录方式,若只是查询收益市值等数据则不影响)。

2. 单只股票的历史数据查询 

点击 CRSP---Stock/Security Files----Monthly/Daily Stock File 即可进入月/日数据的网页查询界面。
第一步: 选择所需数据的时间范围(最早可以到1925年9月至2017年12月)



第二步:输入想要查询的公司的TICKER名称\PERMNO\PERMCO\CUSIP 等。
此处以IBM公司为例,选择PERMNO,并输入其五位编码12490.(PERMNO 是由CRSP为所有证券提供的五位永久唯一编码,各公司各代码均可以通过下方Code Lookup进行查询)



第三步:选择想要查询的内容,例如 市值price \ 收益Holding Period Return。



第四步: 选择输出格式 。(博主需要使用R进行后续数据处理,为利于后续读取选择 .csv格式)
提交表单后就可以得到相应的数据下载链接



此处也可以看到,我们查询的是PERMNO编码为12490的股票的2007年1月1日至2017年12月31日的日收益(RET)和价格(PRC)数据。  

3. 股票PERMNO查询以及批量数据查询

在刚才的查询界面可以看到,CRSP提供批量数据查询。在进行批量查询的时候,需要提供所有待查询的公司股票代码,并将这些代码放在一个 .txt 文档里面,按每行一个代码排列。考虑到操作简便性,可视性和准确性,可以先在CRSP中直接调出所有公司的PERMNO代码,然后使用其他工具如EXCEL/SQL等进行查找,方法如下:

点击 CRSP---Tools---Translate to PERMCO/PERMNO 可以进入查询PERMNO代码界面
第一步: 选择所需数据的时间范围,或点击下方查找所有的历史代码ALL PERMNOS

第二步:输入想要查找的TICKER\NCUSIP
 可以直接选择最后一项 Seach the entire database 查找所有
第三步:选择输出数据
此处可选择Company Name\Ticker\NCUSIP等后续方便查找
第四步:选择输出格式
提交表单即可得到相应的数据如下





 
然后查找自己所需的公司的PERMNOs制作用于批量查找的 .tex文件,  如下:



(此处查询的是标准普尔500即S&P500的所有成分股的数据,该LIST包含历史上所有曾包含在S&P500中的成分股的PERMNO代码,这个LIST在CRSP中可以直接查询到,但这个数据并不支持网页查找,需要访问CRSP的云数据库下载,具体下载方法以及代码将在后面描述。)
在获得需要查找的list文件后,再次进入 CRSP---Stock/Security Files----Monthly/Daily Stock File 的查询界面,在Step2 选择第二项,并上传该 .txt 文件如下



其他步骤与单只股票查询步骤相同,提交表单即可得到批量查询数据如下



注意,由于CRSP返回的批量数据是将不同公司股票在其可查询段内所有数据按列拼接,因此当查询的数据非常多(股票数多且时间范围较长)的时候,返回的数据维度非常高,可能会导致生成的文件无法完全打开。

4.使用Rstudio访问WRDS云数据库

在WRDS官网的support栏目可以看到,该数据库支持多种软件 R,SAS,Python等直接远程访问WRDS Cloud,并且都给出了具体方法,下面将根据官网指南给出使用 R访问WRDS Cloud 方法,并举例说明常用的获取数据的方法:
Introduction to R at WRDS

4.1 使用SSH链接 WRDS Cloud

linux系统或者安装了虚拟linux的win10可以直接在bash中输入 ssh 你的WRDS用户名@wrds-cloud.wharton.upenn.edu 然后输入你的WRDS密码链接WRDS Cloud
win系统则需要安装SSH client SSH client 安装 

4.2 初始化安装

在R中安装 RPostgres包install.packages("RPostgres")然后在云目录下生成一个 .Rprofile文件输入以下内容library(RPostgres)
wrds <- dbConnect(Postgres(),
host='wrds-pgdata.wharton.upenn.edu',
port=9737,
user='你的wrds用户名',
password='你的wrds密码',
sslmode='require',
dbname='wrds')然后加密chmod 600 ~/.Rprofile也可直接在Rtodio中运行上述程序,这个过程只用进行一次。

4.3 获取数据

在进行了上述初始化步骤后,就可以在Rstudio中利用简单的SQL语句查找WRDS中的数据了res <- dbSendQuery(wrds, "SELECT * FROM dataset")
data <- dbFetch(res, n=-1)
dbClearResult(res)
data
基础语句如上图,在wrds中调取dataset.

下面来举个例子。这里尝试在R中调取刚才在第二章提到的IBM公司的股票数据,即PERMNO编码为12490的股票的2007年1月1日至2017年12月31日的日收益和价格数据。
首先我们需要知道这数据储存在哪个文件中,在首页的suppot栏目中可以看到Dataset Lists



在其中选择CRSP---CRSP Annual Updata 可以找到我们需要的储存了 Daily Stocks 数据的文件名为DSF



点进去则可以看到其中包含的变量的名称和示意。此处我们需要按PERMNO和时间查找股票的收益和价格,因此我们找到相应的变量并记下其变量名分别为PERMNO,DATE, PRC, RET









带入相应的查询值则可以得到与刚才在网页查询相同且精度更高的数据res <- dbSendQuery(wrds, "SELECT PERMNO,DATE,RET,PRC FROM DSF
where DATE between '2007-01-01'
and '2017-12-31' and PERMNO=12490")
data <- dbFetch(res, n=-1)
dbClearResult(res)
write.table(data,file="储存的文件名.txt",row.names = FALSE,quote=FALSE)



同样,刚才提到的储存了标准普尔500即S&P500成分股数据的列表可以通过下叙语句得到,该数据包含在DSP500LIST文件中



res <- dbSendQuery(wrds, "SELECT PERMNO,start,ending FROM DSP500LIST")
data <- dbFetch(res)
dbClearResult(res)
write.table(data,file="DSP500LIST.csv",row.names = FALSE,
col.names = FALSE)
得到的DSP500LIST文件中包括历史上所有曾包含在S&P500中的成分股的PERMNOs以及他们被包含在S&P500中的起始和终止时间。
另附上生成从DSP500LIST文件中提取并生成用于批量查询的 .txt文件的语句res <- dbSendQuery(wrds, "SELECT PERMNO FROM DSP500LIST")
data <- dbFetch(res)
dbClearResult(res)
write.table(data,file="SP500PERMNO.txt",row.names = FALSE,
col.names = FALSE)其他的查询方法可以参照官方指南,就算不会sql也比较容易看懂。 https://blog.csdn.net/nya0731/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  R WRDS CRSP SP500
相关文章推荐