Googleでレートを確認したのに、銀行やカード会社、決済アプリでは違う数字が表示される。Googleに出ている数字は通常、ミッドマーケット為替レート(仲値)であり、それと実際に請求されるレートとの差こそ、通貨換算コストの大半が隠れている場所です。複数通貨のお金を扱うプロダクトを作るなら、この差を理解することは必須です。
このガイドでは、ミッドマーケットレートとは何か、ビッド・アスク・スプレッドとの関係、一般の利用者がほとんどそのレートで取引できない理由、そしてFinexly APIドキュメントのエンドポイントを使ってコードで扱う方法を解説します。
ミッドマーケット為替レートとは?
ミッドマーケット為替レート(ミッドレート、インターバンクレート、スポットミッドとも呼ばれます)とは、買い手が通貨を買ってもよいと考える価格と、売り手が売ってもよいと考える価格の中間点です。手数料や上乗せを含まない、ある時点における通貨ペアの「公正な」価格に最も近いものです。
すべての通貨ペアは2つの価格で提示されます。
- ビッド(Bid):ディーラーがあなたから基軸通貨を買う価格。
- アスク(Ask)/オファー(Offer):ディーラーがあなたに基軸通貨を売る価格。
アスクは常にビッドより高くなります。ミッドマーケットレートはその真ん中に位置します。
mid = (bid + ask) / 2
spread = ask - bidたとえばEUR/USDがビッド1.0840、アスク1.0842で提示されている場合、ミッドマーケットレートは1.0841、スプレッドは0.0002、つまり2pipsです。これらの数字はあくまで説明用です。pipsに馴染みがない方は、FXにおけるpipとはのガイドをご覧ください。
ビッド・アスク・スプレッド:すべての提示レートの裏にある3つの数字
スプレッドは「すぐに取引できること」の対価です。常に売りと買いの両方に応じるディーラーは在庫リスクを負うため、買値と売値の間にわずかな差を設けます。流動性の高いインターバンク市場では、主要通貨ペアのスプレッドは1pipの何分の一かにとどまることもあります。エキゾチックな通貨ペアや取引の薄い市場では、大きく広がります。
スプレッドの大きさを左右する要因は主に3つです。
- 流動性:EUR/USDやUSD/JPYのように取引量の多いペアはスプレッドが狭く、エキゾチックペアは広くなります。メジャー、マイナー、エキゾチック通貨ペアもご参照ください。
- ボラティリティ:中央銀行の政策決定や重要指標の発表前後には、ディーラーは自衛のためにスプレッドを広げます。
- 取引サイズと時間帯:主要な取引時間外や週末は、一般的にスプレッドが広がります。
ミッドマーケットレートと実際に適用されるレート
ここからが不都合な部分です。ミッドマーケットレートは基準点であって、通常は実際に取引できる価格ではありません。事業者もどこかで収益を得る必要があるため、個人顧客がそのレートを得ることはまずありません。一般的な顧客向けレートは次のように作られます。
customer_rate = mid_rate × (1 - markup) # when the customer sells the base currency
customer_rate = mid_rate × (1 + markup) # when the customer buys the base currencyこの上乗せ(マークアップ)は、目に見える手数料とは別にかかります。「手数料無料」をうたう事業者でも高くつくことがあるのはこのためで、コストが為替レートの中に埋め込まれているのです。事業者を公正に比較する方法は、ミッドマーケットレートを基準に総コストを測ることです。
cost_pct = (mid_rate - customer_rate) / mid_rate × 100なお、ミッドマーケットレートで換算し、代わりに別途明確な手数料を請求する事業者もあります。どちらのモデルも公平になり得ますが、重要なのは総額を確認して比較できることです。同じ考え方は海外でのカード決済にも当てはまり、ダイナミック・カレンシー・コンバージョン(DCC)では大きな隠れたマークアップが加わることがよくあります。
ミッドマーケットレートはどこから来るのか?
唯一の公式なミッドマーケットレートというものは存在しません。外国為替は分散型の店頭(OTC)市場です。銀行、ディーラー、取引プラットフォームがそれぞれ独自のレートを公表し、データベンダーがそれらを集約します。オンラインで目にする「ミッドマーケットレート」は、通常、複数の流動性ソースを組み合わせ、取引時間中に継続的に更新されたものであり、同じ瞬間でも事業者ごとに値がわずかに異なることがあります。
1日のうち特定の時刻を基準とするベンチマークもあります。たとえば、ポートフォリオ評価に使われる午後4時のロンドン・フィックスです。データ事業者が数字をどのように組み立てているかについては、為替レートAPIはどこからデータを取得しているのかをお読みください。
開発者がミッドマーケットレートを理解すべき理由
複数通貨を扱うプロダクトを作っているなら、ミッドマーケットレートはあなたの参照レートです。主な用途は次のとおりです。
- 価格表示:商品ページで、換算後の目安価格を顧客に表示する。
- 手数料の透明化:請求するレートの隣にミッドレートを表示し、マークアップが見えるようにする。
- 会計とレポート:一貫した基準で残高を再評価し、損益を記録する。
- マージン管理:各換算で実際にどれだけマークアップを得ているかを計算する。
- 事業者の監査:決済パートナーのレートが市場から乖離していないかを検知する。
実践上のルールを一つ挙げます。ミッドレートと適用レートは別々に保存してください。請求したレートだけを保存していると、後からマークアップがいくらだったかを証明できません。
Finexlyでミッドマーケットレートを取得する
1回のリクエストでライブレートを取得できます。
curl "https://api.finexly.com/v1/latest?base=EUR&symbols=USD&apikey=YOUR_API_KEY"Python:マークアップと顧客レートを計算する
import requests
API_KEY = "YOUR_API_KEY"
def get_mid_rate(base: str, quote: str) -> float:
r = requests.get(
"https://api.finexly.com/v1/latest",
params={"base": base, "symbols": quote, "apikey": API_KEY},
timeout=10,
)
r.raise_for_status()
return r.json()["rates"][quote]
def customer_quote(amount: float, base: str, quote: str, markup_pct: float):
mid = get_mid_rate(base, quote)
applied = mid * (1 - markup_pct / 100)
return {
"mid_rate": mid,
"applied_rate": applied,
"customer_receives": round(amount * applied, 2),
"markup_cost": round(amount * (mid - applied), 2),
}
print(customer_quote(1000, "EUR", "USD", markup_pct=1.5))APIが返すレートを参照用のミッドレートとして扱い、その上に独自の明示的なマークアップを適用してください。小数の扱いについては、通貨の端数処理ガイドに従って管理しましょう。
JavaScript:ユーザーにレート比較を表示する
const API_KEY = "YOUR_API_KEY";
async function compareRates(base, quote, providerRate) {
const res = await fetch(
`https://api.finexly.com/v1/latest?base=${base}&symbols=${quote}&apikey=${API_KEY}`
);
const { rates } = await res.json();
const mid = rates[quote];
const hiddenCostPct = ((mid - providerRate) / mid) * 100;
return { mid, providerRate, hiddenCostPct: hiddenCostPct.toFixed(2) };
}
compareRates("EUR", "USD", 1.0680).then(console.log);ミッドマーケットレートを基準に事業者を比較する方法
どんな換算にも使える、シンプルで再現可能な方法があります。
- 事業者の提示と同じ時点で、そのペアのミッドマーケットレートを取得する。
- ミッドレートで受け取れる金額を計算する。
- 手数料とマークアップを差し引いた後に事業者が実際に提供する金額を計算する。
- その差額をミッドレートでの金額で割り、総コスト率を求める。
スプレッドは広がったり狭まったりするため、時間をずらして何度か行ってください。履歴データがあれば、単一の瞬間ではなく数週間にわたる公正な全体像をつかめます。過去の為替レートAPIガイドをご覧ください。
よくある間違い
- ミッドレートを取引可能な価格として扱う。あくまで基準です。実際の取引はビッドまたはアスクで成立します。
- 逆数レートの取り違え。自社の価格設定にスプレッドが関わる場合、EUR/USDのミッドは、USD/EURのミッドの正確な逆数にはなりません。方向を一つに決めて統一してください。
- キャッシュしすぎる。レートは絶えず変動します。用途に応じて、数時間ではなく数秒から数分のキャッシュにとどめましょう。
- マークアップをレートに隠す。多くの市場で、規制当局はコストの明確な開示をますます求めています。ミッドレートを示すことは信頼の証になります。
- 早すぎる丸め。丸めるのは最終金額のみで、途中のレートは丸めません。
よくある質問
ミッドマーケット為替レートとは、簡単に言うと何ですか?
グローバル市場における通貨ペアの買値と売値の中間点です。手数料や上乗せを含まないため、公正さを測る有用な基準になります。
ミッドマーケットレートとインターバンクレートは同じですか?
ほぼ同じ意味で使われます。どちらも銀行やディーラーが互いに取引する際の中心となるレートを指しますが、正確な値はデータソースによってわずかに異なります。
なぜ銀行はミッドマーケットレートで取引してくれないのですか?
銀行や決済事業者は、各換算のスプレッドとマークアップで収益を得ています。ミッドレートを使い、代わりに明示的な手数料を請求する事業者もあるため、必ず総コストで比較してください。
通貨ペアの本当のミッドマーケットレートはどうすれば分かりますか?
為替レートAPIなどの信頼できるライブソースを使い、提示されたレートと比較します。その差のパーセンテージが実質コストです。
APIでミッドマーケットレートを取得できますか?
はい。為替レートAPIはライブの参照レートを返すため、それをミッドレートとして使い、独自のマークアップを上乗せしたり、他社の提示レートと比較したりできます。上のコードをご覧ください。
透明性のある通貨価格設定を構築しよう
リアルタイムの為替レートをプロジェクトに組み込む準備はできましたか?無料のFinexly APIキーを取得してください。クレジットカードは不要です。月1,000リクエストまで無料で始められ、成長に合わせて料金プランにアップグレードできます。コードを書く前に通貨コンバーターで任意のレートを確認したり、通貨APIを比較して最適なものを見つけたりすることもできます。
Explore More
Vlado Grigirov
Senior Currency Markets Analyst & Financial Strategist
Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...
View full profile →