How we calculate the sky, sign dates and horoscopes
I take the positions of the Sun, the Moon and eight planets from the NASA JPL DE421 ephemeris via the skyfield library: geocentric apparent longitudes, the tropical zodiac, signs of 30°. They differ from JPL Horizons by less than 0.01°. Sign dates come from a table of the Sun's entries from 1950 to 2031, to the minute in UTC.
Where the planet positions come from
I calculate the Sun, the Moon and eight planets — Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto — from the NASA JPL DE421 ephemeris. An ephemeris is a table of where celestial bodies are over time. DE421 is a numerical model of the Solar System from NASA's Jet Propulsion Laboratory; it covers the years 1900–2050.
The calculation itself is done by the skyfield library: it reads the DE421 file and tells me where each body is at any given moment.
Which coordinates and which zodiac
Astrology doesn't need a point in space; it needs the direction in which a body is seen from Earth. So I use geocentric apparent ecliptic longitudes — positions as they appear from Earth at that moment — measured from the true equinox of date.
The zodiac is tropical: 0° Aries is the March equinox point, followed by twelve signs of 30° each. A body's sign is simply the 30-degree segment its longitude falls into. That's why the Sun enters Libra at exactly the moment of the September equinox.
How I check the accuracy
Automated tests compare my longitudes with JPL Horizons — the same laboratory's online ephemeris service — at 6 moments within 1900–2050. For every body the difference is less than 0.01°, which is less than one arcminute. If a calculation ever drifted further, the tests would catch it.
Sign dates by year
A sign boundary is the moment the Sun crosses the next 30° of longitude, and that moment is different every year: the calendar year doesn't match the Earth's orbit around the Sun exactly, and leap days keep correcting the difference. As a result, the Sun enters a sign between the 18th and the 24th of the month, depending on the sign and the year. For Aries, for example, it's March 20 or 21.
Using DE421, I calculated a table of the Sun's entries into every sign from 1950 to 2031, each moment to the minute in UTC. The sign pages and the zodiac sign calculator use it. That's why, if your birthday falls on a cusp, I ask for the year and sometimes the time: in one year that day belongs to one sign, in another to the next.
The sky on the home page
The sky on the home page is shown for 00:00 UTC each day. The page is rebuilt daily, and the table of the Sun, Moon and planets under the wheel comes from DE421.
When you go time-traveling and scroll through the dates, the wheel is driven by a simplified model: JPL's “Approximate Positions of the Planets” and a shortened lunar series after Meeus. It's there to keep the picture smooth right in your browser. The tables and dates on the site always come from DE421.
How I write the horoscope in @AstroStellaBot
I calculate the daily horoscope from the sky at 12:00 UTC on that day. The houses are solar houses: your sign counts as the 1st house, the next sign as the 2nd, and so on around the circle. The house the Moon is in sets the area of life for the day; there are 12 areas in all.
The main transit of the day is a whole-sign aspect from a planet to your sign: conjunction, sextile, square, trine or opposition. Fast planets carry more weight than slow ones.
The text comes with three ratings from 1 to 5: love is based on Venus and the Moon, work on Mars, Mercury and Saturn, mood on the Moon and the Sun. The text itself is assembled from a bank of phrases, with the variant chosen by date and sign. So everyone of the same sign gets the same text on the same day.
Natal chart and compatibility
@NatalChartMakerBot builds a chart from your date, time and city of birth. Houses follow the Placidus system. Beyond the polar circle, at latitudes above 66°, Placidus houses can't be constructed, so there I use equal houses from the Ascendant.
Compatibility is calculated the same way on the site and in the bots: by the angle between the signs — same sign, next-door signs, sextile, square, trine, quincunx, opposition — and by the pair of elements. That gives a score from 1 to 5, which you see in the tables on the sign pages.
Questions about the calculations
What is an ephemeris?
A table of the positions of the Sun, the Moon and the planets over time. I use the NASA JPL DE421 ephemeris, which covers the years 1900–2050.
Tropical vs sidereal zodiac: which one do you use?
Tropical: 0° Aries is the March equinox point, and the signs are 30° each. The sidereal zodiac is tied to the stars, and its signs are shifted relative to the tropical ones. All my signs and dates are tropical.
How are horoscopes calculated?
From the sky at 12:00 UTC. The Moon's solar house for your sign sets the area of the day, the main transit is a planet's aspect to your sign, and the three ratings from 1 to 5 each come from their own planets. The text is assembled from a bank of phrases by date and sign.
Why does my zodiac sign depend on my birth year?
Because the Sun enters each sign at a different time every year: the boundary moves between the 18th and the 24th of the month. For cusp days I check the table of entries from 1950 to 2031, to the minute in UTC.
How do you calculate a natal chart?
You need the date, time and city of birth. From them @NatalChartMakerBot builds a chart with Placidus houses — and beyond the polar circle, above 66° latitude, with equal houses from the Ascendant.
Updated November 7, 2026