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.
radf()
Critical values
One engine per null distribution; each `_cv()` has a `_distr()` twin that returns the full simulated distribution instead of its quantiles
-
radf_mc_cv()Monte Carlo Critical Values -
radf_wb_cv()Wild Bootstrap Critical Values -
radf_wb_ps_cv()Wild Bootstrap Critical Values (Phillips & Shi 2020) -
radf_sb_cv()Panel Sieve Bootstrap Critical Values -
tidy.radf_cv()Tidy a radf_cv object -
augment.radf_cv()Augment a radf_cv object -
tidy.radf_distr()Tidy a radf_distr object -
autoplot.radf_distr()Plotting a radf_distr object
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.
diagnostics()
datestamp()
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 →radf_sbz()
radf_sign()
ssu_test()
cusum_test()
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 →dating_pdc()
dating_hls()
dating_hlw()
dating_knp()
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 →monitor()
monitor_cusum()
monitor_lbi()
monitor_quantile()
Multivariate / panel bubble tests
Panel and cross-series tests. See docs/multivariate.md.
Replication record →radf_common()
cobubble_test()
Simulation
Original DGPs
-
sim_psy1()Simulation of a single-bubble process -
sim_psy2()Simulation of a two-bubble process -
sim_ps1()Simulation of a single-bubble process with multiple forms of collapse regime -
sim_blan()Simulation of a Blanchard (1979) / Rotermann-Wilfling (2018) bubble process -
sim_evans()Simulation of an Evans (1991) bubble process -
sim_div()Simulation of dividends
Additional DGPs
Data generating processes for cases that the original sim_*() functions of exuber do not cover: time-varying volatility, non-Gaussian innovations, long memory, and distinct multi-series and branching mechanisms. See docs/simulation-dgps.md.
-
sim_innov()Simulate innovations with heavy-tailed/skewed marginal distributions -
sim_vol_break()Simulate innovations with a permanent volatility break -
sim_vol_garch()Simulate GARCH(1,1)/TGARCH(1,1) innovations -
sim_vol_cir()Simulate CIR-type stochastic-volatility innovations -
sim_vol_sv()Simulate AR(1) lognormal stochastic-volatility innovations -
sim_fi()Simulate fractionally-integrated (long-memory) innovations -
sim_common()Simulation of a latent common-factor bubble across multiple series -
sim_coexplosive()Simulation of a bivariate co-explosive pair -
sim_tree()Simulation of a stochastic branching-tree bubble -
sim_mar()Simulation of a mixed causal-noncausal AR(1,1) bubble -
sim_msbubble()Simulation of a Markov-switching present-value bubble -
sim_falsebubble()Simulation of a deterministic technology-adoption "false bubble" null
Bundled data
Helpers
-
psy_minw()Helper functions in accordance to PSY(2015) -
psy_ds()Helper functions in accordance to PSY(2015) -
index()Retrieve/Replace the index -
series_names()Retrieve/Replace series names -
ps_tb()Helper function to find tb from Phillips and Shi (2020) -
scale_exuber_manual()Exuber scale and theme functions
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
-
radfRecursive univariate and panel Augmented Dickey-Fuller test -
RadfResultResult object: adf, badf, sadf, gsadf, bsadf -
psy_minwDefault minimum window, (0.01 + 1.8/sqrt(n)) * n -
psy_dsMinimum episode duration for datestamp()
Critical values
-
radf_mc_cvMonte Carlo critical values -
radf_mc_distrMonte Carlo distribution of the statistics -
radf_wb_cvWild bootstrap critical values (HLST 2016) -
radf_wb_distrWild bootstrap distribution of the statistics -
RadfCvCritical-value container -
RadfDistrSimulated-distribution container
Dating
-
datestampDate-stamp periods of explosive behaviour -
EpisodeA single start/end explosive episode
Simulation
-
sim_psy1Single-bubble PSY data-generating process -
sim_psy2Two-bubble PSY data-generating process -
sim_ps1Phillips & Shi single-bubble process -
sim_ps2Phillips & Shi two-bubble process -
sim_blanBlanchard (1979) periodically collapsing bubble -
sim_evansEvans (1991) periodically collapsing bubble -
sim_divDividend 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
exuber