全文链接:http://tecdat.cn/?p=16453
最近咱们被客户要求撰写对于股票市场的钻研报告,包含一些图形和统计输入。
金融市场上最重要的工作之一就是剖析各种投资的历史收益
要执行此剖析,咱们须要资产的历史数据。数据提供者很多,有些是收费的,大多数是付费的。在本文中,咱们将应用 Yahoo 金融网站上的数据。
在这篇文章中,咱们将:
- 下载收盘价
- 计算收益率
- 计算收益的均值和标准差
让咱们先加载库。
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() +
点击题目查阅往期内容
R 语言 ARMA GARCH COPULA 模型拟合股票收益率工夫序列和模仿可视化
左右滑动查看更多
01
02
03
04
该图表显示了自 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 语言股票市场收益的统计可视化剖析》。
点击题目查阅往期内容
ARMA-GARCH-COPULA 模型和金融工夫序列案例
工夫序列剖析:ARIMA GARCH 模型剖析股票价格数据
GJR-GARCH 和 GARCH 稳定率预测普尔指数工夫序列和 Mincer Zarnowitz 回归、DM 测验、JB 测验
【视频】工夫序列剖析:ARIMA-ARCH / GARCH 模型剖析股票价格
工夫序列 GARCH 模型剖析股市稳定率
PYTHON 用 GARCH、离散随机稳定率模型 DSV 模仿预计股票收益工夫序列与蒙特卡洛可视化
极值实践 EVT、POT 超阈值、GARCH 模型剖析股票指数 VaR、条件 CVaR:多元化投资组合预测危险测度剖析
Garch 稳定率预测的区制转移交易策略
金融工夫序列模型 ARIMA 和 GARCH 在股票市场预测利用
工夫序列分析模型:ARIMA-ARCH / GARCH 模型剖析股票价格
R 语言危险价值:ARIMA,GARCH,Delta-normal 法滚动预计 VaR(Value at Risk)和回测剖析股票数据
R 语言 GARCH 建模罕用软件包比拟、拟合规范普尔 SP 500 指数稳定率工夫序列和预测可视化
Python 金融工夫序列模型 ARIMA 和 GARCH 在股票市场预测利用
MATLAB 用 GARCH 模型对股票市场收益率工夫序列稳定的拟合与预测 R 语言 GARCH-DCC 模型和 DCC(MVT)建模预计
Python 用 ARIMA、GARCH 模型预测剖析股票市场收益率工夫序列
R 语言中的工夫序列分析模型:ARIMA-ARCH / GARCH 模型剖析股票价格
R 语言 ARIMA-GARCH 稳定率模型预测股票市场苹果公司日收益率工夫序列
Python 应用 GARCH,EGARCH,GJR-GARCH 模型和蒙特卡洛模仿进行股价预测
R 语言工夫序列 GARCH 模型剖析股市稳定率
R 语言 ARMA-EGARCH 模型、集成预测算法对 SPX 理论稳定率进行预测
matlab 实现 MCMC 的马尔可夫转换 ARMA – GARCH 模型预计
Python 应用 GARCH,EGARCH,GJR-GARCH 模型和蒙特卡洛模仿进行股价预测
应用 R 语言对 S&P500 股票指数进行 ARIMA + GARCH 交易策略
R 语言用多元 ARMA,GARCH ,EWMA, ETS, 随机稳定率 SV 模型对金融工夫序列数据建模
R 语言股票市场指数:ARMA-GARCH 模型和对数收益率数据探索性剖析
R 语言多元 Copula GARCH 模型工夫序列预测
R 语言应用多元 AR-GARCH 模型掂量市场危险
R 语言中的工夫序列分析模型:ARIMA-ARCH / GARCH 模型剖析股票价格
R 语言用 Garch 模型和回归模型对股票价格剖析
GARCH(1,1),MA 以及历史模拟法的 VaR 比拟
matlab 预计 arma garch 条件均值和方差模型 R 语言 POT 超阈值模型和极值实践 EVT 剖析