Berekeningsnauwkeurigheid
AstroWay API gebruikt Swiss Ephemeris (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. We hebben het gecompileerd naar WebAssembly en blootgesteld als een REST API-laag, zonder tussenliggende markup. 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 officiële swetest CGI Astrodienst (gemeten op 29-07-2026 over 130 metingen). Uitsplitsing per lichaam hieronder - Huizenpunten Placidus:
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, ingangen, planeetconjuncties: nauwkeurigheid tot een fractie van een seconde
Methodologie: hoe het precies is gemeten
Section titled “Methodologie: hoe het precies is gemeten”Deze cijfers zijn geen schatting, maar het resultaat van een run. Het script neemt 10 horoscopen, 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" |
| Chiron | 0.561" |
| mean Apogee (Lilith) | 0.000" |
Mediaan over alle 130 metingen: 0.0013".
Eerder stond op deze pagina een algemene belofte van ”< 0.1 boogseconde”. Metingen van 29-07-2026 toonden aan dat Neptunus, Pluto en Chiron dit niet haalden, daarom is de belofte vervangen door de feitelijke cijfers. Chiron en de buitenplaneten hebben een grotere drift omdat hun posities worden gehaald uit een gecomprimeerde set efemeriden in de WASM-assembly.
Je kunt het zelf reproduceren: api-calc/scripts/accuracy-vs-swetest.mjs voert precies deze queries uit en print dezelfde tabel.
Controleer het zelf. Het script waarmee de bovenstaande cijfers zijn gemeten, bevindt zich in de openbare repository onder MIT: 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 |
| Bindings | swisseph-wasm (WebAssembly in Node.js) |
| Ephemeris | DE431 JPL ephemeris (via .se1 bestanden) |
| Fallback | Moshier analytical (voor datums buiten 1800-2399) |
| Code sharing | Gedeelde @/core met app.astroway.info - één engine, twee transporten |
Methode
Section titled “Methode”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 in plaats van onze WASM. Bevestigt dat onze WASM-laag de gegevens niet vervormt.
3. Prokerala API
Section titled “3. Prokerala API”Externe Swiss Ephemeris API (sidereale 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.
Triangulatie resultaten
Section titled “Triangulatie resultaten”| Horoscoop | vs swetest (Astrodienst) | vs Kerykeion (Python) | vs 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) |
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 referentiehoroscopen (Monroe / Diana / Einstein) = 873 snapshots.
Snapshot-suite vangt:
- Bugs in input data mapping - onjuiste planeet-ID, UT, huizensysteem
- Post-processing - afronding, eenheidsconversie, tekenverlies
- Verschil in 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, vs swetest)
Section titled “Planetaire posities (tropisch, vs swetest)”| Horoscoop | Datum | Maximale drift |
|---|---|---|
| Marilyn Monroe | 1926-06-01 | 0.00” |
| Princess Diana | 1961-07-01 | 0.00” |
| Albert Einstein | 1879-03-14 | 0.07” |
Huizenpunten Placidus (vs swetest)
Section titled “Huizenpunten Placidus (vs swetest)”| Horoscoop | drift ASC | drift MC | Maximale drift cusp |
|---|---|---|---|
| Monroe | 0.000” | 0.000” | 0.000” |
| Diana | 0.000” | 0.000” | 0.000” |
Verduisteringen (vs NASA 5-Millennium Catalog)
Section titled “Verduisteringen (vs NASA 5-Millennium Catalog)”| Gebeurtenis | NASA maximum | Ons maximum | Drift |
|---|---|---|---|
| 2025-03-14 Lunar Total | 06:58 UT | 06:58 UT | 0.8 min |
| 2025-03-29 Solar Partial | 10:47 UT | 10:47 UT | 0.5 min |
| 2025-09-07 Lunar Total | 18:11 UT | 18:11 UT | 0.8 min |
| 2025-09-21 Solar Partial | 19:41 UT | 19:42 UT | 1.0 min |
Astrocartografie (vs RA-formule van swetest)
Section titled “Astrocartografie (vs RA-formule van swetest)”Alle MC/IC/ASC/DSC-lijnen gebruiken de juiste formule longitude = RA − GMST (Kenneth Bowser-standaard). Drift van de referentie: < 1.5 km op de evenaar voor alle planeten.
Zonsopgang / Zonsondergang (vs timeanddate.com)
Section titled “Zonsopgang / Zonsondergang (vs timeanddate.com)”| Locatie | Datum | Parameter | Drift |
|---|---|---|---|
| London | 2026-04-15 | Sunrise | 0.6 s |
| London | 2026-04-15 | Sunset | 9 s |
Polaire locaties (|lat| > 66.5°) retourneren automatisch polarState + waarschuwing dat normale planetaire uren niet zijn gedefinieerd.
Aspectorbissen
Section titled “Aspectorbissen”AstroWay gebruikt variabele orbissen per planeet (MIN-regel van twee planeten), zoals in ZET9 en astro.com. Standaardorbissen (voor de geboortehoroscoop):
| Aspect | Sun | Moon | Inner | Jupiter | Outer |
|---|---|---|---|---|---|
| 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 wiskundig niet gedefinieerd. In dergelijke gevallen retourneert Swiss Ephemeris automatisch Porphyry, en onze API voegt een waarschuwing toe:
{ "system": "P", "warning": "Система Placidus не визначена для lat=68.96° (> 66.5°). Swiss Ephemeris підставив Porphyry..."}Continue verificatie
Section titled “Continue verificatie”Regressie wordt bij elke PR gecontroleerd via CI:
api-calc/tests/endpoints/- 873 snapshots tegen referentiehoroscopen (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
MCP betrouwbaarheid - getypeerde output
Section titled “MCP betrouwbaarheid - getypeerde output”De nauwkeurigheid van de engine is de helft van het vertrouwen. De andere helft is het outputcontract, 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 geen willekeurige string die geparset moet worden. - 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 output van het endpoint afwijkt van het gepubliceerde schema, faalt de build. Juist deze klasse van afwijkingen veroorzaakt de MCP-fout-32602 Output validation error. - Fouten zijn fouten. Een toolfout wordt altijd geretourneerd met de vlag
isErroren een getypeerde code (UPPER_SNAKE). Wij geven nooit een ruwe stack trace of interne serverpaden als “data” aan het model.
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” (vs < 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
Referenties
Section titled “Referenties”- Swiss Ephemeris: https://www.astro.com/swisseph/
- swetest CGI: https://www.astro.com/swisseph/swetest.htm
- NASA Eclipse Catalog: 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: mail naar support@astroway.info met de horoscoopgegevens en de verwachte referentie (astro.com of een andere gezaghebbende bron).