最近我们被客户要求撰写关于股票市场收益的研究报告,包括一些图形和统计输出。

金融市场上最重要的任务之一就是分析各种投资的历史收益。要执行此分析,我们需要资产的历史数据。数据提供者很多,有些是免费的,大多数是付费的。在本文中,我们将使用Yahoo金融网站上的数据。

在这篇文章中,我们将:

  1. 下载收盘价
  2. 计算收益率
  3. 计算收益的均值和标准差

让我们先加载库。

library(tidyquant)
library(timetk)

我们将获得Netflix价格的收盘价。

netflix <- tq_get("NFLX",                    from = '2009-01-01',to = "2018-03-01",get = "stock.prices")

接下来,我们将绘制Netflix的调整后收盘价。

netflix %>%ggplot(aes(x = date, y = adjusted)) +geom_line() +ggtitle("Netflix since 2009") +labs(x = "Date", "Price") +scale_x_date(date_breaks = "years", date_labels = "%Y") +labs(x = "Date", y = "Adjusted Price") +theme_bw()

计算单个股票的每日和每月收益率

一旦我们从Yahoo Finance下载了收盘价,下一步便是计算收益。我们将再次使用tidyquant包进行计算。我们已经在上面下载了Netflix的价格数据,如果您还没有下载,请参见上面的部分。

# 计算每日收益netflix_daily_returns <- netflix %>%tq_transmute(select = adjusted,          这指定要选择的列mutate_fun = periodReturn,   # 这指定如何处理该列period = "daily",      # 此参数计算每日收益col_rename = "nflx_returns") # 重命名列#计算每月收益
netflix_monthly_returns <- netflix %>%tq_transmute(select = adjusted,mutate_fun = periodReturn,period = "monthly",      # 此参数计算每月收益col_rename = "nflx_returns")

绘制Netflix的每日和每月收益图表

# 我们将使用折线图获取每日收益ggplot(aes(x = date, y = nflx_returns)) +geom_line() +theme_classic() +

查看Netflix的每日收益图表后,我们可以得出结论,收益波动很大,并且股票在任何一天都可以波动+/- 5%。为了了解收益率的分布,我们可以绘制直方图。

netflix_daily_returns %>%ggplot(aes(x = nflx_returns)) +geom_histogram(binwidth = 0.015) +theme_classic() +

接下来,我们可以绘制自2009年以来Netflix的月度收益率。我们使用条形图来绘制数据。

# 绘制Netflix的月度收益图表。 使用条形图ggplot(aes(x = date, y = nflx_returns)) +geom_bar(stat = "identity") +theme_classic() +

计算Netflix股票的累计收益

绘制每日和每月收益对了解投资的每日和每月波动很有用。要计算投资的增长,换句话说,计算投资的总收益,我们需要计算该投资的累积收益。要计算累积收益,我们将使用  cumprod()  函数。

 mutate(cr = cumprod(1 + nflx_returns)) %>%      # 使用cumprod函数
 ggplot(aes(x = date, y = cumulative_returns)) +geom_line() +theme_classic() +

该图表显示了自2009年以来Netflix的累计收益。有了事后分析的力量, 自2009年以来,可以用1美元的投资赚取85美元。但据我们所知,说起来容易做起来难。在10年左右的时间里,在Qwickster惨败期间投资损失了其价值的50%。在这段时期内,很少有投资者能够坚持投资。

  ggplot(aes(x = date, y = cumulative_returns)) +geom_line() +theme_classic() + 

我们可以直观地看到,月收益表比日图表要平滑得多。

多只股票

下载多只股票的股票市场数据。

#将我们的股票代码设置为变量tickers <- c("FB", "AMZN", "AAPL", "NFLX", "GOOG") # 下载股价数据multpl_stocks <- tq_get(tickers, 

绘制多只股票的股价图

接下来,我们将绘制多只股票的价格图表

multpl_stocks %>%ggplot(aes(x = date, y = adjusted,  

这不是我们预期的结果。由于这些股票具有巨大的价格差异(FB低于165,AMZN高于1950),因此它们的规模不同。我们可以通过按各自的y比例绘制股票来克服此问题。

 facet_wrap(~symbol, scales = "free_y") +  # facet_wrap用于制作不同的页面theme_classic() +   

计算多只股票的收益

计算多只股票的收益与单只股票一样容易。这里只需要传递一个附加的参数。我们需要使用参数  group_by(symbol)  来计算单个股票的收益。

#计算多只股票的每日收益tq_transmute(select = adjusted,mutate_fun = periodReturn,period = 'daily',col_rename = 'returns')#计算多只股票的月收益tq_transmute(select = adjusted,mutate_fun = periodReturn,period = 'monthly',col_rename = 'returns')

绘制多只股票的收益图表

一旦有了收益计算,就可以在图表上绘制收益。

multpl_stock_daily_returns %>%ggplot(aes(x = date, y = returns)) +geom_line() +geom_hline(yintercept = 0) + 

multpl_stock_monthly_returns %>%ggplot(aes(x = date, y = return scale_fill_brewer(palette = "Set1",   # 我们会给他们不同的颜色,而不是黑色

在FAANG股票中,苹果的波动最小,而Facebook和Netflix的波动最大。对于他们从事的业务而言,这是显而易见的。Apple是一家稳定的公司,拥有稳定的现金流量。它的产品受到数百万人的喜爱和使用,他们对Apple拥有极大的忠诚度。Netflix和Facebook也是令人难以置信的业务,但它们处于高增长阶段,任何问题(收益或用户增长下降)都可能对股票产生重大影响。

计算多只股票的累计收益

通常,我们希望看到过去哪种投资产生了最佳效果。为此,我们可以计算累积结果。下面我们比较自2013年以来所有FAANG股票的投资结果。哪项是自2013年以来最好的投资?

multpl_stock_monthly_returns %>%mutate(returns e_returns = cr - 1) %>%ggplot(aes(x = date, y = cumulative_returns, color = symbol)) +geom_line() +labs(x = "Date" 

毫不奇怪,Netflix自2013年以来获得了最高的收益。亚马逊和Facebook位居第二和第三。

统计数据

计算单个股票的均值,标准差

我们已经有了Netflix的每日和每月收益数据。现在我们将计算收益的每日和每月平均数和标准差。 为此,我们将使用  mean()  和  sd()函数。

# 计算平均值.[[1]] %>%mean(na.rm = TRUE)nflx_monthly_mean_ret <- netfl turns) %>%.[[1]] %>%mean(na.rm = TRUE)# 计算标准差nflx_daily_sd_ret <- netflirns) %>%.[[1]] %>%sd()nflx_monthly_sd_ret <- netflix_rns) %>%.[[1]] %>%sd()nflx_stat 
## # A tibble: 2 x 3
##   period     mean     sd
##   <chr>     <dbl>  <dbl>
## 1 Daily   0.00240 0.0337
## 2 Monthly 0.0535  0.176

我们可以看到Netflix的平均每日收益为0.2%,标准差为3.3%。它的月平均回报率是5.2%和17%标准差。该数据是自2009年以来的整个时期。如果我们要计算每年的均值和标准差,该怎么办。我们可以通过按年份对Netflix收益数据进行分组并执行计算来进行计算。

netflix  %>%summarise(Monthly_Mean_Returns = mean(nflx_returns),MOnthly_Standard_Deviation = sd(nflx_returns) 
## # A tibble: 10 x 3
##     year Monthly_Mean_Returns MOnthly_Standard_Deviation
##    <dbl>                <dbl>                      <dbl>
##  1  2009              0.0566                      0.0987
##  2  2010              0.110                       0.142
##  3  2011             -0.0492                      0.209
##  4  2012              0.0562                      0.289
##  5  2013              0.137                       0.216
##  6  2014              0.00248                     0.140
##  7  2015              0.0827                      0.148
##  8  2016              0.0138                      0.126
##  9  2017              0.0401                      0.0815
## 10  2018              0.243                       0.233

我们还可以绘制结果更好地理解。

netflix_monthly_returns %>%mutate(year = rns, Standard_Deviation, keyistic)) +geom_bar(stat = "identity", position = "dodge") +scale_y_continuous(b ) +theme_bw() +

我们可以看到,自2009年以来,每月收益和标准差波动很大。2011年,平均每月收益为-5%。

计算多只股票的均值,标准差

接下来,我们可以计算多只股票的均值和标准差。

group_by(symbol) %>%summarise(mean = mean(returns),sd = sd(returns)) 
## # A tibble: 5 x 3
##   symbol     mean     sd
##   <chr>     <dbl>  <dbl>
## 1 AAPL   0.00100  0.0153
## 2 AMZN   0.00153  0.0183
## 3 FB     0.00162  0.0202
## 4 GOOG   0.000962 0.0141
## 5 NFLX   0.00282  0.0300
group_by(symbol) %>%summarise(mean = mean(returns),sd = sd(returns)) 
## # A tibble: 5 x 3
##   symbol   mean     sd
##   <chr>   <dbl>  <dbl>
## 1 AAPL   0.0213 0.0725
## 2 AMZN   0.0320 0.0800
## 3 FB     0.0339 0.0900
## 4 GOOG   0.0198 0.0568
## 5 NFLX   0.0614 0.157

计算收益的年均值和标准差。

   %>%group_by(symbol, year) %>%summarise(mean = mean(returns),sd = sd(returns))
## # A tibble: 30 x 4
## # Groups:   symbol [?]
##    symbol  year      mean     sd
##    <chr>  <dbl>     <dbl>  <dbl>
##  1 AAPL    2013  0.0210   0.0954
##  2 AAPL    2014  0.0373   0.0723
##  3 AAPL    2015 -0.000736 0.0629
##  4 AAPL    2016  0.0125   0.0752
##  5 AAPL    2017  0.0352   0.0616
##  6 AAPL    2018  0.0288   0.0557
##  7 AMZN    2013  0.0391   0.0660
##  8 AMZN    2014 -0.0184   0.0706
##  9 AMZN    2015  0.0706   0.0931
## 10 AMZN    2016  0.0114   0.0761
## # ... with 20 more rows

我们还可以绘制此统计数据。

multpl_stock_monthly_returns %>%mutate(year = year(date)) %>%group_by(symbol, yea s = seq(-0.1,0.4,0.02),labels = scales::percent) +scale_x_continuous(breaks = seq(2009,2018,1)) +labs(x = "Year", y = Stocks") +ggtitle 

multpl_stock_monthly_returns %>%mutate(year = year(date)) %>% ggplot(aes(x = year, y = sd, fill = symbol)) +geom_bar(stat = "identity", position = "dodge", width = 0.7) +scale_y_continuous(breaks = seq(-0.1,0.4,0.02),labels = scales::p scale_fill_brewer(palette = "Set1",  

计算多只股票的协方差和相关性

另一个重要的统计计算是股票的相关性和协方差。为了计算这些统计数据,我们需要修改数据。我们将其转换为xts对象。

协方差表

#计算协方差tk_xts(silent = TRUE) %>%cov()
##               AAPL        AMZN          FB         GOOG          NFLX
## AAPL  5.254736e-03 0.001488462 0.000699818 0.0007420307 -1.528193e-05
## AMZN  1.488462e-03 0.006399439 0.001418561 0.0028531565  4.754894e-03
## FB    6.998180e-04 0.001418561 0.008091594 0.0013566480  3.458228e-03
## GOOG  7.420307e-04 0.002853157 0.001356648 0.0032287790  3.529245e-03
## NFLX -1.528193e-05 0.004754894 0.003458228 0.0035292451  2.464202e-02

相关表

# 计算相关系数%>%tk_xts(silent = TRUE) %>%cor() 
##              AAPL      AMZN        FB      GOOG         NFLX
## AAPL  1.000000000 0.2566795 0.1073230 0.1801471 -0.001342964
## AMZN  0.256679539 1.0000000 0.1971334 0.6276759  0.378644485
## FB    0.107322952 0.1971334 1.0000000 0.2654184  0.244905437
## GOOG  0.180147089 0.6276759 0.2654184 1.0000000  0.395662114
## NFLX -0.001342964 0.3786445 0.2449054 0.3956621  1.000000000

我们可以使用corrplot() 包来绘制相关矩阵图。

## corrplot 0.84 loaded
cor() %>%corrplot()


基于R语言股票市场收益的统计可视化分析相关推荐

  1. 基于Python语言的PUBG游戏数据可视化分析系统

    [success]写于2019年大作业[/success] 博客链接:https://www.iamzlt.com/?p=299 代码链接请到博客链接内查看. 摘要 随着网络技术的兴起和普及,网络游戏 ...

  2. 基于R语言 meta/metafor 包进行荟萃分析(一)

    目录 目录 1.引言 2.安装,数据的读取和保存 不讲.这个有别的大佬讲了,没有创新点. 3.标准方法 3.1 固定效应模型与随机效应模型 3.1.1 连续型结果的数据测量 3.1.2 固定效应模型 ...

  3. R语言实例:diamonds 数据可视化分析报告

    文章目录 数据描述 导入数据 变量含义 数据清洗 检查缺失值及重复值 探索性分析 钻石的形状 钻石的重量分布 每种切割类型.颜色.清晰度的钻石分别有多少个 钻石的价格 最昂贵的10只钻石的属性信息 理 ...

  4. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)

    R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...

  5. R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法、data.table、dplyr等方案、计算分组均值并添加到可视化结果中

    R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法.data.table.dplyr等方案.计算分组均值并添加到可视化结果中 目录

  6. 基于R语言混合效应模型(mixed model)案例研究

    全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...

  7. 基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比(生信数基实验作业)

    基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比 0 引言 全基因组选择是 21 世纪动植物育种的一种重要的选择策略,其核心就是全基因组预测,即基于分布在整个基因组上的多样性分 ...

  8. r语言pls分析_基于R语言的PLS算法的实现解读.pptx

    基于R语言的PLS算法的实现及研究 目录 使用的开发工具 偏最小二乘的设计思想 基于R语言.MATLAB的偏最小二乘的实现 通径分析 测定系数 实验分析 使用的开发工具 R 语言(R是用于统计分析.绘 ...

  9. 基于R语言极值统计学及其在相关领域中的应用

    受到气候变化.温室效应以及人类活动等因素的影响,自然界中极端高温.极端环境污染.大洪水和大暴雨等现象的发生日益频繁:在人类社会中,股市崩溃.金融危机等极端情况也时有发生:今年的新冠疫情就是非常典型的极 ...

最新文章

  1. 五年程序员败在阿里三面,还是Java底层原理的问题啊!
  2. html文件上传协议,HTTP 上传文件的协议格式
  3. winform窗体 小项目【安装程序】
  4. 如何减小电压跟随器输出电阻_机器人如何保护电池的电源管理系统 免受热坏?(附:PDF文档下载)...
  5. 【Android OpenGL ES 开发 (二)】渲染管线与Shader
  6. 获取当前系统时间c语言,使用C语言获取当前系统的时间
  7. python调用有道翻译_Python通过调用有道翻译api实现翻译功能示例
  8. 计算机相关的议论主题,关于议论文的题目大全
  9. 两个向量叉乘表示什么意思_为什么两个空间向量的向量积的摸等于以这两个 – 手机爱问...
  10. mysql jdbc dao_MYSQL 之 JDBC(九):增删改查(七)DAO的补充和重构
  11. CentOS7下部署Mantis详细步骤
  12. 苹果手机账号验证失败连接不上服务器,苹果手机让检查Apple ID 电话号码点击后验证失败,连接服务器失败出错...
  13. python实现排序的lowB三人组:冒泡、插入、选择
  14. 10019---Linux查看CPU、内存、硬盘、版本信息
  15. Hello World---kodu少儿编程第四天
  16. 树莓派linux led字符设备驱动(信号量)
  17. ERROR 2002 HY000 Can't connect to local MySQL server thro
  18. 数学不好大学可以学计算机吗,高中数学不好的人大学计算机系能学好吗
  19. 烽火ExMobi引领企业移动应用平台浪潮
  20. JAVA进阶知识点总结 4-Map HashMap LinkedHashMap Map的遍历方式 斗地主案例

热门文章

  1. centos6.5(Linux)下搭建SVN服务器
  2. 陕西师范大学计算机科学学院保研院校,陕西师范大学计算机科学学院(专业学位)计算机技术保研细则...
  3. E2E测试---Cypress 使用
  4. ❀数据集❀基于计算机视觉的情绪识别数据集
  5. 【vSphere | Python】vSphere Automation SDK for Python Ⅲ—— vCenter Datacenter APIs
  6. 禁止灵格斯2.7弹出“新奇英语 互动锐词”广告窗口的解决方法
  7. L​i​n​u​x​关​闭​防​火​墙​命​令
  8. 图像超分辨率——LapSRN2017
  9. 每日一道leetcode(python)46. 全排列
  10. 怎样用微信编辑器排版出美观的图文消息