Перейти до вмісту
AstroWay/api v2.200.11 · docs
усі системи в нормі

Точність розрахунків

AstroWay API використовує Swiss Ephemeris (офіційний C-код від Astrodienst, творців astro.com) - той самий движок, на якому професійні астрологи 30+ років працюють у Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/міс) і Janus. Ми зібрали його у WebAssembly і виставили REST API-шаром, без посередницької націнки. Кожен із базових розрахункових ендпоінтів покритий regression snapshot-тестами; точність двигуна верифікована через triangulation з трьома незалежними джерелами + проти NASA 5-Millennium Eclipse Catalog:

  • Планетні позиції: медіана 0.0013", максимум 0.561" vs офіційного swetest CGI Astrodienst (заміряно 2026-07-29 на 130 замірах). Розбивка по тілах нижче
  • Незалежний прогін чужим бенчмарком (RoxyAPI, проти NASA JPL Horizons DE441): 210 з 210 у межах допуску, медіана 0.11", максимум 0.60"
  • Куспиди домів Placidus: 0.000" exact match
  • Затемнення: < 1 хвилина vs NASA Eclipse Catalog
  • ACG лінії: < 1.5 км на екваторі vs swetest
  • Sunrise/sunset: < 10 секунд vs timeanddate.com
  • Moon VOC, ingresses, planet conjunctions: точність до частки секунди

Методологія: як саме заміряно

Section titled “Методологія: як саме заміряно”

Ці числа не оцінка, а результат прогону. Скрипт бере 10 карт, рознесених від 1900 до 2050 року, запитує ті самі моменти в живого swetest CGI Astrodienst і порівнює всі 13 тіл, які ми віддаємо. Разом 130 замірів.

ТілоМаксимальний дрейф
Сонце, Венера, Сатурн0.001"
Меркурій0.002"
true Node0.004"
Марс0.007"
Юпітер0.009"
Місяць0.022"
Уран0.083"
Плутон0.097"
Нептун0.223"
Хірон0.561"
mean Apogee (Ліліт)0.000"

Медіана по всіх 130 замірах: 0.0013".

Раніше на цій сторінці стояла загальна обіцянка «< 0.1 arcsec». Заміри 2026-07-29 показали, що Нептун, Плутон і Хірон її не тримають, тому обіцянку замінено на фактичні числа. Хірон і зовнішні планети мають більший дрейф через те, що їхні позиції беруться зі стисненого набору ефемерид, який використовує наша збірка.

Відтворити можна самостійно: api-calc/scripts/accuracy-vs-swetest.mjs робить рівно ці запити й друкує ту саму таблицю.

Перевірте самі. Скрипт, яким заміряні числа вище, лежить у публічному репозиторії під MIT: astroway/astrology-accuracy-benchmark. Він працює не лише з нами: адаптер до будь-якого іншого API це тридцять рядків, тож ті самі 130 замірів можна прогнати проти конкурента й порівняти. Ключа пісочниці досить.

КомпонентЗначення
БібліотекаSwiss Ephemeris C code (aloistr/swisseph)
Версіяupstream Astrodienst C code
EphemerisDE431 JPL ephemeris (через .se1 файли)
FallbackMoshier analytical (для дат поза 1800-2399)
Code sharingShared @/core із app.astroway.info - один двигун, два транспорти

Точність перевіряється через триангуляцію - порівняння з трьома незалежними джерелами:

Офіційний reference-implementation Swiss Ephemeris від самих Astrodienst - команди, що створили Astro.com і обслуговує мільйони астрологів по всьому світу. Найавторитетніше публічне джерело. Наш двигун ідентичний (0.00–0.07 кутової секунди дрифту).

Незалежна Python-бібліотека використовує pyswisseph-bindings, незалежні від нашої збірки. Підтверджує, що наш шар обгортки не спотворює дані.

Віддалений Swiss Ephemeris API (sidereal Lahiri). Systemic drift 8–17 кутових секунд пов’язаний з різними версіями формули Lahiri ayanamsa, а не з точністю двигуна.

Результати триангуляції

Section titled “Результати триангуляції”
Картапроти swetest (Astrodienst)проти Kerykeion (Python)проти Prokerala API
Monroe 19260.00”0.19”16.95” (systemic)
Diana 19610.00”0.69”8.18” (systemic)
Einstein 18790.07”LMT-артефакт Kerykeion14.96” (systemic)

Незалежна перевірка чужим інструментом

Section titled “Незалежна перевірка чужим інструментом”

RoxyAPI публікують власний бенчмарк проти NASA JPL Horizons DE441: MIT-ліцензія, тільки стандартна бібліотека, 21 карта і 210 позицій, і прапорець --base-url, щоб націлити його на будь-який інший API. У їхньому README прямо сказано, що допуски навмисно не підганяли під їхній власний двигун, бо бенчмарк, який пропонує перевірити конкурента, має бути чесним.

Ми націлили його на себе, не змінивши в їхньому коді жодного числа. Адаптер перейменовує одне поле запиту і знімає одну обгортку відповіді.

AstroWayRoxyAPI, їхні власні опубліковані числа
У межах допуску210 з 210210 з 210
Медіана відхилення0.11"1.5"
Максимум0.60"16.6"

Заміряно 2026-09-09, ціна заміру 21 запит до API. Порядковий вивід усіх 210 рядків: CSV.

Regression-набір на рівні ендпоінтів

Section titled “Regression-набір на рівні ендпоінтів”

Кожен із базових обчислювальних ендпоінтів покритий замороженими snapshot-тестами на 3 референсних картах (Monroe / Diana / Einstein) = 873 snapshot-ів.

Snapshot-suite ловить:

  • Баги мапінгу вхідних даних: неправильний id планети, UT, система будинків
  • Пост-обробку: округлення, конвертація одиниць, втрата знаку
  • Розбіжність дефолтів: mean vs true node, geocentric vs topocentric
  • Schema drift: валідація пропустила неправильну форму
  • Застарілий деплой: prod dist не відповідає коду

Tolerance: 5e-5° (≈0.18 кутової секунди) за замовчуванням для всіх числових полів.

Позиції планет (тропік, проти swetest)

Section titled “Позиції планет (тропік, проти swetest)”
КартаДатаМаксимум drift
Marilyn Monroe1926-06-010.00”
Princess Diana1961-07-010.00”
Albert Einstein1879-03-140.07”

Куспіди домів Placidus (проти swetest)

Section titled “Куспіди домів Placidus (проти swetest)”
Картаdrift ASCdrift MCМаксимум drift куспіда
Monroe0.000”0.000”0.000”
Diana0.000”0.000”0.000”

Затемнення (проти NASA 5-Millennium Catalog)

Section titled “Затемнення (проти NASA 5-Millennium Catalog)”
ПодіяМаксимум NASAНаш максимумDrift
2025-03-14 Lunar Total06:58 UT06:58 UT0.8 хв
2025-03-29 Solar Partial10:47 UT10:47 UT0.5 хв
2025-09-07 Lunar Total18:11 UT18:11 UT0.8 хв
2025-09-21 Solar Partial19:41 UT19:42 UT1.0 хв

Астрокартографія (проти формули RA з swetest)

Section titled “Астрокартографія (проти формули RA з swetest)”

Лінії MC та IC будуються за формулою longitude = RA − GMST (стандарт Kenneth Bowser). Drift від еталона: < 1.5 км на екваторі для всіх планет.

Горизонтні лінії ASC і DSC рахуються з рівняння горизонту в тих самих екваторіальних координатах: cos H = -tan φ · tan δ, де H = (GMST + lng) − RA. Половини різняться знаком часового кута: при H < 0 тіло східніше меридіана, тобто сходить. Перевірка, яку ми ганяємо на кожному прогоні: береться кожна точка кожної горизонтної кривої і рахується висота тіла над горизонтом у ній. На 8419 точках максимальне відхилення 0.0 км, тобто тіло справді стоїть на горизонті скрізь, де ми провели лінію.

Схід / Захід Сонця (проти timeanddate.com)

Section titled “Схід / Захід Сонця (проти timeanddate.com)”
ЛокаціяДатаПараметрDrift
London2026-04-15Sunrise0.6 с
London2026-04-15Sunset9 с

Полярні локації (|lat| > 66.5°) автоматично повертають polarState + warning, що звичайні planetary hours не визначені.

AstroWay використовує змінні орбіси per-planet (правило MIN двох планет), як у ZET9 та astro.com. Орбіси за замовчуванням (для натальної карти):

АспектSunMoonInnerJupiterOuter
Conjunction12°10°
Sextile6.5°
Square10°
Trine12°
Opposition12°10°

Мінорні аспекти (36°, 40°, 45°, 72°, 108°, 135°, 144°) за замовчуванням вимкнені. Вмикаються явно через ALL_ASPECTS.

Для |lat| > 66.5° системи Placidus / Koch / Regiomontanus математично не визначені. У таких випадках Swiss Ephemeris автоматично повертає Porphyry, і наш API додає warning:

{
"system": "P",
"warning": "Система Placidus не визначена для lat=68.96° (> 66.5°). Swiss Ephemeris підставив Porphyry..."
}

Regression перевіряється на кожен PR через CI:

  • api-calc/tests/endpoints/: 873 snapshot-ів проти референсних карт (Monroe / Diana / Einstein) + synastry / composite / davison
  • .github/workflows/api-accuracy.yml: автозапуск на PR
  • Триангуляція проти swetest CGI + Kerykeion: щотижня
  • Моніторинг upstream Swiss Ephemeris через Dependabot

Надійність MCP: типізований вивід

Section titled “Надійність MCP: типізований вивід”

Точність двигуна - половина довіри. Друга половина - контракт виводу, який агент (Claude, ChatGPT, Cursor) може валідувати. Наш MCP-сервер не повертає «сирий текст, розберіться самі»:

  • Типізований structuredContent. Понад 600 MCP-інструментів, і переважна більшість із них публікують строгий outputSchema - MCP-клієнт отримує валідовану структуру, а не рядок, який треба парсити навмання.
  • Захист від schema drift. CI-тест openapi-example-drift валідує кожен regression-snapshot проти схеми, виведеної з його ж прикладу: якщо реальний вивід ендпоінта розійдеться з опублікованою схемою, збірка падає. Саме цей клас розбіжностей спричиняє помилку MCP -32602 Output validation error.
  • Помилки: це помилки. Збій інструмента завжди повертається з прапором isError і типізованим кодом (UPPER_SNAKE). Ми ніколи не віддаємо моделі сирий stack trace або внутрішні шляхи сервера як «дані».

Тобто інтеграція через MCP так само передбачувана, як і прямий REST-виклик: те, що описано в /openapi.json, - це те, що повертає інструмент.

  • Дати поза діапазоном (до 1800 і після 2399): використовується Moshier analytical, точність ~0.1” (проти < 0.01” для SWIEPH з файлами DE431)
  • True Lilith (id=13) vs Mean Lilith (id=12): різниця до 12° - за дефолтом Mean Lilith (стабільна поведінка), True Lilith доступний через planetIds: [13]
  • Topocentric vs geocentric: за замовчуванням geocentric

Про питання точності: пиши на support@astroway.info з даними карти й очікуваним еталоном (astro.com або інше авторитетне джерело).

Корисно?
Запропонувати правку

Останнє оновлення: