pyexuber
pyexuber detects explosive behaviour (bubbles) in time series. It runs the recursive right-tailed unit root tests of Phillips, Shi and Yu (2015): ADF, SADF, GSADF and the backward SADF (BSADF) sequence. A series is explosive when it grows faster than a random walk, and each of these tests asks whether the data contain a stretch of such growth.
This is the Python counterpart of the R package exuber. Both packages compute the statistic with the same C++ core, exubercore, so they give identical numbers for the same input.
The package is distributed as pyexuber and imported as exuber.
pip install pyexuber
Usage
import exuber
from exuber.sim import sim_psy1
y = sim_psy1(200, seed=1) # single-bubble DGP
res = exuber.radf(y) # ADF / SADF / GSADF + BSADF sequence
cv = exuber.radf_crit(n=200) # precomputed Monte Carlo critical values
exuber.datestamp(res, cv) # {'series1': [Episode(start=..., peak=..., end=...)]}
radf() accepts a numpy array, a 1-D sequence, or any object with a
.to_numpy() method, such as a pandas or polars DataFrame (neither is a
dependency). Column names become series names. A multi-column input also
runs the panel version of the tests (bsadf_panel, gsadf_panel).
What the package contains
radf(data, minw=None, lag=0) |
recursive ADF/SADF/GSADF/BSADF statistics (C++) |
radf_crit(n, lag=0) |
precomputed Monte Carlo critical values from the shared store that the R package also reads; fetched once and cached on disk |
radf_mc_cv / radf_mc_distr |
Monte Carlo critical values and distributions, simulated locally |
radf_wb_cv / radf_wb_distr |
wild-bootstrap critical values (Harvey, Leybourne, Sollis & Taylor 2016) |
datestamp(result, cv, ...) |
start, peak, end and duration of each explosive episode |
sim_psy1, sim_psy2, sim_ps1, sim_ps2, sim_blan, sim_evans, sim_div |
bubble DGP simulators |
psy_minw, psy_ds |
the PSY default minimum window and minimum duration rules |
Beyond this core, the package ports many methods from exuber and the wider
literature: other bootstrap variants (radf_wb_ps_cv, radf_sb_cv), several
dating and monitoring procedures, and diagnostics(), summary() and
tidy(). The docstring of exuber/__init__.py lists them all and says what
is deferred.
Notes
- Critical values.
radf_crit()covers lags 0 to 4 and sample sizes up to 4000. For a combination that has not been simulated it returnsNone, and you can useradf_mc_cvinstead. The store is described at exuber.kvasilopoulos.com. - Reproducibility. The simulators and bootstraps use numpy's
Generatorand not R's random number generator. A givenseedreproduces the same draws across Python runs, but not the draws of the R function with the same name. - Numerics. The statistic is built by sequential recursive updates, so
for
lag > 0the result may differ between compilers at about 1e-12. The tests use a tolerance of 1e-9 there. Withlag == 0the result matches R to 1e-12.
Building from source
Wheels are published for Linux x86_64, macOS (arm64 and x86_64) and Windows
x86_64. Building from the source distribution needs a C++17 compiler, CMake
3.16 or later, and a system Armadillo
installation with BLAS and LAPACK. Install it with apt install libarmadillo-dev, brew install armadillo, or vcpkg install armadillo
on Windows with MSVC. CMake fetches exubercore at a pinned tag during the
build.
uv sync --dev
uv run pytest
License
GPL-3.0-or-later, the same as exuber.
Metadata
Release files for pyexuber 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyexuber-0.1.0.tar.gz | 155.9 kB | Details |
Built distributions (wheels)
Total release size: 301.1 MB
Release files / pyexuber-0.1.0.tar.gz
| Download URL | pyexuber-0.1.0.tar.gz |
|---|---|
| Size | 155.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d971579a338edb0cfedeb85564c67824ef537f2020c72739a6937c244098a0c2
|
|
BLAKE2b-256 checksum How to use checksums |
6f9b1af87ff006ba8b19bfdb6a011f2c58e299ce8bab8bc6bd43b0ee0fed9923
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp313-cp313-win_amd64.whl
| Download URL | pyexuber-0.1.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
fce3c50c0d522a4492ecf7c944884128a084b60949293b283f64f9d6611d3da0
|
|
BLAKE2b-256 checksum How to use checksums |
4ed74e1514492fb143ef350b283ea7c3bc6fbc6904390888c38c0e51797ea737
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyexuber-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 43.2 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1997666b419d6156eb349517955918ff7d5cbed83cd92b908250dfa040c46730
|
|
BLAKE2b-256 checksum How to use checksums |
4316891cd93d5a933e00e58b01a1fb30e1f93b4c902f697c233b2f377197e592
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp313-cp313-macosx_15_0_x86_64.whl
| Download URL | pyexuber-0.1.0-cp313-cp313-macosx_15_0_x86_64.whl |
|---|---|
| Size | 15.0 MB |
| Tags | CPython 3.13 macOS 15.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
72225e683b1ab030327c975f535b95c234607f8f1e98b2a61c738dc8c2833baa
|
|
BLAKE2b-256 checksum How to use checksums |
8c305d6f649d350506692c4bf8cc78a27766087d20452a4de6c921283829aa4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp313-cp313-macosx_15_0_arm64.whl
| Download URL | pyexuber-0.1.0-cp313-cp313-macosx_15_0_arm64.whl |
|---|---|
| Size | 10.9 MB |
| Tags | CPython 3.13 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
db2458d381e5de466adaafeaa9080ff6c0ddd115ec6977466c756ef1d6657bfb
|
|
BLAKE2b-256 checksum How to use checksums |
2810a616dc1da3924c3281ef55cbeab23b77e0c40e199df676bcef9f82fa87a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp312-cp312-win_amd64.whl
| Download URL | pyexuber-0.1.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a25adea9ce9bef83158a77d462ec586f5ae28af57843f3b254b340752ab77a6e
|
|
BLAKE2b-256 checksum How to use checksums |
2e743c54cdf757dd39676b7e59db6365256c8c9ec008f6b9a7deb432f5d8b080
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyexuber-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 43.2 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3b91d0833c1f56da097b0a512e271b400670a7d3824ae7cd0349f408592a9c38
|
|
BLAKE2b-256 checksum How to use checksums |
92797a88383c754ba736e824edf8bdc1bdbbebfd518de5892cf7240b7e137ac2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp312-cp312-macosx_15_0_x86_64.whl
| Download URL | pyexuber-0.1.0-cp312-cp312-macosx_15_0_x86_64.whl |
|---|---|
| Size | 15.0 MB |
| Tags | CPython 3.12 macOS 15.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
f7983ab4da25c1dc5eda52a59bf7489d83a943a92f3c35aef79ca10d4fe16cf6
|
|
BLAKE2b-256 checksum How to use checksums |
fae7c8dd2e33418f285b08dedd20b579933f9012f55905f84f756e52e4cc9c8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp312-cp312-macosx_15_0_arm64.whl
| Download URL | pyexuber-0.1.0-cp312-cp312-macosx_15_0_arm64.whl |
|---|---|
| Size | 10.9 MB |
| Tags | CPython 3.12 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e0c43e259e69fa7082861d268735ab15b29497a4a5d1895ede3505136a8233c7
|
|
BLAKE2b-256 checksum How to use checksums |
3411d5ac635cd0c81fd85ae09dd367b6ba5e901daced15fbaeec1a8ddae26d91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp311-cp311-win_amd64.whl
| Download URL | pyexuber-0.1.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8bb89865a26ae510f1f0c4bead76069babe954bd9189dc82f5bfbdf128eab34b
|
|
BLAKE2b-256 checksum How to use checksums |
f097ab5ad89d1f7b3fdfe64fe07ee9d5bf336cfd2d21dc6cc1f837e3e42e8b60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyexuber-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 43.2 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a92d0bb74ce9678c21f4f26c24f9e7c8f9dcf9d6f7cb7b457df6eea4723a93f4
|
|
BLAKE2b-256 checksum How to use checksums |
2600afcac00af876b6f62841f9b3c6f5ae3dc87fb595cbf362a8f9d22e98e708
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp311-cp311-macosx_15_0_x86_64.whl
| Download URL | pyexuber-0.1.0-cp311-cp311-macosx_15_0_x86_64.whl |
|---|---|
| Size | 15.0 MB |
| Tags | CPython 3.11 macOS 15.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
2e5f3ac666ca555e81e088438a0a2b7bd7909e5a534a53cae4bdb22d8c09f1d1
|
|
BLAKE2b-256 checksum How to use checksums |
2478f15b5ad3164ad454f47657d7a167d2210b5c147693a7f0bd66f6239c8354
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp311-cp311-macosx_15_0_arm64.whl
| Download URL | pyexuber-0.1.0-cp311-cp311-macosx_15_0_arm64.whl |
|---|---|
| Size | 10.9 MB |
| Tags | CPython 3.11 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
bc53d4cdf6881c5dd5d89e6d47ad2713a3ed37507343b40d71033103880669a4
|
|
BLAKE2b-256 checksum How to use checksums |
c6a335417dc00b84628ad40e0f8b78ef3fad4b976b70d8e589545cc8199570d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp310-cp310-win_amd64.whl
| Download URL | pyexuber-0.1.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d25cab4f5b7e203688b76caa7d62cca0a87d08904acecf5e0dc829e6a24bbf41
|
|
BLAKE2b-256 checksum How to use checksums |
6becdfa8f5704d9dc65b871977d8879ecb34610d2d7989ae220731e841630b3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyexuber-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 43.2 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0181125d5930b00f5fdcdc507713c20b58cc404ffceeb7870d0983309458ccef
|
|
BLAKE2b-256 checksum How to use checksums |
0e6d4e1aa0a2ea3d3b912b53bbfdabe637657ae047dd181711604d19bc1043b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp310-cp310-macosx_15_0_x86_64.whl
| Download URL | pyexuber-0.1.0-cp310-cp310-macosx_15_0_x86_64.whl |
|---|---|
| Size | 15.0 MB |
| Tags | CPython 3.10 macOS 15.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
82df8ba76f55f0e7d77da88fd4f83ec74df58e56b8f0ecd9df2d9e87bd2a9078
|
|
BLAKE2b-256 checksum How to use checksums |
f1b25114c234a99d68a2ab6f73beae9f4ff002b20c3750013d4368f5a3cf3052
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / pyexuber-0.1.0-cp310-cp310-macosx_15_0_arm64.whl
| Download URL | pyexuber-0.1.0-cp310-cp310-macosx_15_0_arm64.whl |
|---|---|
| Size | 10.9 MB |
| Tags | CPython 3.10 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2c0da281efae6ffb9b41b0da9e4352a615e8d586c7a7096de6429d90bc3fc4f4
|
|
BLAKE2b-256 checksum How to use checksums |
093de062c26228b1a95caf845f4db34ba91c087a18b6aae00ce93f31d08f1c23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency log