計算精度
AstroWay APIは、Swiss Ephemeris (astro.comの作成者であるAstrodienstの公式Cコード) を使用しています。これは、プロの占星術師が30年以上にわたりSolar Fire ($495)、Kepler ($995)、Astro Gold ($29.99/月)、Janusで使用しているのと同じエンジンです。当社はこれを自社サーバーで実行し、REST APIレイヤーとして提供しており、中間マージンはありません。各基本計算エンドポイントは回帰スナップショットテストでカバーされており、エンジンの精度は3つの独立した情報源とのトライアンギュレーションとNASA 5千年食カタログとの比較によって検証されています。
- 惑星の位置: 中央値
0.0013", 最大値0.561"(Astrodienst公式swetest CGIとの比較、2026年7月29日に130回の測定で計測)。各天体の内訳は下記 - 外部ベンチマークによる独立した実行 (RoxyAPI、NASA JPL Horizons DE441との比較): 210中210が許容範囲内、中央値
0.11", 最大値0.60" - プラシダスハウスカスプ:
0.000"完全一致 - 食: NASA食カタログとの比較で
< 1分 - ACGライン: swetestとの比較で赤道上で
< 1.5 km - 日の出/日の入り: timeanddate.comとの比較で
< 10秒 - 月のボイド・オブ・コース、イングレス、惑星の合: 1秒未満の精度
これらの数値は推定ではなく、実行結果です。スクリプトは1900年から2050年までの期間に分散させた10のチャートを取り、Astrodienstのライブswetest CGIに同じ時点をリクエストし、当社が提供する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秒角」という一般的な約束が記載されていました。2026年7月29日の測定により、海王星、冥王星、キロンがそれを維持していないことが示されたため、約束は実際の数値に置き換えられました。キロンと外惑星は、当社のビルドが使用する圧縮されたエフェメリスセットから位置が取得されるため、より大きなドリフトを示します。
自分で再現できます: api-calc/scripts/accuracy-vs-swetest.mjsは、まさにこれらのリクエストを行い、同じテーブルを出力します。
自分で確認してください。 上記の数値が測定されたスクリプトは、MITライセンスの下で公開リポジトリにあります: astroway/astrology-accuracy-benchmark。これは当社だけでなく、他のAPIでも動作します。他のAPIへのアダプターは30行なので、同じ130回の測定を競合他社に対して実行し、比較することができます。サンドボックスキーで十分です。
| コンポーネント | 値 |
|---|---|
| ライブラリ | Swiss Ephemeris C code (aloistr/swisseph) |
| バージョン | Astrodienst Cコードのアップストリーム |
| エフェメリス | DE431 JPLエフェメリス (.se1ファイル経由) |
| フォールバック | Moshier解析 (1800-2399年以外の日付用) |
| コード共有 | app.astroway.infoとの@/core共有 - 1つのエンジン、2つのトランスポート |
精度はトライアンギュレーション、つまり3つの独立した情報源との比較によって検証されます。
1. swetest CGI (基準)
Section titled “1. swetest CGI (基準)”Astrodienst自身によるSwiss Ephemerisの公式リファレンス実装。Astro.comを開発し、世界中の何百万人もの占星術師にサービスを提供しているチームです。最も信頼できる公開情報源。当社のエンジンは同一です (0.00~0.07秒角のドリフト)。
2. Kerykeion (Python)
Section titled “2. Kerykeion (Python)”独立したPythonライブラリは、当社のビルドとは独立したpyswissephバインディングを使用しています。当社のラッパー層がデータを歪めていないことを確認します。
3. Prokerala API
Section titled “3. Prokerala API”リモートのSwiss Ephemeris API (恒星ラヒリ)。8~17秒角の体系的なドリフトは、ラヒリ・アヤナムサの異なるバージョンに関連しており、エンジンの精度とは関係ありません。
トライアンギュレーションの結果
Section titled “トライアンギュレーションの結果”| チャート | swetest (Astrodienst)との比較 | Kerykeion (Python)との比較 | Prokerala APIとの比較 |
|---|---|---|---|
| Monroe 1926 | 0.00” | 0.19” | 16.95” (体系的) |
| Diana 1961 | 0.00” | 0.69” | 8.18” (体系的) |
| Einstein 1879 | 0.07” | KerykeionのLMTアーティファクト | 14.96” (体系的) |
外部ツールによる独立した検証
Section titled “外部ツールによる独立した検証”RoxyAPIは、NASA JPL Horizons DE441に対する独自のベンチマークを公開しています。MITライセンス、標準ライブラリのみ、21のチャートと210の位置、そして他のAPIをターゲットにするための--base-urlフラグ。彼らのREADMEには、競合他社をテストするベンチマークは公正でなければならないため、許容範囲は意図的に彼ら自身のエンジンに合わせて調整されていないと明記されています。
当社は、彼らのコードの数値を一切変更せずに、それを当社自身にターゲット設定しました。アダプターは1つのリクエストフィールドの名前を変更し、1つのレスポンスラッパーを削除します。
| AstroWay | RoxyAPI、彼らの2026年9月29日の実行 | |
|---|---|---|
| 許容範囲内 | 210中210 | 210中210 |
| 偏差の中央値 | 0.11" | 0.05" |
| 最大値 | 0.60" | 0.78" |
当社の2026年9月9日の測定、APIへの21リクエストのコスト。RoxyAPIは9月にDE440の直接読み取りに移行し、現在彼らの中央値は当社よりも低くなっています。当社の最大値は彼らよりも低いです。全210行の順次出力: CSV。
エンドポイントレベルでの回帰テストスイート
Section titled “エンドポイントレベルでの回帰テストスイート”各基本計算エンドポイントは、3つの参照チャート (モンロー / ダイアナ / アインシュタイン) に対するフリーズされたスナップショットテストでカバーされています = 873 スナップショット。
スナップショットスイートが検出するもの:
- 入力データマッピングのバグ: 誤った惑星ID、UT、ハウスシステム
- 後処理: 丸め、単位変換、符号の欠落
- デフォルトの不一致: 平均ノード vs 真ノード、地心 vs 地表
- スキーマドリフト: 検証が誤った形式を見逃した
- 古いデプロイ: prod distがコードと一致しない
許容誤差: すべての数値フィールドのデフォルトは5e-5° (約0.18秒角)。
詳細なベンチマーク
Section titled “詳細なベンチマーク”惑星の位置 (トロピカル、swetestとの比較)
Section titled “惑星の位置 (トロピカル、swetestとの比較)”| チャート | 日付 | 最大ドリフト |
|---|---|---|
| Marilyn Monroe | 1926-06-01 | 0.00” |
| Princess Diana | 1961-07-01 | 0.00” |
| Albert Einstein | 1879-03-14 | 0.07” |
プラシダスハウスカスプ (swetestとの比較)
Section titled “プラシダスハウスカスプ (swetestとの比較)”| チャート | ASCドリフト | MCドリフト | カスプの最大ドリフト |
|---|---|---|---|
| Monroe | 0.000” | 0.000” | 0.000” |
| Diana | 0.000” | 0.000” | 0.000” |
食 (NASA 5千年カタログとの比較)
Section titled “食 (NASA 5千年カタログとの比較)”| イベント | NASA最大値 | 当社最大値 | ドリフト |
|---|---|---|---|
| 2025-03-14 皆既月食 | 06:58 UT | 06:58 UT | 0.8 分 |
| 2025-03-29 部分日食 | 10:47 UT | 10:47 UT | 0.5 分 |
| 2025-09-07 皆既月食 | 18:11 UT | 18:11 UT | 0.8 分 |
| 2025-09-21 部分日食 | 19:41 UT | 19:42 UT | 1.0 分 |
アストロカーグラフィー (swetestのRA式との比較)
Section titled “アストロカーグラフィー (swetestのRA式との比較)”MCおよびICラインは、longitude = RA − GMST (Kenneth Bowser標準) の式に基づいて構築されます。基準からのドリフト: すべての惑星で赤道上で**< 1.5 km**。
ASCおよびDSCの地平線ラインは、同じ赤道座標における地平線の方程式cos H = -tan φ · tan δから計算されます。ここでH = (GMST + lng) − RA。半分は時角の符号によって異なります: H < 0の場合、天体は子午線の東にあり、つまり上昇しています。各実行で当社が実行する検証: 各地平線曲線の各点が取られ、その中の地平線上の天体の高さが計算されます。8419点において最大偏差は0.0 kmであり、つまり天体は当社が線を引いたすべての場所で実際に地平線上にあります。
日の出 / 日の入り (timeanddate.comとの比較)
Section titled “日の出 / 日の入り (timeanddate.comとの比較)”| 場所 | 日付 | パラメータ | ドリフト |
|---|---|---|---|
| London | 2026-04-15 | Sunrise | 0.6 秒 |
| London | 2026-04-15 | Sunset | 9 秒 |
極地 (|lat| > 66.5°) は自動的にpolarStateと、通常のプラネタリーアワーが定義されていないという警告を返します。
アスペクトオーブ
Section titled “アスペクトオーブ”AstroWayは、ZET9やastro.comと同様に、惑星ごとに可変オーブ (2つの惑星の最小値ルール) を使用します。デフォルトのオーブ (出生図用):
| アスペクト | 太陽 | 月 | 内惑星 | 木星 | 外惑星 |
|---|---|---|---|---|---|
| 合 | 12° | 10° | 5° | 8° | 5° |
| セクスタイル | 6.5° | 6° | 5° | 5° | 5° |
| スクエア | 10° | 8° | 5° | 7° | 5° |
| トライン | 12° | 8° | 5° | 5° | 5° |
| オポジション | 12° | 10° | 5° | 8° | 5° |
マイナーアスペクト (36°、40°、45°、72°、108°、135°、144°) はデフォルトで無効です。ALL_ASPECTSを介して明示的に有効になります。
|lat| > 66.5°の場合、プラシダス / コッホ / レギオモンタヌスシステムは数学的に定義されていません。そのような場合、Swiss Ephemerisは自動的にポルフィリーを返し、当社のAPIは警告を追加します。
{ "system": "P", "warning": "Placidus system is undefined for lat=68.96° (> 66.5°). Swiss Ephemeris fell back to Porphyry..."}継続的な検証
Section titled “継続的な検証”回帰はCIを介してすべてのPRで検証されます。
api-calc/tests/endpoints/: 参照チャート (モンロー / ダイアナ / アインシュタイン) + シナストリー / コンポジット / デイヴィソンに対する873 スナップショット.github/workflows/api-accuracy.yml: PRでの自動実行- swetest CGI + Kerykeionに対するトライアンギュレーション: 毎週
- Dependabotを介したアップストリームSwiss Ephemerisの監視
MCPの信頼性: 型付き出力
Section titled “MCPの信頼性: 型付き出力”エンジンの精度は信頼の半分です。もう半分は、エージェント (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に記述されているものが、ツールが返すものです。
既知の制限事項
Section titled “既知の制限事項”- 範囲外の日付 (1800年より前、2399年より後): Moshier解析が使用され、精度は約0.1秒角です (DE431ファイルを使用するSWIEPHでは0.01秒角未満)。
- 真のリリス (id=13) vs 平均リリス (id=12): 最大12°の差 - デフォルトでは平均リリス (安定した挙動)、真のリリスは
planetIds: [13]を介して利用可能です。 - 地表 vs 地心: デフォルトは地心です。
- Swiss Ephemeris: https://www.astro.com/swisseph/
- swetest CGI: https://www.astro.com/swisseph/swetest.htm
- NASA食カタログ: https://eclipse.gsfc.nasa.gov/
- Kerykeion: https://github.com/g-battaglia/kerykeion
- Astrodienst: https://www.astro.com/
お問い合わせ
Section titled “お問い合わせ”精度に関する質問は、チャートデータと期待される基準 (astro.comまたはその他の信頼できる情報源) を添えてsupport@astroway.infoまでご連絡ください。