銀行・Google・FX APIで為替レートが異なって表示される理由
誰も間違っていなくてもレートは異なることがある。参照レート、カードレート、ディーラーの気配値は、それぞれ違う問いに答えている。
Google、銀行、FX APIが示す数字は、多くの場合、異なる種類のレートを異なる瞬間に表示している。2つの数字を「食い違い」と決めつける前に、情報源、タイムスタンプ、方向、スプレッド、別建ての手数料の有無を比較してほしい。
異なる数字は異なる問いに答えている
検索結果が答えるのはたいてい「このペアの直近の市場参照値は何か」という問いである。銀行やカード会社が答えるのは「この取引をした場合、実際にいくら受け渡すか」という問いである。FX APIはその情報源とプロダクト次第で、どちらの問いにも答えられる。役割が違うのだから、数字が一致する必要はない。
最初に区別すべきは、インディケーティブレートと約定可能な気配値の違いである。インディケーティブレートは、表示・分析・レポーティング・換算の見積もりのために市場を描写するものである。約定可能な気配値は、特定の取引相手が提示する取引価格であり、買値・売値のスプレッド、最低取引額、時には数秒単位の有効期限を伴う。
違いが生まれる場所
スプレッドとは、ディーラーの買値と売値の差である。プロバイダーによってはこれを為替レート自体に組み込んで表示し、別のプロバイダーは市場価格に見える数字を示したうえで別建てのサービス手数料を加える。手数料が低く見えるからといって、両方を合算するまでは換算が安いとは言い切れない。
数字そのものと同じくらい時刻と情報源が重要
外国為替は取引週を通じて動いている。2つのサービスがどちらも有効なEUR/USDの参照レートを公表していても、一方が数分前に更新し、もう一方が日次フィックスを公表しているだけで値が異なることがある。欧州中央銀行の参照レートは営業日に1回だけ公表される。一貫した日次参照としては有用だが、日中の値動きに素早く反応しなければならないアプリケーションにとって適切な入力ではない。
ペアの方向も、一見した食い違いを生みやすい要因である。USD/IDRとIDR/USDは逆数の関係にある。一方のプロバイダーが早い段階で丸め、もう一方がより高い精度で表示している場合、一方向を逆方向に換算し直しても同じ表示値にはならない。
source、market_session、data_updated_atを返すため、ライブのインディケーティブレートを読んでいるのか、日次参照レートを読んでいるのかをアプリケーション側で判別できる。プロバイダーを公正に比較する方法
- 両方の価格が同じペアの方向・同じ金額を使っているか確認する。
- タイムスタンプを確認し、どちらかが日中観測値ではなく日次参照値かどうかを見る。
- 提示されたレートと、固定または定率の手数料を切り分けて考える。
- 決済比較には見出しのレートだけでなく、最終的に受け渡される金額を使う。
- データ用途では、観測ごとにsourceと更新時刻を記録する。
用途に合ったレートを選ぶ
ダッシュボード、会計上の参照、過去分析、価格表示、決済前の見積もりにはインディケーティブレートを使う。決済や取引の執行が必要な場合は、銀行・ブローカー・決済事業者の気配値を使う。どちらも互いの代わりにはならない。
現在の参照レートを必要とするアプリケーションには、EUR/USDのライブページから始め、sourceとmarket_sessionフィールドを自社インターフェースにも保持してほしい。インディケーティブレートと約定可能な為替レートではこの境界線をより詳しく解説し、sourceとセッションの読み方ではメタデータについて説明している。