金融数值计算系列:3获取金融数据

在这个帖子我会展示如何获取金融数据,用以实践各类金融模型。因为Julia的data science和database API暂时还不完备,在这里我会使用R,大家可以通过RCall在Julia里面直接使用,或者在R里面获得数据后储存到本地,再通过RData.jl读进Julia (其他的数据格式比如csv, txt, fst, feather也都可以)。

因为国内学校没有彭博数据库,沃顿数据库也只有五六所学校有,所以我的例子使用的是开源的数据(暂时没有债券和衍生品,不过有股票和外汇,以及各种大宗商品),这样大家就可以免费使用。

require(tidyquant) # 使用包
tq_index_options()  # 查看可以获得的股票指数

aapl_prices  <- tq_get("AAPL", get = "stock.prices", from = " 1990-01-01")
# 获得苹果公司的股票价格数据

aapl_divs <- tq_get("AAPL", get = "dividends", from = "1990-01-01")
#获得苹果公司的股息数据

wti_price_usd <- tq_get("DCOILWTICO", get = "economic.data")
#获得原油价格数据

eur_usd <- tq_get("EUR/USD", 
                  get = "exchange.rates", 
                  from = Sys.Date() - lubridate::days(10))
#获得欧元对美元汇率数据

plat_price_eur <- tq_get("plat", get = "metal.prices", 
                         from = Sys.Date() - lubridate::days(10),
                         base.currency = "EUR")
#获得铝的欧元价格



##############################################################
Ra <- c("AAPL", "GOOG", "NFLX") %>%
  tq_get(get  = "stock.prices",
         from = "2010-01-01",
         to   = "2015-12-31") %>%
  group_by(symbol) %>%
  tq_transmute(select     = adjusted, 
               mutate_fun = periodReturn, 
               period     = "monthly", 
               col_rename = "Ra")

#获取苹果,谷歌,和和NETFLIX的股票价格,转换成月收益率。

记住一点,所有的金融模型的基础都是以收益率为基础,不是价格!所以获得价格数据后要转化成收益率。加密货币的数据有,不过暂时没有很好的金融模型可以用,以后可以介绍一些。

1 个赞

Julia那个相关支持好像要收费?不知道这个包有用不

你说的是 Miletus.jl, 我和他的作者(好像是simon?)聊过,他问我是否希望这个包开源,我说我不确定。这个包对普通金融人士没有什么用,主要是用来设计金融合同,就是卖方柜台使用的。打个比方,保险公司设计一个保单需要计算各种可能发生的情况的赔付政策,然后设计保费。目标是既要有人买,又不能让保险公司赔钱。所以这种软件使用率不是很高,都是投行的大牛在用,而且是一次性的。大部分金融软件都是买方柜台用的,主要做数据分析和定价,Julia的Quantlib.jl就是做这个事情。

QuantEcon.jl是纯理论的,偏经济,在美国可能有用,在中国应该没用。中国经济数据都是统计局掺水太严重,模型再精巧,也扛不住input都是假的。。。

1 个赞

补充:

在 python 中通过 tushare 财经数据接口包可以获得国内沪深股市数据,通过 pandas_datareader 可以获得一些世界经济金融公开数据。

这些我都用过,比R的tidyquant还是要弱很多。tidyquant是目前市面上唯一的能够与全世界各种金融数据库提供统一API的包,再加上dplyr对pandas的巨大优势,未来几年应该很难有一个包超过tidyquant。

国内人用python很多,主要是因为计算机专业的进入金融机构的多,金融专业又不教编程。在美国的话,R和matlab用的和python一样多。我的个人经验是 0 based indexing总是感觉怪怪的,学商科的人大部分没有时间接受系统的计算机教育,所以比较喜欢R。

谢谢指导。R和python都是我喜欢的语言 :smiley: