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

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

Еталон для позицій AstroWay це NASA JPL Horizons, ефемеридний сервіс Лабораторії реактивного руху NASA. Кожен розрахунок виконується на наших власних серверах, без чужого API між вашим запитом і відповіддю. Кожен із базових розрахункових ендпоінтів також покритий нашими regression snapshot-тестами, а числа звірені з незалежними джерелами і з NASA 5-Millennium Eclipse Catalog:

  • Проти NASA JPL Horizons, чужим бенчмарком (RoxyAPI): 231 з 231 у межах допуску, медіана 0.052", максимум 1.1" (Хірон у 1900 році; 0.47" для Сонця, Місяця і планет)
  • Regression-набір: 888 заморожених snapshot-ів на кожен pull request; одна регресія блокує реліз
  • Планетні позиції проти референсного виводу swetest від Astrodienst: медіана 0.0013", максимум 0.561" (заміряно 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: точність до частки секунди

Перевірка проти NASA JPL Horizons чужим інструментом

Section titled “Перевірка проти NASA JPL Horizons чужим інструментом”

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

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

AstroWay, 2026-10-19RoxyAPI, їхній прогін 2026-11-01
У межах допуску231 з 231231 з 231
Медіана відхилення0.052"0.048"
Максимум1.1"0.32"

Наш замір зроблено на поточній версії їхнього бенчмарку, де додали Хірон і два випадки з переходом на літній час, а значення Horizons беруться до семи знаків; ціна 21 запит до API. Медіани відрізняються на 0.004”. Найбільше відхилення в нас у Хірона 1900 року: наша ефемерида астероїдів і інтеграція малих тіл Horizons розходяться на 1.1”; для Сонця, Місяця і планет наш максимум 0.47”. Порядковий вивід усіх 231 рядка: CSV. Прогін 2026-09-09 на старій версії бенчмарку: CSV.

Проти референсного виводу swetest: як саме заміряно

Section titled “Проти референсного виводу swetest: як саме заміряно”

Ці числа не оцінка, а результат прогону. Скрипт бере 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 замірів можна прогнати проти конкурента й порівняти. Ключа пісочниці досить.

Звірка з іншими джерелами

Section titled “Звірка з іншими джерелами”

Окрім JPL Horizons і наших snapshot-ів, числа порівнюються ще з трьома публічними джерелами:

Референсний вивід, який публікують Astrodienst, команда Astro.com. Дрейф від нього на референсних картах 0.00-0.07 кутової секунди.

Незалежна open-source Python-бібліотека, прогнана на тих самих картах.

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

Картапроти 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) = 888 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°5°8°5°
Sextile6.5°6°5°5°5°
Square10°8°5°7°5°
Trine12°8°5°5°5°
Opposition12°10°5°8°5°

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

Для |lat| > 66.5° системи Placidus / Koch / Regiomontanus математично не визначені. У таких випадках куспіди рахуються як Porphyry, і відповідь каже про це в полі warning поруч із "system": "P", називаючи підставлену систему й широту.

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

  • api-calc/tests/endpoints/: 888 snapshot-ів проти референсних карт (Monroe / Diana / Einstein) + synastry / composite / davison
  • .github/workflows/api-accuracy.yml: автозапуск на PR
  • Звірка зі swetest CGI + Kerykeion: щотижня

Надійність 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): використовується аналітична ефемерида, точність ~0.1” (проти < 0.01” у межах 1800-2399)
  • 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 або інше авторитетне джерело).