《数量经济研究》2006年第4期赫斯特指数(Hurst)指数及在Excel中的实现韩海波(兰州商学院统计学院,甘肃兰州730020)摘要:Hurst指数是描述非函数长周期的重要指标。它有别于传统单位根检验,可以发现时间序列存在的超长周期性,可以用于判断市场风险,但运算相当繁琐,单独利用Excel计算费时又费力,作者在充分理解Hurst指数内涵和应用的基础上,利用Excel的宏语言VBA编写宏程序轻松实现Hurst指数的计算,通过这一工作也希望能使Hurst指数能够得到广泛的应用。关键词:Hurst指数;R/S分析;Excel;VBA中图分类号:文献标识码:A1Hurst指数的基本概念重标极差法(rescaledrangeanalysis,R/S)
《数量经济研究》2006年第4期2(x−x)rs=(3)nn重标极差方法需要对原序列进行标准化,Z=(x−x);r=1,⋯,n(4)ii这样Z就具有零均值,Z=0,下面由Z产生一个累积时间序列Y:Y=(Z−Z);r=2,⋯,n(5)11i依据这个规则便可产生新的时间序列Y,由定义可知,序列的最后一个Y(Y)将一定为零。重标的极n差R,是Y的最大值减去最小值。niR=max(Y,⋯,Y)−min(Y,⋯,Y)(6)n1n1n对于R,下标n表明对于x,x,…,x是一个调整过的极差。因为Z已经被调整为零均值,Y的n12n最大值总是大于或等于0,而最小值总是小于或等于0。这样R将永远为非负。n运用重标极差R,可以将等式(1)一般化,因为等式(1)仅仅适用于布朗运动,也就是随机过程。n其形式如下:H(R/S)=c⋅n(7)nn表示对应x=x,x,…,x的R/S值;c=a常数12n这里R/S(rescaledrange)被称为重标极差。通常情况下,R/S随时间区间的增大而变大,H通常称做赫斯特指数(HurstExponent)。由于对R/S进行了标准化处理,重标极差允许研究者对各种现象和时间序列进行比较。这是因为重标极差分析方法可以对没有特征规模变化的时间序列进行描述和分析。赫斯特指数(HurstExponent)的计算与涵义(1)赫斯特指数的计算赫斯特指数可以由绘制的Log(R/S)与Log(n)图形逼近,其近似值就是其回归模型的斜率。Log(R/S)=Log(c)+H⋅Log(n)(8)n假如一个系统是独立分布的,那么H=。Hurst对尼罗河的流量研究表明,其H=,也就是说重标极差以快于时间平方根的速度在增长,这就意味着尼罗河的流量时间序列数据点的范围超过了一个随机过程可能覆盖的范围。而要覆盖更多的范围,序列间各点必定是相互影响的。尽管短期的自回归(Autoregressive,AR)会引起序列相关。但通过一阶和二阶自回归模型[AR(1),AR(2)]对数据进行处理并不能消除这种相关性。(2)赫斯特指数的含义时间序列的Hurst指数居于0-1之间。以为间隔,时间序列在不同的区间会表现不同的特性:①H∈(0,):分形布朗运动。此时,时间序列的未来数据倾向于返回历史点,因此其发散的比标准布朗运动慢。可以证明,该序列在理论上会无数次的返回它的历史出发点。②H=:标准布朗运动。此时,序列为随机游走,表现马尔可夫链特性。
《数量经济研究》2006年第4期③H∈(,1):长期和无周期的循环。此时,时间序列有混沌性,其增量会表现出长期增长的特性。因此,一定范围的记录会持续相当长的时期,从而形成一个个大的循环。但是这些循环没有固定的周期,难以依靠过去的数据预测未来的变化。④H=1:完全预测围。通常把这种过程称做均值回复过程。
《数量经济研究》2006年第4期通过观察我们通常认为价格的波动具有周期性的规律,但这并不是我们一般所说的周期,周期是一个可以严格用正弦波来表达的概念,而通常经济指标波动表现出来的周期性波动并没有精确的周期长度,不同波的相位和振幅经常发生偏移。近期的研究成表明,存在着非周期循环这个概念,这些循环有一个平均持续周期,换言之,一个未来的循环是不确定的,但它大致位于平均的循环周期附近。这正好符合我们对经济指标变动的周期的观测。通过R/S分析,我们就可以找到这个平均的循环长度。在一个时间序列里,R/S分析不但能够发现持久性长期记忆还能估计周期性或非周期性循环的长度。而且这一循环对于噪声是稳定的,这对于经济分析是十分有效的。这里非周期循环是指这个循环没有绝对的频率,但有一个平均的频率,在相空间中表现为一个有限集,混沌理论中称作奇异吸引子。以往在时间序列分析中,我们的焦点一直放在规则、周期循环上。在傅立叶分析中,是假定形成时间序列不规则形状的是许多正弦波的集合组成,它们各自有不同的频率和振幅。而谱分析是试图用不明显的循环来分割时间序列,使其成为正弦波的集合。然而这些方法均不能是分析结果较好的符合实际观测。而非周期循环却可以对资本市场的循环做出解释。统计量的计算及非周期循环的判断统计量的计算V统计量计算的主要目是找到非周期循环的长度。计算公式为:(R/S)nV=(15)nn其中n为观测的天数。非周期循环的判断在V统计中,若V线表现为水平,则序列为随机。反之,如果有上升趋势,则表现为序列的长期记忆,图形的拐点处即为序列的非周期循环的长度。2Hurst指数的计算程序指数的程序设计现有常用的统计软件中可以计算赫斯特指数的非常少,而根据前面所阐述的理论基础可以看出赫斯特指数计算量相当大,如果单纯依靠手工计算是很难做到的,为了方便更多的统计学者在实际的操作过程中可以计算赫斯特指数,我们决定编写程序来解决赫斯特指数复杂的计算问题。众所周知,如果在MicrosoftExcel中经常重复某项任务,可以使用宏将其变为可自动执行的任务。宏就是贮存在VisualBasic模块中的一系列命令和函数,并且在需要执行该项任务时可随时运行的程序。在Excel中记录宏就如同用磁带录音机录制音乐,然后运行宏使其重复执行或"回放"这些命令。可以使用VisualBasic编辑宏程序,也可以利用MicrosoftExcel自带的MicrosoftVisualBasic宏编辑器直接编制宏。由于宏程序可以方便灵活的加载到MicrosoftExcel中,而Excel又是统计中最常用的软件。我们选择使用VBA语言编写计算赫斯特指数的宏程序。指数程序的特点本程序实际上是一个Excel文档,用户只需将逐一计算对数比后的时间序列数据输入到Excel的A列中,然后直接点击左上角的“Hurst”按钮,即可得出该序列的赫斯特指数和相应的V统计量图,为了使程序更加方便实用,我们将程序和所有附带文件打包为标准的安装软件,成功安装后即可直接在Excel中计算赫斯特指数,详细使用方法请参考程序使用说明。(源程序请参见附录),
《数量经济研究》2006年第4期软件界面如下图:3外汇市场R/S实证分析数据来源我们采用1998年9月19日——2006年5月18日的欧元对美元汇率的收盘价(共2799个数据点)为分析对象。由于数据量已超过了2000这个经验值,因此样本数量是足够。数据初步处理根据R/S分析的要求对数据进行对数一阶差分(逐日对数收益)处理,消除序列的短期记忆。计算公式为:PtX=ln()(16)tPt−赫斯特指数(H)的计算将2799个经过处理的欧元对美元的汇率数据代入程序中进行计算,最后结果是:Hurst=。V统计量图如下所示:计算结果的非参数显著性检验为了验证计算所得H值的可靠性,我们打乱原时间序列的顺序,重新计算H。而这时的H应显
《数量经济研究》2006年第4期著值地接近。通过计算检验,结果证明H值是显著的。为了和传统单位根检验结果进行比较,我们对原序列进行ADF检验,检验结果如下:NullHypothesis:XhasaunitrootExogenous:ConstantLagLength:0(AutomaticbasedonSIC,MAXLAG=27)t-StatisticProb.*:1%%%*MacKinnon(1996)-FullerTestEquationDependentVariable:D(X)Method:LeastSquaresDate:05/20/06Time:17:13Sample(adjusted):22798Includedobservations:(-1)
《数量经济研究》2006年第4期(F-statistic)检验是一个被最早提出来的检验单位根零假设的检验,而且是实际中最常用的检验。不过,其他的检验随后被相继提出来,他们中的许多都比ADF检验有更高的功效,因为一个功效更强的检验有能力更好的将单位AR根个数据接近于1但小于1的根区分开来。Elliott,Rothenberg和Stock于1996年提出了DF-GLS检验,它能更好的区别单位根的零假设和平稳性的备则假设。试验证明假设Y实际上是一个平稳的AR(1),其自回归系数为,且有两百个观测值,计算一个没有时间趋势的单位根检验,那么ADF检验在5%的显著性水平下真确拒绝零假设的概率约为31%,而AF-GLS检验相应的概率为75%。因此,为了保证计算结果的准确性我们同时对原数据进行DF-GLS检验,结果如下:NullHypothesis:XhasaunitrootExogenous:ConstantLagLength:0(AutomaticbasedonSIC,MAXLAG=27):1%%%*MacKinnon(1996)DF-GLSTestEquationonGLSDetrendedResidualsDependentVariable:D(GLSRESID)Method:LeastSquaresDate:05/20/06Time:17:16Sample(adjusted):22798Includedobservations:-StatisticProb.
《数量经济研究》2006年第4期GLSRESID(-1)结果表明,在1%的置信度下,两种检验同时拒绝单位根假设,因此ADF检验认为序列是随机的。但通过Hurst指数分析发现,由于其指数大于,因此原时间序列并不是真正意义上的随机序列,而是具有长期的相关性。结果出现这样的矛盾源自于在进行ADF检验时,我们对于辅助模型的滞后期一般设定为28,这就会使得不能对更为长期的相关性做出准确判断。这里需要我们注意的是,hurst指数的计算对时间序列数据量要求较大,因此对于数据较少的时间序列它并不能发挥其特长,甚至产生错误的判断,这时就必须使用类似ADF检验等较为常用的方法进行研究。参考文献[1](1951),“Long-termstorageofreservoirs”,-808[2],(1969),“RobustnessoftherescaledrangeR/Sinthemeasurementofnon-cycliclongrunstatisticaldependence”,[3],,–termstoragecapacityofreservoirs[J].TransactionsoftheAmericanSocietyofCivilEngineer116,1951[4][A].,October1995[5]与宏[美]电子工业出版社2005[6]埃得加E彼得斯.分形市场分析[美]经济科学出版社2002[7]黄睿.ExcelVBA应用程序专业设计实用指南电子工业出版社2005[8]李子奈,叶阿盅.高级计量经济学[M].北京:清华大学出版社.2000
《数量经济研究》2006年第4期附录1:以下便是利用Excel里的VBA计算Hurst指数的源代码:SubHurst()'变量和数组的定义DimData()DimArray1()DimArray2()DimR()DimS()DimResult()DimNoOfDataPointsAsIntegerDimNoOfPlottedPointsAsIntegerDimNoOfPeriodsDimPeriodNoDimnAsIntegerDimAAsIntegerDimiAsIntegerDimmDimeDimRS'验证A列中是否输入数据IfWorksheets("Sheet1").Range("A1").Value=0ThenMsgBox("请在A列输入数据!"):ExitSub'清空主要的单元格Worksheets("Sheet1").Range("B3").Value="Hurst="Worksheets("Sheet1").Range("C3").Value=Null'统计数据的个数i=1
《数量经济研究》2006年第4期DoWhilei<10000i=i+1IfWorksheets("Sheet1").Cells(i,1).Value=0ThenExitDoLoopNoOfDataPoints=i-1ReDimData(NoOfDataPoints)'验证A列的数据后将其加载到数组中i=1counter=1DoWhilecounter<=NoOfDataPointsSetcurCell=Worksheets("Sheet1").Cells(i,1)()ThenData(counter)==counter+1EndIfi=i+1Loop'运行以下代码则可以直接输入原数据'i=2'DoWhilei<=NoOfDataPoints'Data(i-1)=Log(Data(i)/Data(i-1))'i=i+1'LoopReDimResult(NoOfDataPoints/2,2)'进入主循环
《数量经济研究》2006年第4期A=2DoWhileA<=NoOfDataPoints/2'再次定义数组变量NoOfPeriods=NoOfDataPoints/AReDimArray1(Int(NoOfPeriods))ReDimArray2(A,NoOfPeriods)ReDimS(Int(NoOfPeriods))ReDimR(Int(NoOfPeriods))RS=0'求得各个子区间均值i=1DoWhilei<=NoOfPeriodse=0ForPeriodNo=1ToAe=e+Data(PeriodNo+(i-1)*A)NextPeriodNoArray1(i)=e/Ai=i+1Loop'求得各个子区间的累积截距和极差i=1DoWhilei<NoOfPeriodsm=0e=0ForPeriodNo=1ToAm=m+((Data(PeriodNo+(i-1)*A)-Array1(i))^2)e=e+(Data(PeriodNo+(i-1)*A)-Array1(i))Array2(PeriodNo,i)=eNextPeriodNo
《数量经济研究》2006年第4期'比较最大值与最小值Maxi=Array2(1,i)Mini=Array2(1,i)Forn=1ToAIfArray2(n,i)>MaxiThenMaxi=Array2(n,i)IfArray2(n,i)<MiniThenMini=Array2(n,i)Nextn'求得R/S值R(i)=Maxi-MiniS(i)=Sqr(m/A)RS=RS+R(i)/S(i)i=i+1Loop'将V统计量表的数据输出到Excel表格中Worksheets("sheet1").Cells(A+2,5).Value=(RS/NoOfPeriods)/Sqr(A)Worksheets("sheet1").Cells(A+2,6).Value=Log(A)'将计算结果装入Result()数组中Result(A,1)=Log(A)Result(A,2)=Log(RS/NoOfPeriods)A=A+1Loop'对方程Log(R/S)=Log(c)+H·Log(n)+ε进行线性回归,估计出斜率H就是Hurst指数sumx=0Sumy=0Sumxy=0Sumxx=0
《数量经济研究》2006年第4期NoOfPlottedPoints=NoOfDataPoints/2Fori=2ToNoOfPlottedPointssumx=sumx+Result(i,1)Sumy=Sumy+Result(i,2)Sumxy=Sumxy+(Result(i,1))*(Result(i,2))Sumxx=Sumxx+(Result(i,1))*(Result(i,1))NextiH=(Sumxy-((sumx*Sumy)/NoOfPlottedPoints))/(Sumxx-((sumx*sumx)/NoOfPlottedPoints))Worksheets("sheet1").Range("C3").Value=HEndSub需要说明的是:①本程序最多只能计算20000个数据。②本程序的默认输入列是A列,请将数据直接输入A列中,从A1开始输入,请不要空格。③请先将原始数据进行逐一计算的对数比,然后再输入程序进行计算。否则得到的将不是正确结果。HurstIndexandTheRealizationinExcelHanHaibo(StatisticsSchoolofLanzhou,BusinessSchoolofLanzhou,LanzhouGansu730020)Abstract:,anditcanfindtheexistenceoflongtimeseriesperiodicity,canbeusedtodeterminethemarketrisk,butrathertediouscalculations,'smacrolanguageVBAeasilypreparedHurstindexcalculation,alsohopethatthroughthisworkwillenableHurstindexcanbewidelyused.
《数量经济研究》2006年第4期Keywords:Hurstindex;R/Sanalysis;Excel;VBA收稿日期:2006-05-14作者简介:韩海波,兰州商学院统计学院,主要从事经济计量分析研究。