作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(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方法。
原文作者:;如有侵权,请联系管理员删除。