Skip to content
exuber

Packages

Reference index

Every documented entry point across the three implementations. The 95 R topics are grouped as in the package's own reference index, with each function listed next to the methods that use its output. The Python and C++ interfaces follow.

The grouping and descriptions are taken from exuber's _pkgdown.yml, so this index matches the package's own. Each row opens the full documentation for the function, with its arguments, return value and worked examples. The pages are generated from the package's .Rd files. Groups that came out of the replication research link to the family page that motivated them.

Naming conventions, and which generics work where

Function names follow what the function computes, not the paper it came from. The prefix radf_ is reserved for functions built on the recursive ADF core. They either call radf() directly or reuse its badf and bsadf output (radf_tt(), radf_sign(), and the _cv and _mc critical-value functions). All other functions are named for what they do. A _test suffix marks a hypothesis test with its own null distribution (lbi_test(), ssu_test(), quantile_test(), cobubble_test()). A dating_ prefix marks a point-estimation or model-selection procedure with no formal test (dating_hls(), dating_hlw(), dating_knp(), dating_pdc()). A monitor_ prefix marks real-time or sequential detection (monitor_cusum(), monitor_lbi(), monitor_quantile() and monitor_radf()). We list monitor_radf() with the other monitors even though it reuses the badf and bsadf output of radf(), because a reader looking for that prefix wants the functions that monitor in real time. A root_ prefix marks confidence-interval inference on the magnitude of the explosive autoregressive root, which is a different question from whether it is present (rootstamp() has two S3 methods: the default method handles a single sub-sample, and the radf_obj method runs every datestamp() episode at once). Finally, contagion_reg() stands on its own as a point-estimation tool that performs no formal inference. The names are a guide and not a contract. For programmatic use, call exuber_functions(family = ...) instead of parsing names.

The dating_ family above is separate from datestamp() in the Analysis group below. datestamp() applies the PSY threshold-crossing rule and is a generic that works on any radf_obj and radf_cv pair. The dating_ functions are unrelated SSR/BIC dating procedures that take raw data directly and use no critical value.

Only results of class radf_obj can be passed to the shared Analysis, Tidying and Plotting generics below (summary(), datestamp(), tidy(), autoplot()). Other results print in their own format, which those generics do not fit. radf_common() and radf_kp() return the output of radf() unchanged, so all four generics work on them. radf_sign(), radf_sign_dm() and radf_tt() also carry the class, but only summary() and tidy() work on them at present. Their _cv() functions compute only the three scalar critical values that summary() needs, not the time-varying boundary that datestamp() and autoplot() require. This is a known gap. For the full picture with worked examples, see vignette("naming-and-analysis", package = "exuber").

Package

Recursive Augmented Dickey-Fuller

Estimation and critical values, the core of the package. Each function is listed with the methods that consume its output.

Analysis

The core workflow, in order: check which series reject the null, date the explosive episodes, and then measure how fast each one is growing.

Heteroskedasticity-robust (time-transformed)

An alternative to radf_wb_cv() under time-varying volatility that needs no bootstrap.

Volatility-robust (other routes)

Further tests that remain valid when the innovation variance changes over time. See docs/volatility-robustness.md.

Replication record →

Dating procedures

Standalone dating procedures that need no critical value, and recovery dating. See docs/dating-and-root-inference.md. rootstamp() is listed under Analysis above because it is the last step of the core workflow and not an alternative to datestamp().

Replication record →

Real-time monitoring

Sequential, real-time bubble detection. See docs/monitoring.md. Each monitor is listed with its static, full-sample counterpart where one exists.

Replication record →

Multivariate / panel bubble tests

Panel and cross-series tests. See docs/multivariate.md.

Replication record →

Simulation

Helpers

Python: pyexuber

Python bindings to exubercore. The Monte Carlo and wild-bootstrap critical values are ported. The sieve bootstrap (radf_sb_cv), the second wild-bootstrap variant (radf_wb_cv2) and the summary, tidy and diagnostics functions are not yet available.

kvasilopoulos/pyexuber →

Test

  • radf Recursive univariate and panel Augmented Dickey-Fuller test
  • RadfResult Result object: adf, badf, sadf, gsadf, bsadf
  • psy_minw Default minimum window, (0.01 + 1.8/sqrt(n)) * n
  • psy_ds Minimum episode duration for datestamp()

Critical values

  • radf_mc_cv Monte Carlo critical values
  • radf_mc_distr Monte Carlo distribution of the statistics
  • radf_wb_cv Wild bootstrap critical values (HLST 2016)
  • radf_wb_distr Wild bootstrap distribution of the statistics
  • RadfCv Critical-value container
  • RadfDistr Simulated-distribution container

Dating

  • datestamp Date-stamp periods of explosive behaviour
  • Episode A single start/end explosive episode

Simulation

  • sim_psy1 Single-bubble PSY data-generating process
  • sim_psy2 Two-bubble PSY data-generating process
  • sim_ps1 Phillips & Shi single-bubble process
  • sim_ps2 Phillips & Shi two-bubble process
  • sim_blan Blanchard (1979) periodically collapsing bubble
  • sim_evans Evans (1991) periodically collapsing bubble
  • sim_div Dividend process without a bubble

C++: exubercore

This library computes the statistic and nothing else. It depends only on Armadillo, with no R or Python dependency, and both bindings call this one function. The lag == 0 closed form is bit-reproducible across toolchains. The lag > 0 Sherman-Morrison path agrees to about 1e-12 but is not bit-identical.

kvasilopoulos/exubercore →

namespace exubercore

  • arma::vec radf(const arma::mat& yxmat, int min_win, int lag = 0) Returns badf[0, total), adf, sadf, gsadf, then bsadf[total+3, 2*total+3), where total = nrow(yxmat) - min_win + 1

Not indexed. 17 exports are documented under an aliased topic and so have no row of their own: %>% augment autoplot autoplot2 calc_pvalue col_names fortify ggarrange mc_cv radf_wb_cv2 radf_wb_distr2 report sb_cv sim_dgp1 sim_dgp2 tidy wb_cv