Berekeningsnauwkeurigheid
De AstroWay API gebruikt Swiss Ephemeris (de officiële C-code van Astrodienst, de makers van astro.com) – dezelfde engine waarmee professionele astrologen al meer dan 30 jaar werken in Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/maand) en Janus. Wij draaien deze op onze eigen servers en bieden het aan via een REST API-laag, zonder tussenliggende marge. Elk van de basisberekenings-endpoints is gedekt door regressie snapshot-tests; de nauwkeurigheid van de engine is geverifieerd via triangulatie met drie onafhankelijke bronnen + tegen de NASA 5-Millennium Eclipse Catalog:
- Planetaire posities: mediaan
0.0013", maximum0.561"vs de officiële swetest CGI Astrodienst (gemeten op 2026-07-29 over 130 metingen). Uitsplitsing per lichaam hieronder - Onafhankelijke benchmarkrun door derden (RoxyAPI, tegen NASA JPL Horizons DE441): 210 van de 210 binnen tolerantie, mediaan
0.11", maximum0.60" - Placidus huizenpunten:
0.000"exacte match - Verduisteringen:
< 1 minuutvs NASA Eclipse Catalog - ACG-lijnen:
< 1.5 kmop de evenaar vs swetest - Zonsopgang/zonsondergang:
< 10 secondenvs timeanddate.com - Maan VOC, ingresses, planeetconjuncties: nauwkeurigheid tot een fractie van een seconde
Methodologie: hoe is het gemeten
Section titled “Methodologie: hoe is het gemeten”Deze cijfers zijn geen schatting, maar het resultaat van een run. Het script neemt 10 kaarten, verspreid van 1900 tot 2050, vraagt dezelfde momenten op bij de live swetest CGI Astrodienst en vergelijkt alle 13 lichamen die wij teruggeven. Totaal 130 metingen.
| Lichaam | Maximale drift |
|---|---|
| Zon, Venus, Saturnus | 0.001" |
| Mercurius | 0.002" |
| true Node | 0.004" |
| Mars | 0.007" |
| Jupiter | 0.009" |
| Maan | 0.022" |
| Uranus | 0.083" |
| Pluto | 0.097" |
| Neptunus | 0.223" |
| Cheiron | 0.561" |
| mean Apogee (Lilith) | 0.000" |
Mediaan over alle 130 metingen: 0.0013".
Eerder stond op deze pagina de algemene belofte ”< 0.1 boogseconde”. Metingen van 2026-07-29 toonden aan dat Neptunus, Pluto en Cheiron deze niet halen, daarom is de belofte vervangen door de feitelijke cijfers. Cheiron en de buitenplaneten hebben een grotere drift omdat hun posities worden gehaald uit een gecomprimeerde set efemeriden die onze build gebruikt.
Je kunt dit zelf reproduceren: api-calc/scripts/accuracy-vs-swetest.mjs voert
precies deze verzoeken uit en print dezelfde tabel.
Controleer het zelf. Het script waarmee de bovenstaande cijfers zijn gemeten, bevindt zich in de openbare repository onder MIT-licentie: astroway/astrology-accuracy-benchmark. Het werkt niet alleen met ons: een adapter naar elke andere API is dertig regels code, dus dezelfde 130 metingen kunnen worden uitgevoerd tegen een concurrent en vergeleken. Een sandbox-sleutel is voldoende.
Engine
Section titled “Engine”| Component | Waarde |
|---|---|
| Bibliotheek | Swiss Ephemeris C code (aloistr/swisseph) |
| Versie | upstream Astrodienst C code |
| Efemeriden | DE431 JPL efemeriden (via .se1 bestanden) |
| Fallback | Moshier analytical (voor datums buiten 1800-2399) |
| Code sharing | Gedeelde @/core met app.astroway.info - één engine, twee transporten |
Methodiek
Section titled “Methodiek”De nauwkeurigheid wordt gecontroleerd via triangulatie - vergelijking met drie onafhankelijke bronnen:
1. swetest CGI (referentie)
Section titled “1. swetest CGI (referentie)”De officiële referentie-implementatie van Swiss Ephemeris van Astrodienst zelf - het team dat Astro.com heeft gecreëerd en miljoenen astrologen wereldwijd bedient. De meest gezaghebbende openbare bron. Onze engine is identiek (0.00–0.07 boogseconde drift).
2. Kerykeion (Python)
Section titled “2. Kerykeion (Python)”Een onafhankelijke Python-bibliotheek gebruikt pyswisseph-bindings, onafhankelijk van onze
build. Bevestigt dat onze wrapper-laag de gegevens niet vervormt.
3. Prokerala API
Section titled “3. Prokerala API”Een externe Swiss Ephemeris API (sidereal Lahiri). Systemische drift van 8–17 boogseconden is gerelateerd aan verschillende versies van de Lahiri ayanamsa-formule, en niet aan de nauwkeurigheid van de engine.
Triangulatieresultaten
Section titled “Triangulatieresultaten”| Kaart | tegen swetest (Astrodienst) | tegen Kerykeion (Python) | tegen Prokerala API |
|---|---|---|---|
| Monroe 1926 | 0.00” | 0.19” | 16.95” (systemic) |
| Diana 1961 | 0.00” | 0.69” | 8.18” (systemic) |
| Einstein 1879 | 0.07” | LMT-artefact Kerykeion | 14.96” (systemic) |
Onafhankelijke verificatie met een externe tool
Section titled “Onafhankelijke verificatie met een externe tool”RoxyAPI publiceert hun eigen benchmark tegen NASA JPL Horizons DE441: MIT-licentie,
alleen de standaardbibliotheek, 21 kaarten en 210 posities, en de --base-url vlag,
om deze op elke andere API te richten. In hun README staat expliciet dat
de toleranties opzettelijk niet zijn aangepast aan hun eigen engine, omdat een benchmark die
een concurrent moet controleren, eerlijk moet zijn.
Wij hebben deze op onszelf gericht, zonder ook maar één getal in hun code te wijzigen. De adapter hernoemt één aanvraagveld en verwijdert één antwoordwrapper.
| AstroWay | RoxyAPI, hun run 2026-09-29 | |
|---|---|---|
| Binnen tolerantie | 210 van 210 | 210 van 210 |
| Mediaan afwijking | 0.11" | 0.05" |
| Maximum | 0.60" | 0.78" |
Onze meting van 2026-09-09, kosten 21 API-aanvragen. RoxyAPI is in september overgestapt op directe uitlezing van DE440, en hun mediaan is nu lager dan de onze; ons maximum is lager dan het hunne. Gesorteerde uitvoer van alle 210 regels: CSV.
Regressie-set op endpoint-niveau
Section titled “Regressie-set op endpoint-niveau”Elk van de basisberekenings-endpoints is gedekt door bevroren snapshot-tests op 3 referentiekaarten (Monroe / Diana / Einstein) = 873 snapshots.
De snapshot-suite vangt:
- Bugs in input-mapping: verkeerde planeet-ID, UT, huizensysteem
- Post-processing: afronding, eenheidsconversie, tekenverlies
- Afwijking van defaults: mean vs true node, geocentrisch vs topocentrisch
- Schema drift: validatie heeft een onjuiste vorm gemist
- Verouderde deployment: prod dist komt niet overeen met de code
Tolerantie: 5e-5° (≈0.18 boogseconde) standaard voor alle numerieke velden.
Gedetailleerde benchmarks
Section titled “Gedetailleerde benchmarks”Planetaire posities (tropisch, tegen swetest)
Section titled “Planetaire posities (tropisch, tegen swetest)”| Kaart | Datum | Maximale drift |
|---|---|---|
| Marilyn Monroe | 1926-06-01 | 0.00” |
| Princess Diana | 1961-07-01 | 0.00” |
| Albert Einstein | 1879-03-14 | 0.07” |
Placidus huizenpunten (tegen swetest)
Section titled “Placidus huizenpunten (tegen swetest)”| Kaart | drift ASC | drift MC | Maximale drift cusp |
|---|---|---|---|
| Monroe | 0.000” | 0.000” | 0.000” |
| Diana | 0.000” | 0.000” | 0.000” |
Verduisteringen (tegen NASA 5-Millennium Catalog)
Section titled “Verduisteringen (tegen NASA 5-Millennium Catalog)”| Gebeurtenis | NASA maximum | Ons maximum | Drift |
|---|---|---|---|
| 2025-03-14 Totale Maansverduistering | 06:58 UT | 06:58 UT | 0.8 min |
| 2025-03-29 Gedeeltelijke Zonsverduistering | 10:47 UT | 10:47 UT | 0.5 min |
| 2025-09-07 Totale Maansverduistering | 18:11 UT | 18:11 UT | 0.8 min |
| 2025-09-21 Gedeeltelijke Zonsverduistering | 19:41 UT | 19:42 UT | 1.0 min |
Astrocartografie (tegen de RA-formule van swetest)
Section titled “Astrocartografie (tegen de RA-formule van swetest)”De MC- en IC-lijnen worden geconstrueerd met de formule longitude = RA − GMST (standaard Kenneth
Bowser). Drift ten opzichte van de referentie: < 1.5 km op de evenaar voor alle planeten.
De horizonlijnen ASC en DSC worden berekend met de horizonvergelijking in dezelfde
equatoriale coördinaten: cos H = -tan φ · tan δ, waarbij H = (GMST + lng) − RA.
De helften verschillen in het teken van de uurhoek: bij H < 0 bevindt het lichaam zich oostelijk van de meridiaan,
d.w.z. het rijst. De controle die we bij elke run uitvoeren: elk
punt van elke horizoncurve wordt genomen en de hoogte van het lichaam boven de horizon wordt daarin berekend.
Op 8419 punten is de maximale afwijking 0.0 km, wat betekent dat het lichaam inderdaad op
de horizon staat overal waar we de lijn hebben getrokken.
Zonsopgang / Zonsondergang (tegen timeanddate.com)
Section titled “Zonsopgang / Zonsondergang (tegen timeanddate.com)”| Locatie | Datum | Parameter | Drift |
|---|---|---|---|
| London | 2026-04-15 | Zonsopgang | 0.6 s |
| London | 2026-04-15 | Zonsondergang | 9 s |
Polaire locaties (|lat| > 66.5°) retourneren automatisch polarState + een
waarschuwing dat normale planetaire uren niet gedefinieerd zijn.
Orbissen van aspecten
Section titled “Orbissen van aspecten”AstroWay gebruikt variabele orbissen per planeet (MIN-regel van twee planeten), zoals in ZET9 en astro.com. Standaardorbissen (voor de geboortehoroscoop):
| Aspect | Zon | Maan | Binnen | Jupiter | Buiten |
|---|---|---|---|---|---|
| Conjunction | 12° | 10° | 5° | 8° | 5° |
| Sextile | 6.5° | 6° | 5° | 5° | 5° |
| Square | 10° | 8° | 5° | 7° | 5° |
| Trine | 12° | 8° | 5° | 5° | 5° |
| Opposition | 12° | 10° | 5° | 8° | 5° |
Mineure aspecten (36°, 40°, 45°, 72°, 108°, 135°, 144°) zijn standaard
uitgeschakeld. Ze worden expliciet ingeschakeld via ALL_ASPECTS.
Polaire breedtegraden
Section titled “Polaire breedtegraden”Voor |lat| > 66.5° zijn de systemen Placidus / Koch / Regiomontanus mathematisch niet gedefinieerd. In dergelijke gevallen retourneert Swiss Ephemeris automatisch Porphyry, en onze API voegt een waarschuwing toe:
{ "system": "P", "warning": "Placidus system is undefined for lat=68.96° (> 66.5°). Swiss Ephemeris fell back to Porphyry..."}Continue verificatie
Section titled “Continue verificatie”Regressie wordt bij elke PR gecontroleerd via CI:
api-calc/tests/endpoints/: 873 snapshots tegen referentiekaarten (Monroe / Diana / Einstein) + synastry / composite / davison.github/workflows/api-accuracy.yml: automatische start bij PR- Triangulatie tegen swetest CGI + Kerykeion: wekelijks
- Monitoring van upstream Swiss Ephemeris via Dependabot
Betrouwbaarheid van MCP: getypeerde uitvoer
Section titled “Betrouwbaarheid van MCP: getypeerde uitvoer”De nauwkeurigheid van de engine is de helft van het vertrouwen. De andere helft is het uitvoercontract, dat een agent (Claude, ChatGPT, Cursor) kan valideren. Onze MCP-server retourneert geen “ruwe tekst, zoek het zelf maar uit”:
- Getypeerde
structuredContent. Meer dan 600 MCP-tools, en de overgrote meerderheid daarvan publiceert een striktoutputSchema- de MCP-client ontvangt een gevalideerde structuur, en niet een willekeurig te parsen string. - Bescherming tegen schema drift. De CI-test
openapi-example-driftvalideert elke regressie-snapshot tegen het schema dat is afgeleid van zijn eigen voorbeeld: als de werkelijke uitvoer van het endpoint afwijkt van het gepubliceerde schema, faalt de build. Juist deze klasse van discrepanties veroorzaakt de MCP-fout-32602 Output validation error. - Fouten: het zijn fouten. Een toolfout wordt altijd geretourneerd met de vlag
isErroren een getypeerde code (UPPER_SNAKE). Wij geven nooit een model een ruwe stack trace of interne serverpaden als “data”.
Dat betekent dat integratie via MCP net zo voorspelbaar is als een directe REST-aanroep: wat
beschreven staat in /openapi.json, is wat de tool retourneert.
Bekende beperkingen
Section titled “Bekende beperkingen”- Datums buiten bereik (vóór 1800 en na 2399): Moshier analytical wordt gebruikt, nauwkeurigheid ~0.1” (tegenover < 0.01” voor SWIEPH met DE431-bestanden)
- True Lilith (id=13) vs Mean Lilith (id=12): verschil tot 12° - standaard
Mean Lilith (stabiel gedrag), True Lilith is beschikbaar via
planetIds: [13] - Topocentrisch vs geocentrisch: standaard geocentrisch
- Swiss Ephemeris: https://www.astro.com/swisseph/
- swetest CGI: https://www.astro.com/swisseph/swetest.htm
- NASA Eclipse Catalogus: https://eclipse.gsfc.nasa.gov/
- Kerykeion: https://github.com/g-battaglia/kerykeion
- Astrodienst: https://www.astro.com/
Contact
Section titled “Contact”Voor vragen over nauwkeurigheid: stuur een e-mail naar support@astroway.info met de kaartgegevens en de verwachte referentie (astro.com of een andere gezaghebbende bron).