Aurora Forecast

Methodology — how the aurora score is computed

This page documents the algorithm behind the one-word answer ("GO / MAYBE / LOW / NO") on every city page. Reproducibility matters, so the formulae are published in plain text.

1. Inputs (real-time, refreshed at most every 15 minutes)

  1. Kp index — planetary geomagnetic index, 0–9 integer (NOAA SWPC 3-day forecast + observed).
  2. Solar wind Bz — north–south component of interplanetary magnetic field (DSCOVR, L1 point, ~30 min leading indicator).
  3. Solar wind speed and density — DSCOVR real-time.
  4. Cloud cover — Open-Meteo hourly total cloud, low cloud, and mid cloud at city coordinates.
  5. Moon phase and illumination — computed locally from Astronomical Algorithms (Jean Meeus).
  6. Twilight windows — civil/nautical/astronomical, computed from sun position.
  7. Bortle class — pre-computed grid lookup, city-level value.
  8. Magnetic latitude — WMM 2025 simplified lookup, city-level.

2. Per-factor score (each 0–10)

Each factor is reduced to a single number. The full mapping is below.

2.1 Kp score

We use a magnetic-latitude-dependent threshold. Thresholds are derived from NOAA OVATION and public empirical studies:

Magnetic latitudeKp ≥Score
≥ 67°310
60–67°410
55–60°510
50–55°610
45–50°710
< 45°810

Kp one unit below threshold = 8; two units below = 5; three below = 2; four below or worse = 0.

2.2 Cloud score

Linear mapping of total cloud cover %: 0% → 10, 20% → 9, 40% → 7, 60% → 4, 80% → 1, 100% → 0. Low cloud is weighted 0.6 vs 0.4 for total cloud (low cloud blocks the aurora more because it sits below).

2.3 Moon score

From lunar illumination %: 0% → 10, 30% → 8, 50% → 5, 70% → 2, 100% → 0. When moon is below horizon at the relevant hour the factor is re-rated to 10.

2.4 Darkness score

Binary check at the focus hour (default 23:00 local): astronomical twilight (sun < −18°) → 10; nautical twilight → 6; civil → 2; day → 0.

2.5 Bortle / light pollution score

Bortle class 1 → 10, 2 → 9, 3 → 8, 4 → 6, 5 → 4, 6 → 2, 7 → 1, 8–9 → 0. Adjusted by ±2 if a bright aurora is expected to wash out skyglow anyway.

3. Total score and label

Weighted sum: Kp × 0.35 + Cloud × 0.25 + Moon × 0.15 + Darkness × 0.15 + Pollution × 0.10.

4. Best window within the night

For a "GO" or "MAYBE" night we then scan each hour from sunset+90 min to sunrise−30 min, compute the per-hour score, and return the contiguous run with the highest median. The hero line reports this window.

5. Direction and photography

Approximate compass direction (typically north for the auroral oval over Europe / North America, south for Australia / New Zealand) is computed from the city-to-oval-centre great-circle bearing, not from local magnetic north. Photography tips (ISO/shutter) are derived from a lookup based on Kp and Bortle class.

6. Refresh cadence

NOAA updates Kp every 15 minutes (00/15/30/45 past the hour). Open-Meteo updates hourly. We refresh our cache at top of each 15-min mark. Cloud cover forecasts are valid for the next 48 hours, beyond that we degrade gracefully to 27-day Kp-only scoring with a NO label and a banner.

7. Known limitations (read these)