Listening for events…

Data Lab / Can WSPR Detect Aircraft? A Pre-Registered Test Against ADS-B Ground Truth

Can WSPR Detect Aircraft?

Status: draft (pre-registered, awaiting data extraction)
Issue: #120
Pre-registration: PRE-REGISTRATION.md

The prior question

Before we can responsibly evaluate any hypothesis claiming WSPR data can

trace aircraft (e.g., the Godfrey WSPR-MH370 hypothesis), we must answer

the prior question:

Can WSPR detect commercial aircraft at all, against ground truth, on a
recent date with full ADS-B coverage and full WSPR archive coverage?

If the answer is no, the hypothesis is dead regardless of how compelling

post-hoc pattern matches look. If the answer is yes, we have a reference

signature for what an aircraft crossing actually looks like in WSPR data.

The honest design

  1. Pre-registration is locked before any data extraction — see

PRE-REGISTRATION.md. This is the contract.

  1. Selection criteria, statistical test, threshold, and decision rule

are all defined in advance.

  1. We pick station pairs whose great circle paths cross the **North

Atlantic Tracks** corridor (50°N 30°W) — the busiest oceanic air

corridor on Earth.

  1. We pick a recent date — 2026-04-03 (a Friday with dense ADS-B

coverage).

  1. We pull WSPR spots from our 11.53B archive and ADS-B from OpenSky

Network.

  1. We compute crossing events using great circle geometry with a 25 km

Fresnel zone tolerance.

  1. We detrend SNR for diurnal ionospheric variation (30-min rolling

median).

  1. Welch's t-test on |SNR residual| at crossing bins vs non-crossing bins.
  2. Bonferroni-corrected α = 0.00333 (3 pairs).
  3. Permutation null with 1000 shuffles is mandatory.
  4. Visual confirmation plot is mandatory.

Decision rule

OutcomeCriterion
PositiveAll three: parametric p < 0.00333, permutation p < 0.00333, visible by eye
NegativeAll three: not significant, no visible association, null distribution overlaps observed
AmbiguousAnything else. Reported as ambiguous, not promoted to positive.

Honesty compact

  • No moving thresholds after the fact
  • No data-dependent metric switching
  • No additional pairs tested if the first three are null
  • No switching dates if the first date is null
  • No comparison to MH370 in this paper (separate study)
  • Negative result is published. A clean null on this is a bigger paper

than a maybe-positive.

Status timeline

  • [x] Pre-registration locked (2026-04-10)
  • [ ] OpenSky API client set up
  • [ ] Station pairs selected per §5.1 of pre-reg
  • [ ] WSPR + ADS-B extracted for 2026-04-03
  • [ ] Pre-registered analysis run
  • [ ] Result: TBD

Author: PMA

Published: 2026-04-10 · Updated: 2026-04-13

Data files: crossings.parquet, crossings.parquet.meta.json, map_preview.html, pair_census.parquet, pair_census.parquet.meta.json, poller_start.json, residuals.parquet, residuals.parquet.meta.json, results.json, results.json.meta.json, selected_pairs.json, selected_pairs.json.meta.json, wspr_spots.parquet, wspr_spots.parquet.meta.json, wspr_spots_2026-04-03.parquet, wspr_window.parquet, wspr_window.parquet.meta.json

Scripts: __init__.py, analyze.py, build_residuals.py, compute_crossings.py, constants.py, extract_wspr.py, geometry.py, make_plots.py, map_preview.py, poll_adsbfi.py, poll_opensky.py, provenance.py, pull_wspr_window.py, run_pipeline.py, scan_pair_counts.py, select_pairs.py

← Back to Data Lab
Live Feed