Skip to content
exuber

The replication record

Replication

Every method that exuber implements beyond the original PSY test comes from a published source and is checked by a standalone script. This page records what was reproduced and where the result falls short.

This section is for readers who want to check the work. If you want to run the methods on your own data, the guide is the better place to start.

The package's own tests guard against regressions. The 69 scripts behind this page recompute each statistic from scratch with brute-force regressions, hand-derived identities, and Monte Carlo size and power compared with the paper's tables. Agreement therefore says something independent of the code being checked.

Of the 30 methods, 28 reproduce their source and 2 carry a caveat. Every script is self-contained. The R scripts run from the exuber/ package root, and the Python versions check that pyexuber reproduces the same numbers.

Volatility-robust tests

Full notes & scripts →
  • STADF/GSTADF (time-transformed)

    radf_tt()

    vs. Whitehouse (2019) published critical values

    clean
  • SBZ (WLS + kernel volatility)

    radf_sbz()

    vs. paper's Table 1 bootstrap p-values

    clean
  • Kernel-purge heteroskedasticity test

    radf_kp()

    Unit tests

    clean
  • Pedersen & Schütte sieve-bootstrap lag selection (radf_sb_cv(type = "aic"/"bic"))

    lag-order recovery on AR(2)/AR(5) DGPs + modal lag 0 under a pure random walk (radf_sb_cv_aic_bic_validation.R)

    clean
  • Hafner skewness-corrected wild bootstrap

    moments + Monte Carlo size/power

    clean
  • Sign-based sGSADF

    radf_sign()

    exact heteroskedasticity invariance + published-value cross-check

    clean
  • Sign-based level-shift robustness + demeaned variant (Harvey, Leybourne, Tatlow & Zu 2025)

    radf_sign()

    formula-exact vs. brute-force recursive-mean loop + heteroskedasticity invariance + power + reproduction of the paper's own Table 1 Case-1 empirical size

    clean
  • Stochastic explosive-coefficient SSU/GSSU + UR/GUR union (Kurozumi & Nishi 2025)

    ssu_test()

    formula-exact vs. brute-force lm() + manual cross-moment (any window start, GSSU sup) + every Table I column + Monte Carlo size/power

    clean
  • CUSUM-type tests CS/GCS/CSSQ/GCSSQ (Kurozumi & Nishi 2025)

    cusum_test()

    running max/min vs. a double loop over every window + Table I + Monte Carlo size

    clean
  • SV-ADF asymmetric-threshold dating (Sarkar & Wells 2026, preprint)

    badf reuse bit-for-bit + threshold-formula exact match + Monte Carlo dating accuracy/false-alarm rate

    clean

Dating and root inference

Full notes & scripts →
  • Root inference, Guo/Sun/Wang normal-t CI

    rootstamp()

    Unit tests

    clean
  • PDC/KS sequential dating (+ WLS variant)

    dating_pdc()

    formula-exact vs. brute force + Monte Carlo consistency

    clean
  • Reverse-regression recovery dating (Phillips & Shi 2014)

    radf_recovery()

    structural invariant + Monte Carlo bias/false-detection rate

    caveat

    the recovery date f_r behaves well. The crisis-origination date f_c and the false-detection rate under the null are noisier.

  • SSR/BIC dating, HLS route (Harvey, Leybourne & Sollis 2017)

    dating_hls()

    formula-exact incl. full joint 3-breakpoint search vs. brute force + Monte Carlo model-selection accuracy

    clean
  • SSR/BIC dating, HLW multi-bubble route (Harvey, Leybourne & Whitehouse 2020)

    dating_hlw()

    window-arithmetic check + Monte Carlo breakpoint accuracy + exact-match check vs. standalone dating_hls()

    clean
  • SSR/BIC dating, KNP bias-corrected route (Kejriwal, Nguyen & Perron 2025)

    dating_knp()

    formula-exact vs. brute force + direct Monte Carlo reproduction of the paper's own Theorem 1 (naive inconsistency) and Theorem 2 (fix); multi-bubble DP exact vs. a brute-force partition search + two-bubble Monte Carlo

    clean

Real-time monitoring for bubbles

Full notes & scripts →
  • Real-time monitoring, Family A (Phillips & Shi 2020)

    monitor()

    training/monitoring separation + Monte Carlo false-alarm/detection rates

    clean
  • Real-time monitoring, CUSUM + CUSUMV (Homm & Breitung 2012; Astill et al. 2023)

    monitor_cusum()

    formula-exact vs. brute force + Monte Carlo false-alarm/detection rates under homo-/heteroskedasticity

    clean
  • Real-time monitoring, Kurozumi (2020) closed-form SADF boundary

    monitor()

    table-lookup exact match + Monte Carlo false-alarm/detection rates

    clean
  • Real-time monitoring, Kurozumi (2020) closed-form GSADF_{s0} boundary

    monitor()

    closed-form band vs. brute-force lm() search + table-lookup exact match + Monte Carlo false-alarm/detection rates

    clean
  • Real-time monitoring, HB (2012) FLUC statistic

    monitor()

    table-lookup exact match + Monte Carlo false-alarm/detection rates

    clean
  • Real-time monitoring, HB (2012) CUSUM finite-sample boundary

    monitor_cusum()

    table-lookup exact match + Monte Carlo false-alarm/detection rate vs. asymptotic default

    clean
  • Static LBI test (Breitung & Diegel 2025)

    lbi_test()

    eq. 4 telescoping identity + Monte Carlo N(0,1)-calibration check (mean/sd/KS-test) + power vs. standard SADF

    clean
  • Sequential LBI monitoring, mCUSUM/wCUSUM (Breitung & Diegel 2025)

    lbi_test()

    weight-normalization + telescoped-final-point formula check + table-lookup exact match + Monte Carlo false-alarm/detection rate vs. monitor_cusum()

    clean

Multivariate bubble tests

Full notes & scripts →
  • Common-bubble PCA+PSY

    radf_common()

    vs. paper's Theorem 4.3

    clean
  • Co-bubble (KPSS-type + wild bootstrap)

    cobubble_test()

    formula-exact vs. brute force + Monte Carlo size/power

    clean
  • Contagion regression, minimum-viable subset (Greenaway-McGrevy & Phillips 2016)

    contagion_reg()

    formula-exact vs. brute force (fixed-window AR1, NW ratio, LOOCV SSE) + directional sensible-behavior check

    clean

Alternative paradigms

Full notes & scripts →
  • Quantile-based global test (Wu, Shi & Wu 2025)

    quantile_test()

    structural check (Q matches radf()$adf bit-for-bit) + Monte Carlo size/power vs. standard SADF

    clean
  • Quantile monitoring, QPWY route (Wu, Shi & Wu 2025)

    monitor_quantile()

    formula-exact vs. brute-force QR + badf-reuse structural check + Monte Carlo false-alarm/detection rates vs. standard SADF

    clean
  • Quantile monitoring, QPSY route (Wu, Shi & Wu 2025)

    monitor_quantile()

    formula-exact vs. brute-force QR over every window + grid-simulation brute force + Monte Carlo size across quantiles and innovations + power vs. SADF

    caveat

    the asymptotic boundary is well sized at the median (4%) but oversized away from it in small samples (35% to 44% at tau = 0.9, n = 100). The paper's bootstrap is not implemented.

Full research notes

Each family has one page. It lists the sources, the exact numbers reproduced, what differs from the paper, what remains open, and every script in full.

The cited PDFs are not redistributed here. The bibliography gives DOIs and working-paper links instead.