Horospire planet positions against NASA JPL DE440, 1900 to 2050 Version 1.0, measured on 19 October 2026 https://horospire.com/research/ephemeris-accuracy What this is How far the planet positions computed by Horospire's ephemeris engine are from NASA JPL's DE440s ephemeris: the Sun, the Moon and Mercury to Pluto at one moment a day from 1900-01-01 to 2050-12-31 (55,152 moments, 551,520 placements), as apparent geocentric ecliptic longitude on the true ecliptic and equinox of date. Two other engines are measured the same way: astronomy-engine 2.1.19 and the Swiss Ephemeris 2.10.03 in Moshier mode. It measures the arithmetic of the positions, not any claim of astrology. Files summary.csv Horospire's engine, per body: mean, median, 95th percentile and largest error in arcseconds, when the largest fell, the signed mean, and how many placements fall in a different sign, decan or whole degree. daily-errors.csv.gz Every placement: the civil time, its time scale (UT1 before 1972, UTC from 1972) and Horospire's error per body, engine minus reference, in arcseconds. libraries.csv The three engines, per body, measured the same way, with the version and the exact call used. horizons-check.csv The reference against JPL Horizons at 15 instants for all ten bodies (150 values; within 0.25 arcseconds). ingress-summary.csv The table of sign-change dates Horospire's readings use for Mercury to Saturn, against JPL's crossing times, per planet. The table itself is not published. scripts/ The code that produced the files (MIT). LICENSE-DATA.txt The data's licence (CC BY 4.0). SHA256SUMS A checksum for every file above. Time A civil time before 1972 is read as UT1, because a clock time of that era was kept in GMT; from 1972 it is read as UTC. Horospire's engine receives the civil time as given and applies no Delta T; Skyfield, astronomy-engine and the Swiss Ephemeris each apply their own Delta T. Recipe 1. python3 -m venv venv venv/bin/pip install skyfield==1.55 jplephem==2.24 numpy==2.5.4 pyswisseph==2.10.3.2 2. Download https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/de440s.bsp sha256 c1c7feeab882263fc493a9d5a5b2ddd71b54826cdf65d8d17a76126b260a49f2 3. venv/bin/python scripts/reference.py de440s.bsp work 4. venv/bin/python scripts/swiss_ephemeris.py work/moments.json work/swiss.json 5. npm install astronomy-engine@2.1.19 node scripts/astronomy_engine.mjs node_modules/astronomy-engine work/moments.json work/astronomy.json 6. Horospire's engine is not published in this version, so rebuild its values from the published errors: venv/bin/python scripts/house_from_errors.py work daily-errors.csv.gz (Inside Horospire, scripts/house_engine.php calls the engine itself.) 7. venv/bin/python scripts/summarise.py work out 2026-10-19 out/summary.csv, out/libraries.csv and out/daily-errors.csv.gz then match this folder's files byte for byte. 8. To repeat the Horizons check (ten read-only requests to JPL, two seconds apart), put the first column of horizons-check.csv in a JSON list and run: venv/bin/python scripts/horizons_check.py de440s.bsp tt-jds.json out/horizons-check.csv What Horospire's engine is The Sun by Jean Meeus, Astronomical Algorithms (2nd edition), chapter 25. The Moon by chapter 47, truncated to its 13 largest longitude terms. Mercury to Saturn from Meeus's mean orbital elements (Table 31.A), Uranus, Neptune and Pluto from JPL's Keplerian Elements for Approximate Positions of the Major Planets (E. M. Standish); each orbit solved by Kepler's equation, rotated from the J2000 equinox to the equinox of date (IAU 1976 general precession), with the largest Jupiter-Saturn perturbation terms as Paul Schlyter gives them in How to Compute Planetary Positions. The engine uses the civil time as its dynamical time (no Delta T). Version 1.0 measures it as of commit dfb56ab71; its code is not published in this version. Cite Horospire (2026). Horospire planet positions against NASA JPL DE440, 1900 to 2050 (version 1.0) [Data set]. https://horospire.com/research/ephemeris-accuracy