固定相場 vs 変動相場:開発者のための為替制度ガイド(2026)
通貨 API を叩いていて USD/HKD はほとんど動かないのに、USD/JPY が昼までに 200 pips も振れるのを目にしたなら、あなたはすでに固定相場と変動相場の違いを実地で経験しています。両者は外から見ると同じ — 同一の JSON レスポンスから返ってくる一つの数値 — ですが、振る舞いはまったく異なり、その上に作るアプリは違いを知っている必要があります。
このガイドでは、開発者の視点から 固定相場 vs 変動相場 を解説します。各制度の仕組み、2026 年時点でどの通貨がどちらに属するか、通貨 API を使って制度をプログラムで識別する方法、そしてペッグが崩れても倒れないコードの書き方を取り上げます。読み終わる頃には、アプリが触れるあらゆるレートに何を期待すべきか、そしてつらい教訓を得る前にどんな防御コードを出荷すべきかが分かります。
固定相場(Fixed Exchange Rate)とは?
固定相場(ペッグ相場 とも呼ばれます)は、中央銀行が自国通貨の価値を、他通貨や通貨バスケット、あるいは歴史的には金などの商品に対して目標水準で意図的に維持する制度です。
ペッグは次の二つのいずれかで支えられます:
- 積極介入 — 中央銀行が外貨準備を使って、相場が目標から離れるたびに公開市場で自国通貨を売買する。
- カレンシーボード — 国内通貨が固定比率でアンカー通貨の準備で完全に裏付けられる。発行された各単位は、中央銀行のバランスシート上で 1:1(またはペッグ比率で)準備により担保される。
例えば香港ドルは 1983 年以来、カレンシーボードのもとで HKD 7.80 = USD 1.00 前後でアメリカドルにペッグされています。サウジアラビア・リヤルは 1986 年以来 SAR 3.75 = USD 1.00 を維持しています。どちらも教科書的なハードペッグです。
ハードペッグ、ソフトペッグ、クローリングペッグ
固定制度はみな同じではありません。IMF はペッグをスペクトラム上に分類します:
- ハードペッグ — 単一レートに完全固定、例外なく防衛(HKD、SAR、AED、BHD)。
- コンベンショナルペッグ — 目標レートを狭いバンド(通常 ±1%)内で固定し、中央銀行が介入(DKK 対 EUR、JOD、OMR)。
- クローリングペッグ — 目標レートが事前公表のスケジュールで動き、通常はインフレ差を管理するため(かつてのベトナムや一部のラテンアメリカ諸国)。
- 安定化アレンジメント — ペッグが公式宣言されていなくても、レートが少なくとも 6 か月以上狭いバンドに収まる(IMF の事実上分類)。
開発者にとって重要なのは、各制度のボラティリティ・プロファイルが異なることです — ハードペッグはベーシスポイントで動き、クローリングペッグは既知の日次幅で動き、安定化アレンジメントはいつでも分類が変わり得ます。
変動相場(Floating Exchange Rate)とは?
変動相場は外国為替市場が決めます — トレーダー、輸入者、輸出者、中央銀行、ヘッジャー、投機家の需給がリアルタイムに価格を動かします。目標レートも介入義務もありません。
主要通貨の大半は変動です:USD、EUR、GBP、JPY、AUD、CAD、NZD、CHF、NOK、SEK、MXN、BRL、ZAR、その他自由に取引される多くの通貨。これらを合わせると、BIS が 2022 年トリエンナル調査で報告した1日約 7.5 兆ドルの取引量の大半を占めます — そのシェアはその後さらに拡大しています。
純粋フロート vs 管理フロート
実務上、「変動」は連続体です:
- フリーフロート / 純粋フロート — 中央銀行は介入しない。市場が連れていく方向へ動く。USD、EUR、AUD は教科書的なフリーフロート。
- 管理フロート(ダーティフロート) — 中央銀行は過度のボラティリティ抑制や一方向の動きへの抗戦のために時々介入するが、特定水準を防衛しない。日本円は有名な管理フロート例;日銀は 2022 年、2024 年、そして USD/JPY が心理的水準を破った 2026 年初頭にも公然と介入しました。
開発者から見ると、管理フロートと安定化アレンジメントの境界は曖昧で、通貨は両者を行き来できます。だから「この通貨はこれくらいしか動かないはず」をハードコードしてはいけません。
なぜ開発者にとって重要か
すべての為替レートを単一問題として扱いたくなります — エンドポイントを叩き、数値をもらい、掛けてデプロイ。しかし、見積もりの背後にある制度は、本番運用で重要なほぼすべてを決めます:
- 本当に必要な更新頻度。 ペッグ通貨はサブ秒ポーリングをまず必要としません。主要変動通貨は別。
- 許容範囲の広さ。 HKD/USD で 1% 動けばニュース、EUR/USD で 1% 動いても普通の火曜日。
- 「古いデータ」の意味。 30 分前の SAR/USD のスポット見積もりは請求書には十分ですが、JPY のライブトレードには危険。
- 異常値の扱い。 バンド外への HKD のスパイクは、本物のペッグ崩壊か、ただの不良データ。変動通貨は別の異常検知ロジックが必要。
- フォワードレートが要るか。 スポットとフォワード はハードペッグでは金利平価で密接に収束し、変動通貨では乖離します。
アプリ内のすべての通貨に単一のボラティリティモデルを使うのは、コードレビューでよく見る一番ありふれた間違いです。IMF は現在、約 80 経済圏 を何らかの固定または安定化アレンジメントに、65 経済圏 を変動または自由変動に分類しています。あなたのコードはどれがどれかを知るべきです。
2026 年の主要ペッグ通貨
IMF の最新の為替アレンジメント年次レポートに基づき、アプリが遭遇しがちな実用参照リスト:
| 通貨 | コード | ペッグ先 | 概算レート | 制度 |
|---|---|---|---|---|
| 香港ドル | HKD | USD | 7.80(バンド 7.75–7.85) | カレンシーボード |
| サウジ・リヤル | SAR | USD | 3.75 | コンベンショナルペッグ |
| UAE ディルハム | AED | USD | 3.6725 | コンベンショナルペッグ |
| バーレーン・ディナール | BHD | USD | 0.376 | コンベンショナルペッグ |
| カタール・リヤル | QAR | USD | 3.64 | コンベンショナルペッグ |
| オマーン・リアル | OMR | USD | 0.385 | コンベンショナルペッグ |
| ヨルダン・ディナール | JOD | USD | 0.709 | コンベンショナルペッグ |
| レバノン・ポンド | LBP | USD(法律上) | 不安定 | 危機制度 |
| デンマーク・クローネ | DKK | EUR | 7.46(ERM II ±2.25%) | コンベンショナルペッグ |
| ブルガリア・レフ | BGN | EUR | 1.9558 | カレンシーボード |
| 西アフリカ CFA フラン | XOF | EUR | 655.957 | コンベンショナルペッグ |
| 中央アフリカ CFA フラン | XAF | EUR | 655.957 | コンベンショナルペッグ |
| コモロ・フラン | KMF | EUR | 491.968 | コンベンショナルペッグ |
| CFP フラン | XPF | EUR | 119.3317 | コンベンショナルペッグ |
- 湾岸ブロックは事実上、6 つの ISO コードをまとった 1 つの通貨(USD)。
- ユーロ・アンカー・ブロックは多くの開発者が思うより広い — DKK、BGN、CFA フラン他はユーロのように動きます。
- 表のペッグの一つは壊れています。 レバノン・ポンドは法律上ペッグですが、並行市場では公式レートの何倍もで取引されます — 公式レートだけを信じてはいけません。
2026 年の主要変動通貨
比較として、変動側は予想通りのものに加え、長い新興市場テールが含まれます:
- G10 メジャー: USD、EUR、JPY、GBP、CHF、AUD、CAD、NZD、NOK、SEK
- 活発な新興市場変動通貨: MXN、BRL、ZAR、INR、IDR、KRW、TWD、TRY、PLN、HUF、CZK、ILS、CLP、COP、PEN、THB、PHP、MYR
- コモディティ連動変動通貨: AUD、CAD、NZD、NOK、BRL、ZAR — 原油・コモディティ価格 と強く相関。
これらを Finexly API で照会するなら、市場が開いている毎秒ごとに動くと思ってください。ポーリング、キャッシュ、エラーハンドリング はそれに合わせて調整しましょう。
通貨制度をプログラムで判定する
制度リストを手で保守する必要はありません — データそのものから合理的な近似を導けます。Finexly のヒストリカル・エンドポイントを使い、30 日間の実現ボラティリティで通貨ペアを分類する小さな Python ユーティリティ:
import os
import statistics
from datetime import date, timedelta
import requests
API_KEY = os.environ["FINEXLY_API_KEY"]
BASE = "https://api.finexly.com/v1"
def regime(base: str, quote: str, days: int = 30) -> dict:
end = date.today()
start = end - timedelta(days=days)
url = f"{BASE}/timeseries"
params = {
"base": base,
"symbols": quote,
"start_date": start.isoformat(),
"end_date": end.isoformat(),
"api_key": API_KEY,
}
rates = requests.get(url, params=params, timeout=10).json()["rates"]
series = [day[quote] for day in rates.values()]
returns = [
(series[i] / series[i - 1]) - 1
for i in range(1, len(series))
]
vol = statistics.pstdev(returns) * (252 ** 0.5) # annualized
if vol < 0.005:
label = "hard peg"
elif vol < 0.02:
label = "soft peg / stabilized"
elif vol < 0.10:
label = "managed float"
else:
label = "free float"
return {"pair": f"{base}/{quote}", "annual_vol": round(vol, 4), "regime": label}
for pair in [("USD", "HKD"), ("USD", "SAR"), ("EUR", "DKK"),
("USD", "JPY"), ("USD", "TRY"), ("EUR", "USD")]:
print(regime(*pair))典型的な出力:
{'pair': 'USD/HKD', 'annual_vol': 0.0021, 'regime': 'hard peg'}
{'pair': 'USD/SAR', 'annual_vol': 0.0008, 'regime': 'hard peg'}
{'pair': 'EUR/DKK', 'annual_vol': 0.0009, 'regime': 'hard peg'}
{'pair': 'USD/JPY', 'annual_vol': 0.0918, 'regime': 'managed float'}
{'pair': 'USD/TRY', 'annual_vol': 0.2771, 'regime': 'free float'}
{'pair': 'EUR/USD', 'annual_vol': 0.0734, 'regime': 'managed float'}しきい値は学術的なものではなく実用的な値です — 自分の許容度に合わせて調整してください。鍵は、コードが反応すべきは宣言ではなく実現ボラティリティだということ。
ワンショット用の cURL 等価:
curl "https://api.finexly.com/v1/timeseries?base=USD&symbols=HKD&start_date=2026-04-01&end_date=2026-05-01&api_key=$FINEXLY_API_KEY"ブラウザ・ダッシュボード向け、同じ考え方の JavaScript 実装:
async function realizedVol(base, quote) {
const end = new Date().toISOString().slice(0, 10);
const start = new Date(Date.now() - 30 * 86400e3).toISOString().slice(0, 10);
const url = `https://api.finexly.com/v1/timeseries?base=${base}&symbols=${quote}&start_date=${start}&end_date=${end}&api_key=${process.env.FINEXLY_API_KEY}`;
const data = await fetch(url).then(r => r.json());
const series = Object.values(data.rates).map(d => d[quote]);
const rets = series.slice(1).map((v, i) => v / series[i] - 1);
const mean = rets.reduce((a, b) => a + b, 0) / rets.length;
const variance = rets.reduce((a, b) => a + (b - mean) ** 2, 0) / rets.length;
return Math.sqrt(variance) * Math.sqrt(252);
}
console.log(await realizedVol("USD", "HKD"));
console.log(await realizedVol("USD", "JPY"));ペッグ崩壊への対処:「安定」通貨が突然そうでなくなるとき
開発者にとって危険な失敗モードは緩やかなドリフトではなく、突発的な崩壊です。歴史には例が並びます:
- スイス、2015 年 1 月 — スイス国立銀行が予告なしに EUR/CHF 1.20 のフロアを放棄、フランは数分で約 30% 上昇。複数の FX ブローカーが破綻。
- アルゼンチン、2023 年 12 月 — 公式ペソが大幅切り下げ;公式レートしか使っていなかったアプリは並行レートで取引するユーザーに対し奇妙な結果を返した。
- エジプト、2024 年 3 月 — 長い管理切り下げの末に EGP が事実上一夜で変動化、USD/EGP は 1 日で 2 倍。
堅牢な統合は、すべての「固定」レートをそうでないと判明するまで固定として扱います。デフォルトで出荷する価値のある二つの防御パターン:
- 常識バンド+サーキットブレーカー。 通貨ペアごとに想定バンドをキャッシュ。ライブ見積もりがバンドを外れたら、変換を拒否し、悪い価格で値付けせずアラートを上げる。
- 複数ソースの相互確認。 ビジネス上重要な変換では、主要プロバイダのレートを独立基準と比較。不一致は、ソース・キャッシュ・現実のいずれかで何かが間違っている合図。
最小限の常識チェックラッパー(Python):
EXPECTED = {
("USD", "HKD"): (7.75, 7.85),
("USD", "SAR"): (3.74, 3.76),
("EUR", "DKK"): (7.43, 7.49),
}
def safe_rate(base, quote, live_rate):
band = EXPECTED.get((base, quote))
if band and not (band[0] <= live_rate <= band[1]):
raise ValueError(
f"{base}/{quote} = {live_rate} outside expected band {band}; "
"possible peg break or bad data — alert ops before pricing."
)
return live_rateこれが、火曜の朝のインシデントレポートが火曜午後の返金サイクルになるのを防ぐコードです。
双方の制度を生き抜くアプリの作り方
2026 年に多通貨対応プロダクトを出すチームに推奨するチェックリスト:
- サポート通貨ごとに制度タグ(ハードペッグ、コンベンショナルペッグ、管理フロート、フリーフロート)をビルド時に付け、キャッシュ・アラート・UI のフィーチャーフラグとして扱う。
- 制度ごとにキャッシュ TTL を設定。 ハードペッグは 24 時間で十分;主要変動通貨は 30 秒程度がよく、トレーディングアプリには WebSocket フィード がさらに望ましい。
- 必要に応じてユーザーに制度を表示。 「USD ペッグ — 通常安定」は国際買い物客を安心させ、「変動 — レート頻繁更新」は新興市場のチェックアウトで期待値を正しく整える。
- ステージングでペッグ崩壊シナリオを試験。 ペッグ通貨ペアに合成 5% の動きを注入し、サーキットブレーカーが発火するか確認。
- 中央銀行カレンダーを購読。 香港金融管理局、サウジ中銀、BCEAO は政策会合を公表;主要なペッグ変更は稀ですが、永遠に起き得ないわけではない。
- カバレッジの広いプロバイダを使う。 Finexly は 170+ 通貨をすべてカバー、主要ペッグや IMF 参照レート、存在する場合は並行市場データも含みます。フリー&有料プランは 価格プラン を、代替検討中なら 通貨 API 比較 を参照。
よくある質問
固定相場と変動相場の違いは?
固定相場は中央銀行が他通貨やバスケットに対する目標値で維持し、通常は準備と介入で支えます。変動相場は需給で決まり、介入はほぼ、あるいは全くありません。固定はより安定;変動は経済情勢により敏感に反応。
固定と変動、どちらが良い?
普遍的に良い制度はありません — トレードオフです。固定は貿易やインフレ期待に予測可能性を与えますが、十分な準備が必要で金融政策を制約します。変動は中央銀行が国内事情に応じられますが、為替ボラティリティを生みます。多くの大規模開放経済は変動;小規模開放経済や石油輸出国はしばしばペッグ。
米国は固定?変動?
米ドルは自由変動です。FRB は他通貨に対する USD 水準をターゲットしません。ただし、非常に多くの通貨が USD にペッグされているため、USD は世界の通貨システムのかなりの部分にとって事実上のアンカーとして機能します。
ペッグが崩れたら何が起こる?
ペッグ崩壊 — それまで目標に維持されていた通貨の急で大きな動き — は数時間で 10%、30%、あるいはそれ以上、通貨を切り下げ・切り上げます。期待バンドに対し見積もりを検証しないアプリは、誤った価格で取引、誤レートで決済、ユーザーに無意味な数字を表示しかねません。ペッグペアには必ず常識チェックを実装しましょう。
データだけで通貨がペッグされているか分かる?
通貨ペアのアンカーに対する実現ボラティリティを直近 1 か月で計算します。ハードペッグは年率で通常 0.5% 未満;変動通貨は 5–10% 超。前述の Python・JavaScript スニペットが実装例。IMF が公表する分類と組み合わせて基準値とします。
Finexly を使い始める
ペッグ通貨と変動通貨で一貫して動くリアルタイム為替を導入する準備はできましたか?無料の Finexly API キーを取得 — クレジットカード不要。フリープランは月 1,000 リクエスト、170+ 通貨にフルアクセス、HKD でも TRY でも同じ JSON 構造。一度書けば、どの制度にも対応できます。
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 →