Salta ai contenuti
AstroWay/api v2.254.12 · it
tutti i sistemi sono operativi

Precisione dei calcoli

L’API AstroWay utilizza Swiss Ephemeris (il 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 eseguiamo sui nostri server e lo forniamo tramite uno strato 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", massimo 0.561" vs CGI swetest ufficiale di Astrodienst (misurato il 2026-07-29 su 130 misurazioni). Dettaglio per corpo celeste di seguito
  • Esecuzione indipendente con benchmark esterno (RoxyAPI, contro NASA JPL Horizons DE441): 210 su 210 entro la tolleranza, mediana 0.11", massimo 0.60"
  • Cuspidi delle case Placidus: 0.000" exact match
  • Eclissi: < 1 minuto vs NASA Eclipse Catalog
  • Linee ACG: < 1.5 km all’equatore vs swetest
  • Alba/tramonto: < 10 secondi vs timeanddate.com
  • Luna VOC, ingressi, congiunzioni planetarie: precisione al frazione di secondo

Questi numeri non sono una stima, ma il risultato di un’esecuzione. Lo script prende 10 carte, distribuite dal 1900 al 2050, richiede gli stessi momenti al CGI swetest live di Astrodienst e confronta tutti i 13 corpi celesti che forniamo. In totale 130 misurazioni.

Corpo celesteDeriva massima
Sole, Venere, Saturno0.001"
Mercurio0.002"
true Node0.004"
Marte0.007"
Giove0.009"
Luna0.022"
Urano0.083"
Plutone0.097"
Nettuno0.223"
Chirone0.561"
mean Apogee (Lilith)0.000"

Mediana su tutte le 130 misurazioni: 0.0013".

In precedenza, su questa pagina c’era una promessa generale di ”< 0.1 arcsec”. Le misurazioni del 2026-07-29 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 una deriva maggiore perché le loro posizioni sono prese da un set compresso di effemeridi utilizzato dalla nostra build.

Puoi riprodurre autonomamente: api-calc/scripts/accuracy-vs-swetest.mjs esegue esattamente queste richieste e stampa la stessa tabella.

Verifica tu stesso. Lo script con cui sono stati misurati i numeri sopra si trova in un repository pubblico sotto licenza MIT: astroway/astrology-accuracy-benchmark. Funziona non solo con noi: un adattatore per qualsiasi altra API è di trenta righe, quindi le stesse 130 misurazioni possono essere eseguite contro un concorrente e confrontate. Una chiave sandbox è sufficiente.

ComponenteValore
LibreriaSwiss Ephemeris C code (aloistr/swisseph)
Versioneupstream Astrodienst C code
EphemerisDE431 JPL ephemeris (tramite file .se1)
FallbackMoshier analytical (per date fuori 1800-2399)
Code sharingCondiviso @/core con app.astroway.info - un motore, due trasporti

La precisione è verificata tramite triangolazione - confronto con tre fonti indipendenti:

Implementazione di riferimento ufficiale di Swiss Ephemeris da Astrodienst stessi - 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 deriva).

Una libreria Python indipendente utilizza i pyswisseph-bindings, indipendenti dalla nostra build. Conferma che il nostro strato di wrapper non distorce i dati.

API Swiss Ephemeris remota (sidereo Lahiri). La deriva sistemica di 8–17 secondi d’arco è legata a diverse versioni della formula Lahiri ayanamsa, e non alla precisione del motore.

Cartavs swetest (Astrodienst)vs Kerykeion (Python)vs Prokerala API
Monroe 19260.00”0.19”16.95” (sistemico)
Diana 19610.00”0.69”8.18” (sistemico)
Einstein 18790.07”Artefatto LMT di Kerykeion14.96” (sistemico)

RoxyAPI pubblica il proprio benchmark contro NASA JPL Horizons DE441: licenza MIT, solo libreria standard, 21 carte e 210 posizioni, e il flag --base-url per puntarlo a qualsiasi altra API. Nel loro README è esplicitamente dichiarato che le tolleranze non sono state intenzionalmente adattate al loro motore, perché un benchmark che propone di verificare un concorrente deve essere onesto.

Lo abbiamo puntato su noi stessi, senza modificare alcun numero nel loro codice. L’adattatore rinomina un campo di richiesta e rimuove un wrapper di risposta.

AstroWayRoxyAPI, loro esecuzione 2026-09-29
Entro la tolleranza210 su 210210 su 210
Mediana della deviazione0.11"0.05"
Massimo0.60"0.78"

La nostra misurazione del 2026-09-09, costo 21 richieste API. RoxyAPI a settembre è passato alla lettura diretta di DE440, e la loro mediana è ora inferiore alla nostra; il nostro massimo è inferiore al loro. Output sequenziale di tutte le 210 righe: CSV.

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 errato, UT, sistema di case
  • Post-elaborazione: arrotondamento, conversione di unità, perdita di segno
  • Discrepanza dei default: mean vs true node, geocentric vs topocentric
  • Schema drift: la validazione ha saltato 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.

CartaDataDeriva massima
Marilyn Monroe1926-06-010.00”
Princess Diana1961-07-010.00”
Albert Einstein1879-03-140.07”
Cartaderiva ASCderiva MCDeriva massima cuspide
Monroe0.000”0.000”0.000”
Diana0.000”0.000”0.000”
EventoMassimo NASANostro massimoDeriva
2025-03-14 Totale Lunare06:58 UT06:58 UT0.8 min
2025-03-29 Parziale Solare10:47 UT10:47 UT0.5 min
2025-09-07 Totale Lunare18:11 UT18:11 UT0.8 min
2025-09-21 Parziale Solare19:41 UT19:42 UT1.0 min

Le linee MC e IC sono costruite secondo la formula longitude = RA − GMST (standard Kenneth Bowser). Deriva dal riferimento: < 1.5 km all’equatore per tutti i pianeti.

Le linee orizzontali ASC e DSC sono calcolate dall’equazione dell’orizzonte nelle stesse coordinate equatoriali: cos H = -tan φ · tan δ, dove H = (GMST + lng) − RA. Le due metà differiscono per il segno dell’angolo orario: con H < 0 il corpo è a est del meridiano, cioè sorge. La verifica che eseguiamo ad ogni esecuzione: si prende ogni punto di ogni curva orizzontale e si calcola l’altezza del corpo sopra l’orizzonte in quel punto. Su 8419 punti, la deviazione massima è 0.0 km, il che significa che il corpo si trova effettivamente sull’orizzonte ovunque abbiamo tracciato la linea.

LocalitàDataParametroDeriva
London2026-04-15Sunrise0.6 s
London2026-04-15Sunset9 s

Località polari (|lat| > 66.5°) restituiscono automaticamente polarState + un avviso che le ore planetarie normali non sono definite.

AstroWay utilizza orb variabili per pianeta (regola MIN dei due pianeti), come in ZET9 e astro.com. Orb predefiniti (per la carta natale):

AspettoSoleLunaInternoGioveEsterno
Congiunzione12°10°5°8°5°
Sestile6.5°6°5°5°5°
Quadratura10°8°5°7°5°
Trigono12°8°5°5°5°
Opposizione12°10°5°8°5°

Gli aspetti minori (36°, 40°, 45°, 72°, 108°, 135°, 144°) sono disattivati per impostazione predefinita. Si attivano esplicitamente tramite ALL_ASPECTS.

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 system is undefined for lat=68.96° (> 66.5°). Swiss Ephemeris fell back to Porphyry..."
}

La regressione è verificata ad ogni PR tramite CI:

  • api-calc/tests/endpoints/: 873 snapshot contro carte di riferimento (Monroe / Diana / Einstein) + sinastria / composita / davison
  • .github/workflows/api-accuracy.yml: esecuzione automatica su PR
  • Triangolazione contro swetest CGI + Kerykeion: settimanale
  • Monitoraggio di Swiss Ephemeris upstream tramite Dependabot

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”:

  • structuredContent tipizzato. Oltre 600 strumenti MCP, e la stragrande maggioranza di essi pubblica uno outputSchema rigoroso - il client MCP riceve una struttura validata, non una stringa da parsare a caso.
  • Protezione dallo schema drift. Il test CI openapi-example-drift valida ogni regression-snapshot contro lo schema derivato dal suo stesso esempio: se l’output effettivo dell’endpoint diverge dallo schema pubblicato, la build fallisce. È proprio questa classe di discrepanze che causa l’errore MCP -32602 Output validation error.
  • Errori: sono errori. Un fallimento dello strumento viene sempre restituito con il flag isError e un codice tipizzato (UPPER_SNAKE). Non forniamo mai 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.

  • Date fuori intervallo (prima del 1800 e dopo il 2399): viene utilizzato Moshier analytical, precisione ~0.1” (vs < 0.01” per SWIEPH con file DE431)
  • True Lilith (id=13) vs Mean Lilith (id=12): differenza fino a 12° - per default Mean Lilith (comportamento stabile), True Lilith è disponibile tramite planetIds: [13]
  • Topocentrico vs geocentrico: per default geocentrico

Per domande sulla precisione: scrivi a support@astroway.info con i dati della carta e il riferimento atteso (astro.com o altra fonte autorevole).

Utile?
Suggerisci modifica

Ultimo aggiornamento: