We ran 393 statistical tests on astrology. One survived.
TIME 100, 10,000 stratified null dates, Fisher's exact tests, Bonferroni correction. One feature got through — and it's not the one we expected.
We computed natal charts for every person on TIME Magazine’s 100 Most Influential People of the 20th Century, built a null distribution of 10,000 randomly sampled dates, and tested whether any astrological feature is statistically overrepresented among history’s most influential humans.
One feature survived correction across all 393 tests. It’s not the one we expected.
Before you decide whether that’s interesting, let us explain why we trust the methodology — because the methodology is the actual product here.
Why test astrology at all
We covered this in the first post. The short version: we’re building a macro synthesis engine that uses genetic algorithms to search for signal in alternative data. Before we point the GA at markets, we need to test it on a problem where the answer is auditable. Astrology is a coordinate system — ten celestial bodies binned into twelve signs, with angular relationships between them. Strip away the mythology and you have a deterministic feature set that nobody in quantitative finance has bothered to test properly, because the reputational cost of being “the astrology guy” outweighs the research cost of checking.
We’d rather check.
The dataset is TIME’s list because it’s well-known, defensible, and we didn’t curate it. If we picked our own list of influential people, every result would be suspect. TIME picked theirs in 1999. We’re just computing their charts.
The pipeline
There are three things that can go wrong in this kind of analysis: bad data, bad baselines, and bad statistics. We built defenses against all three.
The data pipeline
For each of the 100 subjects, we computed a natal chart using Swiss Ephemeris (via the Kerykeion library in Python). The chart gives ten planetary longitudes — degrees around the ecliptic from 0 to 360. These get stored in PostgreSQL as raw floating-point values.
Then a separate encoder converts those longitudes into the astrological feature set: ten sign placements (which 30-degree bin each planet falls in), 45 aspect classifications (angular relationships between every pair of planets), and seven aggregate counts (how many planets in fire signs, earth signs, cardinal signs, and so on). Sixty-two features total.
Every chart is computed at noon. Birth times are unreliable for historical figures, and we’d rather drop the house system entirely than fake inputs for half the dataset. The Moon moves about 13 degrees per day, so a noon assumption introduces up to 6 degrees of error — within a single sign boundary for roughly 80% of cases. Acceptable noise, not systematic bias, because the null distribution uses the same noon convention.
The null distribution
This is where most amateur astrology studies fail. If you compare your subjects against a uniform random distribution, you’ll find “astrological” signals that are just seasonal birth patterns. More babies are born in September. Certain decades produced more future leaders because of historical context, not celestial mechanics.
The null has to control for this. We stratified by three dimensions:
Month. For every October birth in the TIME 100, the null distribution contains exactly 100 October births. If October babies are overrepresented among influential people for demographic reasons, the null reflects that. Any astrological signal has to exceed the demographic baseline.
Era. The TIME 100 spans birth years from 1856 to 1955. Outer planets move slowly — Pluto spends 12 to 25 years in a single sign. If we sampled null dates uniformly across the full century, we’d dilute slow-planet signals. Instead, we binned into four eras and preserved the subject count per bin. The null has the same era profile as the subjects.
Region. North America, Europe, Rest of World. Not because latitude affects the chart at noon (it doesn’t, without houses), but because geographic clustering interacts with seasonal birth patterns.
The result: 10,000 null dates across 68 unique strata cells, with monthly percentages matching the subjects exactly.
What we tested
For each of the 62 features, we asked: does this feature appear more frequently among the 100 subjects than among the 10,000 null dates?
That’s 120 planet-sign combinations (10 planets times 12 signs), plus every active aspect type for each of the 45 planet pairs, plus threshold tests on element and modality counts. 393 tests total.
Each test is a Fisher’s exact test on a 2-by-2 contingency table. Fisher’s exact is the right choice here because expected cell counts are small — with 100 subjects and rare features, chi-squared would be unreliable. One-sided, testing for overrepresentation.
Then: multiple comparison correction. If you run 393 tests at alpha 0.05, you expect about 20 false positives by pure chance. We applied both Bonferroni correction (the strictest — multiply each p-value by 393) and Benjamini-Hochberg FDR correction (controls the expected proportion of false discoveries rather than the probability of any false discovery).
The results
Twenty features hit raw p < 0.05. That’s 5.1% of 393 tests — exactly what chance predicts. The bulk of these are noise.
One feature survived both corrections.
Saturn in Taurus: 19 of 100 subjects (19%) versus 6.9% in the null distribution.
Odds ratio: 3.17. Bonferroni-corrected p-value: 0.021. Benjamini-Hochberg q-value: 0.021.
Two more features were suggestive but didn’t clear correction:
| Feature | Subjects | Null | Odds ratio | BH q-value |
|---|---|---|---|---|
| Saturn in Taurus | 19.0% | 6.9% | 3.17 | 0.021 |
| Jupiter in Taurus | 19.0% | 8.4% | 2.57 | 0.084 |
| Earth count ≥ 5 | 20.0% | 9.1% | 2.51 | 0.084 |
There’s a Taurus cluster. And it’s not independent — the “earth count ≥ 5” signal is partially driven by having Saturn and Jupiter both in an earth sign. More on that in a moment.
On the underrepresentation side, Virgo is conspicuously absent: only 2 subjects have Sun in Virgo (2%) versus 6.2% expected, and Jupiter in Virgo and Saturn in Libra are similarly depleted. These don’t survive correction but the pattern is consistent.
Who has Saturn in Taurus
Here’s where it gets interesting. Saturn orbits the Sun in about 29.5 years, spending roughly 2.5 years in each sign. In the century covered by the TIME 100, Saturn passed through Taurus three times:
1881–1883: Kemal Ataturk, Alexander Fleming, William Boeing, Pablo Picasso, Franklin Roosevelt, James Joyce, Igor Stravinsky, Robert Goddard
1910–1912: Mother Teresa, Ronald Reagan, Lucille Ball, Alan Turing, Rosa Parks
1940–1942: John Lennon, Pelé, Bruce Lee, Bob Dylan, Muhammad Ali, Aretha Franklin
Read those names again. That’s not a random sample of the 20th century. The 1881 cohort contains two of the century’s most consequential leaders, the inventor of penicillin, and the founders of modern art, modern literature, modern classical music, and modern rocketry. The 1940 cohort is a murderer’s row of cultural transformation.
But before we get excited, we need to explain why this might be completely fake.
The era problem
Saturn’s 29.5-year orbit is the elephant in the room. Our era bins — 1856–1889, 1890–1909, 1910–1929, 1930–1955 — don’t align with Saturn’s cycle. The null distribution preserves how many subjects come from each era, but within each era, Saturn moves through multiple signs. If certain 2.5-year windows within an era happened to produce more future-influential people for non-astrological reasons — say, because of economic booms, immigration waves, or sheer demographic luck — that would show up as a Saturn-sign signal.
The 1881–1883 window, for instance, sits in the middle of the Gilded Age. The 1940–1942 window catches the start of the Baby Boom. Are these windows special because Saturn was in Taurus, or because the world happened to be producing a lot of future-influential humans right then?
The stratification controls for era at a coarse level, but Saturn’s sign changes every 2.5 years inside a 30-year era bin. That’s a much finer resolution than our strata can capture. The null doesn’t perfectly control for this, and that’s a real limitation.
This is why the permutation test matters. The permutation test — which we’ll run next — shuffles the subject/null labels while keeping the feature matrix fixed. It directly measures whether the enrichment score is achievable by chance given the specific data structure, including any era artifacts. If Saturn in Taurus survives the permutation test, the era explanation becomes much harder to sustain. If it doesn’t, we’ll have identified the exact mechanism that fooled us.
What about Jupiter
Jupiter in Taurus (19%, BH q = 0.084) tells a related but different story. Jupiter’s orbit is about 12 years, so it visits Taurus more frequently. The subjects with Jupiter in Taurus partially overlap with the Saturn-in-Taurus group — in 1881 and 1940, both planets were in Taurus simultaneously — but Jupiter also captures different eras: Gandhi and Lenin (1869–1870), Mao (1893), JFK (1917), Martin Luther King Jr. and Che Guevara (1928–1929).
If both signals were purely era artifacts, you’d expect them to diverge more, because their orbital periods are different. The fact that the Taurus enrichment appears for both a 12-year cycle and a 29.5-year cycle, pulling from different historical windows, is either a coincidence or something more interesting. We don’t know which yet.
What this doesn’t mean
We want to be explicit about what we’re not claiming.
We’re not claiming Saturn causes influence. There is no known physical mechanism by which Saturn’s position in the sky affects human potential. If this signal is real, the mechanism is almost certainly demographic or cultural — certain historical periods that happened to align with Saturn’s position in Taurus also happened to produce an unusual density of influential individuals.
We’re not claiming this is definitive. One feature surviving Bonferroni correction across 393 tests with n=100 is noteworthy, not conclusive. The p-value is 0.021, not 0.001. The effect could shrink or vanish under more rigorous testing.
We’re not claiming this generalizes. The TIME 100 is one list, curated by one magazine, with its own cultural biases. Western, English-speaking, 20th-century-centric. A different list of influential people might produce a completely different result — or no result at all.
What we are claiming is that the methodology works. The pipeline catches real patterns. The null distribution controls for the obvious confounds. The correction procedure kills false positives. And one feature got through anyway.
What’s next
The univariate tests were Phase 1 — the dumbest possible analysis. They can only find single-feature signals. The hypothesis from the original concept was that signal might live in combinations: Jupiter in Taurus while Saturn squares Mercury while the Moon is in a fire sign. That’s what the genetic algorithm is for.
Phase 2 is the island-model GA in Elixir. Multiple populations evolving feature-set hypotheses under different selection pressures, with periodic migration between islands. The GA proposes combinations. The validation pipeline — Fisher’s exact, bootstrap confidence intervals, Benjamini-Hochberg correction, and the permutation test — disposes of them.
The GA doesn’t know about Saturn in Taurus. It will discover it independently if the signal is real, and it might find that it’s part of a larger pattern that the univariate test can’t see.
The permutation test is waiting. That’s the firing squad.
The methodology
For the technically inclined — this is the full stack.
Data. 100 subjects (TIME 100, birth dates from public records). 10,000 null dates stratified by month, era (4 bins), and region (3 bins). All charts at noon, no houses. Seed 42 for reproducibility.
Ephemeris. Swiss Ephemeris via Kerykeion 5.12 (Python). Planetary longitudes for Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto.
Feature encoding. 12-bin zodiac signs (30 degrees each), 6 aspect types with standard orbs (conjunction 0/8, opposition 180/8, trine 120/8, square 90/8, sextile 60/6, quincunx 150/3), element and modality counts. 62 features per chart.
Tests. Fisher’s exact (one-sided, overrepresentation). Bonferroni and Benjamini-Hochberg correction. 393 total tests.
Storage. PostgreSQL 18 (Patroni HA cluster). Raw longitudes preserved for re-encoding. Everything auditable.
Code. Elixir for the GA engine (next phase). Python for ephemeris, encoding, and statistics. PostgreSQL as the integration boundary. Built on the BEAM because each GA island will be a supervised GenServer, and if one crashes, its supervisor restarts it while the other islands keep evolving.