如何使用沃顿研究数据中心(WRDS,CRSP)查询美股历史交易数据(R语言的调用方法以及代码示例)
2018-04-10 19:53
1801 查看
https://wrds-web.wharton.upenn.edu/wrds/
WRDS 沃顿商学院金融系列数据库是由宾夕法尼亚大学沃顿商学院开发的金融领域的跨库研究工具,同时也包含Compustat(
标准普尔公司会计数据库)和 CRSP(美国股票和指数资料数据)。
此处主要是使用其中的 CRSP 数据库,该数据库包含了自1926年以来各美国上市公司的股票价格、收益、交易信息等数据(包括中途退市的公司信息),非常有利于研究。
这里记录的主要是我自己使用的时候用到的一些部分。
上面是WRDS的注册页面,许多高校和企业都订购了这个数据库,可以在[Institution]下拉菜单中看是否有自己的学校或者机构,然后根据学校图书馆提供的方法注册WRDS用户 。
在获得WRDS用户并成功登陆以后就可以在 Your Subscription看到该账户订购的数据库。博主想要使用的是其中的 CRSP 数据库,因此点击 CRSP ,会出现三种分别是按年度,季度,月度更新的数据(此处的更新方式是指指标的更新方式而非returns 或 price 的记录方式,若只是查询收益市值等数据则不影响)。
第一步: 选择所需数据的时间范围(最早可以到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)数据。
点击 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返回的批量数据是将不同公司股票在其可查询段内所有数据按列拼接,因此当查询的数据非常多(股票数多且时间范围较长)的时候,返回的数据维度非常高,可能会导致生成的文件无法完全打开。
Introduction to R at WRDS
win系统则需要安装SSH client SSH client 安装
wrds <- dbConnect(Postgres(),
host='wrds-pgdata.wharton.upenn.edu',
port=9737,
user='你的wrds用户名',
password='你的wrds密码',
sslmode='require',
dbname='wrds')然后加密chmod 600 ~/.Rprofile也可直接在Rtodio中运行上述程序,这个过程只用进行一次。
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/
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 Cloudwin系统则需要安装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/
相关文章推荐
- struts2如何动态调用action的方法以及使用json插件范围json格式的javascript对象
- eoLinker-API_Shop_天气类API调用的代码示例合集:全国天气预报、实时空气质量数据查询、PM2.5空气质量指数等
- 使用java调用C语言的方法,让java获取串口数据并生成一个String对象的代码。
- Python数据分析之如何利用pandas查询数据示例代码
- 如何使用Javascript调用后台数据之实例方法详解
- 【Android学习笔记】如何使用Eclipse在Android项目中调用C/C++代码,及遇到的错误解决方法
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- Hibernate查询数据的几种方式以及HQL用法及参数的几种使用方法
- 今日收获总结(关于存储过程时间查询的一些方法以及字段截取的函数及调用示例)
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- FIREDAC调用中间件远程方法查询数据示例
- ArcGIS官方提供的使用ConvertFeatureClass方法高效导出数据的代码示例
- 关于UEditor插件的使用以及UEditor数据回显问题,数据库存储标签代码前台页面如何解析问题小结
- 如何使用Java的反射机制以及调用构造方法?
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- My.Ioc 代码示例——如何使用默认构造参数,以及如何覆盖默认构造参数
- 如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误
- 如何使用单元测试 测试WEB组件方法中的含有Session、Cookie等HttpContext功能调用的方法?
- 如何使用ASP.NET查询和显示Excel数据
- 如何使用DataBinder.Eval()方法进行数据绑定