Sari la conținut
AstroWay/api v2.254.12 · ro
toate sistemele sunt în stare normală

Precizia calculelor

API-ul AstroWay utilizează Swiss Ephemeris (codul C oficial de la Astrodienst, creatorii astro.com) - același motor pe care astrologii profesioniști lucrează de peste 30 de ani în Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/lună) și Janus. Îl rulăm pe propriile noastre servere și îl oferim ca un strat REST API, fără adaosuri intermediare. Fiecare dintre endpoint-urile de calcul de bază este acoperit de teste de regresie snapshot; precizia motorului este verificată prin triangulare cu trei surse independente + împotriva Catalogului de Eclipse NASA 5-Millennium:

  • Poziții planetare: mediana 0.0013", maximul 0.561" vs. swetest CGI oficial Astrodienst (măsurat 2026-07-29 pe 130 de măsurători). Defalcare pe corpuri mai jos
  • Rulare independentă cu un benchmark extern (RoxyAPI, împotriva NASA JPL Horizons DE441): 210 din 210 în limitele toleranței, mediana 0.11", maximul 0.60"
  • Cuspidele caselor Placidus: 0.000" potrivire exactă
  • Eclipse: < 1 minut vs. Catalogul de Eclipse NASA
  • Linii ACG: < 1.5 km la ecuator vs. swetest
  • Răsărit/apus de soare: < 10 secunde vs. timeanddate.com
  • VOC Lună, ingresuri, conjuncții planetare: precizie până la o fracțiune de secundă

Aceste numere nu sunt o estimare, ci rezultatul unei rulări. Scriptul ia 10 hărți, împrăștiate între anii 1900 și 2050, interoghează aceleași momente în swetest CGI Astrodienst live și compară toate cele 13 corpuri pe care le returnăm. În total 130 de măsurători.

CorpDrift maxim
Soare, Venus, Saturn0.001"
Mercur0.002"
Nodul adevărat0.004"
Marte0.007"
Jupiter0.009"
Lună0.022"
Uranus0.083"
Pluto0.097"
Neptun0.223"
Chiron0.561"
Apogeu mediu (Lilith)0.000"

Mediana pentru toate cele 130 de măsurători: 0.0013".

Anterior, pe această pagină exista o promisiune generală ”< 0.1 arcsec”. Măsurătorile din 2026-07-29 au arătat că Neptun, Pluto și Chiron nu o respectă, așa că promisiunea a fost înlocuită cu numerele reale. Chiron și planetele exterioare au un drift mai mare deoarece pozițiile lor sunt preluate dintr-un set comprimat de efemere, utilizat de build-ul nostru.

Poți reproduce singur: api-calc/scripts/accuracy-vs-swetest.mjs efectuează exact aceste interogări și tipărește același tabel.

Verifică singur. Scriptul cu care au fost măsurate numerele de mai sus se află într-un depozit public sub licență MIT: astroway/astrology-accuracy-benchmark. Nu funcționează doar cu noi: un adaptor pentru orice alt API înseamnă treizeci de rânduri, așa că aceleași 130 de măsurători pot fi rulate împotriva unui concurent și comparate. O cheie de sandbox este suficientă.

ComponentăValoare
BibliotecăSwiss Ephemeris C code (aloistr/swisseph)
Versiuneupstream Astrodienst C code
EfemereDE431 JPL ephemeris (prin fișiere .se1)
Mecanism de rezervăMoshier analytical (pentru date în afara intervalului 1800-2399)
Partajare codShared @/core cu app.astroway.info - un singur motor, două transporturi

Precizia este verificată prin triangulare - compararea cu trei surse independente:

Implementarea de referință oficială Swiss Ephemeris de la Astrodienst înșiși - echipa care a creat Astro.com și deservește milioane de astrologi din întreaga lume. Cea mai autoritară sursă publică. Motorul nostru este identic (0.00–0.07 secunde de arc drift).

O bibliotecă Python independentă folosește pyswisseph-bindings, independente de build-ul nostru. Confirmă că stratul nostru de wrapper nu distorsionează datele.

API-ul Swiss Ephemeris la distanță (sideral Lahiri). Driftul sistemic de 8–17 secunde de arc este legat de diferite versiuni ale formulei Lahiri ayanamsa, și nu de precizia motorului.

Hartăvs. swetest (Astrodienst)vs. Kerykeion (Python)vs. Prokerala API
Monroe 19260.00”0.19”16.95” (sistemic)
Diana 19610.00”0.69”8.18” (sistemic)
Einstein 18790.07”Artefact LMT Kerykeion14.96” (sistemic)

Verificare independentă cu un instrument extern

Section titled “Verificare independentă cu un instrument extern”

RoxyAPI publică propriul benchmark împotriva NASA JPL Horizons DE441: licență MIT, doar biblioteca standard, 21 de hărți și 210 poziții, și flag-ul --base-url pentru a-l ținti către orice alt API. În README-ul lor este menționat explicit că toleranțele nu au fost ajustate intenționat pentru propriul lor motor, deoarece un benchmark care propune verificarea unui concurent trebuie să fie onest.

L-am țintit către noi, fără a schimba niciun număr în codul lor. Adaptorul redenumește un câmp de cerere și elimină un wrapper de răspuns.

AstroWayRoxyAPI, rularea lor 2026-09-29
În limitele toleranței210 din 210210 din 210
Mediana deviației0.11"0.05"
Maximul0.60"0.78"

Măsurătoarea noastră din 2026-09-09, cost 21 de cereri API. RoxyAPI a trecut în septembrie la citirea directă a DE440, iar mediana lor este acum mai mică decât a noastră; maximul nostru este mai mic decât al lor. Ieșirea secvențială a tuturor celor 210 rânduri: CSV.

Fiecare dintre endpoint-urile de calcul de bază este acoperit de teste snapshot înghețate pe 3 hărți de referință (Monroe / Diana / Einstein) = 873 snapshot-uri.

Suita de snapshot-uri detectează:

  • Bug-uri de mapare a datelor de intrare: ID planetă incorect, UT, sistem de case
  • Post-procesare: rotunjire, conversie unități, pierdere de semn
  • Divergența valorilor implicite: nod mediu vs nod adevărat, geocentric vs topocentric
  • Schema drift: validarea a omis o formă incorectă
  • Deploy învechit: distribuția de producție nu corespunde codului

Toleranță: 5e-5° (≈0.18 secunde de arc) implicit pentru toate câmpurile numerice.

Poziții planetare (tropical, vs. swetest)

Section titled “Poziții planetare (tropical, vs. swetest)”
HartăDatăDrift maxim
Marilyn Monroe1926-06-010.00”
Princess Diana1961-07-010.00”
Albert Einstein1879-03-140.07”
Hartădrift ASCdrift MCDrift maxim cuspidă
Monroe0.000”0.000”0.000”
Diana0.000”0.000”0.000”
EvenimentMaxim NASAMaximul nostruDrift
2025-03-14 Totală Lunară06:58 UT06:58 UT0.8 min
2025-03-29 Parțială Solară10:47 UT10:47 UT0.5 min
2025-09-07 Totală Lunară18:11 UT18:11 UT0.8 min
2025-09-21 Parțială Solară19:41 UT19:42 UT1.0 min

Astrocartografie (vs. formula RA din swetest)

Section titled “Astrocartografie (vs. formula RA din swetest)”

Liniile MC și IC sunt construite conform formulei longitude = RA − GMST (standard Kenneth Bowser). Drift față de referință: < 1.5 km la ecuator pentru toate planetele.

Liniile orizontale ASC și DSC sunt calculate din ecuația orizontului în aceleași coordonate ecuatoriale: cos H = -tan φ · tan δ, unde H = (GMST + lng) − RA. Cele două jumătăți diferă prin semnul unghiului orar: la H < 0 corpul este la est de meridian, adică răsare. Verificarea pe care o rulăm la fiecare execuție: se ia fiecare punct al fiecărei curbe orizontale și se calculează înălțimea corpului deasupra orizontului în acel punct. La 8419 puncte, deviația maximă este de 0.0 km, adică corpul se află într-adevăr la orizont oriunde am trasat linia.

Răsărit / Apus de Soare (vs. timeanddate.com)

Section titled “Răsărit / Apus de Soare (vs. timeanddate.com)”
LocațieDatăParametruDrift
London2026-04-15Răsărit0.6 s
London2026-04-15Apus9 s

Locațiile polare (|lat| > 66.5°) returnează automat polarState + avertisment că orele planetare obișnuite nu sunt definite.

AstroWay utilizează orbe variabile per-planetă (regula MIN a două planete), ca în ZET9 și astro.com. Orbe implicite (pentru harta natală):

AspectSoareLunăInterioareJupiterExterioare
Conjuncție12°10°5°8°5°
Sextil6.5°6°5°5°5°
Cuadratură10°8°5°7°5°
Trigon12°8°5°5°5°
Opoziție12°10°5°8°5°

Aspectele minore (36°, 40°, 45°, 72°, 108°, 135°, 144°) sunt dezactivate implicit. Se activează explicit prin ALL_ASPECTS.

Pentru |lat| > 66.5°, sistemele Placidus / Koch / Regiomontanus nu sunt definite matematic. În astfel de cazuri, Swiss Ephemeris returnează automat Porphyry, iar API-ul nostru adaugă un avertisment:

{
"system": "P",
"warning": "Placidus system is undefined for lat=68.96° (> 66.5°). Swiss Ephemeris fell back to Porphyry..."
}

Regresia este verificată la fiecare PR prin CI:

  • api-calc/tests/endpoints/: 873 snapshot-uri împotriva hărților de referință (Monroe / Diana / Einstein) + sinastrie / compozit / davison
  • .github/workflows/api-accuracy.yml: rulare automată la PR
  • Triangulare împotriva swetest CGI + Kerykeion: săptămânal
  • Monitorizare upstream Swiss Ephemeris prin Dependabot

Precizia motorului este jumătate din încredere. A doua jumătate este contractul de ieșire, pe care un agent (Claude, ChatGPT, Cursor) îl poate valida. Serverul nostru MCP nu returnează “text brut, descurcă-te singur”:

  • structuredContent tipizat. Peste 600 de instrumente MCP, iar majoritatea covârșitoare dintre ele publică o outputSchema strictă - clientul MCP primește o structură validată, nu un șir de caractere pe care trebuie să-l parseze la întâmplare.
  • Protecție împotriva schema drift. Testul CI openapi-example-drift validează fiecare regression-snapshot împotriva schemei derivate din propriul său exemplu: dacă ieșirea reală a endpoint-ului diferă de schema publicată, build-ul eșuează. Exact această clasă de discrepanțe cauzează eroarea MCP -32602 Output validation error.
  • Erori: sunt erori. O defecțiune a instrumentului este întotdeauna returnată cu flag-ul isError și un cod tipizat (UPPER_SNAKE). Noi nu oferim niciodată modelului un stack trace brut sau căi interne ale serverului ca “date”.

Adică, integrarea prin MCP este la fel de previzibilă ca și un apel REST direct: ceea ce este descris în /openapi.json este ceea ce returnează instrumentul.

  • Date în afara intervalului (înainte de 1800 și după 2399): se utilizează Moshier analytical, precizie ~0.1” (vs. < 0.01” pentru SWIEPH cu fișiere DE431)
  • True Lilith (id=13) vs Mean Lilith (id=12): diferență de până la 12° - implicit Mean Lilith (comportament stabil), True Lilith este disponibil prin planetIds: [13]
  • Topocentric vs geocentric: implicit geocentric

Pentru întrebări legate de precizie: scrie la support@astroway.info cu datele hărții și referința așteptată (astro.com sau altă sursă autoritară).

Util?
Sugerează o corectură

Ultima actualizare: