R语言收益率和波动性模拟股票价格COMP226带自测题|附代码数据

发布时间 2023-06-15 23:40:13作者: 拓端tecdat

全文下载链接:http://tecdat.cn/?p=29581

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

在本工作表中,我们将研究价格、收益率和波动性。波动性通常用收益率的均方差来衡量,例如夏普比率的分母,它被用作风险的衡量标准。

我们将使用股票价格的平均对数收益率和波动性(对数回报的均方差)来模拟股票价格。

价格和收益率

 
library(quantmod)
getSymbols("AAPL")
price_AAPL <- Ad(AAPL)
plot(price_AAPL, main = "AAPL prices")

图片

我们注意到的第一件事是,这个价格序列似乎不是平稳的,也就是说,没有明显的平均价格(因此谈论价格的均方差实际上没有意义)。使用这种非平稳时间序列是非常有问题的——时间序列分析的大部分集中在平稳时间序列上;在实词时间序列中使用时间序列的第一步通常是导出平稳时间序列,也就是说,一个随时间变化具有恒定均值和均方差的时间序列。由于价格不是平稳的,我们将注意力转向股票的收益率。

 
returns_AAPL <- diff(log(price_AAPL)) 
plot(returns_AAPL, main = "AAPL % returns") 

图片

请注意,在收益率图中有一些聚类,不是在收益率的符号中(这对交易AAPL股票直接有用),而是在收益率的幅度中,也就是说,明天的收益率可能在幅度上与今天的收益率相似(无论是正的还是负的)。除此之外,收益率比价格稳定得多。让我们看看它们的柱状图。

 
hist(returns_AAPL, breaks = 100, col="brown") 

图片


点击标题查阅往期内容

图片

R语言单变量和多变量(多元)动态条件相关系数DCC-GARCH模型分析股票收益率金融时间序列数据波动率

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

练习

检查当我们使用简单收益率而不是对数收益率时,我们刚才看到的两个数字是否非常相似

解答

 
library(TTR)
dev.off()

图片

图片

请注意,简单的收益率直方图非常相似,但不完全相同。

收益率的分布似乎有点像正态(高斯)分布。像布莱克-斯科尔斯期权定价公式这样的模型是基于收益率实际上是对数正态分布的假设。事实上,这只是对现实的近似——实际股价收益率比正态分布所暗示的更有可能出现极值(也就是说,实际回报分布有肥尾)。

独立性怎么样?

这些收益率在时间上是相互独立的吗?这里有一个快速的方法来部分回答这个问题:

 
acf(returns_AAPL[-1], main = "Autocorrelation of returns") 

该自相关检查给定周期与未来周期之间的相关性。

图片

请注意,连续收益率之间似乎没有任何自相关。然而,我们已经注意到收益率幅度的一些聚类,这通常被称为波动率聚类。使用acf重复上面的图表,但使用收益率的绝对值(使用函数abs()获得)。你现在将观察到自相关。

解答

 
acf(abs(returns_AAPL[-1]), main = "Autocorrelation of absolute returns")
dev.off()

请注意下面新图中的自相关。

图片

这些回报的平均值和均方差是多少?

 
> mu
[1] 0.001369495
> sigma
[1] 0.02572958

什么是波动性?

定义

波动率是收益率的年化均方差。20的波动率意味着一年后资产价格从现值下跌或上涨超过20%的可能性约为三分之一。这是基于收益率是对数正态分布的假设,这不是真的,但它仍然是一个有用的建模假设,至少作为起点。在R中,给定一系列每日价格,对数回报的年化均方差的计算如下:

 
sqrt(252) * sd(diff(log(priceSeriesDaily))) * 100

使用收益率模拟股票价格

似乎对数收益率有一个稳定的均值和均方差。让我们假设它们实际上是正态分布的,所以模拟股票价格的目的。假设对数收益率正态分布为均方差μ和均方差sigma。那么我们如何模拟价格?回想一下对数收益率的定义:

图片

因此,我们将使用以下方法来模拟股票价格:

1.设置一个初始化价格(在下面的代码中是100)。2.从正态分布中绘制一个随机数,平均μ和均方差sigma是模拟的参数。这个数字将代表日志返回。3.对日志返回进行指数运算,并将其与之前的价格相乘以获得新的价格。4.重复步骤2.和3.进行许多模拟步骤。

练习

执行上述步骤以模拟价格过程并生成单个模拟价格轨迹,并绘制它以生成如下图的图形:

图片

解答

 
plot(p, type = "l"
dev.off()

练习

将上一个练习中的模拟代码包装在一个函数中,并使用它来产生6种不同的模拟价格轨迹。使用

 
par(mfrow=c(3,3))

将它们放在3×3的网格中,以便可以直观地比较。它们可能会产生如下内容:

图片

解答

 

par(mfrow=c(3,3))
for (i in 1:6) dotion(simNumber=i)
dev.off()

图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《R语言收益率和波动性模拟股票价格COMP226带自测题》。

点击标题查阅往期内容

【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享
R语言单变量和多变量(多元)动态条件相关系数DCC-GARCH模型分析股票收益率金融时间序列数据波动率
R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量波动率预测
R语言用Garch模型和回归模型对股票价格分析
R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
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分析