2026年10月24日、USD/EURが0.89342、USD/IDRが18,107.8のとき、EUR/IDRのクロスレートは20,267.96です。ドル建てで提示された2通貨の間のクロスレートは、2番目のレートを1番目のレートで割った値です。
APIを使う方法
ドルを経由したEURからIDRへの換算では、EURが売り通貨(換算元)、IDRが買い通貨(換算先)です。GET /v1/fx/rates/USD?currencies=EUR,IDR で2つのドル建てレートをまとめて取得します。1回のリクエストで割り算に必要なレートがそろいます。
- APIキーを設定 無料のAPIキーを取得し、環境変数
NARWHAL_API_KEYに設定してください。Pythonスクリプトはこの変数を読み、AuthorizationヘッダーにBearerトークンとしてキーを付けて送信します。RESTとMCPで同じキーを使います。 - レートを取得して割り算する このスクリプトは、USDを共通の基準通貨としてEURとIDRのレートを取得します。IDRのレートをEURのレートで割り、比較のためにEUR/IDRも直接リクエストします。最初に表示されるのが計算したクロスレート、2番目が直接レートです。
import os import requests H = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} rates = { r["currency"]: float(r["rate"]) for r in requests.get( "https://api.narwhalapi.com/v1/fx/rates/USD", params={"currencies": "EUR,IDR"}, headers=H, timeout=10, ).json()["rates"] } # USD/EUR = 0.89342 means 1 USD buys 0.89342 EUR; # USD/IDR = 18107.8 means 1 USD buys 18,107.8 IDR. eur_idr = rates["IDR"] / rates["EUR"] print(f"EUR/IDR = {rates['IDR']} / {rates['EUR']} = {eur_idr:.2f}") direct = float( requests.get( "https://api.narwhalapi.com/v1/fx/rates/EUR", params={"currencies": "IDR"}, headers=H, timeout=10, ).json()["rates"][0]["rate"] ) print(f"direct EUR/IDR = {direct}") - レートを金額に当てはめる EURの金額に、計算したEUR/IDRレートを掛けるとIDRの金額になります。結果には向きを添えておきましょう。EUR/IDRレートは、1EURで買えるIDRの額を表します。IDRからEURへの換算には逆数を使います。
スプレッドシートまたはコードを使わずに計算する
USD/EURのレートを B1、USD/IDRのレートを B2 に入れ、別のセルに数式を入力します。2つのレートは同じ日付のものにしてください。数式は換算先通貨のドル建てレートを換算元通貨のドル建てレートで割るため、セルの位置が重要です。
=B2/B1入力セルには、USDを含む通貨ペアの正式名称をラベルとして付け、共通の基準が見えるようにします。結果のラベルはEUR/IDRとします。数式を変えずに入力セルの中身を入れ替えると、結果は逆数のレートになり、IDRに対して受け取るEURの量になります。
よく使われる通貨ペアなら、為替レートのページにある通貨別ページを使えます。それらのページには主要な通貨ペアが載っています。2つのドル建てレートがすでに手元にあり、その入力値からクロスレートを計算したい場合は、シートを使う方法が向いています。
状況に応じた方法の選び方
| 状況 | 適した方法 | 理由 |
|---|---|---|
| そのペアがAPIにある | 直接リクエストする | 丸められたレートからクロスレートを計算せず、そのペアを直接取得します |
| APIにそのペアがない、または過去のクロスレートが必要 | 同じ日付のドル建てレートで割る | 共通のドル基準によって、換算元と換算先のレートが計算用にそろいます |
| 多くのペアが必要 | ドル建てレートを1回取得してクロスレートを計算する | 換算元と換算先の組み合わせごとにドル建てレートを使い回します |
ドル建てレートの組から多くのクロスレートを計算するときは、各数式に換算元と換算先のラベルを付けておきます。換算元が分母に入るレート、換算先が分子に入るレートを決めます。同じドル建てレートが、ある換算では分子、別の換算では分母になることもあります。過去のクロスレートでは、日付を入力レートと結果に添えて残します。ペアが直接取得でき、そのペアだけが必要なら、換算元の通貨を基準にして直接リクエストしてください。
計算したクロスレートが直接レートと違うのはなぜですか?
入力レートの丸めやタイムスタンプの違いにより、計算したクロスレートが直接レートと異なることがあります。クロスレートの計算には指定したドル建てレートを使うため、その精度が結果に引き継がれます。ペアを直接取得すると、それらの入力から導いた値ではなく直接のレートが得られます。
2026年10月23日、計算したEUR/IDRクロスレートは20,267.96、直接のEUR/IDRレートは20,268.1で、差は0.14でした。この差はドル建てレートの丸めによるものです。直接の値が、丸めた入力からの計算結果と一致する必要はありません。
レートはどちらの向きで割りますか?
2つのペアの基準通貨が同じなら、換算先のレートを換算元のレートで割ります。USD経由のEUR/IDRなら、1USDあたりのIDRを1USDあたりのEURで割ります。共通のUSDの単位が打ち消し合い、残る単位は1EURあたりのIDRです。
2026年10月23日、USD/EURは0.89342でした。つまりEURはUSDよりも多くのUSDを買えました。1EUR = 1/0.89342 = 1.119USDです。したがってその日、EURはUSDよりも多くのIDRを買えました。EURのレートをIDRのレートで割ると単位が逆になり、IDRあたりのEURになります。
2つのレートは同じ日付でなければなりませんか?
はい、同じ日付のレートを使ってください。日付が混ざるとクロスレートにノイズが入ります。過去の日付で計算するときは、割り算の前に2つのドル建てペアの日付を決めます。結果は、その日のドル建てレートを通じて換算元と換算先の通貨を結びつけます。
換算元通貨のドル建てレートがすでにあるなら、同じ日付の換算先通貨のドル建てレートと組み合わせてください。別の日付のレートを使うと、計算の入力が変わります。日付をそろえれば、クロスレートが直接レートと異なる理由として、上で述べたタイムスタンプと丸めの違いだけが残ります。
計算例:2026年10月23日のEURからIDR
2026年10月23日のドル建てレートは、0.89342 EURと18,107.8 IDRでした。分子にIDRのレート、分母にEURのレートを置いて割ると、1EURあたりのIDRとして結果が得られます。
| 計算 | 結果 |
|---|---|
| 2026年10月23日のUSD/EUR | 0.89342 |
| 2026年10月23日のUSD/IDR | 18,107.8 |
| 2026年10月23日のEUR/IDR: 18,107.8 / 0.89342 | 20,267.96 |
| 2026年10月23日のクロスレートでの500 EUR: 500 × 20,267.96 | 10,133,980 IDR |
2026年10月23日の例では、500 EURに表示したクロスレート20,267.96を掛けて10,133,980 IDRになります。この金額は計算に示した丸め後のクロスレートを使ったものです。同日の直接のEUR/IDRレートは20,268.1だったので、そのレートを使えば別の結果になります。
公開。