BEQI:FXブローカーの執行品質を監査するオープンソース・ツールキット 2026年05月04日 – Posted in: Arbitrage Software



BJF TRADING GROUP · オープンリサーチ

BEQI:あらゆるFXブローカーの執行品質を監査するオープンソース・ツールキット

リテールFXブローカーは執行品質のデータを公開していません。マッチングのレイテンシー、スリッページの非対称性、スプレッドの拡大、ラストルックのホールド時間について、公開されたベンチマークは存在しません。私たちはそれを変えようとしています。BEQI(Broker Execution Quality Index、ブローカー執行品質指数)は、オープンな手法、オープンなPythonツールキット、そして誰でも投稿できる公開スプレッドシートです。ご自身のブローカーを30分で測定でき、そのデータが蓄積されてベンチマークになります。

5つの測定項目
3種類の入力形式に対応
MITライセンス
初回監査まで~30 min



これまで公開のブローカー監査が存在しなかった理由

リテールFXの執行は、トレーディング・スタックの中で最も不透明な層です。スプレッドは宣伝され、手数料は公開されています。しかし、注文送信から約定確認までの間に起きること、つまりマッチングのレイテンシー、スリッページの対称性、ラストルックのホールド、リクオートの頻度、シグナル発生時のスプレッド拡大は、トレーダーからは見えず、ブローカーも公開していません。戦略のバックテストはレイテンシーゼロの約定を前提としています(この問題はレイテンシー・アービトラージのバックテストが本番で通用しない理由で詳しく解説しています)。ブローカーのレビューはUXや出金で評価されます。戦略が本番で生き残れるかどうかを実際に左右する変数を測定している人はいません。

BEQIは、ある特定の問題を解決します。リテールFXの執行品質について、公開された手法も、共有のツールキットも、ベンチマークとなるデータセットも存在しないという問題です。BJF Trading Groupでは、SharpTrader ProとSharpTrader Optimizerにブローカーごとの仕様への対応を組み込むため、長年これを社内で測定してきました。今回、その手法とコードをオープンソースとして公開します。

目的は、ブローカーを名指しするランキングを公開することではありません(それは法的な地雷原であり、データの信頼性も損ないます)。目的は、すべてのトレーダー、クオンツ、ブローカー技術の研究者に、同じ標準化された測定方法、同じ実行用Pythonスクリプト、そして匿名化された結果を投稿できる公開の場を提供することです。数か月のうちに、スプレッドシートはベンチマークになります。誰でも手法を再現し、異議を唱え、拡張することができます。

BEQIの主張をひと言で

1万人のトレーダーが同じオープンな手法でブローカーの執行品質を測定すれば、個々のブローカーが否定できず、レビューサイトが偽造できず、すべての戦略開発者が状況を把握したうえで資金配分に活用できる公開ベンチマークが生まれます。



BEQIの5つの測定項目

執行品質は単一の数値ではありません。BEQIはそれを5つの独立した項目に分解します。いずれも取引明細から個別に測定でき、そのうち2つは明細と組み合わせたティックストリームから測定します。

BEQIの項目 測定内容 単位 データソース 良いのは…
1. マッチング・レイテンシー 注文送信から約定確認までの時間の中央値 ミリ秒 明細のタイムスタンプ+送信時刻ログ 低いほど良い
2. スリッページの非対称性 ネガティブ・スリッページの約定数とポジティブ・スリッページの約定数の比率 比率(1.0 = 対称、>1.0 = トレーダーに不利) 明細:要求価格と約定価格 1.0に近いほど良い
3. スプレッド拡大係数 シグナル発生時のスプレッド拡大(基準比) 倍率(1.0 = 拡大なし、3.0 = 3倍に拡大) 注文タイムスタンプ前後のティックストリーム 1.0に近いほど良い
4. ラストルックのホールド時間 マッチング時刻から確認までの遅延の中央値 ミリ秒 FIXログまたは拡張明細 低いほど良い/ゼロ
5. リクオート率 注文100件あたりのリクオート数 100件あたりの件数 明細のリクオートイベント 低いほど良い/ゼロ

各項目はそれぞれ単独で意味を持ちます。マッチング・レイテンシーは低いがスリッページの非対称性が高いブローカーもあれば、その逆もあります。こうした組み合わせは、ブローカーが実際にどう振る舞っているかについて異なる実態を示します。ツールキットは各項目を個別にレポートし、最後に(加重した)総合BEQIスコアを算出します。



ご自身のブローカーで監査を実行する方法(30分)

必要なものは3つです。(a) 少なくとも1取引週をカバーし、200件以上の約定を含む取引明細、(b) 任意のマシン上のPython 3.10+、(c) 30分の時間。残りはツールキットが処理します。

ステップ1 — 明細をエクスポートする

ツールキットは3種類の入力形式に対応しています。

  • 一般的な取引端末のHTML明細(リテール取引プラットフォームの「レポートとして保存」機能で保存したもの) — ほとんどのリテールトレーダーはこれを使用します
  • FIXログ(FIX 4.4メッセージのダンプ) — FIXブリッジや機関投資家向け接続を利用しているトレーダー向け
  • order_id, send_time, fill_time, requested_price, filled_price, side, volumeの列を持つCSV — 独自ログを含め、それ以外のすべての方向け

プラットフォームが送信時刻(戦略が注文送信を決定した瞬間)を出力しない場合でも、基本的な明細から項目2と5(スリッページの非対称性とリクオート率)は測定できます。項目1、3、4には、より詳細なログが必要です。

ステップ2 — インストールして実行する

$ git clone https://github.com/bjftradinggroup-inc/forex-broker-audit-toolkit
$ cd forex-broker-audit-toolkit
$ pip install -r requirements.txt
$ python beqi.py –input my_statement.html –tick-data eurusd_ticks.csv –output report.json

ツールキットは入力形式を自動検出します。beqi.pyは各項目の分析モジュールに処理を振り分け、概要を表示し、公開スプレッドシートに投稿できるJSONレポートを書き出します。

ステップ3 — レポートを確認する

レポートには、5つの項目のスコア、総合BEQI、サンプルサイズの診断(Nが小さいほど信頼度が低い)、ティア分類(1〜4、下記参照)が含まれます。より多くのデータで実行すると、信頼区間が狭まります。

デフォルトで匿名

ツールキットは、口座番号、口座残高、損益(P&L)、ポジションサイズを一切参照しません。使用するのはタイムスタンプ、価格、要求価格と約定価格の差、イベントの種類だけです。出力されるJSONには、BEQIスコア、サンプルサイズ、対象通貨ペア、期間のみが含まれ、個人を特定する情報は含まれません。公開スプレッドシートには匿名で投稿できます。



結果の読み方:BEQIの4つのティア

SharpTrader Proが対応するブローカー全体での社内測定に基づく、経験的なティアは以下のとおりです。これらは出発点となる基準値であり、公開スプレッドシートによって時間とともに精緻化されていきます。

ティア1 · 機関投資家向けECN

BEQI 85–100

  • マッチング・レイテンシー:5–15 ms
  • スリッページの非対称性:1.0–1.05
  • スプレッド拡大:1.0–1.3x
  • ラストルック:0–5 ms
  • リクオート率:<0.5 / 100

ティア2 · 高速リテール/高速ブリッジ

BEQI 65–85

  • マッチング・レイテンシー:30–80 ms
  • スリッページの非対称性:1.05–1.20
  • スプレッド拡大:1.3–2.0x
  • ラストルック:50–150 ms
  • リクオート率:0.5–2 / 100

ティア3 · 標準的なリテール

BEQI 40–65

  • マッチング・レイテンシー:80–200 ms
  • スリッページの非対称性:1.20–1.50
  • スプレッド拡大:2.0–3.5x
  • ラストルック:200–500 ms
  • リクオート率:2–5 / 100

ティア4 · 問題あり

BEQI 0–40

  • マッチング・レイテンシー:200+ ms
  • スリッページの非対称性:1.50+
  • スプレッド拡大:3.5x+
  • ラストルック:500+ ms
  • リクオート率:5+ / 100

ティア分類が重要なのは、同じ取引戦略でもティアによって実運用の結果が大きく異なるからです。ティア1で利益を上げるレイテンシー・アービトラージ戦略は、ティア3では破綻します。ポジションを数時間保有するトレンドフォロー戦略は、ティア1とティア3でおおむね差がありませんが、ティア4では目に見えて悪化します。資金を投入する前にブローカーのティアを把握することが、すべてを決めます。



公開BEQIスプレッドシート

スプレッドシートは長期的な資産です。誰でも監査1回につき1行を投稿できます。各行には、5つの項目のスコア、総合スコア、サンプルサイズ、対象通貨ペア、期間、そして(任意で)ブローカー名が含まれます。私たちはブローカー名を空欄にした匿名の投稿を想定しており、歓迎しています。そうした投稿も、時間とともにリテールFX業界全体の執行品質について有用な集計分布を生み出します。

BEQI公開監査データベース
新しいタブで開く →

投稿方法:ツールキットを実行し、JSON出力をコピーして、投稿フォーム(リンクはシート内にあります)に貼り付けてください。新しい行は妥当性を確認したうえで24時間以内に受理されます。投稿されたスコアを編集することはありませんが、サンプルサイズが <100件の約定の行には信頼度が低いことを示すフラグを付ける場合があります。



手法の詳細(レビュー・再現を行う方向け)

完全な数学的仕様はリポジトリ内のMETHODOLOGY.mdにありますが、要となる設計判断は次のとおりです。

1. マッチング・レイテンシー

fill_time − send_timeの中央値(平均値ではありません)。中央値を使うのは、マッチング・レイテンシーの分布が、典型的な執行を代表しないときおりの1〜5秒の外れ値(ネットワークの経路変更、ブローカー側のGC停止)によって右に歪むためです。テールが見えるよう、中央値、p90、p99を個別にレポートします。

2. スリッページの非対称性

各約定のスリッページには符号を付けます。プラスはトレーダーが要求より有利な価格を得たこと、マイナスは不利な価格だったことを意味します。非対称性 =(ネガティブ・スリッページの件数)/(ポジティブ・スリッページの件数)。対称で中立なブローカーは約1.0になります。1.2を超える場合、ブローカーのマッチングがトレーダーに不利に偏っていることを示します。その原因は、ルーティング規則、選択的なラストルック、または非対称スリッページ・エンジンのいずれかです。

3. スプレッド拡大係数

各注文タイムスタンプについて、注文を中心とする50 msウィンドウ内のスプレッドを、前週の同じ時間帯を中心とする5分間の基準ウィンドウ内のスプレッドと比較します。その比率が拡大係数です。これには監査期間をカバーするティックストリームが必要です。ツールキットは、BJF FeedのCSVと、一般的なプラットフォームの標準的なティック履歴形式に対応しています。

4. ラストルックのホールド時間

マッチ済み・保留中の状態と確認済みの状態の両方を出力するFIXログまたは拡張明細からのみ測定できます。標準的なリテールのHTML明細は通常これを出力しないため、その場合ツールキットはこの項目をnullとレポートし、総合BEQIは残りの4項目から算出されます。ラストルックは、ブローカー側の執行干渉手法の一つです。より広いカテゴリーについては、ブローカーの7つのアンチアービトラージ・プラグインの詳細解説をご覧ください。

5. リクオート率

明細内の明示的なリクオートイベントから集計します。明細にリクオートのフラグがない場合(フラグを出さない端末もあります)、ツールキットは200 msウィンドウ内の送信/取消/再送信の3つ組を検出して推定します。

総合BEQI

各項目は、上記のティア定義を用いて0〜100のサブスコアに変換されます。総合スコアは加重幾何平均です:BEQI = (L^0.30 × A^0.25 × W^0.20 × H^0.15 × R^0.10)。ここでL、A、W、H、Rは5つのサブスコアです。算術平均ではなく幾何平均を使うのは、いずれか1つの項目の壊滅的なスコア(例:ラストルック = 1500ms)が他の項目の良好なスコアで隠れないようにするためです。重みには議論の余地があるため明示的に公開しており、レビュー担当者は生のサブスコアから別の重みで再計算できます。



制約事項と開示

  • サンプルサイズへの依存。50件の約定による監査は印象にすぎず、500件なら測定、5,000件ならベンチマークです。ツールキットはサンプルサイズに応じた信頼区間をレポートします。Nの小さい投稿は、それを考慮して評価してください。
  • 時間帯によるばらつき。同じブローカーでも、ロンドン・オープン時にはティア2、アジア時間のロールオーバー時にはティア3の結果になることがあります。監査では時間帯を明記してください。
  • アカウントごとの違い。ブローカーは、プロファイル、残高、取引パターンに基づいてアカウントごとに異なるルーティング・ロジックを適用できます。あるトレーダーの監査結果が、名目上同じブローカーの別のトレーダーに当てはまるとは限りません。執行監査とは別のブローカー選びのガイダンスについては、当社のFXアービトラージ向けブローカー・ガイドをご覧ください。
  • 非対称性は悪意の証明ではありません。1.4という非対称性は統計的に顕著ですが、原因は積極的な操作ではなく、非対称なLPプールを経由したルーティングかもしれません。ツールキットが測定するのは挙動であり、意図ではありません。
  • 手法はどこかで間違っているはずです。だからこそオープンソースにしています。Issueを投稿し、PRを送り、別の重み付けを提案し、私たちが扱っていないブローカーで再現してください。手法のv2では、最も説得力のある批判を取り入れます。



ロードマップ

バージョン 提供内容 時期
v1.0 手法+Pythonツールキット+公開スプレッドシート(現在の段階) Q2 2026
v1.1 FIXログパーサーの改善、明示的なタイムスタンプがない場合のヒューリスティックなパターンによるラストルック検出 Q3 2026
v1.2 AIパターンのフラグ付け項目(6つ目の項目):適応型スロットル挙動の検出基準 Q3 2026
v2.0 beqi.bjftradinggroup.comでのライブ公開ダッシュボード、投稿全体の集計分布、コミュニティのフィードバックに基づく手法の刷新 Q4 2026



よくある質問

BEQIは実名のブローカーのランキングですか?

いいえ。BEQIはオープンな手法であり、匿名化された監査の公開データセットです。このデータセットからブローカーのランキングを公開することは意図的に行っていません。理由は、(a) データの信頼性が損なわれる(ブローカーが執行品質ではなく監査のシグナルに合わせて最適化してしまう)こと、(b) 法的な地雷原であることです。ランキングを公開したい方は、オープンデータを使って自由に行うことができます。私たちが公開するのは、ツール、手法、測定値です。

第三者のブローカー・レビューを使えばよいのではありませんか?

ほとんどのブローカー・レビューサイトは、UX、出金スピード、カスタマーサポート、宣伝上のスプレッドといった表面的な変数で評価しています。マッチング・レイテンシー、スリッページの非対称性、ラストルックのホールドを測定しているところはありません。BEQIはまさにその空白を埋めるもので、一般的なブローカー・レビューではなく、執行品質の測定です。

ブローカーの明細に送信時刻やラストルックが出力されない場合は?

ツールキットはこれを適切に処理します。入力から測定できない項目はゼロではなくnullとしてレポートされ、総合BEQIは測定可能な項目から、重みを再正規化して算出されます。出力JSONには、どの項目がなぜスキップされたかが明示されるため、結果がどの範囲をカバーしているかが正直に示されます。

デモ口座でのペーパートレードでブローカーを監査できますか?

デモでの監査は有用ですが、同等ではありません。多くのブローカーは、デモ口座を機関投資家向けのマッチングエンジン(ラストルックなし、スプレッド拡大なし、低レイテンシー)に回し、ライブ口座はリテールエンジンに回しています。実際の挙動を測定するには、必ず実際の(少額の)取引量でライブ口座を監査してください。ツールキットはデモデータも受け付け、JSON出力で結果に「demo」のフラグを付けます。

意味のある監査にはどれくらいの取引量が必要ですか?

使えるシグナルを得るための実質的な最低ラインは200件の約定です。500〜1,000件で信頼区間が十分に狭まり、ティア分類を自信をもって判断できます。5,000件を超えると、監査は研究レベルの測定になります。1日30〜40件の小さな成行注文を出せば、1週間で200件に達します(大きな資金を使う必要はありません)。

BEQIは暗号資産取引所にも使えますか?

現在の形の手法はFXに特化しています。スプレッド拡大やラストルックはFXの概念であり、取引所の概念ではありません。暗号資産版の指数には、別の項目(例:約定価格でのオーダーブックの厚み、マーケットインパクトによるスリッページ、出金のレイテンシー)が必要になります。将来的に暗号資産版のCEQI指数を公開するかもしれません。現時点では、当社の暗号資産アービトラージの手法をご覧ください。指標は異なりますが、オープンデータの理念は同じです。FX用ツールキットを暗号資産のデータに使っても、意味のある結果は得られません。

SharpTrader Optimizerとどう関係していますか?

密接に関係しています。SharpTrader Optimizerは、設定可能な執行時間とティック単位のスリッページで戦略をバックテストします。つまり、BEQIがライブのブローカーで測定する変数そのものです。ブローカーがティア3(マッチング・レイテンシー80〜200 ms)と評価された場合、戦略が実行可能かどうかを判断する前に、Optimizerの執行時間を100〜200 msに設定すべきです。BEQIがブローカーを測定し、Optimizerがそのブローカーの実際の条件下で戦略をシミュレートします。両者を組み合わせることで、取引すべきかどうかがわかります。より広くFXアービトラージ戦略を取引する場合にも同じ考え方が当てはまります。まずブローカーを測定し、その実際の執行プロファイルに合わせて戦略の規模を決めてください。

BJF Trading Groupは中立なのですか?取引ソフトウェアを販売していますよね。

もっともな質問です。私たちには、アービトラージや執行を考慮したバックテストが真剣に受け止められることに商業的な利害があり、BEQIが明らかにそれに資することは事実です。一方で、特定のブローカーのスコアが良いか悪いかについて商業的な利害はありません。SharpTrader Proは4つのティアすべてのブローカーに対応しており、取引先はお客様ご自身が選んでいます。私たちの言葉をうのみにする必要がないよう、あえて手法をオープンソースで公開しています。コードは監査可能で、測定は再現可能であり、どの研究者も私たちの社内の数値を再現したり反証したりできます。

どのように貢献できますか?

5つの方法があります。(1) ご自身のブローカーでツールキットを実行し、JSONを公開スプレッドシートに投稿する。(2) お使いの明細形式でパーサーが動作しない場合、GitHubリポジトリでIssueを作成する。(3) 新しい明細形式のパーサーのプルリクエストを送る。(4) ディスカッションスレッドで手法の改良を提案する。(5) オープンデータセットを使って独自の分析を書き、リンクを張る。優れた外部の記事は当社のニュースレターで紹介します。

監査を公開したトレーダーにブローカーが報復することはありますか?

公開スプレッドシートへの投稿はデフォルトで匿名です。ブローカー名は任意で、口座IDは収集されず、JSON出力には個人を特定する情報が含まれません。執行品質の測定に対してブローカーが報復したという話は聞いていません(監査が正確だったと認めずに報復するのは難しいでしょう)が、そのリスクを取り除くために匿名オプションを用意しています。



今日、あなたのブローカーを監査しましょう

30分。オープンソースのコード。公開された手法。匿名での投稿。ベンチマークはトレーダーの貢献があってこそ成り立ちます。まずはご自身のブローカーから始めてください。

GitHubでツールキットを入手
スプレッドシートを見る