基于R语言股票市场收益的统计可视化阐发|附代码数据

2周前 (02-13 03:52)阅读1回复0
小强
小强
  • 管理员
  • 注册排名8
  • 经验值130130
  • 级别管理员
  • 主题26026
  • 回复0
楼主

全文链接:

比来我们被客户要求撰写关于股票市场的研究陈述,包罗一些图形和统计输出。

金融市场上最重要的使命之一就是阐发各类投资的汗青收益

要施行此阐发,我们需要资产的汗青数据。数据供给者良多,有些是免费的,大大都是付费的。在本文中,我们将利用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阐发

0
回帖

基于R语言股票市场收益的统计可视化阐发|附代码数据 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息