クロスレートを解説

共通の基準通貨を持つ2つのレートから通貨のクロスレートを計算し、方向を確認し、タイムスタンプの不一致や早すぎる丸めを避ける方法を説明します。

小さな橋でつながれた3つの通貨トークンを眺める白いイッカク。

共通の基準通貨を持つ2つのレート

ある観測例で、1 USD = 0.80 EUR、1 USD = 120 JPYとします。1ユーロが何円に相当するかを計算するには、1 USD当たりのJPYレートを、1 USD当たりのEURレートで割ります。USDの単位は約分されます。

EUR から JPY へのクロスレート例
120 JPY/USD ÷ 0.80 EUR/USD = 150 JPY/EUR
10 EUR × 150 JPY/EUR = 1,500 JPY

単位がすでに連鎖している場合は掛ける

同じ入力値を別の形で使うこともできます。1 USD当たり0.80 EURの逆数を取って1 EUR当たり1.25 USDとし、1 USD当たり120 JPYを掛けます。この方法でも、1 EUR当たり150 JPYになります。

式は「常に掛ける」という近道ではなく、単位に従います。共通の基準通貨なら対象レートを元レートで割ります。共通の相手通貨や方向が混在する場合は、まず各レートを受け取る通貨/供給する通貨として書いてください。

結果を慎重に反転する

1 EUR当たり150 JPYの逆数は、1 JPY当たり1/150 EURで、表示上は約0.00666667です。金額を換算する際は、この省略した表示よりも多くの有効桁数を確保して計算してください。

正のレートに丸めていない逆数を掛けると1になることが有用な確認になります。ゼロ除算、レート欠落、正でない値は通貨結果ではなく入力失敗です。

互換性のある入力を取得する

Narwhalは要求した基準通貨に対して選択した通貨を返せます。以下のリクエストはUSDに対するEURとJPYを取得するもので、上記の例示値を保証しません。返される各レコードには独自のタイムスタンプとstaleフラグがあります。

両方の入力通貨をリクエストする
curl --request GET \
  --url "https://api.narwhalapi.com/v1/fx/rates/USD?currencies=EUR,JPY" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"

1つのレスポンスに異なる観測時刻が含まれることがある

同じHTTPレスポンスに現れたからといって、2つのレートが同じ市場時点から来たとは限りません。古い観測と新しい観測を組み合わせた派生レートには、時点が混在します。

  • 入力のタイムスタンプと2つのstaleフラグを比較してください。
  • 用途に合う許容時間差を選んでください。普遍的なしきい値はありません。
  • 2つの入力観測値を派生結果と一緒に保持してください。
  • 鮮度を1つの経過時間で要約する場合は、古い方の入力を使い、それでも2つのタイムスタンプを保持してください。

計算したクロスレートは参考値である

条件の整った仲値または参考レートから得られるクロスレートは参考値です。約定可能な取引価格を示すものではありません。売買スプレッド、取引市場の違い、観測時刻の違いにより、別途提示された通貨ペアのレートとは異なる場合があります。

レート種別をそろえ、割り算をする前に各レートを丸めないでください。金額換算だけが必要なら、ドキュメントに記載された換算オペレーションで対象の通貨ペアを直接リクエストし、返されたレートとその時点情報を保持してください。

出典・参考資料

公開日: 。最終確認日: 。