Precisione dei calcoli
L’API AstroWay utilizza Swiss Ephemeris (codice C ufficiale di Astrodienst, i creatori di astro.com) - lo stesso motore su cui gli astrologi professionisti lavorano da oltre 30 anni in Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/mese) e Janus. Lo abbiamo compilato in WebAssembly e lo abbiamo esposto come livello API REST, senza margini di intermediazione. Ciascuno degli endpoint di calcolo di base è coperto da test di regressione snapshot; la precisione del motore è verificata tramite triangolazione con tre fonti indipendenti + contro il NASA 5-Millennium Eclipse Catalog:
- Posizioni planetarie: mediana
0.0013", massimo0.561"vs swetest CGI ufficiale di Astrodienst (misurato il 29/07/2026 su 130 misurazioni). Dettaglio per corpo celeste di seguito - Cuspide delle case Placidus:
0.000"corrispondenza esatta - Eclissi:
< 1 minutovs NASA Eclipse Catalog - Linee ACG:
< 1.5 kmall’equatore vs swetest - Alba/tramonto:
< 10 secondivs timeanddate.com - Luna VOC, ingresses, congiunzioni planetarie: precisione fino a frazioni di secondo
Metodologia: come è stato misurato
Sezione intitolata “Metodologia: come è stato misurato”Questi numeri non sono una stima, ma il risultato di un’esecuzione. Lo script prende 10 carte, distribuite dal 1900 al 2050, interroga gli stessi momenti nel swetest CGI live di Astrodienst e confronta tutti i 13 corpi che restituiamo. In totale 130 misurazioni.
| Corpo | Drift massimo |
|---|---|
| Sole, Venere, Saturno | 0.001" |
| Mercurio | 0.002" |
| Nodo vero | 0.004" |
| Marte | 0.007" |
| Giove | 0.009" |
| Luna | 0.022" |
| Urano | 0.083" |
| Plutone | 0.097" |
| Nettuno | 0.223" |
| Chirone | 0.561" |
| Apogeo medio (Lilith) | 0.000" |
Mediana su tutte le 130 misurazioni: 0.0013".
In precedenza su questa pagina c’era una promessa generale ”< 0.1 arcsec”. Le misurazioni del 29/07/2026 hanno mostrato che Nettuno, Plutone e Chirone non la mantengono, quindi la promessa è stata sostituita con i numeri effettivi. Chirone e i pianeti esterni hanno un drift maggiore perché le loro posizioni sono prese da un set compresso di effemeridi nell’assemblaggio WASM.
Puoi riprodurre autonomamente: api-calc/scripts/accuracy-vs-swetest.mjs esegue
esattamente queste query e stampa la stessa tabella.
Verifica tu stesso. Lo script con cui sono stati misurati i numeri sopra si trova nel repository pubblico sotto licenza MIT: astroway/astrology-accuracy-benchmark. Funziona non solo con noi: un adattatore per qualsiasi altra API sono trenta righe, quindi le stesse 130 misurazioni possono essere eseguite contro un concorrente e confrontate. Una chiave sandbox è sufficiente.
| Componente | Valore |
|---|---|
| Libreria | Swiss Ephemeris C code (aloistr/swisseph) |
| Versione | upstream Astrodienst C code |
| Bindings | swisseph-wasm (WebAssembly in Node.js) |
| Effemeridi | DE431 JPL ephemeris (tramite file .se1) |
| Fallback | Moshier analytical (per date fuori 1800-2399) |
| Code sharing | Shared @/core con app.astroway.info - un motore, due trasporti |
Metodologia
Sezione intitolata “Metodologia”La precisione è verificata tramite triangolazione - confronto con tre fonti indipendenti:
1. swetest CGI (riferimento)
Sezione intitolata “1. swetest CGI (riferimento)”L’implementazione di riferimento ufficiale di Swiss Ephemeris da parte di Astrodienst - il team che ha creato Astro.com e serve milioni di astrologi in tutto il mondo. La fonte pubblica più autorevole. Il nostro motore è identico (0.00–0.07 secondi d’arco di drift).
2. Kerykeion (Python)
Sezione intitolata “2. Kerykeion (Python)”Una libreria Python indipendente utilizza i binding pyswisseph invece del nostro
WASM. Conferma che il nostro livello WASM non distorce i dati.
3. Prokerala API
Sezione intitolata “3. Prokerala API”API Swiss Ephemeris remota (sidereal Lahiri). Il drift sistemico di 8–17 secondi d’arco è legato a diverse versioni della formula Lahiri ayanamsa, e non alla precisione del motore.
Risultati della triangolazione
Sezione intitolata “Risultati della triangolazione”| Carta | contro swetest (Astrodienst) | contro Kerykeion (Python) | contro Prokerala API |
|---|---|---|---|
| Monroe 1926 | 0.00” | 0.19” | 16.95” (systemic) |
| Diana 1961 | 0.00” | 0.69” | 8.18” (systemic) |
| Einstein 1879 | 0.07” | Artefatto LMT Kerykeion | 14.96” (systemic) |
Set di regressione a livello di endpoint
Sezione intitolata “Set di regressione a livello di endpoint”Ciascuno degli endpoint di calcolo di base è coperto da test snapshot congelati su 3 carte di riferimento (Monroe / Diana / Einstein) = 873 snapshot.
La suite di snapshot rileva:
- Bug di mappatura dei dati di input - ID pianeta, UT, sistema di case errati
- Post-elaborazione - arrotondamento, conversione di unità, perdita di segno
- Discrepanza dei valori predefiniti - nodo medio vs vero, geocentrico vs topocentrico
- Schema drift - la validazione ha omesso una forma errata
- Deploy obsoleto - la distribuzione di produzione non corrisponde al codice
Tolleranza: 5e-5° (≈0.18 secondi d’arco) per impostazione predefinita per tutti i campi numerici.
Benchmark dettagliati
Sezione intitolata “Benchmark dettagliati”Posizioni dei pianeti (tropico, contro swetest)
Sezione intitolata “Posizioni dei pianeti (tropico, contro swetest)”| Carta | Data | Drift massimo |
|---|---|---|
| Marilyn Monroe | 1926-06-01 | 0.00” |
| Princess Diana | 1961-07-01 | 0.00” |
| Albert Einstein | 1879-03-14 | 0.07” |
Cuspide delle case Placidus (contro swetest)
Sezione intitolata “Cuspide delle case Placidus (contro swetest)”| Carta | drift ASC | drift MC | Drift massimo cuspide |
|---|---|---|---|
| Monroe | 0.000” | 0.000” | 0.000” |
| Diana | 0.000” | 0.000” | 0.000” |
Eclissi (contro NASA 5-Millennium Catalog)
Sezione intitolata “Eclissi (contro NASA 5-Millennium Catalog)”| Evento | Massimo NASA | Nostro massimo | Drift |
|---|---|---|---|
| 2025-03-14 Lunare Totale | 06:58 UT | 06:58 UT | 0.8 min |
| 2025-03-29 Solare Parziale | 10:47 UT | 10:47 UT | 0.5 min |
| 2025-09-07 Lunare Totale | 18:11 UT | 18:11 UT | 0.8 min |
| 2025-09-21 Solare Parziale | 19:41 UT | 19:42 UT | 1.0 min |
Astrocartografia (contro la formula RA di swetest)
Sezione intitolata “Astrocartografia (contro la formula RA di swetest)”Tutte le linee MC/IC/ASC/DSC utilizzano la formula corretta longitude = RA − GMST
(standard Kenneth Bowser). Drift dal riferimento: < 1.5 km all’equatore per
tutti i pianeti.
Alba / Tramonto (contro timeanddate.com)
Sezione intitolata “Alba / Tramonto (contro timeanddate.com)”| Località | Data | Parametro | Drift |
|---|---|---|---|
| London | 2026-04-15 | Alba | 0.6 s |
| London | 2026-04-15 | Tramonto | 9 s |
Le località polari (|lat| > 66.5°) restituiscono automaticamente polarState +
un avviso che le normali ore planetarie non sono definite.
Orbite degli aspetti
Sezione intitolata “Orbite degli aspetti”AstroWay utilizza orbite variabili per pianeta (regola MIN dei due pianeti), come in ZET9 e astro.com. Orbite predefinite (per la carta natale):
| Aspetto | Sole | Luna | Interni | Giove | Esterni |
|---|---|---|---|---|---|
| Congiunzione | 12° | 10° | 5° | 8° | 5° |
| Sestile | 6.5° | 6° | 5° | 5° | 5° |
| Quadrato | 10° | 8° | 5° | 7° | 5° |
| Trigono | 12° | 8° | 5° | 5° | 5° |
| Opposizione | 12° | 10° | 5° | 8° | 5° |
Gli aspetti minori (36°, 40°, 45°, 72°, 108°, 135°, 144°) sono disabilitati per impostazione predefinita.
Si attivano esplicitamente tramite ALL_ASPECTS.
Latitudini polari
Sezione intitolata “Latitudini polari”Per |lat| > 66.5° i sistemi Placidus / Koch / Regiomontanus non sono matematicamente definiti. In questi casi Swiss Ephemeris restituisce automaticamente Porphyry, e la nostra API aggiunge un avviso:
{ "system": "P", "warning": "Система Placidus не визначена для lat=68.96° (> 66.5°). Swiss Ephemeris підставив Porphyry..."}Verifica continua
Sezione intitolata “Verifica continua”La regressione viene verificata ad ogni PR tramite CI:
api-calc/tests/endpoints/- 873 snapshot contro carte di riferimento (Monroe / Diana / Einstein) + sinastria / composito / davison.github/workflows/api-accuracy.yml- avvio automatico su PR- Triangolazione contro swetest CGI + Kerykeion - settimanalmente
- Monitoraggio di Swiss Ephemeris upstream tramite Dependabot
Affidabilità MCP - output tipizzato
Sezione intitolata “Affidabilità MCP - output tipizzato”La precisione del motore è metà della fiducia. L’altra metà è il contratto di output, che un agente (Claude, ChatGPT, Cursor) può validare. Il nostro server MCP non restituisce “testo grezzo, arrangiatevi”:
structuredContenttipizzato. Oltre 600 strumenti MCP, e la stragrande maggioranza di essi pubblica unooutputSchemarigoroso - il client MCP riceve una struttura validata, non una stringa da parsare a caso.- Protezione dallo schema drift. Il test CI
openapi-example-driftvalida ogni snapshot di regressione contro lo schema derivato dal suo stesso esempio: se l’output reale dell’endpoint diverge dallo schema pubblicato, la build fallisce. È proprio questa classe di discrepanze che causa l’errore MCP-32602 Output validation error. - Gli errori sono errori. Un fallimento dello strumento viene sempre restituito con il flag
isErrore un codice tipizzato (UPPER_SNAKE). Non mai restituiamo al modello uno stack trace grezzo o percorsi interni del server come “dati”.
Ciò significa che l’integrazione tramite MCP è prevedibile quanto una chiamata REST diretta: ciò che
è descritto in /openapi.json è ciò che lo strumento restituisce.
Limitazioni note
Sezione intitolata “Limitazioni note”- Date fuori intervallo (prima del 1800 e dopo il 2399): viene utilizzato Moshier analytical, precisione ~0.1” (contro < 0.01” per SWIEPH con file DE431)
- Lilith Vera (id=13) vs Lilith Media (id=12): differenza fino a 12° - per impostazione predefinita
Lilith Media (comportamento stabile), Lilith Vera disponibile tramite
planetIds: [13] - Topocentrico vs geocentrico: per impostazione predefinita geocentrico
Riferimenti
Sezione intitolata “Riferimenti”- Swiss Ephemeris: https://www.astro.com/swisseph/
- swetest CGI: https://www.astro.com/swisseph/swetest.htm
- Catalogo delle eclissi NASA: https://eclipse.gsfc.nasa.gov/
- Kerykeion: https://github.com/g-battaglia/kerykeion
- Astrodienst: https://www.astro.com/
Contatti
Sezione intitolata “Contatti”Per domande sulla precisione: scrivi a support@astroway.info con i dati della carta e il riferimento atteso (astro.com o altra fonte autorevole).