Back to Cosmic Retro

Ephemeris method, sources and validation

These are approximate astronomical calculations of apparent motion, not an exact natal chart and not evidence for astrology's personality or predictive claims.

Source and supported dates

We self-host Don Cross's Astronomy Engine 2.1.19 (MIT licensed). It uses truncated VSOP87 models for the major planets and numerical gravitational integration for Pluto. Its upstream project tests against USNO NOVAS, JPL Horizons and other ephemerides, with a target positional accuracy of about ±1 arcminute. That positional target is not a guaranteed uncertainty in a derivative or station time. Included license.

This site supports Gregorian dates from 1900-01-01 through 2099-12-31. The birthday form additionally rejects future dates. Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto are included; Pluto is a dwarf planet. No external astronomy API, PHP, database or Node runtime is needed for the birthday calculation, and the date remains in your browser.

What is calculated

For each body, Astronomy Engine's GeoVector(body, time, true) supplies a geocentric vector corrected for light travel time and aberration. Ecliptic(vector) converts it to true ecliptic-of-date longitude. We take a wrap-safe central difference using positions three hours before and after the reference time (a six-hour interval). Negative speed in degrees per day is retrograde; positive speed is direct. Retrograde is apparent motion viewed from Earth, not a planet physically reversing its orbit.

The reference is 12:00 UTC on the entered date, not a known birth time. Historical civil times before UTC existed are treated using the library's UT convention and ΔT model. Birthplace is not required for this geocentric direction calculation; it is needed, with actual birth time, for a full natal chart's angles and houses.

Unknown time, time zone and stations

An entered local birthday with unknown time and zone can correspond to UTC times from the previous day at 10:00 through the following day at 12:00 (UTC+14 through UTC−12). We sample this 50-hour window hourly, including the endpoints. If speed changes sign or any sampled speed comes within 0.003 degrees/day of zero, the date-only result is “Near station / uncertain.” Uncertain bodies are excluded from the confirmed-retrograde summary. A body moving directly is shown as “Direct”; no list is invented when none are retrograde.

The slow-motion threshold is a conservative heuristic, not a statistical error bound. Hourly sampling and a compact ephemeris cannot guarantee an exact station instant. Use your actual universal birth time and a high-precision independent ephemeris near a station. We do not calculate houses, ascendants, aspects or exact birth charts. Symbolic sun-sign date bands and broad generational cohorts elsewhere on the site are not derived from this ephemeris.

Independent NASA/JPL validation

Retained records come from NASA/JPL Horizons, not Astronomy Engine: observer tables, Earth center 500@399, quantity 31 (apparent ecliptic-of-date longitude), six-hour steps. See the Horizons manual and API documentation. Horizons includes additional gravitational light-deflection corrections; it is not identical to Astronomy Engine's model.

Checks cover all eight bodies throughout 2024, Venus throughout 2023, Mars throughout 2022, and January 1–4 samples in 1900, 1950, 2000 and 2099. Across 15,058 positions and 14,974 six-hour-sampled central differences, the largest observed longitude difference was 0.245 arcminutes and speed difference was 0.000807 degrees/day. This validates the selected samples, not every possible birthday.

All sampled motion directions agreed outside the 0.003 degrees/day warning band. We also checked 20 station boundaries against zero-speed crossings interpolated from Horizons records. The largest observed station difference was 1.647 hours. These interpolations are approximate, not published exact station timestamps. Every listed station date correctly produces an uncertain date-only result.

Checked interior dates

Checked stationary boundaries (UTC dates)

Independent Horizons crossings versus the local calculation
BodyUTC dateTransitionDifference
Jupiter2024-10-09direct to retrograde0.091 hours
Mars2022-10-30direct to retrograde0.001 hours
Mars2024-12-06direct to retrograde0.019 hours
Mercury2024-01-02retrograde to direct0.029 hours
Mercury2024-04-01direct to retrograde0.035 hours
Mercury2024-04-25retrograde to direct0.042 hours
Mercury2024-08-05direct to retrograde0.066 hours
Mercury2024-08-28retrograde to direct0.081 hours
Mercury2024-11-26direct to retrograde0.013 hours
Mercury2024-12-15retrograde to direct0.005 hours
Neptune2024-07-02direct to retrograde0.241 hours
Neptune2024-12-07retrograde to direct0.089 hours
Pluto2024-05-02direct to retrograde0.346 hours
Pluto2024-10-11retrograde to direct1.647 hours
Saturn2024-06-29direct to retrograde0.048 hours
Saturn2024-11-15retrograde to direct0.108 hours
Uranus2024-01-27retrograde to direct0.101 hours
Uranus2024-09-01direct to retrograde0.155 hours
Venus2023-07-23direct to retrograde0.006 hours
Venus2023-09-04retrograde to direct0.014 hours

All original Horizons response headers, settings and longitude samples are retained in the development project's tools/fixtures/horizons directory. Run node tools/fetch-horizons.mjs to obtain missing records, node tools/validate-retrogrades.mjs to repeat the offline checks, and node tools/build.mjs to regenerate this page. Those commands are development tools only; the Hostinger ZIP requires none of them.

Return to your birthday report