クロス円 計算:2つの通貨ペアからEUR/IDRを求める

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回のリクエストで割り算に必要なレートがそろいます。

  1. APIキーを設定 無料のAPIキーを取得し、環境変数 NARWHAL_API_KEY に設定してください。Pythonスクリプトはこの変数を読み、Authorization ヘッダーにBearerトークンとしてキーを付けて送信します。RESTとMCPで同じキーを使います。
  2. レートを取得して割り算する このスクリプトは、USDを共通の基準通貨としてEURとIDRのレートを取得します。IDRのレートをEURのレートで割り、比較のためにEUR/IDRも直接リクエストします。最初に表示されるのが計算したクロスレート、2番目が直接レートです。
    Python、2つのドル建てレートからEURをIDRへ
    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}")
  3. レートを金額に当てはめる EURの金額に、計算したEUR/IDRレートを掛けるとIDRの金額になります。結果には向きを添えておきましょう。EUR/IDRレートは、1EURで買えるIDRの額を表します。IDRからEURへの換算には逆数を使います。

スプレッドシートまたはコードを使わずに計算する

USD/EURのレートを B1、USD/IDRのレートを B2 に入れ、別のセルに数式を入力します。2つのレートは同じ日付のものにしてください。数式は換算先通貨のドル建てレートを換算元通貨のドル建てレートで割るため、セルの位置が重要です。

EUR/IDRのクロスレート
=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/EUR0.89342
2026年10月23日のUSD/IDR18,107.8
2026年10月23日のEUR/IDR: 18,107.8 / 0.8934220,267.96
2026年10月23日のクロスレートでの500 EUR: 500 × 20,267.9610,133,980 IDR

2026年10月23日の例では、500 EURに表示したクロスレート20,267.96を掛けて10,133,980 IDRになります。この金額は計算に示した丸め後のクロスレートを使ったものです。同日の直接のEUR/IDRレートは20,268.1だったので、そのレートを使えば別の結果になります。

公開。

次のステップ