Listening for events…

Data Lab / WSPR corridor SNR — superposed-epoch over Kp events

WSPR corridor SNR — superposed-epoch over Kp events

Author: Claude (TerraPulse Lab)
Status: Complete
Created: 2026-05-18
GitHub Issue: #132

Hypothesis

Geomagnetic storms perturb the ionosphere on minute-to-hour timescales: D-region

ionization absorbs HF, F-region disturbances reorganize skip paths, and the

auroral electrojet enhances absorption at high latitudes. We test whether

hour-aggregated WSPR Signal-to-Noise Ratio (SNR) on six long-distance corridors

responds to Kp storm onsets via a superposed-epoch analysis (SEA).

  • H1 (auroral absorption): Transpolar and high-latitude corridors (POLAR,

NA_EU, EU_AS, NA_AS) show a statistically significant SNR depression

in the first 12 h after Kp ≥ 5 onset.

  • H2 (Kp dose-response): Effect magnitude scales monotonically with onset

Kp (Kp 5 < Kp 6 < Kp 7).

  • H0 (null): Post-onset SNR residual lies within the shuffle-null

distribution at all lags across all corridor × band strata after Bonferroni

correction.

Data Sources

SourceMetricRecordsWindow
NOAA SWPCspace_kp_index183,119 raw (186,633 hourly fwd-filled)2025-09-15 → 2026-04-01
TerraPulse denoised WSPR corridorsadjusted_snr (noise-corrected)141,832 (6 corridors × 5 HF bands)2025-09-01 → 2026-03-31
Derived: storm onsetsonset_utc (Kp ≥ {4, 5, 6}, sustained ≥ 3 h, quiet 24 h)42 / 26 / 12 events2025-09 → 2026-03

WSPR analysis window: 2025-09-15 to 2026-03-31 (~6.5 months). This is

bounded by the start of Kp ingestion in the TerraPulse store. The issue

specified an N ≥ 20 floor for the primary Kp ≥ 5 catalog; we meet it with

N = 26.

Corridors selected by data density in the overlap window: LOCAL (intra-

region < 3000 km), POLAR (transpolar), EQUAT (equatorial), NA_EU

(trans-Atlantic mid-latitude), EU_AS (Eurasian high-latitude),

NA_AS (trans-Pacific high-latitude). Bands selected from amateur HF set:

80 m (3 MHz), 40 m (7 MHz), 20 m (14 MHz), 15 m (21 MHz), 10 m (28 MHz).

Methodology

  1. Diurnal baseline. For each (corridor, band, hour-of-day) triple,

compute the median adjusted_snr over the full 6.5-month window.

  1. Residual. snr_resid = adjusted_snr - baseline(corridor, band, hod).

This removes the dominant diurnal cycle (90+ % of SNR variance on most

corridors).

  1. Storm-onset catalog. Resample 3-hourly Kp to the hourly grid via

forward-fill. An onset is the first hour where Kp transitions from < 5

to ≥ 5 with no Kp ≥ 5 in the preceding 24 h and sustained activity in

the following 3 h. N = 26 events at Kp ≥ 5.

  1. Superposed epoch. For each onset t₀, extract snr_resid at lags

t₀ − 24 h ... t₀ + 48 h per (corridor, band). Stack across events.

  1. Bootstrap 95 % CI on the column-mean residual (1000 resamples).
  2. Shuffle null. 200 random-onset permutations within the same WSPR

coverage hour pool; 2.5/97.5 percentile band.

  1. Headline test. Compare post-storm window [+1, +12] h to pre-storm

baseline [−24, −1] h per stratum: Welch t-test + Mann-Whitney U + Cohen's d.

  1. Bonferroni correction across 30 (corridor × band) strata: threshold

α = 0.05 / 30 = 0.00167.

  1. Sensitivity at Kp ≥ 4 (N = 42) and Kp ≥ 6 (N = 12) for monotonicity.

Findings

Headline: clean null after Bonferroni (Welch t AND Mann-Whitney U)

0 / 30 corridor × band strata show a post-storm SNR change that survives

Bonferroni correction at α = 0.05 / 30 ≈ 1.67×10⁻³ under either Welch t or

Mann-Whitney U. Welch/MW agree on every high-effect stratum. The only t/MW

disagreement is POLAR/3MHz (t-p=0.68 vs MW-p=0.039) on a tiny Δ=-0.12 dB

(d=-0.027) — the MW flag indicates non-Gaussian residuals on that stratum

but the effect size is negligible. The null holds at all three Kp thresholds:

ThresholdN eventsStrata p < 0.05 (uncorrected)Survive Bonferroni
Kp ≥ 4420 / 300 / 30
Kp ≥ 5 (primary)262 / 300 / 30
Kp ≥ 6121 / 300 / 30

Sign-reversal vs hypothesis

H1 predicted SNR depression on auroral and transpolar paths. We observe

24 / 30 strata with positive Δ (small enhancement) at Kp ≥ 5, including

the high-latitude paths. The largest nominal effects:

  • NA_AS / 7 MHz: Δ = +1.44 dB, t = 2.90, p = 0.0039 (uncorrected),

Cohen's d = +0.20, N_post = 286

  • NA_EU / 21 MHz: Δ = +1.32 dB, t = 2.29, p = 0.0227 (uncorrected),

Cohen's d = +0.17, N_post = 267

Neither survives Bonferroni. Cohen's d ≤ 0.21 (small to negligible) for

every Bonferroni-passing direction.

Theoretical-control strata

  • POLAR corridor (where H1 predicts the strongest depression): all 5 bands

yield |Δ| ≤ 0.49 dB with p > 0.16, d ∈ [−0.03, +0.10]. **No detectable

response.**

  • LOCAL corridor (null control — short paths should be unaffected by

storm-driven HF disturbance): all 5 bands yield |Δ| ≤ 0.43 dB with p > 0.22,

d ≤ 0.08. Consistent with no response, as expected for the null control.

Shuffle-null envelope confirms the null

Across the full SEA grid (30 strata × 73 epoch hours = 2,190 cells), only

26 cells (1.2%) exit the 95% shuffle-null envelope — well below the 5%

expected by chance. The SEA traces are consistent with no event-locked

response on any stratum.

H2 (Kp dose-response) formally rejected

Per-stratum Spearman ρ of Δ vs Kp threshold (one ρ per stratum from the

triplet {4, 5, 6}) gives mean ρ = +0.08 (one-sample t-test p = 0.57, N = 30).

Only 9/30 strata show monotonically increasing |Δ| (vs ~17% expected from a

uniform-over-orderings null). H2 is not supported.

V2 flag

The Kp ≥ 6 sensitivity stratum EU_AS / 28 MHz shows Δ = +3.79 dB at

N = 12 events with d = +0.40 (medium). Per the V1-to-V2 rule (r > 0.5 / N < 200

or large effect with small N), this is flagged for verification once additional

Kp ≥ 6 events accrue (anticipate 6-12 months).

Interpretation

We cannot reject H0 under the corridor-averaged, hour-binned, Bonferroni-

corrected protocol. Three non-exclusive explanations:

  1. Path-rerouting hides absorption. WSPR's global mesh re-routes traffic

around disturbed regions during storms; corridor-level SNR may stay flat

even as individual station pairs degrade. A station-pair-level analysis

(V2) would be needed to test this.

  1. Baseline contamination. Storms cluster (CIR-driven recurrent activity).

The 24 h pre-window may contain residual storm time, deflating the

post-pre delta. A longer, quiet-only baseline (e.g., F10.7 ≤ 100, 7-day

pre-window) would tighten the test.

  1. Genuinely small effect at corridor granularity. Hour-aggregated,

noise-corrected SNR may simply absorb storm-driven variance into the

diurnal/seasonal baseline, leaving little signal in the residual.

The first interpretation is the most likely. WSPR's resilience as a global

mesh is itself a published finding ("WSPR sees the ionosphere everywhere

all the time"); it would be a positive feature of the network rather than

a failure mode if storm-driven absorption on individual paths is offset by

mesh rerouting at the corridor aggregation level.

References

  • Liemohn, M. W. et al. (2016). "Magnetospheric and ionospheric responses

to driver variations during geospace storms." J. Geophys. Res. 121.

  • Astafyeva, E. (2019). "Ionospheric detection of natural hazards." *Reviews

of Geophysics* 57, 1265-1288.

  • TerraPulse PMA #82 (wspr-storm-corridor-response, 2026-04-03 revised) —

The present null directly contradicts #82, which reported a

Bonferroni-significant POLAR depression of Δ = -0.29 dB (t ≈ 4.9,

p ≈ 2×10⁻⁶, Cohen's d = -0.35) on N=200 per-storm deltas using

Dst-defined storms 2020-2026, with a monotonic dose-response at

Dst < -100 (d = -0.62, N = 36). Four methodological differences

plausibly drive the divergence: storm index (Dst vs Kp), time window

(6 yr vs 6.5 mo), test statistic (per-storm scalar deltas vs hourly

residual stack), and stratum count for Bonferroni (4 vs 30). V2

should run #82's protocol on the Kp event catalog used here to

disentangle the four contributions.

  • Mendillo, M. (2006). "Storms in the ionosphere: Patterns and processes

for total electron content." Rev. Geophys. 44, RG4001.

  • Buonsanto, M. J. (1999). "Ionospheric storms — A review." *Space Sci.

Rev.* 88, 563-601.

  • TerraPulse PMA #129 — Kermadec Doublet (2026-04-19): comparable V1 paper

format with shuffle-null methodology.

Data availability

All scripts, parquet datasets, and results.json are in

workspaces/wspr-corridor-snr-superposed-epoch-over-/. The analysis is

reproducible via python scripts/extract.py && python scripts/analyze.py.

Author: PMA

Published: 2026-05-18 · Updated: 2026-05-18

Data files: kp_hourly.parquet, results.json, storm_onsets_kp4.parquet, storm_onsets_kp5.parquet, storm_onsets_kp6.parquet, wspr_corridors.parquet

Scripts: analyze.py, extract.py

← Back to Data Lab
Live Feed