Перейти до вмісту
AstroWay/api v2.130.2 · 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 замірах). Розбивка по тілах нижче
  • Куспиди домів 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 показали, що Нептун, Плутон і Хірон її не тримають, тому обіцянку замінено на фактичні числа. Хірон і зовнішні планети мають більший дрейф через те, що їхні позиції беруться зі стисненого набору ефемерид у WASM-збірці.

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

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

КомпонентЗначення
БібліотекаSwiss Ephemeris C code (aloistr/swisseph)
Версіяupstream Astrodienst C code
Bindingsswisseph-wasm (WebAssembly у Node.js)
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 замість нашого WASM. Підтверджує, що наш WASM-шар не спотворює дані.

Віддалений 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)

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

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

Кожен із базових обчислювальних ендпоінтів покритий замороженими snapshot-тестами на 3 референсних картах (Monroe / Diana / Einstein) = 853 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/ASC/DSC використовують правильну формулу longitude = RA − GMST (стандарт Kenneth Bowser). Drift від еталона: < 1.5 км на екваторі для всіх планет.

Схід / Захід Сонця (проти 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/ — 853 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 або інше авторитетне джерело).

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

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