金融市场充满数据。这些数据既包括了如各种金融资产(股票、外汇、衍生品、电子货币等)的交易数据、企业的财务数据、经济统计数据等等传统的数据类型,也包括了随着各种新技术而出现的另类数据,如卫星图像、文本和社交媒体情绪、移动通信设备的地理定位信息。市场的参与者,无论是交易者、服务商还是监管机构,如今都要面对随这个时代滚滚而来的数据洪流。善用数据者,必有所获。
从最传统的金融数据——股票价格开始,介绍一些工具和方法。
高质量的金融数据往往来自于付费的渠道:专业的交易软件、资讯软件(如万得)或专业数据库(如国泰安)。这些专业化的数据来源往往价格不菲。从学习或个人化研究的角度,我们还是希望从开源或免费的渠道获取金融数据。使用R语言获取免费金融数据主要由这样一些途径:
使用一些R包通过财经网站API获取数据
通过一些量化平台数据接口获取免费数据
直接进行网络抓取
读取交易软件(如通达信)或数据库导出的外部文件
对所有的可能性进行全面总结是很困难的。在本节,我们通过一些示例对这些途径进行探索。
1、使用R包获取数据(1) quantmod包
有多个可以用来读取金融数据的R包。其中,quantmod包算得上是一种“历史悠久”的传统手段。quantmod包主要通过函数getSymbols(),从多种来源获取多种金融资产的历史数据。下面,我们读取上交所上市公司招商银行(600036)的历史数据,时间从2019年1月1日到2020年9月30日:
library(quantmod) zsyh_quant<-getSymbols("600036.ss",scr=yahoo,from="2019-01-01", to="2020-10-01",auto.assign=F) ###查看数据 head(zsyh_quant,n=3) ## 600036.SS.Open 600036.SS.High 600036.SS.Low 600036.SS.Close 600036.SS.Volume ##2019-01-02 25.15 25.20 24.40 24.57 55516612 ##2019-01-03 24.40 25.05 24.38 24.88 37410758 ##2019-01-04 24.76 25.65 24.65 25.51 66853140 ## 600036.SS.Adjusted ##2019-01-02 23.20724 ##2019-01-03 23.50005 ##2019-01-04 24.09511 tail(zsyh_quant,n=3) ## 600036.SS.Open 600036.SS.High 600036.SS.Low 600036.SS.Close 600036.SS.Volume ##2020-09-28 37.20 37.65 37.05 37.25 35324476 ##2020-09-29 37.35 37.45 36.27 36.31 79668910 ##2020-09-30 36.30 36.57 35.80 36.00 65466059 ## 600036.SS.Adjusted ##2020-09-28 37.25 ##2020-09-29 36.31 ##2020-09-30 36.00