検証ラボ ── 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で表示し、履歴には入れない。失敗を成功として記録しないため

数字を集めるより、その数字が何を意味しているのかを揃えるほうが、はるかに手間でした。

出典

※本記事は情報提供を目的としたもので、特定の業者を推奨または批判するものではありません。形式の違いは優劣ではなく、各社の設計思想の違いです。