最近我们被客户要求撰写关于金融数据波动率的研究报告,包括一些图形和统计输出。

摘要

在学术界和金融界,分析高频财务数据的经济价值现在显而易见。它是每日风险监控和预测的基础,也是高频交易的基础。为了在财务决策中高效利用高频数据,高频时代采用了最先进的技术,用于清洗和匹配交易和报价,以及基于高收益的流动性的计算和预测。

高频数据的处理

在本节中,我们讨论高频金融数据处理中两个非常常见的步骤:(i)清理和(ii)数据聚合。


> dim(dataraw);
[1] 48484 7> tdata$report;initial number no zero prices  select exchange
48484   48479   20795sales condition merge same timestamp
20135 9105
> dim(afterfirstclean)
[1] 9105 7

高频数据的汇总

通常不会在等间隔的时间点记录价格,而许多实际波动率衡量方法都依赖等实际间隔的收益。有几种方法可以将这些异步和/或不规则记录的序列同步为等距时间数据。
最受欢迎的方法是按照时间汇总,它通过获取每个网格点之前的最后价格来将价格强制为等距网格。

> # 加载样本价格数据> data("sample");> # 聚合到5分钟的采样频率:> head(tsagg5min);
PRICE
2008-01-04 09:35:00 193.920
2008-01-04 09:40:00 194.630
2008-01-04 09:45:00 193.520
2008-01-04 09:50:00 192.850
2008-01-04 09:55:00 190.795
2008-01-04 10:00:00 190.420
> # 聚合到30秒的频率:> tail(tsagg30sec);
PRICE
2008-01-04 15:57:30 191.790
2008-01-04 15:58:00 191.740
2008-01-04 15:58:30 191.760
2008-01-04 15:59:00 191.470
2008-01-04 15:59:30 191.825
2008-01-04 16:00:00 191.670

在上面的示例中,价格被强制设置为5分钟和30秒的等距时间网格。此外,aggregates函数内置于所有已实现的度量中,可以通过设置参数align.by和align.period来调用该函数。在这种情况下,首先将价格强制等间隔的常规时间网格,然后根据这些常规时间段内执行观察值的收益率来计算实际度量。这样做的优点是,用户可以将原始价格序列输入到实际度量中,而不必担心价格序列的异步性或不规则性。

带有时间和波动率计算的价格示例:


> #我们假设stock1和stock2包含虚拟股票的价格数据:> #汇总到一分钟:> Price_1min = cbind(aggregatePrice(stock1),aggregatePrice(stock2));
> #刷新时间聚合:refreshTime(list(stock1,stock2));
> #计算跳跃鲁棒的波动性指标> #基于同步数据
rBPCov(Price_1min,makeReturns=TRUE);
> #计算跳跃和噪声鲁棒的波动性度量> #基于非同步数据:

实际波动性度量

高频数据的可用性使研究人员能够根据日内收益的平方来估计实际波动性(Andersen等,2003)。实际上,单变量波动率估计的主要挑战是应对(i)价格的上涨和(ii)微观结构噪声。因此多变量波动率估计也引起了人们的注意。高频软件包实施了许多新近提出的实际波动率方法。

下面的示例代码说明了日内周期的估计:


> #计算并绘制日内周期> head(out);returns   vol dailyvol periodicvol
2005-03-04 09:35:00 -0.0010966963 0.004081072 0.001896816   2.151539
2005-03-04 09:40:00 -0.0005614217 0.003695715 0.001896816   1.948379
2005-03-04 09:45:00 -0.0026443880 0.003417950 0.001896816   1.801941

波动性预测

学术研究人员普遍认为,如果进行适当的管理,对高频数据的访问将带来优势,可以更好地预测未来价格变化的波动性。早在2003年Fleming等人(2003年)估计,投资者将愿意每年支付50到200个点,来预测投资组合绩效的收益,这是通过使用高频收益率而不是每日收益率来进行波动率预测的。

尽管HAR和HEAVY模型的目标相同,即对条件波动率进行建模,但它们采用的方法不同。HAR模型专注于预测收盘价变化。HAR模型的主要优点是,它易于估计(因为它本质上是一种可以用最小二乘方估计的线性模型), HEAVY模型的主要优点在于,它可以模拟收盘价和收盘价的条件方差。此外,HEAVY模型具有动量和均值回归效应。与HAR模型相反,HEAVY模型的估计是通过正态分布的最大似然来完成的。接下来的本文更详细地介绍HAR模型和HEAVY模型,当然还要讨论并说明如何使用高频收益率来估计这些模型。

HAR模型

示例

将HARRV模型拟合到道琼斯工业指数,我们加载每日实际波动率。

> #每天获取样本实际波动率数据
> DJI_RV = realized$DJI; #选择 DJI
> DJI_RV = DJI_RV[!is.na(DJI_RV)]; #删除缺失值

第二步,我们计算传统的异构自回归(HAR)模型。由于HAR模型只是线性模型的一种特殊类型,因此也可以通过以下方式实现:harModel函数的输出是lm的子级harModel lm,线性模型的标准类。图绘制了harModel函数的输出对象,水平轴上有时间,在垂直轴上有观察到的实际波动率和预测的实际波动率(此分析是在样本中进行的,但是模型的估计系数可以显然用于样本外预测)。从图的检查中可以清楚地看出,harModel可以相对快速地拟合波动水平的变化,


[1] "harModel" "lm"
> x;
Model:
RV1 = beta0 + beta1 * RV1 + beta2 * RV5 + beta3 * RV22
Coefficients:beta0  beta1
4.432e-05   1.586e-01r.squared  adj.r.squared
0.4679  0.4608
> summary(x);
Call:
"RV1 = beta0  +  beta1 * RV1 +  beta2 * RV5 +  beta3 * RV22"
Residuals:
Min 1Q  Median  3Q  Max
-0.0017683 -0.0000626 -0.0000427 -0.0000087 0.0044331Coefficients:
Estimate Std. Error t value Pr(>|t|)
beta0 4.432e-05 3.695e-05 1.200 0.2315
beta1 1.586e-01 8.089e-02 1.960 0.0512 .
beta2 6.213e-01 1.362e-01 4.560 8.36e-06 ***
beta3 8.721e-02 1.217e-01 0.716 0.4745
---
Signif. codes: 0 ^a˘ A¨ Y***^a˘ A´ Z 0.001 ^a˘ A¨ Y**^a˘ A´ Z 0.01 ^a˘ A¨ Y*^a˘ A´ Z 0.05 ^a˘ A¨ Y.^a˘ A´ Z 0.1 ^a˘ A¨ Y ^a˘ A´ Z 1
Residual standard error: 0.0004344 on 227 degrees of freedom
Multiple R-squared: 0.4679, Adjusted R-squared: 0.4608
F-statistic: 66.53 on 3 and 227 DF, p-value: < 2.2e-16


HARRVCJ模型拟合

估计harModel的更复杂版本。例如,在Andersen等人中讨论的HARRVCJ模型。可以使用示例数据集估算,如下所示:


> data = makeReturns(data); #获取高频收益数据> x
Model:sqrt(RV1) = beta0 + beta1 * sqrt(C1) + beta2 * sqrt(C5) + beta3 * sqrt(C10)
+ beta4 * sqrt(J1) + beta5 * sqrt(J5) + beta6 * sqrt(J10)Coefficients:
beta0   beta1   beta2   beta3   beta4   beta5
-0.8835 1.1957  -25.1922    38.9909 -0.4483 0.8084
beta6
-6.8305
r.squared   adj.r.squared
0.9915  0.9661

最后一个示例是仅将日内收益作为输入就可以估算的一种特殊类型HAR模型。

HEAVY模型

将HEAVY模型拟合到道琼斯工业平均指数。第一步,我们加载道琼斯工业平均指数。然后,我们从该库中选择每日收益和每日实际核估计(Barndorff-Nielsen等,2004)。现在,作为HeavyModel输入的数据矩阵的第一列为收益率,第二列为Realized Kernel估计值。我们进一步将参数设置为采样期内日收益率和平均实际核估计方差。现在,我们来估算HEAVY模型。根据模型的输出,图绘制了由模型中的第二个方程式估算的条件方差。

> # heavy模型在DJI上的实现:
> returns = returns[!is.na(rk)]; rk = rk[!is.na(rk)]; # 删除NA
> startvalues = c(0.004,0.02,0.44,0.41,0.74,0.56); #初始值> output$estparams
[,1]
omega1 0.01750506
omega2 0.06182249
alpha1 0.45118753
alpha2 0.41204541
beta1 0.73834594
beta2 0.56367558

流动性

交易量和价格

交易量和价格通常作为单独的数据对象提供。对于许多与交易数据有关的研究和实际问题,需要合并交易量和价格。由于交易量和价格可能会收到不同的报告滞后影响,因此这不是一个简单的操作(Leeand Ready 1991)。函数matchTradesQuotes可用于匹配交易量和价格。根据Vergote(2005)的研究,我们将价格设置为2秒作为默认值。

流动性衡量

可以使用函数tqLiquidity根据匹配的交易量和价格数据计算流动性指标。表中计算了主要实现的流动性衡量指标,并且可以用作函数tqLiquidity的参数。
以下示例说明了如何:(i)匹配交易和报价,(ii)获取交易方向,以及(iii)计算流动性衡量指标。

> #加载数据样本> #匹配交易量和价格数据> tqdata = matchTradesQuotes(tdata,qdata);
> #在tqdata中显示信息> colnames(tqdata)[1:6];
[1] "SYMBOL" "EX" "PRICE" "SIZE" "COND" "CORR"> #根据Lee-Ready规则推断的交易方向> #计算有效价差
> es = tqLiquidity(tqdata,type="es");

R语言HAR和HEAVY模型分析高频金融数据波动率相关推荐

  1. R语言实现LDA主题模型分析网购数据

    研究人员对各大电商平台海量用户的评价数据进行分析,得出智能门锁剁手攻略. 1 语义透镜 顾客满意度和关注点 最近我们被要求撰写关于LDA的研究报告,包括一些图形和统计输出.我们对于评价数据进行LDA建 ...

  2. R语言泊松Poisson回归模型分析案例

    这个问题涉及马蹄蟹研究的数据.研究中的每只雌性马蹄蟹都有一只雄性螃蟹贴在她的巢穴中.这项研究调查了影响雌蟹是否有其他男性居住在她附近的因素.被认为影响这一点的解释变量包括雌蟹的颜色(C),脊椎状况(S ...

  3. R语言实现LDA主题模型分析知乎话题

     这是一篇关于文本主题分析的应用实践,主要尝试聚焦几个问题,什么是LDA主题模型?如何使用LDA主题模型进行文本?我们将知乎上面的转基因话题精华帖下面的提问分成六大主题进行实践. 转基因" ...

  4. R-GIS: 如何用R语言实现GIS地理空间分析及模型预测

    前言:随着地理信息系统(GIS)和大尺度研究的发展,空间数据的管理.统计与制图变得越来越重要.R语言在数据分析.挖掘和可视化中发挥着重要的作用,其中在空间分析方面扮演着重要角色,与空间相关的包的数量也 ...

  5. R语言分位数回归Quantile Regression分析租房价格

    全文链接:http://tecdat.cn/?p=18422 本文想在R软件中更好地了解分位数回归优化.在查看分位数回归之前,让我们从样本中计算中位数或分位数(点击文末"阅读原文" ...

  6. R语言指数平滑预测法分析南京出租车打车软件空载率时间序列补贴政策可行性...

    报告链接:http://tecdat.cn/?p=32161 本文通过建立空载率的数学模型,帮助客户来分析出租车的空载率,从而对出租车补贴政策能否提高高峰期的实载率,缓解打车难问题进行了说明(点击文末 ...

  7. R语言构建多元线性回归模型

    R语言构建多元线性回归模型 对比一元线性回归,多元线性回归是用来确定2个或2个以上变量间关系的统计分析方法.多元线性回归的基本的分析方法与一元线性回归方法是类似的,我们首先需要对选取多元数据集并定义数 ...

  8. 单因素方差分析_基于R语言开展方差分析(一)——单因素方差分析

    基本原理 方差分析(Analysis of variance, ANOVA)是用于两个或两个以上样本均数比较的方法,还可以分析两个或多个研究因素的交互交互作用以及回归方程的线性假设检验等.其基本思想是 ...

  9. R语言的Copula变量相关性分析

    在工程.水文和金融等各学科的研究中,总是会遇到很多变量,研究这些相互纠缠的变量间的相关关系是各学科的研究的重点.虽然皮尔逊相关.秩相关等相关系数提供了变量间相关关系的粗略结果,但这些系数都存在着无法克 ...

最新文章

  1. 程序、进程以及线程的爱恨情仇
  2. 系统管理员不可错过的6款服务器监控工具
  3. 【中级软考】什么是二维数组元素的偏移量?(就是把数组ravel[拉平]后存到内存中的元素位置)
  4. 三十一、Python读写docx文件
  5. python替代_【Python】选择ipython替代python的理由
  6. 一个实用的显示Visual Studio Code文件绝对路径的扩展应用
  7. Redis(案例二:高并发商品首页热点数据开发实战)
  8. Golang——包引入和闭包
  9. 数据库系统中数据抽象的三级结构
  10. Windows7部署WordPress傻瓜式教程-cnblogs
  11. 谁是三国跳槽王:吕布成毫无规划的跳槽者
  12. 命题逻辑——自由之门与死亡之门
  13. linux vm使用物理磁盘,vmware使用整个物理硬盘做虚拟机的注意事项
  14. SpringBooot:Redis:根据两地经纬度计算距离
  15. android调用拨号界面拨打电话功能,Android实现拨打电话功能
  16. 云服务器如何重新装系统,云服务器可以重新安装系统
  17. 组织引入和实施PMO的策略方法
  18. 计算机视觉相关学习项目(上)——附MATLAB源代码
  19. hibernate数据检索策略
  20. 百战RHCE(第十五战:Linux进阶命令十二-主机名和域名解析极简管理)

热门文章

  1. Error: <path> attribute transform: Expected number, “matrix(NaN,NaN,NaN,NaN,…“. echarts3D柱图报错
  2. JS基础知识---Hoisting
  3. 路易斯华盛顿大学计算机系,圣路易斯华盛顿大学ee
  4. IDataParameter[]怎么创建
  5. 频谱分析幅值单位_NVH测试中的系统分析
  6. PHP之序列化与反序列化(session反序列化篇)
  7. fdisk和parted命令区别
  8. 来自一个大一学生的自我描述
  9. 微信小程序解决页面数据处理多时页面卡顿的问题
  10. “21 天好习惯”第一期-10