{"id":12955,"date":"2026-05-04T15:41:02","date_gmt":"2026-05-04T15:41:02","guid":{"rendered":"https:\/\/bjftradinggroup.com\/?p=12955"},"modified":"2026-05-04T16:11:22","modified_gmt":"2026-05-04T16:11:22","slug":"forex-broker-audit-toolkit","status":"publish","type":"post","link":"https:\/\/bjftradinggroup.com\/pt\/forex-broker-audit-toolkit\/","title":{"rendered":"BEQI: Open-Source Forex Broker Execution Audit Toolkit"},"content":{"rendered":"<p><\/p>\n<div class=\"bat-page\">\n<p><!-- ============================================================ --><br \/>\n<!-- HERO + H1                                                    --><br \/>\n<!-- ============================================================ --><\/p>\n<div class=\"bat-hero\">\n  <span class=\"bat-hero-tag\">BJF TRADING GROUP &nbsp;&middot;&nbsp; OPEN RESEARCH<\/span><\/p>\n<h2>BEQI: An Open-Source Toolkit to Audit <span class=\"bat-gold\">Any Forex Broker&apos;s Execution Quality<\/span><\/h2>\n<p class=\"bat-hero-sub\">\n    Retail forex brokers do not publish execution quality data. There is no public benchmark for matching latency, slippage asymmetry, spread widening, or last-look hold time. We&apos;re changing that. <strong>BEQI<\/strong> &mdash; the Broker Execution Quality Index &mdash; is an open methodology, an open Python toolkit, and a public spreadsheet anyone can contribute to. Measure your own broker in 30 minutes; the data accumulates into a benchmark.\n  <\/p>\n<div class=\"bat-hero-row\">\n    <a href=\"https:\/\/github.com\/bjftradinggroup\/forex-broker-audit-toolkit\" class=\"bat-hero-cta\">Get the toolkit on GitHub &rarr;<\/a><br \/>\n    <a href=\"#bat-sheets\" class=\"bat-hero-link\">Browse the public spreadsheet<\/a>\n  <\/div>\n<div class=\"bat-hero-meta\">\n    <span><strong>5<\/strong> dimensions measured<\/span><br \/>\n    <span><strong>3<\/strong> input formats supported<\/span><br \/>\n    <span><strong>MIT<\/strong> license<\/span><br \/>\n    <span><strong>~30 min<\/strong> to first audit<\/span>\n  <\/div>\n<\/div>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #1 \u2014 Why this exists                                      --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>Why a public broker audit didn&apos;t exist before<\/h2>\n<div class=\"bat-answer\">\n<p><strong>Retail forex execution is the most opaque layer of the trading stack.<\/strong> Spreads are advertised. Commission is published. Everything between order send and confirmed fill &mdash; matching latency, slippage symmetry, last-look hold, requote frequency, spread widening at signal moments &mdash; is invisible to the trader and unpublished by the broker. Strategy backtests assume zero-latency fills (a problem we documented in detail in <a href=\"\/latency-arbitrage-backtest-execution-time-gap\/\">Why Latency Arbitrage Backtests Don&apos;t Survive in Production<\/a>). Broker reviews score on UX and withdrawals. Nobody measures the variables that actually decide whether a strategy survives in production.<\/p>\n<\/div>\n<p>BEQI fixes one specific problem: there&apos;s no public methodology, no shared toolkit, and no benchmark dataset for retail forex execution quality. We&apos;ve been measuring this internally at BJF Trading Group for years to build broker dialect support into <a href=\"\/product\/sharptrader-forex-crypto-arbitrage\/\">SharpTrader Pro<\/a> and <a href=\"\/product\/sharptrader-optimizer\/\">SharpTrader Optimizer<\/a>. Now we&apos;re open-sourcing the methodology and the code.<\/p>\n<p>The point is not to publish a leaderboard naming brokers (that&apos;s a legal minefield and would compromise the integrity of the data). The point is to give every trader, quant, and broker-tech researcher the same standardized way to measure, the same Python scripts to run, and a public place to deposit anonymized results. Over months, the spreadsheet becomes a benchmark. Anyone can replicate the methodology, dispute it, or extend it.<\/p>\n<div class=\"bat-callout\">\n<h3>The BEQI thesis in one sentence<\/h3>\n<p>If <strong>10,000 traders measure their broker&apos;s execution quality with the same open methodology<\/strong>, the result is a public benchmark that no individual broker can deny, no review site can fake, and every strategy developer can use to allocate capital with eyes open.<\/p>\n<\/div>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #2 \u2014 The 5 dimensions                                     --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>The five BEQI dimensions<\/h2>\n<p>Execution quality is not a single number. BEQI decomposes it into five orthogonal dimensions, each independently measurable from a trading statement (and, for two of them, from a tick stream paired with the statement):<\/p>\n<table class=\"bat-tbl\">\n<thead>\n<tr>\n<th>BEQI dimension<\/th>\n<th>What it measures<\/th>\n<th>Unit<\/th>\n<th>Source<\/th>\n<th>Better is&hellip;<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"bat-cell-feat\">1. Matching latency<\/td>\n<td>Median time from order send to confirmed fill<\/td>\n<td>milliseconds<\/td>\n<td>Statement timestamps + send-time log<\/td>\n<td>Lower<\/td>\n<\/tr>\n<tr>\n<td class=\"bat-cell-feat\">2. Slippage asymmetry<\/td>\n<td>Ratio of negative-slippage fills to positive-slippage fills<\/td>\n<td>ratio (1.0 = symmetric, &gt;1.0 = against trader)<\/td>\n<td>Statement: requested vs filled price<\/td>\n<td>Closer to 1.0<\/td>\n<\/tr>\n<tr>\n<td class=\"bat-cell-feat\">3. Spread widening factor<\/td>\n<td>Spread expansion at signal moments vs baseline<\/td>\n<td>multiplier (1.0 = no widening, 3.0 = 3x widening)<\/td>\n<td>Tick stream around order timestamps<\/td>\n<td>Closer to 1.0<\/td>\n<\/tr>\n<tr>\n<td class=\"bat-cell-feat\">4. Last-look hold time<\/td>\n<td>Median delay between matched timestamp and confirmation<\/td>\n<td>milliseconds<\/td>\n<td>FIX log or extended statement<\/td>\n<td>Lower \/ zero<\/td>\n<\/tr>\n<tr>\n<td class=\"bat-cell-feat\">5. Requote rate<\/td>\n<td>Requotes per 100 orders<\/td>\n<td>count per 100<\/td>\n<td>Statement requote events<\/td>\n<td>Lower \/ zero<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Each dimension is independently meaningful. A broker can have low matching latency but high slippage asymmetry, or vice versa &mdash; the combinations tell different stories about how the broker is actually behaving. The toolkit reports each dimension separately and a composite BEQI score (weighted) at the end.<\/p>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #3 \u2014 How to run the audit                                 --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>How to run the audit on your own broker (30 minutes)<\/h2>\n<p>You need three things: <strong>(a)<\/strong> a trading statement with at least 200 fills covering at least one trading week, <strong>(b)<\/strong> Python 3.10+ on any machine, <strong>(c)<\/strong> 30 minutes. The toolkit handles the rest.<\/p>\n<h3>Step 1 \u2014 Export your statement<\/h3>\n<p>The toolkit accepts three input formats:<\/p>\n<ul class=\"bat-list\">\n<li><strong>Common terminal HTML statement<\/strong> (saved from your retail trading platform&apos;s &#8220;save as report&#8221; function) &mdash; most retail traders will use this<\/li>\n<li><strong>FIX log<\/strong> (FIX 4.4 message dump) &mdash; for traders running through a FIX bridge or institutional connection<\/li>\n<li><strong>CSV<\/strong> with columns <code>order_id, send_time, fill_time, requested_price, filled_price, side, volume<\/code> &mdash; for everyone else, including custom logs<\/li>\n<\/ul>\n<p>If your platform doesn&apos;t expose send-time (the moment your strategy decided to send the order), you can still measure dimensions 2 and 5 (slippage asymmetry and requote rate) from a basic statement. Dimensions 1, 3, and 4 require a richer log.<\/p>\n<h3>Step 2 \u2014 Install and run<\/h3>\n<div class=\"bat-code\">$ git clone https:\/\/github.com\/bjftradinggroup\/forex-broker-audit-toolkit<br \/>\n$ cd forex-broker-audit-toolkit<br \/>\n$ pip install -r requirements.txt<br \/>\n$ python beqi.py &#8211;input my_statement.html &#8211;tick-data eurusd_ticks.csv &#8211;output report.json<\/div>\n<p>The toolkit auto-detects the input format. <code>beqi.py<\/code> dispatches to the per-dimension analyzers, prints a summary, and writes a JSON report you can submit to the public spreadsheet.<\/p>\n<h3>Step 3 \u2014 Review the report<\/h3>\n<p>The report includes the five dimension scores, the composite BEQI, sample-size diagnostics (lower N = lower confidence), and a tier classification (1 through 4, see below). Run it on more data to tighten the confidence intervals.<\/p>\n<div class=\"bat-callout\">\n<h3>Anonymity by default<\/h3>\n<p>The toolkit never sees your account number, account balance, P&amp;L, or position sizes. It only consumes timestamps, prices, requested-vs-filled deltas, and event types. The output JSON contains the BEQI scores, sample size, currency pairs covered, and time period &mdash; nothing identifying. You can submit it to the public spreadsheet anonymously.<\/p>\n<\/div>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #4 \u2014 Reading your results                                 --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>Reading your results: the four BEQI tiers<\/h2>\n<p>Based on internal measurements across the brokers SharpTrader Pro supports, here are the empirical tiers. These are starting baselines &mdash; the public spreadsheet will refine them over time.<\/p>\n<div class=\"bat-tier-grid\">\n<div class=\"bat-tier-card bat-tier-1\">\n<p class=\"bat-tier-label\">Tier 1 &middot; Institutional ECN<\/p>\n<h3>BEQI 85&ndash;100<\/h3>\n<ul>\n<li>Matching latency: 5&ndash;15 ms<\/li>\n<li>Slippage asymmetry: 1.0&ndash;1.05<\/li>\n<li>Spread widening: 1.0&ndash;1.3x<\/li>\n<li>Last-look: 0&ndash;5 ms<\/li>\n<li>Requote rate: &lt;0.5 \/ 100<\/li>\n<\/ul><\/div>\n<div class=\"bat-tier-card bat-tier-2\">\n<p class=\"bat-tier-label\">Tier 2 &middot; Fast retail \/ fast bridge<\/p>\n<h3>BEQI 65&ndash;85<\/h3>\n<ul>\n<li>Matching latency: 30&ndash;80 ms<\/li>\n<li>Slippage asymmetry: 1.05&ndash;1.20<\/li>\n<li>Spread widening: 1.3&ndash;2.0x<\/li>\n<li>Last-look: 50&ndash;150 ms<\/li>\n<li>Requote rate: 0.5&ndash;2 \/ 100<\/li>\n<\/ul><\/div>\n<div class=\"bat-tier-card bat-tier-3\">\n<p class=\"bat-tier-label\">Tier 3 &middot; Standard retail<\/p>\n<h3>BEQI 40&ndash;65<\/h3>\n<ul>\n<li>Matching latency: 80&ndash;200 ms<\/li>\n<li>Slippage asymmetry: 1.20&ndash;1.50<\/li>\n<li>Spread widening: 2.0&ndash;3.5x<\/li>\n<li>Last-look: 200&ndash;500 ms<\/li>\n<li>Requote rate: 2&ndash;5 \/ 100<\/li>\n<\/ul><\/div>\n<div class=\"bat-tier-card bat-tier-4\">\n<p class=\"bat-tier-label\">Tier 4 &middot; Problematic<\/p>\n<h3>BEQI 0&ndash;40<\/h3>\n<ul>\n<li>Matching latency: 200+ ms<\/li>\n<li>Slippage asymmetry: 1.50+<\/li>\n<li>Spread widening: 3.5x+<\/li>\n<li>Last-look: 500+ ms<\/li>\n<li>Requote rate: 5+ \/ 100<\/li>\n<\/ul><\/div>\n<\/div>\n<p>Tier classification matters because the same trading strategy will produce wildly different live results across tiers. A <a href=\"\/latency-arbitrage\/\">latency arbitrage<\/a> strategy that&apos;s profitable on Tier 1 collapses on Tier 3. A trend-following strategy that holds positions for hours is roughly indifferent between Tier 1 and Tier 3 but suffers visibly on Tier 4. Knowing your broker&apos;s tier before you commit capital is the entire game.<\/p>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #5 \u2014 The community spreadsheet                            --><br \/>\n<!-- ============================================================ --><\/p>\n<h2 id=\"bat-sheets\">The public BEQI spreadsheet<\/h2>\n<p>The spreadsheet is the long-term asset. Anyone can contribute one row per audit. Each row contains the five dimension scores, the composite, the sample size, the currency pairs covered, the time period, and (optionally, voluntarily) the broker name. We expect &mdash; and welcome &mdash; <strong>anonymous submissions where the broker is left blank<\/strong>; over time, even those produce useful aggregate distributions of execution quality across the retail forex industry.<\/p>\n<div class=\"bat-sheets-wrap\">\n<div class=\"bat-sheets-head\">\n    BEQI Public Audit Database<br \/>\n    <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/10TOJd1NVzAyqwAdw8_l5r9ucnhCogJJ83tjKpunnnko\/edit?usp=sharing\" class=\"bat-sheets-link\">Open in new tab &rarr;<\/a>\n  <\/div>\n<div class=\"bat-sheets-frame\">\n    <iframe src=\"https:\/\/docs.google.com\/spreadsheets\/d\/10TOJd1NVzAyqwAdw8_l5r9ucnhCogJJ83tjKpunnnko\/htmlembed?widget=true&amp;headers=false\" loading=\"lazy\" title=\"BEQI Public Audit Database\"><\/iframe>\n  <\/div>\n<\/div>\n<p><strong>To submit:<\/strong> run the toolkit, copy the JSON output, paste it into the submission form (link inside the sheet). New rows are reviewed for plausibility and accepted within 24 hours. We do not edit submitted scores; we may flag rows where sample size is &lt;100 fills as low-confidence.<\/p>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #6 \u2014 Methodology details                                  --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>Methodology details (for reviewers and replicators)<\/h2>\n<p>The full mathematical specification is in <code>METHODOLOGY.md<\/code> in the repo, but the load-bearing decisions are:<\/p>\n<h3>1. Matching latency<\/h3>\n<p>Median (not mean) of <code>fill_time &minus; send_time<\/code>. We use median because matching latency distributions are right-skewed by occasional 1&ndash;5 second outliers (network re-routing, broker GC pauses) that don&apos;t represent typical execution. We report median, p90, and p99 separately so the reader can see the tail.<\/p>\n<h3>2. Slippage asymmetry<\/h3>\n<p>For each fill, slippage is signed: <strong>positive<\/strong> means the trader got a better price than requested, <strong>negative<\/strong> means worse. Asymmetry = (count of negative slippage events) \/ (count of positive slippage events). A symmetric, neutral broker scores ~1.0. Above 1.2 indicates the broker&apos;s matching is biased against the trader &mdash; either by routing rules, by selective last-look, or by an asymmetric slippage engine.<\/p>\n<h3>3. Spread widening factor<\/h3>\n<p>For each order timestamp, we measure spread in a 50 ms window centered on the order vs spread in the 5-minute baseline window centered on the same hour-of-day across the prior week. The ratio is the widening factor. This requires a tick stream covering the audit period; the toolkit accepts BJF Feed CSVs and the standard tick-history format from common platforms.<\/p>\n<h3>4. Last-look hold time<\/h3>\n<p>Only measurable from a FIX log or an extended statement that exposes both the matched-but-pending state and the confirmed state. Standard retail HTML statements typically don&apos;t expose this, in which case the toolkit reports <code>null<\/code> for this dimension and the composite BEQI is computed from the remaining four. Last-look is one of several broker-side execution interference techniques &mdash; see our deep-dive on <a href=\"\/anti-arbitrage-plugins\/\">the seven anti-arbitrage broker plugins<\/a> for the broader category.<\/p>\n<h3>5. Requote rate<\/h3>\n<p>Counted from explicit requote events in the statement. If the statement doesn&apos;t flag requotes (some terminals don&apos;t), the toolkit infers them by detecting send\/cancel\/resend triplets within a 200 ms window.<\/p>\n<h3>Composite BEQI<\/h3>\n<p>Each dimension is mapped to a 0&ndash;100 sub-score using the tier definitions above. The composite is a weighted geometric mean: <code>BEQI = (L^0.30 &times; A^0.25 &times; W^0.20 &times; H^0.15 &times; R^0.10)<\/code> where L, A, W, H, R are the five sub-scores. We use geometric mean rather than arithmetic so that a catastrophic score on any single dimension (e.g., last-look = 1500ms) cannot be hidden by good scores on others. Weights are debatable and explicitly published so reviewers can recompute under different weights from the raw sub-scores.<\/p>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #7 \u2014 Limitations                                          --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>Limitations and disclosures<\/h2>\n<ul class=\"bat-list\">\n<li><strong>Sample size dependency.<\/strong> A 50-fill audit is a vibe; a 500-fill audit is a measurement; a 5,000-fill audit is a benchmark. The toolkit reports sample-size confidence intervals; readers should weight low-N submissions accordingly.<\/li>\n<li><strong>Time-of-day variance.<\/strong> The same broker can post Tier 2 results during London open and Tier 3 during Asia rollover. Audits should specify the time window.<\/li>\n<li><strong>Account-level differences.<\/strong> Brokers can apply different routing logic per-account based on profile, balance, and trading pattern. One trader&apos;s audit may not generalize to another&apos;s on the same nominal broker. For broker-selection guidance independent of execution audit, see our <a href=\"\/forex-arbitrage-brokers\/\">forex arbitrage brokers guide<\/a>.<\/li>\n<li><strong>Asymmetry doesn&apos;t prove malice.<\/strong> An asymmetry of 1.4 is statistically loud, but the cause might be routing through asymmetric LP pools rather than active manipulation. The toolkit measures behavior, not intent.<\/li>\n<li><strong>The methodology will be wrong about something.<\/strong> That&apos;s why it&apos;s open-source. Submit issues, send PRs, propose alternative weights, replicate against a broker we haven&apos;t covered. Methodology v2 will incorporate the strongest critiques.<\/li>\n<\/ul>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #8 \u2014 Roadmap                                              --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>Roadmap<\/h2>\n<table class=\"bat-tbl\">\n<thead>\n<tr>\n<th>Version<\/th>\n<th>What ships<\/th>\n<th>Timeline<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"bat-cell-feat\">v1.0<\/td>\n<td>Methodology + Python toolkit + public spreadsheet (you are here)<\/td>\n<td>Q2 2026<\/td>\n<\/tr>\n<tr>\n<td class=\"bat-cell-feat\">v1.1<\/td>\n<td>FIX log parser improvements; Last-look detection from heuristic patterns when explicit timestamps are absent<\/td>\n<td>Q3 2026<\/td>\n<\/tr>\n<tr>\n<td class=\"bat-cell-feat\">v1.2<\/td>\n<td>AI-pattern flagging dimension (sixth dimension): detection rubric for adaptive throttle behavior<\/td>\n<td>Q3 2026<\/td>\n<\/tr>\n<tr>\n<td class=\"bat-cell-feat\">v2.0<\/td>\n<td>Live public dashboard at <code>beqi.bjftradinggroup.com<\/code>; aggregate distributions across submissions; methodology refresh based on community feedback<\/td>\n<td>Q4 2026<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><!-- ============================================================ --><br \/>\n<!-- H2 #9 \u2014 FAQ                                                  --><br \/>\n<!-- ============================================================ --><\/p>\n<h2>Frequently asked questions<\/h2>\n<div class=\"bat-faq\">\n<div class=\"bat-faq-q\">Is BEQI a ranking of named brokers?<\/div>\n<div class=\"bat-faq-a\">\n<p>No. BEQI is an open methodology and a public dataset of anonymized audits. We deliberately do not publish broker leaderboards from this dataset because (a) it would compromise the integrity of the data &mdash; brokers would optimize for the audit signal rather than for execution quality, and (b) it&apos;s a legal minefield. Anyone who wants to publish a leaderboard is free to do so using the open data; we publish the tool, the methodology, and the measurements.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">Why not just use third-party broker reviews?<\/div>\n<div class=\"bat-faq-a\">\n<p>Most broker review sites score on UX, withdrawal speed, customer support, and spread advertising &mdash; surface variables. None of them measure matching latency, slippage asymmetry, or last-look hold. BEQI fills that specific gap: it&apos;s an execution-quality measurement, not a general broker review.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">What if my broker&apos;s statement doesn&apos;t expose send-time or last-look?<\/div>\n<div class=\"bat-faq-a\">\n<p>The toolkit handles this gracefully. Dimensions that can&apos;t be measured from your input are reported as <code>null<\/code> rather than zero, and the composite BEQI is computed from the dimensions that ARE measurable, with weights renormalized. The output JSON makes it explicit which dimensions were skipped and why, so the result is honest about its coverage.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">Can I audit a broker by paper-trading on a demo account?<\/div>\n<div class=\"bat-faq-a\">\n<p>Demo audits are useful but not equivalent. Many brokers route demo accounts through the institutional matching engine (no last-look, no spread widening, fast latency) while live accounts go through the retail engine. Always audit a live account with real (small) volume to measure real behavior. The toolkit will accept demo data and flag the result as &#8220;demo&#8221; in the JSON output.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">How much volume do I need to trade to produce a meaningful audit?<\/div>\n<div class=\"bat-faq-a\">\n<p>200 fills is the practical minimum for a usable signal. 500&ndash;1,000 fills is where confidence intervals tighten enough to call tier classifications confidently. Above 5,000 fills, the audit becomes a research-grade measurement. You can reach 200 fills in a week by trading 30&ndash;40 small market orders per day (no need to do this with significant capital).<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">Does BEQI work for crypto exchanges?<\/div>\n<div class=\"bat-faq-a\">\n<p>The methodology is forex-specific in its current form &mdash; spread widening and last-look are forex concepts, not exchange concepts. A crypto-equivalent index would need different dimensions (e.g., orderbook depth at fill price, market-impact slippage, withdrawal latency). We may publish a crypto-CEQI index later. For now, see our <a href=\"\/crypto-arbitrage\/\">crypto arbitrage methodology<\/a> &mdash; different metrics, same open-data philosophy. The forex toolkit will not produce meaningful results on crypto data.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">How does this connect to SharpTrader Optimizer?<\/div>\n<div class=\"bat-faq-a\">\n<p>Tightly. <a href=\"\/product\/sharptrader-optimizer\/\">SharpTrader Optimizer<\/a> backtests strategies with configurable execution time and tick-resolved slippage &mdash; in other words, the variables BEQI measures on your live broker. If your broker scores Tier 3 (matching latency 80&ndash;200 ms), you should configure the Optimizer with execution time = 100&ndash;200 ms before deciding the strategy is viable. BEQI measures the broker; Optimizer simulates the strategy under that broker&apos;s real conditions. Together they tell you whether to trade. The same logic applies if you&apos;re trading <a href=\"\/forex-currency-arbitrage-strategies\/\">forex arbitrage strategies<\/a> more broadly &mdash; measure the broker first, then size the strategy to its actual execution profile.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">Is BJF Trading Group impartial here? You sell trading software.<\/div>\n<div class=\"bat-faq-a\">\n<p>Fair question. We have a commercial interest in arbitrage and execution-aware backtesting being taken seriously, which BEQI obviously serves. We do not have a commercial interest in any particular broker scoring well or badly &mdash; SharpTrader Pro supports brokers across all four tiers, and our customers self-select the venue. We&apos;re publishing the methodology open-source specifically so you don&apos;t have to take our word: the code is auditable, the measurements are reproducible, and any researcher can replicate or contradict our internal numbers.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">How can I contribute?<\/div>\n<div class=\"bat-faq-a\">\n<p>Five ways: (1) run the toolkit on your own broker and submit the JSON to the public spreadsheet; (2) open issues on the GitHub repo when the parser breaks on your statement format; (3) submit pull requests for new statement-format parsers; (4) propose methodology refinements via discussion threads; (5) write up your own analysis using the open dataset and link back &mdash; we&apos;ll feature strong external write-ups in our newsletter.<\/p>\n<\/p><\/div>\n<div class=\"bat-faq-q\">Will brokers retaliate against traders who publish audits?<\/div>\n<div class=\"bat-faq-a\">\n<p>Submissions to the public spreadsheet are anonymous by default &mdash; the broker is optional, account ID is never collected, and the JSON output contains no identifying information. We have not heard of brokers retaliating against execution-quality measurement (it would be hard to do without admitting the audit was accurate), but the anonymity option exists specifically to remove that risk.<\/p>\n<\/p><\/div>\n<\/div>\n<p><!-- ============================================================ --><br \/>\n<!-- CTA                                                          --><br \/>\n<!-- ============================================================ --><\/p>\n<div class=\"bat-cta\">\n<h2>Audit your broker today<\/h2>\n<p>30 minutes. Open-source code. Public methodology. Anonymous submission. The benchmark only exists if traders contribute &mdash; start with your own.<\/p>\n<p>  <a href=\"https:\/\/github.com\/bjftradinggroup\/forex-broker-audit-toolkit\" class=\"bat-cta-btn\">Get the toolkit on GitHub<\/a><br \/>\n  <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/10TOJd1NVzAyqwAdw8_l5r9ucnhCogJJ83tjKpunnnko\/edit?usp=sharing\" class=\"bat-cta-btn bat-cta-btn-out\">Browse the spreadsheet<\/a>\n<\/div>\n<\/div>\n<p><!-- ====================================================================== --><br \/>\n<!-- END BODY                                                                --><br \/>\n<!-- ====================================================================== --><\/p>\n<p><!-- ====================================================================== --><br \/>\n<!-- JSON-LD                                                                  --><br \/>\n<!-- ====================================================================== --><br \/>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Article\",\n      \"@id\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#article\",\n      \"headline\": \"BEQI: An Open-Source Toolkit to Audit Any Forex Broker's Execution Quality\",\n      \"description\": \"BEQI (Broker Execution Quality Index) is an open methodology, open Python toolkit, and public spreadsheet for measuring retail forex broker execution quality across five dimensions: matching latency, slippage asymmetry, spread widening, last-look hold time, and requote rate. Anyone can audit their own broker in 30 minutes; the data accumulates into a public benchmark.\",\n      \"image\": \"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/beqi-cover.png\",\n      \"datePublished\": \"2026-05-05T10:00:00-04:00\",\n      \"dateModified\": \"2026-05-05T10:00:00-04:00\",\n      \"author\": {\n        \"@type\": \"Person\",\n        \"@id\": \"https:\/\/bjftradinggroup.com\/about-boris-fesenko\/#person\",\n        \"name\": \"Boris Fesenko\",\n        \"url\": \"https:\/\/bjftradinggroup.com\/about-boris-fesenko\/\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"@id\": \"https:\/\/bjftradinggroup.com\/#organization\",\n        \"name\": \"BJF Trading Group Inc.\",\n        \"url\": \"https:\/\/bjftradinggroup.com\/\",\n        \"logo\": { \"@type\": \"ImageObject\", \"url\": \"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/bjf-logo.png\" }\n      },\n      \"mainEntityOfPage\": {\n        \"@type\": \"WebPage\",\n        \"@id\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/\"\n      },\n      \"wordCount\": 3200,\n      \"articleSection\": \"Broker Execution Research\",\n      \"keywords\": \"forex broker audit, broker execution quality, BEQI, matching latency, slippage asymmetry, spread widening, last-look, requote rate, open-source forex toolkit, broker benchmark\",\n      \"about\": [\n        {\"@type\": \"Thing\", \"name\": \"Forex broker execution quality\"},\n        {\"@type\": \"Thing\", \"name\": \"Matching latency\"},\n        {\"@type\": \"Thing\", \"name\": \"Slippage asymmetry\"},\n        {\"@type\": \"Thing\", \"name\": \"Last-look execution\"},\n        {\"@type\": \"Thing\", \"name\": \"Open-source trading research\"}\n      ]\n    },\n    {\n      \"@type\": \"DefinedTerm\",\n      \"@id\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#beqi\",\n      \"name\": \"BEQI\",\n      \"alternateName\": \"Broker Execution Quality Index\",\n      \"description\": \"An open-source, five-dimensional measurement of retail forex broker execution quality covering matching latency, slippage asymmetry, spread widening factor, last-look hold time, and requote rate. Composite score from 0 (worst) to 100 (best).\",\n      \"inDefinedTermSet\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#article\"\n    },\n    {\n      \"@type\": \"SoftwareSourceCode\",\n      \"@id\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#toolkit\",\n      \"name\": \"Forex Broker Audit Toolkit\",\n      \"description\": \"Open-source Python toolkit implementing the BEQI methodology. Parses common terminal HTML statements, FIX logs, and CSV trading logs; computes the five BEQI dimensions and the composite score; outputs a JSON report suitable for submission to the public BEQI database.\",\n      \"codeRepository\": \"https:\/\/github.com\/bjftradinggroup\/forex-broker-audit-toolkit\",\n      \"programmingLanguage\": \"Python\",\n      \"license\": \"https:\/\/opensource.org\/licenses\/MIT\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"@id\": \"https:\/\/bjftradinggroup.com\/#organization\"\n      }\n    },\n    {\n      \"@type\": \"HowTo\",\n      \"@id\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#howto\",\n      \"name\": \"How to audit a forex broker's execution quality with BEQI\",\n      \"description\": \"Step-by-step procedure for measuring a retail forex broker's execution quality across five dimensions using the open-source BEQI toolkit.\",\n      \"totalTime\": \"PT30M\",\n      \"tool\": [\n        {\"@type\": \"HowToTool\", \"name\": \"Trading statement (HTML, FIX log, or CSV)\"},\n        {\"@type\": \"HowToTool\", \"name\": \"Python 3.10+\"},\n        {\"@type\": \"HowToTool\", \"name\": \"BEQI toolkit (open-source)\"}\n      ],\n      \"step\": [\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 1,\n          \"name\": \"Export your trading statement\",\n          \"text\": \"From your trading platform, export a statement covering at least 200 fills over a trading week. Common terminal HTML statements, FIX 4.4 logs, and CSV trading logs are all supported.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 2,\n          \"name\": \"Install the toolkit\",\n          \"text\": \"Clone the GitHub repository, install Python dependencies via pip install -r requirements.txt. Requires Python 3.10 or later.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 3,\n          \"name\": \"Run the audit\",\n          \"text\": \"Execute python beqi.py --input <your_statement> --output report.json. The toolkit auto-detects format, computes each of the five BEQI dimensions, and writes a JSON report.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 4,\n          \"name\": \"Review the BEQI score and tier\",\n          \"text\": \"The report includes per-dimension scores, the composite BEQI (0-100), tier classification (1 best, 4 worst), and sample-size confidence indicators.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 5,\n          \"name\": \"Submit to the public database\",\n          \"text\": \"Optionally submit the JSON report to the public BEQI spreadsheet via the linked submission form. Submissions are anonymous by default.\"\n        }\n      ]\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"@id\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#faq\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Is BEQI a ranking of named brokers?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. BEQI is an open methodology and a public dataset of anonymized audits. We deliberately do not publish broker leaderboards from this dataset because it would compromise data integrity and creates legal exposure. Anyone is free to publish leaderboards using the open data.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What does BEQI measure?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"BEQI decomposes broker execution quality into five orthogonal dimensions: matching latency (median ms from order send to fill), slippage asymmetry (negative-to-positive slippage ratio), spread widening factor (spread expansion at signal moments), last-look hold time, and requote rate. Each is independently measurable from a trading statement; composite BEQI is a weighted geometric mean from 0 to 100.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How long does an audit take?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"The toolkit run itself takes seconds; gathering 200+ fills of statement data takes a trading week of normal activity. Plan on 30 minutes to install the toolkit, run it, review results, and submit.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What input formats does the toolkit accept?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Common terminal HTML statements, FIX 4.4 logs, and CSV trading logs with order_id, send_time, fill_time, requested_price, filled_price, side, and volume columns. The toolkit auto-detects format.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Is BEQI open-source?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Yes. The methodology is published in full, the Python code is on GitHub under MIT license, and the public dataset is in a Google Sheet open for review. Pull requests, methodology critiques, and replications are welcomed.\"\n          }\n        }\n      ]\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"@id\": \"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#breadcrumb\",\n      \"itemListElement\": [\n        {\"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"https:\/\/bjftradinggroup.com\/\"},\n        {\"@type\": \"ListItem\", \"position\": 2, \"name\": \"Knowledge Hub\", \"item\": \"https:\/\/bjftradinggroup.com\/knowledge-hub\/\"},\n        {\"@type\": \"ListItem\", \"position\": 3, \"name\": \"BEQI: Forex Broker Audit Toolkit\"}\n      ]\n    }\n  ]\n}\n<\/script><br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>BJF TRADING GROUP &nbsp;&middot;&nbsp; OPEN RESEARCH BEQI: An Open-Source Toolkit to Audit Any Forex Broker&apos;s Execution Quality Retail forex brokers do not publish execution quality data. There is no public benchmark for matching latency, slippage asymmetry, spread widening, or last-look hold time. We&apos;re changing that. BEQI &mdash; the Broker Execution Quality Index &mdash; is an open methodology, an open Python toolkit, and a public spreadsheet anyone can contribute to. Measure your own broker in 30&hellip;<\/p>\n","protected":false},"author":1,"featured_media":12956,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[53],"tags":[],"class_list":["post-12955","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arbitrage-software"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>BEQI \u2014 Open-Source Forex Broker Execution Audit Toolkit | BJF<\/title>\n<meta name=\"description\" content=\"Audit any retail forex broker&#039;s execution quality in 30 minutes. Open methodology + Python toolkit + public spreadsheet. 5 dimensions, MIT license.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"BEQI \u2014 Open-Source Forex Broker Execution Audit Toolkit | BJF\" \/>\n<meta property=\"og:description\" content=\"Audit any retail forex broker&#039;s execution quality in 30 minutes. Open methodology + Python toolkit + public spreadsheet. 5 dimensions, MIT license.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/\" \/>\n<meta property=\"og:site_name\" content=\"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/bjftradinggroup\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-04T15:41:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-04T16:11:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/05\/beqi-cover-1200x630-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Boris Fesenko\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Boris Fesenko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/\"},\"author\":{\"name\":\"Boris Fesenko\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#\\\/schema\\\/person\\\/293df6ddb1f30db046ca9cd8928138a9\"},\"headline\":\"BEQI: Open-Source Forex Broker Execution Audit Toolkit\",\"datePublished\":\"2026-05-04T15:41:02+00:00\",\"dateModified\":\"2026-05-04T16:11:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/\"},\"wordCount\":2590,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/beqi-cover-1200x630-1.png\",\"articleSection\":[\"Arbitrage Software\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#respond\"]}],\"publisher\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/\",\"name\":\"BEQI \u2014 Open-Source Forex Broker Execution Audit Toolkit | BJF\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/beqi-cover-1200x630-1.png\",\"datePublished\":\"2026-05-04T15:41:02+00:00\",\"dateModified\":\"2026-05-04T16:11:22+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#\\\/schema\\\/person\\\/293df6ddb1f30db046ca9cd8928138a9\"},\"description\":\"Audit any retail forex broker's execution quality in 30 minutes. Open methodology + Python toolkit + public spreadsheet. 5 dimensions, MIT license.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/beqi-cover-1200x630-1.png\",\"contentUrl\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/beqi-cover-1200x630-1.png\",\"width\":1200,\"height\":630,\"caption\":\"Forex Broker Audit Toolkit (BEQI)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-broker-audit-toolkit\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bjftradinggroup.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"BEQI: Open-Source Forex Broker Execution Audit Toolkit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#website\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/\",\"name\":\"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.\",\"description\":\"FX Software pioneer since 2000\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bjftradinggroup.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#\\\/schema\\\/person\\\/293df6ddb1f30db046ca9cd8928138a9\",\"name\":\"Boris Fesenko\",\"pronouns\":\"He\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g\",\"caption\":\"Boris Fesenko\"},\"description\":\"Born in 1971 in Ukraine, I graduated from East Ukrainian State University and later completed postgraduate studies at the same university, where I also wrote my PhD dissertation. In 2006, I moved to Canada. I am the founder of BJF Trading Group and specialize in the development and implementation of advanced arbitrage trading systems for the Forex and cryptocurrency markets, as well as other trading solutions.\",\"sameAs\":[\"https:\\\/\\\/bjftradinggroup.com\\\/about-boris-fesenko\",\"https:\\\/\\\/www.facebook.com\\\/bjftradinggroup\",\"https:\\\/\\\/www.instagram.com\\\/bjftradinggroup\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/bjftradinggroup\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCapi2ct0Iv7axHJ93wN_bsQ\"],\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/pt\\\/author\\\/boris\\\/\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#organization\",\"name\":\"BJF Trading Group Inc.\",\"legalName\":\"BJF Trading Group Inc.\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/logo.png\",\"width\":512,\"height\":512},\"foundingDate\":\"2000\",\"founder\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/about-boris-fesenko\\\/#person\"},\"address\":{\"@type\":\"PostalAddress\",\"addressRegion\":\"Ontario\",\"addressCountry\":\"CA\"},\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@bjftradinggroup.com\",\"availableLanguage\":[\"English\",\"German\",\"Japanese\",\"Korean\",\"Spanish\",\"Portuguese\",\"Arabic\",\"Indonesian\",\"Vietnamese\"]}],\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/bjftradinggroup\",\"https:\\\/\\\/twitter.com\\\/BjfGroup\",\"https:\\\/\\\/www.youtube.com\\\/@bjftradinggroup\",\"https:\\\/\\\/t.me\\\/bjftradinggroup\",\"https:\\\/\\\/instagram.com\\\/bjftradinggroup\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/bjf-trading-group\\\/\"],\"knowsAbout\":[\"Forex arbitrage\",\"Cryptocurrency arbitrage\",\"Latency arbitrage\",\"News trading\",\"FIX API trading\",\"High-frequency trading\",\"Lock arbitrage\",\"Hedge arbitrage\",\"Pair trading\",\"Algorithmic trading software\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"BEQI \u2014 Open-Source Forex Broker Execution Audit Toolkit | BJF","description":"Audit any retail forex broker's execution quality in 30 minutes. Open methodology + Python toolkit + public spreadsheet. 5 dimensions, MIT license.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/","og_locale":"pt_PT","og_type":"article","og_title":"BEQI \u2014 Open-Source Forex Broker Execution Audit Toolkit | BJF","og_description":"Audit any retail forex broker's execution quality in 30 minutes. Open methodology + Python toolkit + public spreadsheet. 5 dimensions, MIT license.","og_url":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/","og_site_name":"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.","article_author":"https:\/\/www.facebook.com\/bjftradinggroup","article_published_time":"2026-05-04T15:41:02+00:00","article_modified_time":"2026-05-04T16:11:22+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/05\/beqi-cover-1200x630-1.png","type":"image\/png"}],"author":"Boris Fesenko","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Boris Fesenko","Tempo estimado de leitura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#article","isPartOf":{"@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/"},"author":{"name":"Boris Fesenko","@id":"https:\/\/bjftradinggroup.com\/#\/schema\/person\/293df6ddb1f30db046ca9cd8928138a9"},"headline":"BEQI: Open-Source Forex Broker Execution Audit Toolkit","datePublished":"2026-05-04T15:41:02+00:00","dateModified":"2026-05-04T16:11:22+00:00","mainEntityOfPage":{"@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/"},"wordCount":2590,"commentCount":0,"image":{"@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#primaryimage"},"thumbnailUrl":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/05\/beqi-cover-1200x630-1.png","articleSection":["Arbitrage Software"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#respond"]}],"publisher":{"@id":"https:\/\/bjftradinggroup.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/","url":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/","name":"BEQI \u2014 Open-Source Forex Broker Execution Audit Toolkit | BJF","isPartOf":{"@id":"https:\/\/bjftradinggroup.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#primaryimage"},"image":{"@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#primaryimage"},"thumbnailUrl":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/05\/beqi-cover-1200x630-1.png","datePublished":"2026-05-04T15:41:02+00:00","dateModified":"2026-05-04T16:11:22+00:00","author":{"@id":"https:\/\/bjftradinggroup.com\/#\/schema\/person\/293df6ddb1f30db046ca9cd8928138a9"},"description":"Audit any retail forex broker's execution quality in 30 minutes. Open methodology + Python toolkit + public spreadsheet. 5 dimensions, MIT license.","breadcrumb":{"@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#primaryimage","url":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/05\/beqi-cover-1200x630-1.png","contentUrl":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/05\/beqi-cover-1200x630-1.png","width":1200,"height":630,"caption":"Forex Broker Audit Toolkit (BEQI)"},{"@type":"BreadcrumbList","@id":"https:\/\/bjftradinggroup.com\/forex-broker-audit-toolkit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bjftradinggroup.com\/"},{"@type":"ListItem","position":2,"name":"BEQI: Open-Source Forex Broker Execution Audit Toolkit"}]},{"@type":"WebSite","@id":"https:\/\/bjftradinggroup.com\/#website","url":"https:\/\/bjftradinggroup.com\/","name":"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.","description":"FX Software pioneer since 2000","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bjftradinggroup.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Person","@id":"https:\/\/bjftradinggroup.com\/#\/schema\/person\/293df6ddb1f30db046ca9cd8928138a9","name":"Boris Fesenko","pronouns":"He","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/secure.gravatar.com\/avatar\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g","caption":"Boris Fesenko"},"description":"Born in 1971 in Ukraine, I graduated from East Ukrainian State University and later completed postgraduate studies at the same university, where I also wrote my PhD dissertation. In 2006, I moved to Canada. I am the founder of BJF Trading Group and specialize in the development and implementation of advanced arbitrage trading systems for the Forex and cryptocurrency markets, as well as other trading solutions.","sameAs":["https:\/\/bjftradinggroup.com\/about-boris-fesenko","https:\/\/www.facebook.com\/bjftradinggroup","https:\/\/www.instagram.com\/bjftradinggroup\/","https:\/\/www.linkedin.com\/in\/bjftradinggroup\/","https:\/\/www.youtube.com\/channel\/UCapi2ct0Iv7axHJ93wN_bsQ"],"url":"https:\/\/bjftradinggroup.com\/pt\/author\/boris\/"},{"@type":"Organization","@id":"https:\/\/bjftradinggroup.com\/#organization","name":"BJF Trading Group Inc.","legalName":"BJF Trading Group Inc.","url":"https:\/\/bjftradinggroup.com\/","logo":{"@type":"ImageObject","url":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/logo.png","width":512,"height":512},"foundingDate":"2000","founder":{"@id":"https:\/\/bjftradinggroup.com\/about-boris-fesenko\/#person"},"address":{"@type":"PostalAddress","addressRegion":"Ontario","addressCountry":"CA"},"contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"support@bjftradinggroup.com","availableLanguage":["English","German","Japanese","Korean","Spanish","Portuguese","Arabic","Indonesian","Vietnamese"]}],"sameAs":["https:\/\/www.facebook.com\/bjftradinggroup","https:\/\/twitter.com\/BjfGroup","https:\/\/www.youtube.com\/@bjftradinggroup","https:\/\/t.me\/bjftradinggroup","https:\/\/instagram.com\/bjftradinggroup","https:\/\/www.linkedin.com\/company\/bjf-trading-group\/"],"knowsAbout":["Forex arbitrage","Cryptocurrency arbitrage","Latency arbitrage","News trading","FIX API trading","High-frequency trading","Lock arbitrage","Hedge arbitrage","Pair trading","Algorithmic trading software"]}]}},"_links":{"self":[{"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/posts\/12955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/comments?post=12955"}],"version-history":[{"count":10,"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/posts\/12955\/revisions"}],"predecessor-version":[{"id":12967,"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/posts\/12955\/revisions\/12967"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/media\/12956"}],"wp:attachment":[{"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/media?parent=12955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/categories?post=12955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bjftradinggroup.com\/pt\/wp-json\/wp\/v2\/tags?post=12955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}