検証ラボ ── 2026-08-31
9社のスワップを「比べられる形」にするまで — 同じ数字が同じ意味とは限らない
スワップサヤ取り計算機(TOOL-001)では、国内FX9社のスワップポイントを毎営業日自動で取得しています。
作る前は、単純な仕事だと思っていました。各社が公表している数字を集めて並べるだけだと。
**そうはなりませんでした。**同じ「スワップポイント」という言葉で呼ばれていても、数字の意味が社ごとに違ったからです。
比較サイトの数字をそのまま信じてよいのか、という判断にも関わる話なので、つまずいた箇所を記録しておきます。
前提
| 項目 | 内容 |
|---|---|
| 対象 | 国内店頭FX 9社 |
| 実行 | GitHub Actions で毎営業日22時(JST)に自動実行 |
| 正規化の目標 | すべて「円 / 1万通貨 / 日」に揃える |
| 実装 | 約670行 |
**業者名は出しません。**特定の社の優劣を論じる記事ではなく、形式の非互換そのものが主題だからです。
手順で踏んだ壁
壁1: 配信の形式が4種類あった
集める前に、まず「どうやって集めるか」が社ごとに違いました。
| 形式 | 中身 |
|---|---|
| カレンダーHTML | 月次のカレンダー表。行が「日付 → 付与日数 → 買 → 売」の順に並ぶ |
| JSON API | 一覧をそのまま返す。最も扱いやすい |
| CSV(月次) | 月ごとのファイル。文字コードに注意 |
| CSV(履歴) | 全期間分が1ファイル |
**PDFでしか出していない社もありました。**その社は対象から外しています。人間が読む前提の資料なので、機械で安定して読む方法がありません。
壁2: 文字コードが UTF-8 とは限らない
CSVのいくつかは Shift_JIS でした。UTF-8として読むと、日本語の列名が化けて列の特定に失敗します。
古くからある金融系のデータでは珍しくありませんが、最初に文字コードを疑うという発想がないと原因にたどり着けません。
壁3: 日付の書き方が揃っていない
ある社のCSVでは、日付が 8/1(土) という形式でした。曜日が括弧つきで付いています。
月/日 を想定した処理では1件も拾えず、エラーも出ないまま0件になります。値が空なのではなく、パターンに合わないから読み飛ばされていただけでした。
いまは曜日つきに対応させたうえで、CSVに書かれた曜日と、日付から計算した曜日を照合する検証も入れています。ずれていたら止まります。
壁4: 1Lotの通貨量が違う
「1Lotあたり」で公表している社があります。ところが1Lotが何通貨かはペアによって違いました。
ある社では、多くのペアが1Lot=1万通貨なのに、一部の通貨ペアだけ1Lot=10万通貨でした。気づかずに並べると、その通貨ペアだけ10倍のスワップが付いているように見えます。
別の社では 1,000通貨・1万通貨・10万通貨が混在していました。
単位を確認せずに社を比べるのは、たいてい間違いです。
壁5: 付与日数で割らないと1日あたりにならない
これが一番厄介でした。
カレンダーに載っている値は、その日にまとめて付与される合計です。水曜なら通常3日分が一度に付きます。日次に直すには、付与日数で割る必要があります。
つまり水曜の数字だけを見て「この社は高い」と判断すると、3倍の値を見ていることになります。
さらに厄介なことに、付与日数を公表していない社もありました。その場合は、日数を公表している別の社のカレンダーから日数を借りてくることになります。
壁6: 多日付与の曜日が社によって違う
日数を借りるときに、もうひとつ罠がありました。
多くの社は水曜にまとめて計上しますが、木曜に計上する社があります。
水曜計上の社から借りた日数マップを木曜計上の社に当てると、日付が1日ずれたまま割り算することになります。この場合、借りる先を選び直す必要があります。
ちなみに「水曜・3日分」がどれくらい標準的なのかは、別途5年8ヶ月分を実測しました。**標準形は62%**で、残り38%は日数か曜日、あるいは両方が違っていました。
結果
正規化を通すと、9社を1つの表に並べられるようになります。
公表値 → 単位の正規化(1Lotの通貨量で割る)
→ 付与日数で割る(日次に直す)
→ 円 / 1万通貨 / 日
この3段階を通していない数字は、社をまたいで比べられません。
壊れたときにどうするか
各社のサイト構造は予告なく変わります。変わればスクレイパーは壊れます。
そこで、取得に失敗した社は前回の値を保持し、stale(古い)フラグを立てる設計にしました。
- 表示上は前回値が残るので、ツール全体が落ちない
- ただし古い値だと分かる
- そして履歴には記録しない。前回値をそのまま残すと「改定がなかった」と誤って記録されるためです
失敗を「なかったこと」にしないのが肝です。黙って古い値を新しい値として扱うのが、いちばん危ないからです。
解釈
この作業で分かったのは、**「同じ名前の数字が同じ意味とは限らない」**ということでした。
スワップポイントという言葉は共通でも、その裏には
- 何通貨あたりか
- 何日分か
- どの曜日に計上するか
という3つの前提が隠れています。3つとも社によって違いました。
比較サイトやSNSで見かける「A社のスワップは○円」という数字も、この3つが揃っていなければ並べた意味がありません。自分で確かめるなら、まず単位と付与日数を見てください。
限界
- **9社のみです。**国内店頭FXの全社ではありません
- 2026年8月時点の各社の形式です。変われば対応も変わります
- PDFでしか公開していない社は対象外です。取れないものは取れないという制約が残っています
- 公表値であって、実際に自分の口座に付いた値ではありません。約定条件や口座区分で変わる可能性があります
まとめ
- 同じ「スワップポイント」でも、配信形式4種・文字コード・日付書式・単位・付与日数・計上曜日がすべて社ごとに違った
- 比較できる形にするには「単位で割る → 付与日数で割る」の2段階が要る
- 水曜の数字をそのまま見ると、3倍の値を見ていることになる
- 失敗した社は前回値+staleで表示し、履歴には入れない。失敗を成功として記録しないため
数字を集めるより、その数字が何を意味しているのかを揃えるほうが、はるかに手間でした。
出典
- 実装: 当サイトの スワップサヤ取り計算機(TOOL-001) の自動更新スクリプト(約670行)。毎営業日22時に GitHub Actions で実行
- 付与日数の実測: スワップ「3倍デー」を5年8ヶ月分実測したら、水曜・3日分は6割しかなかった(当サイト)
- スワップの仕組み: スワップポイントの仕組み(当サイト)
※本記事は情報提供を目的としたもので、特定の業者を推奨または批判するものではありません。形式の違いは優劣ではなく、各社の設計思想の違いです。