ArtaMatch · the deployed model · fourth edition · genderless · public leaderboard 0.64303
The model that leads the public board is a stack of three members — a plain-plus-geography model and two ArtaModel IV constructions — combined by non-negative weights on their ranks, fitted per availability group, and scored in both orders of the pair so the answer is exactly symmetric. It runs in this page: enter two births and a start date below. Every piece is explained underneath, with what it turns out to read.
Nothing leaves the page: the ephemeris, the three geography boosters and the ArtaModel stages load into Pyodide and are evaluated here. Births are cast at 09:00 local mean time at the birthplace (the fit used the zone clock; for the outer planets the model reads, the difference is under 0.01°). Dates may be day (1936-08-04), month (1936-08-00) or year (1936-00-00) precision — the start too: 1968-00-00 is "the year 1968", and 1 January is an ordinary day.
Pyodide not started
Give one person's birth date and birthplace and the date the relationship would begin (today by default — the candidates' ages are counted from it), and the stack is evaluated for every day of birth in the range of people alive (18 to 100 years old at the start) in the capital of every country — about six million candidates — and the twenty highest are listed. It is the same model as above, run on its structure: the geography member depends on the candidate only through the birth year and the capital, the ArtaModel members only through the outer planets on the birth day (weekly ephemeris samples, interpolated; the capital's local hour shifts those bodies by under 0.006° and is ignored for the candidate). One entry per capital per year, so the list reads as twenty distinct matches. What it prefers is what the stack prefers — mostly where, then when — and the section below says why.
For a pair, every day from a date (today by default) over a horizon is scored — the start day enters through the two ages, its weekday and month, and the outer planets of that day against each natal chart — and the twenty best options are listed: the best day of each month, ranked, so twenty consecutive Tuesdays count as one option, not twenty. Every calendar day is scored; "year only" is spelled YYYY-00-00. What the model prefers is, again, what it learned: later starts (older ages), certain weekdays, and the slow sky of the day.
Three members, each even in the swap of the two partners:
| member | what it reads | held out alone |
|---|---|---|
| GEO — plain + geography | the older and younger age at the start, their gap, the start year, the two birthplaces (older/younger), their great-circle distance, the order-free extremes of latitude and longitude, a same-place flag; three small gradient-boosted models averaged (larger ones overfit the era) | 0.6418 |
| AM-G — ArtaModel IV, greedy | the sidereal phase model below, boosted over split single-phasor fields, each stage's phasor chosen greedily | 0.6053 |
| AM-F — ArtaModel IV, fixed cycle | the same construction with the phasors in a fixed cycle (a_uranus, t1/t2 Neptune, Pluto, Uranus) — the stable twin, the same model in every fold | 0.6186 |
Each member's score is turned into its rank among the rows it scores (a member that cannot speak for a pair casts no vote), and the ranks are combined with non-negative weights and a bias per availability group — group 0 when the wedding-sky clocks exist, 1 when only the synastry does, 2 when only the wedding sky is known — because the mix of groups in the training eras is not the mix in the test era. Non-negative weights make the stack monotone by construction: any subset of members is a feasible point of the full fit, so on the data the weights are fitted on the full pool can never lose to a subset. The weights were fitted on forward-chained out-of-fold scores (fit on every row before a cut, score the block after it; the test is the next era), recency-weighted, with a small ridge:
| group | GEO | AM-G | AM-F | bias | OOF rows |
|---|---|---|---|---|---|
| 0 — wedding-sky clocks exist (t1/t2 Uranus) | 2.058 | 0.189 | 0.468 | +0.067 | 10,620 |
| 1 — synastry only (a Uranus) | 1.548 | 0.335 | 0.000 | -0.534 | 4,698 |
| 2 — wedding sky only | 1.751 | 0.000 | 0.426 | +0.260 | 38,116 |
Both orders of the pair are scored and the logits averaged, so the probability is exactly the same whichever partner is entered first — the data itself carries every pair in both orders.
Every member is even by construction — the geography model reads the older and younger partner with the tie between equal ages broken by coordinates, the phase model reads |Δθ|, the training rows carry every pair in both orders, and the train-side out-of-fold scores the stacker learns from are pair-averaged like the test-side ones. Then the whole thing is audited on 1,200 held-out pairs (robustness_audit_iv.py):
| perturbation | mean |Δ probability| | AUC on the sample |
|---|---|---|
| swap the two partners | 0e+00 (max) | — |
| none (clean) | — | 0.7218 |
| birthplaces ±0.5° | 0.0046 | 0.7187 |
| birthplaces ±2° | 0.0157 | 0.7162 |
| birth dates ±1 day | 0.0001 | 0.7216 |
| birth dates ±7 days | 0.0002 | 0.7215 |
| birth hour anywhere | 0.0000 | 0.7218 |
The geography member is fitted on the rows plus a copy with every birthplace jittered by ±0.3° (about 30 km), so no split hangs on a coordinate's third decimal; the phase members read the outer planets only, so the unknown birth hour — the thing no record carries — changes nothing. (The AUC in this table is on a sample the deployed members were fitted on; the honest held-out number is the 0.6456 above.)
Read plainly: the gain over the plain ages comes from where the two were born — a fact about people and eras, not about the sky. The astrology inside the stack (ArtaModel IV, below) reads the same two ages through the outer planets; every other tradition tried (twenty-one tropical traditions including numerology, fourteen Jyotiṣa and Zǐ Wēi Dǒu Shù families) scored 0.50–0.59 alone and added nothing beside geography. We say so because we measured it; the study is ARTAMODEL.md.
The astrological member, a genderless sidereal phase model: two births and birthplaces — in no order — and the date it began, one logit out. Every term is written out below, with the weight the fitted model gave it — and with what the model turns out to be reading.
y = | b + Σᵢ aᵢ ·e^{i|θ1ᵢ − θ2ᵢ|} the absolute synastry angle (even under the swap)
+ t1ᵢ·e^{i|θtᵢ − θ1ᵢ|} the wedding sky to partner 1's chart
+ t2ᵢ·e^{i|θtᵢ − θ2ᵢ|} the wedding sky to partner 2's chart
+ n1ᵢ·e^{i θ1ᵢ} partner 1's own natal longitude
+ n2ᵢ·e^{i θ2ᵢ} partner 2's own natal longitude
+ tnᵢ·e^{i θtᵢ} |² the wedding sky itself
θ are sidereal longitudes (Lahiri, through Kerykeion and the Swiss Ephemeris) of fourteen bodies — Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, Rāhu, Ketu, Chiron, Lilith. Genderless: no sex is read; "partner 1" and "partner 2" are whichever order you give — every phase difference enters as its wrapped absolute value |Δθ| in [0°, 180°], so each term is an even function of the swap, the training data carries every pair in both orders, and the scorer averages the two orders so the answer is exactly the same either way. Every long-term relationship Wikidata records is in the data — marriages of every kind, unmarried partnerships, business and sporting partnerships. Nobody's birth time is recorded, so every birth is cast at 09:00 local time at the birthplace; the start at 12:00 UT. A term exists only when both of its phases exist — an unknown start day drops the wedding-sky terms, an unknown birth drops that partner's terms, and a missing phase contributes exactly zero.
| term | phasor | meaning | bodies the deployed model uses |
|---|---|---|---|
| a | a·ei|θ1−θ2| | the absolute synastry angle between the two natal charts — even under the swap | 1/14 |
| t1 | t1·ei|θt−θ1| | the wedding sky to partner 1's natal longitude | 1/14 |
| t2 | t2·ei|θt−θ2| | the wedding sky to partner 2's natal longitude | 1/14 |
| n1 | n1·eiθ1 | partner 1's own natal longitude | 0/14 |
| n2 | n2·eiθ2 | partner 2's own natal longitude | 0/14 |
| tn | tn·eiθt | the wedding-day longitude itself | 0/14 |
The deployed model is gradient boosting over split single-sum fields: each stage is one field |b + w·eiφ|² on one phasor, chosen at that stage as the phasor that best explains the current residual — so all 84 phasors of all six terms compete every time — and added to the logit. Fitted on all the data, 35,894 rows with both natal charts (every pair in both orders), for 8 stages. Of the 84 phasors offered it chose 3:
| phasor | body | term | stages | swing in the logit | peak at φ | meaning |
|---|---|---|---|---|---|---|
a_uranus | Uranus | a·ei|θ1−θ2| | 4 | 0.151 | 176° | |θ1 − θ2|: the absolute synastry angle between the two natal charts (even under swap), for Uranus |
t2_neptune | Neptune | t2·ei|θt−θ2| | 2 | 0.099 | 195° | |θt − θ2|: the wedding sky to partner 2's natal longitude, for Neptune |
t1_neptune | Neptune | t1·ei|θt−θ1| | 2 | 0.081 | 331° | |θt − θ1|: the wedding sky to partner 1's natal longitude, for Neptune |
Read plainly: a_uranus is the absolute gap between the two births measured by Uranus (4.3° a year); t1_neptune and t2_neptune are each partner's age at the start measured by Neptune (2.2° a year) — chosen as a pair, as a genderless model should. Never chosen at any stage: any natal phase (n1, n2), any wedding-sky phase (tn), or any of the fast bodies.
What ArtaModel IV reads is the two partners' ages at the start and the absolute gap between their births, through the outer planets as clocks — the same finding as every edition before it, now without a sex in the model: it is exactly invariant to the ayanāṁśa (a constant offset cancels in a phase difference), to the birth hour and to the birthplace, and its gain over the plain ages is small and mostly the ages read twice. The age-cell-matched figure is what is left once the two ages are held flat. We say so because we measured it — the study is ARTAMODEL.md.
The deployed weights, the scorer (predict(dob_1, lat, lon, dob_2, lat, lon, start) → probability + the stage-by-stage account of both orders; symmetric by construction), the code and the study: huggingface.co/artaquest/artamodel. The data: artamatch-genderless; the competition: artamatch-genderless. CC0.