pz.test: Podolskij and Ziggel's Test for the Presence of Jumps Using...

View source: R/pz.test.R

pz.testR Documentation

Podolskij and Ziggel's Test for the Presence of Jumps Using Power Variation with Perturbed Truncation

Description

Performs a test for the null hypothesis that the realized path has no jump following Podolskij and Ziggel (2010).

Usage

pz.test(yuima, p = 4, threshold = "local", tau = 0.05)

Arguments

yuima

an object of yuima-class or yuima.data-class.

p

a positive number indicating the exponent of the (truncated) power variation to compute test statistic(s). Theoretically, it must be greater than or equal to 2.

threshold

a numeric vector or list indicating the threshold parameter(s). Each of its components indicates the threshold parameter or process to be used for estimating the corresponding component. If it is a numeric vector, the elements in threshold are recycled if there are two few elements in threshold.

Alternatively, you can specify either "PZ" or "local" to automatically select a (hopefully) appropriate threshold. When threshold="PZ", selection is performed following Section 5.1 in Podolskij and Ziggel (2010). When threshold="local", selection is performed following Section 5.1 in Koike (2014). The default is threshold="local".

tau

a probability controlling the strength of perturbation. See Section 2.3 in Podolskij and Ziggel (2010) for details. Podolskij and Ziggel (2010) suggests using a relatively small value for tau, e.g. tau=0.1 or tau=0.05.

Value

A list with the same length as dim(yuima). Each component of the list has class “htest” and contains the following components:

statistic

the value of the test statistic of the corresponding component of yuima.

p.value

an approximate p-value for the test of the corresponding component.

method

the character string “Podolskij and Ziggel jump test”.

data.name

the character string “xi”, where i is the number of the component.

Note

Podolskij and Ziggel (2010) also introduce a pre-averaged version of the test to deal with noisy observations. Such a test will be implemented in the future version of the package.

Author(s)

Yuta Koike with YUIMA Project Team

References

Dumitru, A.-M. and Urga, G. (2012) Identifying jumps in financial assets: A comparison between nonparametric jump tests. Journal of Business and Economic Statistics, 30, 242–255.

Koike, Y. (2014) An estimator for the cumulative co-volatility of asynchronously observed semimartingales with jumps, Scandinavian Journal of Statistics, 41, 460–481.

Maneesoonthorn, W., Martin, G. M. and Forbes, C. S. (2020) High-frequency jump tests: Which test should we use? Journal of Econometrics, 219, 478–487.

Podolskij, M. and Ziggel, D. (2010) New tests for jumps in semimartingale models, Statistical Inference for Stochastic Processes, 13, 15–41.

Theodosiou, M. and Zikes, F. (2011) A comprehensive comparison of alternative tests for jumps in asset prices. Central Bank of Cyprus Working Paper 2011-2.

See Also

bns.test, lm.jumptest, minrv.test, medrv.test

Examples

## Not run: 
set.seed(123)

# One-dimensional case
## Model: dXt=t*dWt+t*dzt, 
## where zt is a compound Poisson process with intensity 5 and jump sizes distribution N(0,1).

model <- setModel(drift=0,diffusion="t",jump.coeff="t",measure.type="CP",
                  measure=list(intensity=5,df=list("dnorm(z,0,sqrt(0.1))")),
                  time.variable="t")

yuima.samp <- setSampling(Terminal = 1, n = 390) 
yuima <- setYuima(model = model, sampling = yuima.samp) 
yuima <- simulate(yuima)
plot(yuima) # The path seems to involve some jumps

#lm.jumptest(yuima) # p-value is very small, so the path would have a jump
#lm.jumptest(yuima, K = floor(sqrt(390))) # different value of K
pz.test(yuima) # p-value is very small, so the path would have a jump
pz.test(yuima, p = 2) # different value of p
pz.test(yuima, tau = 0.1) # different value of tau

# Multi-dimensional case
## Model: Bivariate standard BM + CP
## Only the first component has jumps

mod <- setModel(drift = c(0, 0), diffusion = diag(2),
                jump.coeff = diag(c(1, 0)),
                measure = list(intensity = 5, 
                               df = "dmvnorm(z,c(0,0),diag(2))"),
                jump.variable = c("z"), measure.type=c("CP"),
                solve.variable=c("x1","x2"))

samp <- setSampling(Terminal = 1, n = 390) 
yuima <- setYuima(model = model, sampling = yuima.samp)
yuima <- simulate(object = mod, sampling = samp)
plot(yuima)

pz.test(yuima) # test is performed component-wise

## End(Not run)

yuima documentation built on Dec. 28, 2022, 2:01 a.m.