--- title: "Intro to exuber" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Intro to exuber} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", message=FALSE ) options(cli.width = 80) ``` ```{r echo=FALSE, message=FALSE} library(exuber) ``` For our analysis we are going to use the `datasets::EuStockMarkets` dataset, which contains the daily closing prices of four major European stock indices: Germany DAX, Switzerland SMI, France CAC, and UK FTSE (see `?EuStockMarkets`). The data are sampled in business time, i.e., weekends and holidays are omitted. In this particular exercise we want to focus on weekly observations. To do so we aggregate to a weekly frequency and reduce the number of observations from 1860 to 372. ```{r dataset} stocks <- aggregate(EuStockMarkets, nfrequency = 52, mean) ``` ## Estimation We estimate the above series using the recursive Augmented Dickey-Fuller test with 1 lag. ```{r estimation} est_stocks <- radf(stocks, lag = 1) ``` ## Analysis The summary will print the test statistic and the critical values for 10%, 5% and 1% significance level. The package provides simulated critical values for up to 600 observations, so we use them by omitting the `cv` argument in the `summary` function. ```{r summary} summary(est_stocks) ``` It seems that all stocks exhibit exuberant behaviour but we can also verify it using `diagnostics()`. This function is particularly useful when we deal a large number of series. ```{r diagnostics} diagnostics(est_stocks) ``` If we need to know the exact period of exuberance we can do so with the function `datestamp()`. `datestamp()` works in a similar manner with `summary()` and `diagnostics()`. The user still has to specify the critical values, however we can still utilize the package's critical values by leaving the cv-argument blank. ```{r datestamp} # Minimum duration of an explosive period rot = psy_ds(stocks) # log(n) ~ rule of thumb dstamp_stocks <- datestamp(est_stocks, min_duration = rot) dstamp_stocks ``` We can extract the datestamp as a dummy variable 1 = Exuberance, 0 = No exuberance. ```{r datestamp-dummy} dummy <- attr(dstamp_stocks, "dummy") tail(dummy) ``` ## Plotting The `autoplot` function returns a faceted ggplot2 object for all the series that reject the null hypothesis at 5% significance level. ```{r plot-radf, fig.width = 9} autoplot(est_stocks) ``` Finally, we can plot just the periods the periods of exuberance. Plotting datestamp object is particularly useful when we have a lot of series, and we are interested to identify explosive patterns in all of them. ```{r plot-datestaemp, fig.width = 7, fig.height=2} datestamp(est_stocks) %>% autoplot() ```