콘텐츠로 이동
AstroWay/api v2.158.7 · ko
모든 시스템 정상 작동 중

계산 정확도

AstroWay API는 Swiss Ephemeris (astro.com의 개발사인 Astrodienst의 공식 C 코드)를 사용합니다. 이는 전문 점성가들이 30년 이상 Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/월) 및 Janus에서 사용하는 것과 동일한 엔진입니다. 우리는 이를 WebAssembly로 컴파일하고 REST API 계층으로 노출하여 중간 마진 없이 제공합니다. 각 기본 계산 엔드포인트는 회귀 스냅샷 테스트로 커버됩니다. 엔진의 정확도는 세 가지 독립적인 소스와 NASA 5-Millennium Eclipse Catalog에 대한 삼각측량을 통해 검증되었습니다.

  • 행성 위치: 공식 swetest CGI Astrodienst 대비 중앙값 0.0013", 최대값 0.561" (2026-07-29, 130회 측정 기준). 천체별 세부 정보는 아래 참조.
  • Placidus 하우스 커스프: 0.000" 정확히 일치
  • 일식/월식: NASA Eclipse Catalog 대비 < 1분
  • ACG 라인: swetest 대비 적도에서 < 1.5km
  • 일출/일몰: timeanddate.com 대비 < 10초
  • 달 VOC, 진입, 행성 합: 초 단위 정확도

이 수치들은 추정치가 아니라 실행 결과입니다. 스크립트는 1900년부터 2050년까지 분포된 10개의 차트를 가져와, 라이브 swetest CGI Astrodienst에 동일한 순간을 요청하고 우리가 반환하는 13개 천체 모두를 비교합니다. 총 130회 측정입니다.

천체최대 편차
태양, 금성, 토성0.001"
수성0.002"
실제 노드0.004"
화성0.007"
목성0.009"
0.022"
천왕성0.083"
명왕성0.097"
해왕성0.223"
키론0.561"
평균 원지점 (릴리스)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뿐만 아니라 다른 API와도 작동합니다. 다른 API용 어댑터는 30줄이면 충분하므로, 동일한 130회 측정을 경쟁사 API에 대해 실행하고 비교할 수 있습니다. 샌드박스 키만 있으면 됩니다.

구성 요소
라이브러리Swiss Ephemeris C code (aloistr/swisseph)
버전업스트림 Astrodienst C 코드
바인딩swisseph-wasm (Node.js의 WebAssembly)
역서DE431 JPL ephemeris (.se1 파일 사용)
폴백Moshier analytical (1800-2399년 외 날짜용)
코드 공유app.astroway.info와 @/core 공유 - 하나의 엔진, 두 가지 전송 방식

정확도는 삼각측량을 통해 검증됩니다. 세 가지 독립적인 소스와 비교합니다.

Astro.com을 만들고 전 세계 수백만 점성가를 지원하는 Astrodienst 팀의 공식 Swiss Ephemeris 참조 구현입니다. 가장 권위 있는 공개 소스입니다. 우리 엔진은 동일합니다 (0.00–0.07 각초 편차).

독립적인 Python 라이브러리로, 우리 WASM 대신 pyswisseph 바인딩을 사용합니다. 우리 WASM 계층이 데이터를 왜곡하지 않음을 확인합니다.

원격 Swiss Ephemeris API (항성 Lahiri). 8–17 각초의 시스템 편차는 엔진의 정확도가 아닌 Lahiri ayanamsa 공식의 다른 버전과 관련이 있습니다.

차트swetest (Astrodienst) 대비Kerykeion (Python) 대비Prokerala API 대비
Monroe 19260.00”0.19”16.95” (시스템)
Diana 19610.00”0.69”8.18” (시스템)
Einstein 18790.07”Kerykeion의 LMT 아티팩트14.96” (시스템)

각 기본 계산 엔드포인트는 3개의 참조 차트 (Monroe / Diana / Einstein)에 대한 고정된 스냅샷 테스트로 커버됩니다 = 873 스냅샷.

스냅샷 스위트는 다음을 포착합니다:

  • 입력 데이터 매핑 버그 - 잘못된 행성 ID, UT, 하우스 시스템
  • 후처리 - 반올림, 단위 변환, 부호 손실
  • 기본값 불일치 - 평균 노드 vs 실제 노드, 지심 vs 지표
  • 스키마 드리프트 - 유효성 검사가 잘못된 형식을 놓침
  • 오래된 배포 - 프로덕션 배포가 코드와 일치하지 않음

허용 오차: 모든 숫자 필드에 대해 기본적으로 5e-5° (≈0.18 각초).

차트날짜최대 편차
Marilyn Monroe1926-06-010.00”
Princess Diana1961-07-010.00”
Albert Einstein1879-03-140.07”

Placidus 하우스 커스프 (swetest 대비)

섹션 제목: “Placidus 하우스 커스프 (swetest 대비)”
차트ASC 편차MC 편차최대 커스프 편차
Monroe0.000”0.000”0.000”
Diana0.000”0.000”0.000”

일식/월식 (NASA 5-Millennium Catalog 대비)

섹션 제목: “일식/월식 (NASA 5-Millennium Catalog 대비)”
이벤트NASA 최대값우리 최대값편차
2025-03-14 개기 월식06:58 UT06:58 UT0.8분
2025-03-29 부분 일식10:47 UT10:47 UT0.5분
2025-09-07 개기 월식18:11 UT18:11 UT0.8분
2025-09-21 부분 일식19:41 UT19:42 UT1.0분

아스트로카르토그래피 (swetest의 RA 공식 대비)

섹션 제목: “아스트로카르토그래피 (swetest의 RA 공식 대비)”

모든 MC/IC/ASC/DSC 라인은 올바른 longitude = RA − GMST 공식을 사용합니다 (Kenneth Bowser 표준). 기준 대비 편차: 모든 행성에 대해 적도에서 < 1.5km.

위치날짜매개변수편차
London2026-04-15일출0.6초
London2026-04-15일몰9초

극지방 위치 (|위도| > 66.5°)는 자동으로 polarState + 일반적인 행성 시간이 정의되지 않았다는 경고를 반환합니다.

AstroWay는 ZET9 및 astro.com과 같이 행성별 가변 오르비스 (두 행성 중 최소값 규칙)를 사용합니다. 기본 오르비스 (출생 차트용):

어스펙트태양내행성목성외행성
12°10°
육분위6.5°
사분위10°
삼분위12°
대립12°10°

마이너 어스펙트 (36°, 40°, 45°, 72°, 108°, 135°, 144°)는 기본적으로 비활성화되어 있습니다. ALL_ASPECTS를 통해 명시적으로 활성화됩니다.

|위도| > 66.5°인 경우 Placidus / Koch / Regiomontanus 시스템은 수학적으로 정의되지 않습니다. 이러한 경우 Swiss Ephemeris는 자동으로 Porphyry를 반환하며, 우리 API는 경고를 추가합니다:

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

회귀는 CI를 통해 모든 PR에서 검증됩니다:

  • api-calc/tests/endpoints/ - 참조 차트 (Monroe / Diana / Einstein) + 시나스트리 / 컴포지트 / 데이비슨에 대한 873 스냅샷
  • .github/workflows/api-accuracy.yml - PR에서 자동 실행
  • swetest CGI + Kerykeion에 대한 삼각측량 - 매주
  • Dependabot을 통한 업스트림 Swiss Ephemeris 모니터링

엔진의 정확성은 신뢰의 절반입니다. 나머지 절반은 에이전트 (Claude, ChatGPT, Cursor)가 유효성을 검사할 수 있는 출력 계약입니다. 우리 MCP 서버는 “원시 텍스트, 알아서 처리하세요”를 반환하지 않습니다:

  • 유형화된 structuredContent. 600개 이상의 MCP 도구가 있으며, 대다수는 엄격한 outputSchema를 게시합니다. MCP 클라이언트는 임의로 파싱해야 하는 문자열이 아닌 유효성 검사된 구조를 받습니다.
  • 스키마 드리프트 방지. CI 테스트 openapi-example-drift는 각 회귀 스냅샷을 자체 예제에서 파생된 스키마에 대해 유효성을 검사합니다. 엔드포인트의 실제 출력이 게시된 스키마와 다르면 빌드가 실패합니다. 바로 이 유형의 불일치가 MCP 오류 -32602 Output validation error를 유발합니다.
  • 오류는 오류입니다. 도구 실패는 항상 isError 플래그와 유형화된 코드 (UPPER_SNAKE)와 함께 반환됩니다. 우리는 모델에 원시 스택 트레이스 또는 내부 서버 경로를 “데이터”로 절대 제공하지 않습니다.

즉, MCP를 통한 통합은 직접적인 REST 호출만큼 예측 가능합니다. /openapi.json에 설명된 내용은 도구가 반환하는 내용입니다.

  • 범위 외 날짜 (1800년 이전 및 2399년 이후): Moshier analytical이 사용되며, 정확도는 ~0.1” (DE431 파일이 있는 SWIEPH의 < 0.01” 대비)
  • True Lilith (id=13) vs Mean Lilith (id=12): 최대 12° 차이 - 기본적으로 Mean Lilith (안정적인 동작), True Lilith는 planetIds: [13]을 통해 사용 가능
  • 지표 중심 vs 지심: 기본적으로 지심

정확도에 대한 질문은 support@astroway.info로 차트 데이터와 예상 기준 (astro.com 또는 기타 권위 있는 소스)을 함께 보내주세요.

도움이 되었나요?
Запропонувати правку

마지막 업데이트: