Signal Processing · Time–Frequency Analysis · Financial Markets
Spectral Signatures in SPY and BTC Intraday Returns
Abstract
A matched-hours comparison of SPY and BTC daily variance across four intraday frequency bands. The cross-asset gap is small and sample-limited; the durable finding is that the choice of decomposition — STFT residual or DWT approximation — moves the same gap by more than the gap itself.
Key results
- 1–5 min BTC−SPY gap
- +0.16 pp
- 95% bootstrap CI
- [−0.76, +0.90]
- Paired RTH sessions
- 21 (1 stress week)
- Cross-method |Δs|
- 5–32 pp
Sample. SPY + BTC/USDT 1-minute bars, 21 RTH sessions, 2026-04-21 to 2026-05-19
Headline
On a matched U.S. regular-hours panel of 21 trading days the average share of intraday variance that SPY and BTC carry below five minutes differs by +0.16 percentage points (BTC minus SPY), with a 95% date-block bootstrap interval of [−0.76, +0.90]. The central estimate is roughly 1% of the SPY 1–5 minute base share, the bootstrap distribution crosses zero on 45.9% of resamples, and a two-sample Kolmogorov–Smirnov test for the same band returns D = 0.19 with p = 0.85 uncorrected. None of the four cross-asset KS tests survives Bonferroni correction at αcorr = 0.0125.
The more durable finding is methodological. The short-time Fourier transform residual and the discrete wavelet transform approximation define the 60+ minute band so differently — one as a residual, the other as a low-pass approximation — that they disagree at the 5–32 percentage-point level on identical inputs, and their daily band-share series are negatively correlated in three of four SPY bands and two of four BTC bands. Under that lens the cross-asset spectral signature inherits the decomposition more than the data. The cross-method audit is the report's central contribution.
Methodology
Returns are computed as ri,t = log Pi,t − log Pi,t−1 on a matched-session panel keyed to America/New_York regular trading hours (09:30–16:00 local), then converted to UTC for storage. Anchoring in local time avoids daylight-savings drift that a literal UTC window would introduce. Sessions with greater than 5% missingness on either asset are dropped; on the published run none were dropped from either asset.
STFT recipe. Short-time Fourier transform with fs = 1/60 Hz, Hann taper, window length N = 30 minutes, hop h = 15 minutes (50% overlap). Four bands map to FFT bins by period: 1–5 min uses bins with T ∈ [2, 5] min; 5–15 min uses T ∈ (5, 15]; 15–60 min uses the 30-minute proxy bin; the 60+ band is defined as a residual, Vard − Σb Pb per session. The residual definition for the 60+ band is load-bearing — it absorbs the Hann taper loss at frame edges and inter-window low-frequency drift, so the 60+ band carries roughly 79% of session variance on this sample.
DWT recipe. Daubechies-4 (db4) with five levels and symmetric boundary handling. Detail coefficients D1..5 and the approximation A5 map to bands as (1–5) = D1 ⊕ D2, (5–15) = D3, (15–60) = D4 ⊕ D5, (60+) = A5. Sensitivity is reported for boundary modes symmetric (primary), periodic, and zero.
Bootstrap. Paired-day indices are resampled with replacement in contiguous blocks of length L = 5 trading days (one calendar week), with B = 2000 resamples and a fixed seed. The block construction preserves joint (SPY, BTC) daily distribution and a coarse amount of cross-day serial dependence, which is the dependence structure relevant for spectral statistics.
Stress. ISO weeks are labelled stress by the union of weekly median VIX exceeding 30 or weekly BTC realized volatility exceeding its 80th percentile over the available panel. On this run, only ISO week 21 of 2026 triggers, producing two stress sessions per asset.
Data and sample characterization
The raw inputs are pinned by SHA-256 in the run manifest. SPY 1-minute OHLCV comes from yfinance, scoped to the rolling 30-day window the vendor exposes; an availability probe confirmed that any request older than that is rejected with the explicit message "The requested range must be within the last 30 days," so a paid intraday vendor (Polygon, Alpaca, or IBKR) is queued as the follow-up for a longer panel. BTC/USDT 1-minute klines are pulled from the Binance public REST endpoint over a UTC-day-aligned window enclosing the SPY range, so the 24-hour BTC robustness panel covers complete calendar days. VIX daily closes from FRED label stress weeks.
The matched panel contains 21 RTH trading days. ISO-week labelling yields 1 stress week (ISO week 21 of 2026: weekly BTC realized volatility crossed its 80th percentile), producing 2 stress sessions per asset and 19 calm sessions per asset. All distributional claims are read against that sample size.
Spectral band shares are scale-free by construction. Before discussing them it is useful to anchor the comparison in absolute volatility, since the natural prior is that BTC is simply more volatile than SPY rather than spectrally distinct from it. On the matched-RTH window BTC's realized vol is 2.78× SPY's on average, with a single 4.7% session outlier on 2026-04-22 that is left in the panel. Whatever shape difference appears in the band-share comparison sits on top of an unambiguous absolute-volatility difference.
Cross-method audit
This section reports the strongest single finding in the report and is deliberately placed before the cross-asset results, because the cross-asset story cannot be read without knowing how method-dependent it is.
The 60+ band is method-dependent. The STFT residual concentrates near 79% with a tight right tail; the DWT A5 approximation spreads from roughly 0% to 85% with a mean near 50%. Identical input series. Because the four band shares sum to one by construction, a 30-percentage-point shift in the 60+ band must be redistributed across the lower-frequency bands — which is exactly what propagates into the cross-asset comparison.
Why the correlation is negative, not noisy. The negative correlation is a structural artefact of the residual construction. When a session has strong intra-window oscillation in the 5–15 minute band, the STFT captures that energy in the corresponding band power and the 60+ residual shrinks because more within-session variance has been accounted for. The DWT A5 approximation measures low-frequency energy directly, so its 60+ estimate is largely insensitive to how much energy is captured at higher levels of detail. Days that are louder in the 5–15 minute band drive the STFT 60+ down while leaving the DWT 60+ roughly unchanged, producing a ~−0.7 correlation by construction.
The +0.16 pp headline gap in Section 1 is therefore a property of the STFT 30-minute specification. Under DWT with symmetric boundary handling the same gap is −6.07 pp; under DWT with zero padding it is +0.45 pp. The qualitative conclusion of the report depends on the decomposition, and the cross-asset result that follows must be read with that caveat.
| Asset | Band | |Δs| (pp) | r |
|---|---|---|---|
| SPY | 1–5 min | 23.23 | -0.36 |
| SPY | 5–15 min | 4.45 | +0.38 |
| SPY | 15–60 min | 5.03 | -0.29 |
| SPY | 60+ min | 32.16 | -0.67 |
| BTC | 1–5 min | 16.65 | -0.79 |
| BTC | 5–15 min | 5.48 | +0.19 |
| BTC | 15–60 min | 3.65 | +0.30 |
| BTC | 60+ min | 25.37 | -0.83 |
Cross-asset headline
Under the primary STFT 30-minute specification all four 95% bootstrap intervals straddle zero. The 1–5 minute interval includes zero comfortably and the bootstrap distribution crosses zero on 45.9% of resamples; the 5–15 minute interval narrowly excludes zero (CI = [−0.01, +0.44]) and is the only band where the crosses-zero share is small (3.4%) — the closest the data comes to a defensible cross-asset gap on this window.
The 5–15 minute band corresponds to periods of roughly six to ten minutes, the time scale at which institutional order-flow batching (VWAP and algorithmic execution cadences) typically shows up in equity intraday variance. A speculative reading is that BTC, traded continuously across venues without that cadence, distributes mid-frequency energy slightly more evenly than SPY, which puts a small extra weight on the 5–15 minute band. The reading is speculative because the cross-asset KS test for the same band is non-significant on this sample.
| Band | Point (pp) | CI low | CI high | Crosses zero |
|---|---|---|---|---|
| 1–5 min | +0.16 | -0.76 | 0.90 | 0.46 |
| 5–15 min | +0.15 | -0.01 | 0.44 | 0.03 |
| 15–60 min | +0.04 | -0.07 | 0.14 | 0.24 |
| 60+ min | -0.35 | -1.02 | 0.38 | 0.21 |
| Method | Band | D | p (uncorrected) |
|---|---|---|---|
| STFT | 1–5 min | 0.190 | 0.853 |
| STFT | 5–15 min | 0.238 | 0.603 |
| STFT | 15–60 min | 0.238 | 0.603 |
| STFT | 60+ min | 0.238 | 0.603 |
| DWT | 1–5 min | 0.286 | 0.365 |
| DWT | 5–15 min | 0.143 | 0.987 |
| DWT | 15–60 min | 0.238 | 0.603 |
| DWT | 60+ min | 0.238 | 0.603 |
Stress conditioning
With only two stress-session observations per asset the stress arm is read descriptively. The 1–5 minute gap widens by +0.13 pp in the stress week; the other bands move in modest opposite directions. None of the stress-vs-calm KS statistics survives Bonferroni correction (the smallest corrected p is 0.57 for the BTC 5–15 minute band). The headline of +0.16 pp is the unconditional 21-day mean; conditioning on calm sessions produces +0.15 pp and conditioning on the two stress sessions produces +0.28 pp. The full-sample value is the defensible point estimate; the calm/stress decomposition is a diagnostic.
| Band | Calm (pp) | Stress (pp) | Stress − calm (pp) |
|---|---|---|---|
| 1–5 min | +0.15 | +0.28 | +0.13 |
| 5–15 min | +0.15 | +0.10 | -0.05 |
| 15–60 min | +0.04 | +0.01 | -0.03 |
| 60+ min | -0.34 | -0.39 | -0.05 |
Robustness
The headline gap is small. Whether one believes it depends on how stable it is across specification choices. Three sensitivity exercises sit in the cross-method audit that motivates each of them.
STFT window length. The 1–5 and 5–15 minute gaps are stable in sign and roughly stable in magnitude across 15, 30, and 60 minute windows. The 15–60 minute band is structurally zero for w = 15 because a 15-minute window cannot resolve a 30-minute period at all.
DWT boundary mode. Markedly more sensitive, and not just in magnitude: the sign of the BTC−SPY 1–5 minute gap flips between symmetric primary mode and zero mode. Under symmetric, BTC carries 6.07 pp less variance in the 1–5 minute band than SPY; under zero it carries 0.45 pp more. With roughly 390 samples per RTH session and a 5-level db4 decomposition, the symmetric boundary extension wraps the session edges into a mirrored copy whose intra-session high-frequency content spuriously inflates the D2 and (via redistribution) A5 coefficients. Zero padding does not produce that artefact at the session boundary; periodic mode produces an intermediate result.
BTC 24-hour panel. Replacing BTC's matched-RTH series with the same BTC sampled over the full 24-hour UTC day collapses the headline entirely. The 1–5 minute gap flips from +0.16 pp to −1.12 pp; the 60+ residual moves by more than 2 pp in the opposite direction. The matched-session result is therefore partly a property of the truncation: outside U.S. hours BTC carries proportionally more low-frequency variance, and the lift in the high-frequency share inside U.S. hours is a relative shift, not an absolute property of the asset.
The sensitivity matrices below test seven specifications across four bands; some entries will flip sign by chance even if no underlying signal is present. They are descriptive matrices, not a battery of independent tests.
| Window (min) | 1–5 | 5–15 | 15–60 | 60+ |
|---|---|---|---|---|
| 15 | +0.15 | +0.12 | +0.00 | -0.28 |
| 30 (primary) | +0.16 | +0.15 | +0.04 | -0.35 |
| 60 | +0.14 | +0.12 | +0.06 | -0.32 |
| Boundary mode | 1–5 | 5–15 | 15–60 | 60+ |
|---|---|---|---|---|
| symmetric (primary) | -6.07 | +1.18 | -1.34 | +6.23 |
| periodic | -0.43 | -0.25 | +0.82 | -0.14 |
| zero | +0.45 | -0.86 | +0.52 | -0.10 |
| BTC sampling | 1–5 | 5–15 | 15–60 | 60+ |
|---|---|---|---|---|
| Matched (primary) | +0.16 | +0.15 | +0.04 | -0.35 |
| 24-hour UTC | -1.12 | -0.72 | -0.24 | +2.07 |
Intraday structure
This section uses the matched 1-minute return series directly, without spectral aggregation, to characterise the within-session variance pattern that drives the band-share decomposition. SPY shows the canonical U-shape — a morning lift, gradual decline through midday, secondary lift into the close. BTC's profile is roughly 5× higher on the same scale, declines through the day more steeply than SPY, and lacks the closing lift, consistent with a 24-hour venue spliced into U.S. hours and lacking the same end-of-day demand for liquidity.
The visible intraday non-stationarity is the direct source of the 60+ band's dominance: a falling within-session variance profile is a low-frequency component that the STFT residual absorbs and the DWT A5 represents directly.
Discussion and limitations
On the 21-day matched-hours panel SPY and BTC are spectrally near-indistinguishable in the daily distribution of band shares: the 1–5 minute BTC−SPY mean gap is +0.16 pp with a bootstrap CI that includes zero by a wide margin, no cross-asset KS test survives Bonferroni correction, and the sign of the gap is not preserved under plausible alternative decompositions. The methodological finding is more durable: the STFT residual and the DWT approximation define the 60+ minute band so differently that the BTC−SPY mean gap moves by 5 to 30 percentage points across decompositions on identical inputs, and the two methods disagree at exactly the bands that drive the headline.
The honest reading is narrower than the framing in the original research plan invited: matched-session SPY and BTC do not have visibly distinct spectral signatures at this sample size, and the appropriate follow-up is a longer panel from a paid intraday vendor coupled with a redefinition of the 60+ STFT band as a genuine low-pass filter so the two decompositions can be compared band-for-band without the catch-all term.
Limitations. 21 paired RTH trading days has near-zero power for a distributional test, and CIs cannot shrink below the bootstrap dispersion driven by individual-session variance. The stress arm is power-starved at one ISO week and two stress sessions per asset; multi-year history will produce a usable stress panel. BTC is sourced from one venue (Binance spot BTCUSDT); cross-venue dispersion in cryptocurrency spot is documented and a composite or alternative venue (Coinbase, Kraken) is an obvious robustness layer. The STFT/DWT 60+ disagreement is the natural next thing to fix — redefine the STFT 60+ band as a genuine low-pass filter rather than a residual so the two decompositions can be compared band-for-band. Extensions: a second asset pair (a major equity index vs. a major altcoin), a spectral coherence analysis between SPY and BTC, and the relationship between band-energy shifts and exogenous regime changes — all reuse the matched-session return panel as input.
Reproducibility. The published artifact set is keyed by a SHA-256 manifest pinning the raw 1-minute SPY and BTC snapshots, the daily VIX series, every processed band-share table (primary and sensitivity), the bootstrap distribution, the Kolmogorov–Smirnov result grid, and the cross-method audit table. Runtime environment is pinned to Python 3.11 with numpy, pandas, scipy, pywavelets, and matplotlib; the same manifest hash is produced on two consecutive runs.