ITPub博客

首页 > > > R语言金融基础:tidyquant数据整理(算术/对数收益率)

R语言金融基础:tidyquant数据整理(算术/对数收益率)

作者:浪花小雨滴 时间:2019-05-10 21:19:38 0 删除 编辑

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R/Python),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等。知乎专栏:R语言数据挖掘 邮箱:huang.tian-yuan@qq.com.欢迎合作交流。

前文:

HopeR:R语言金融基础:tidyquant获取数据(标普500与纳斯达克)

HopeR:R语言金融基础:tidyquant获取数据(股票每日行情)

HopeR:R语言金融基础:tidyquant获取数据(宏观经济数据)

HopeR:R语言金融基础:tidyquant数据整理(日行情转月行情、MACD的使用)

HopeR:R语言金融基础:tidyquant数据整理(滑窗建模)


收益率的概念及其简单,计算方法如下:

而对数收益率的计算方法为:

其中,t代表当前时刻,t-1代表前一时刻。R和r分别是简单收益率和对数收益率,P代表资产的价格。

为什么要用对数收益率?主要是为了计算的简便,成就了可加性。详细例子可参考:

金融计算收益率的时候为什么大部分用对数收益率 (Log Return) 而不是用算数收益率?​图标

下面,我们还是用传统的OHLC数据,根据矫正收盘价得到不同时间尺度的收益率。首先,我们试试获得年化的简单收益率,计算方法如下:

library(tidyquant)

FANG_annual_returns <- FANG %>%
  group_by(symbol) %>%
  tq_transmute(select     = adjusted, 
               mutate_fun = periodReturn, 
               period     = "yearly", 
               type       = "arithmetic")

FANG_annual_returns

# A tibble: 16 x 3
# Groups:   symbol [4]
   symbol date       yearly.returns
   <chr>  <date>              <dbl>
 1 FB     2013-12-31         0.952 
 2 FB     2014-12-31         0.428 
 3 FB     2015-12-31         0.341 
 4 FB     2016-12-30         0.0993
 5 AMZN   2013-12-31         0.550 
 6 AMZN   2014-12-31        -0.222 
 7 AMZN   2015-12-31         1.18  
 8 AMZN   2016-12-30         0.109 
 9 NFLX   2013-12-31         3.00  
10 NFLX   2014-12-31        -0.0721
11 NFLX   2015-12-31         1.34  
12 NFLX   2016-12-30         0.0824
13 GOOG   2013-12-31         0.550 
14 GOOG   2014-12-31        -0.0597
15 GOOG   2015-12-31         0.442 
16 GOOG   2016-12-30         0.0171

一共是4只股票4年的数据,我们进行简单的可视化:

FANG_annual_returns %>%
    ggplot(aes(x = date, y = yearly.returns, fill = symbol)) +
    geom_bar(stat = "identity") +
    geom_hline(yintercept = 0, color = palette_light()[[1]]) +
    scale_y_continuous(labels = scales::percent) +
    labs(title = "FANG: Annual Returns",
         subtitle = "Get annual returns quickly with tq_transmute!",
         y = "Annual Returns", x = "") + 
    facet_wrap(~ symbol, ncol = 2) +
    theme_tq() + 
    scale_fill_tq()

与此同时,我们来看看每天的对数收益率。计算后,我们查看4只股票每日收益率的分布。这对于短线操作是很重要的参考消息(不过是事后分析了)。

FANG_daily_log_returns <- FANG %>%
    group_by(symbol) %>%
    tq_transmute(select     = adjusted, 
                 mutate_fun = periodReturn, 
                 period     = "daily", 
                 type       = "log",
                 col_rename = "monthly.returns")

FANG_daily_log_returns %>%
    ggplot(aes(x = monthly.returns, fill = symbol)) +
    geom_density(alpha = 0.5) +
    labs(title = "FANG: Charting the Daily Log Returns",
         x = "Monthly Returns", y = "Density") +
    theme_tq() +
    scale_fill_tq() + 
    facet_wrap(~ symbol, ncol = 2)

基本上还是持平的。这里可视化中值得注意的是,tidyquant有自己的主题和调色板,其他部分则还是经典的ggplot2方法。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39918