Back
Stationarity Tester
Run ADF and KPSS tests on a price series, display p-values with plain-English interpretation, and show transformed series achieving stationarity.
Feb 23, 2026, Eric
The Core Idea
Most price series are non-stationary — they trend upward or downward over time. Running correlations, regressions, or most statistical tests on non-stationary data produces spurious results. Before applying any quant model, you must transform prices into a stationary series (typically log returns or first differences). This tool runs two complementary tests — ADF and KPSS — to verify whether your series is stationary and shows you the transformations that achieve it.
Data Input
CSV columns: close or price (required)
500 observations loaded
Series & Transformation
Raw Price Series
Test Results — Raw Prices
Augmented Dickey-Fuller (ADF)
Non-stationaryH₀: Series has a unit root (non-stationary)
Test stat: -1.8793p-value: 0.3379
1%: -3.4305%: -2.86010%: -2.570
KPSS
Non-stationary (reject at 1%)H₀: Series is stationary
Test stat: 0.9884
10%: 0.3475%: 0.4631%: 0.739
Stationarity Summary Across Transformations
| Transform | ADF Stat | ADF p-value | ADF Verdict | KPSS Stat | KPSS Verdict |
|---|---|---|---|---|---|
| Raw Prices | -1.879 | 0.3379 | Non-stationary | 0.9884 | Non-stationary (reject at 1%) |
| First Differences | -9.014 | 0.0050 | Stationary (p < 0.01) | 0.1811 | Stationary (fail to reject) |
| Log Returns | -9.009 | 0.0050 | Stationary (p < 0.01) | 0.1879 | Stationary (fail to reject) |
What This Means
Raw prices: ADF p-value = 0.338. The raw series is non-stationary — as expected for a price series with a trend. Running regressions or computing correlations on this data would give misleading results.
Log returns: ADF p-value = 0.005. After taking log returns, the series is stationary. This is the standard transformation for financial time series — safe to use for modeling, correlation analysis, and backtesting.
Combined verdict: Classic result — raw prices are non-stationary but log returns are stationary. Use log returns for all downstream analysis.