Prismatic Algos · Algo Consistency Index

Algo Consistency Index — methodology (v0.2, live since 2026-10-26)

What it is

A daily reading of whether the market is paying the price patterns retail FX/CFD algorithms trade, computed per mechanism family (trend/breakout, mean-reversion, session-clock) from public market data, validated against live algo panels, with every test pre-registered before it ran and every result, including failures, published here.

Three layers

  1. Probe index (public backbone). Twelve frozen textbook recipes (Donchian 20/10, opening-range breakout, M15 range break, EMA 20/50 cross, RSI(2), Bollinger fade, prior-day level fade, Asian-range fade, fixed-time London entry, post-fix drift, pre-rollover fade, random-entry control) replayed on raw ticks of seventeen symbols with the broker's published spread, the raw-feed spread excess around rollover and $4 per lot round-turn commission. Reading per probe and symbol: z-score over the trailing two years of the 20-day R per trade minus the random control's R per trade in the same exit geometry. Family index = mean of its legs. Hypothetical, cost-included, never advertised as performance.
  2. Scoreboard (coincident). Breadth, momentum z, realised drawdown load and SPRT kill count across live production accounts, labelled lagging.
  3. Pattern Integrity (leading candidates). Fifteen standardised market-state features and a Regime Drift distance per family; descriptive. The nowcast and the per-family sizing multiplier that were to be built on this layer were dropped from the product on 2026-10-28 (change log below); no sizing instruction is published.

Validation ladder and record

TestQuestionStatus
T0Do market-state features move with live family P&L?Not passed (power 0.18–0.46); descriptive only
T1Do the probes experience what live algos experience?Trend family passes under v0.2 on 7 blocks (rho 0.66, CI 0.32–0.83, twin −0.09); mean-reversion and session-clock do not; external panel (Collective2, descriptive, run 2026-11-04): TB FAIL, MR FAIL, SC FAIL
T2Does market state forecast family probe returns out of sample?Not passed (fold A 2023: 0 of 12 cells; fold B 2024–25: one cell per model; shift twins met the raw bar more often than the real features). Layer 3 withheld, then dropped from the product on 2026-10-28
T3Does the banded sizing rule add return at matched drawdown?Retired (2026-10-28): the sizing multiplier is dropped from the product, so T3 will not run; T2, T5, T6B and T6C answered the question from four directions
T4Does it hold for three live months?Running since the first live print, 2026-10-26
T5Would acting on the raw readings (halt below the 20th percentile, scale by band, halt after a drift alert) have improved strategy backtests at matched drawdown?Not passed (2026-10-28): on 105 strategy curves (56 trend, 26 mean-reversion, 23 session-clock) and 150 live accounts, no family or rule beats a same-window permutation null; trend is uninformative (power 0.09–0.18 for +15%), mean-reversion null, session-clock overlays cost what random halts of the same size cost; live family pools were net-negative over 2025-06 → 2026-10. Pre-registration and report in `aci/phase3`
T6Can the index be tuned to the live record — a different reading construction, recipe weights learned from live accounts, a sizing-rule grid, an external trend panel?Not passed / no change (2026-10-28): across 48 reading constructions and learned recipe weights, none beats v0.2 out of sample (trend v0.2 tracks the live trend family at rho 0.69 on 6 blocks, the 2025–26 backtest pools and the K-cycle lockbox pool not at all); the mean-reversion reading moves opposite to 21 of 26 library mean-reversion strategies (pooled rho −0.4 on 2022–26, beyond its twins), so that family's definition was audited the same day (change log below: the probes do not represent the library mean-reversion family; reading kept as v0.2 with a caveat); family returns show no persistence at 5–20 days once account composition is controlled, so a level-based sizing rule has no mechanism; the best of 38 sizing rules per family sits inside a search-aware permutation null in every window (trend power 0.05–0.07 at +15%), and vol targeting adds nothing; no daily external trend series was obtainable, and the monthly BTOP50 is unrelated to the trend reading (rho 0.02). Pre-registration and report in `aci/phase4`

The T6 result means that v0.2 stays as published: no re-tuning of the readings to the live record survived an out-of-sample check, the live trend family remains the only panel the trend reading demonstrably tracks, and the mean-reversion family was audited the same day (change log below): its reading is kept as v0.2 and labelled as not representing the library mean-reversion family. No sizing rule is derived from the readings (T2, T5 and T6 together: no forecast value, no overlay value, no return persistence to size on). The sizing multiplier was dropped from the product on 2026-10-28 (change log below).

The T5 result means that the published percentile and drift alert are descriptive: used as naive position-sizing or halt rules on historical trade lists they added nothing measurable, so no sizing or halt guidance is derived from them.

Benchmark-relative performance (descriptive)

alpha20 compares each live production account with its own family's probe reading. For an account that is active on the reading date and has at least 15 of the previous 20 business days active, alpha20 is the mean of its daily z over those 20 business days (the same per-account z the Scoreboard uses: daily return on start balance over its trailing standard deviation, clipped at ±6) minus the family's probe reading z on the same date, with beta = 1.0 for every family (fixed, not fitted to any data). The page shows, per family, the reading, the number of accounts scored, the median 20-day account z and median alpha20, and the share of accounts above the benchmark (alpha20 above zero); individual accounts are not published. This is a comparison, not a forecast and not a sizing instruction (T2, T5 and T6 found no forecast, overlay or sizing value in the readings), and the two sides are standardised differently (a daily account z against a two-year z of per-trade R), so alpha20 is not a measured excess return. Descriptive only; no statistical claim is made from it.

External panel (Collective2, descriptive)

External panel. A descriptive panel of third-party algorithmic strategies on Collective2, read through its public General API (read-only, one request per second; nothing is subscribed, copied or traded). The records are hypothetical model accounts with simulated fills and the default commission plan. Universe, fixed in a pre-registration dated 2026-11-04 before any panel data was read (aci/phase1/step5/C2_PANEL_PREREG_2026-11-04.md): every forex or futures strategy that existed on 2022-01-03 (dead ones included) or is live and was created before 2026-01-01, with at least 250 observed days. Daily return: the change in each strategy's own end-of-day model-account equity, net of the default commission plan (one snapshot a day, labelled to the broker day that has just closed at 17:00 ET; weekends compound into Monday). Each strategy's return is standardised by its own trailing 120-day standard deviation (clipped at ±6); a family's return is the equal-weight mean of its members with at least five members that day. Families are tagged from each strategy's closed trades (the spread of trade durations and of opening times, how long losers are held against winners, the payoff ratio) with panel-internal terciles fixed at the first build; each strategy is tagged once and the tag is never revised. A second tag from the strategy descriptions is reported beside it in the report; the two sources disagree (of 21 strategies tagged by both, agreement 0.19, Cohen's kappa -0.06), and most descriptions say nothing about mechanism (44 of the members get a description tag), so the tags cannot be checked against the text.

The card shows, per family, the members on the as-of day, the 20-day mean of the standardised family return, its percentile against its own two-year history, and the T1-external result. T1-external asks whether the probe family index co-moves with outside algos of the same family: Spearman correlation at the 20-day horizon on day blocks, a 90% block-bootstrap interval, a +40-day shift twin and a tag-shuffle control (labels permuted across the panel's members, 200 draws). A family passes with rho of at least 0.40, the interval above zero, the twin failing and the shuffle 95th percentile below rho; FAIL needs at least 40 blocks, fewer is INCONCLUSIVE. Result of the run of 2026-11-04 on probe readings through 2026-10-01 (the first run is the pre-registered one; later runs are dated updates beside it):

FamilyVerdictrho [90% interval]TwinShuffle p95BlocksPower at 0.40
TBFAIL-0.14 [-0.28, +0.00]+0.03+0.12610.94
MRFAIL+0.12 [-0.04, +0.28]+0.07+0.09610.94
SCFAIL+0.05 [-0.07, +0.18]-0.02+0.10610.94

Limits: hypothetical records and simulated fills; the daily series is each strategy's own end-of-day model-account equity, whole dollars, snapshot hours vary; the as-of day is the last closed panel day with at least 5 members (a label day D closes at 17:00 New York on D+1), and the panel's last day can lag the print (publication delay for non-subscribers); the most recent days are provisional: strategies report late and recent rows are revised as records arrive (between the two prints of 2026-11-04, rows back to 2026-10-27 changed); of the 746 strategies in the 2022-01-03 snapshot, 172 are no longer served by the API, among them 49 of the 173 forex or futures strategies with 30 or more trades at that date, so the panel's 22 dead members understate attrition and the 2022 cohort is not survivorship-free; strategies created after 2022-01-03 that died before the pull are also missing. 156 of the 255 members have no defined standardised return in the last 20 weekdays (flat equity, a series that ended, or a dead strategy); the automation share of the members is not available from the API's details record; post hoc sensitivity, read after the result and labelled as such: restricted to the 175 members that were in the 2022-01-03 snapshot the test gives TB -0.14 (FAIL), MR +0.03 (FAIL), SC -0.05 (FAIL) and changes no verdict; the panel's futures strategies mostly trade equity-index and gold futures (markets the probe basket also covers) plus others such as crude oil, so the overlap with the 17-symbol basket is partial; a failed family says that outside algos in this panel do not track the probe, not by itself that the basket is wrong. Descriptive only; no forecast, sizing or halt output is derived from it (T2, T5 and T6 found none).

Rules that apply to every number here

Pre-registration before any test; a shift-control twin beside every statistic; day-block statistics; realised drawdown only; costs as published; probe results labelled hypothetical; negatives published; backfill drawn differently from the live record; methodology versioned with 30-day notice and 90-day overlap for major changes.

Change log — tick data re-download (2026-11-05, effective with the 2026-11-05 print)

The tick files behind the probes and the market layer were re-downloaded on 2026-11-05 and now run through 2026-10-30. This is a data revision, not a change of method. First, the probe readings and the 17-symbol market layer advance from 2026-10-01 to 2026-10-30; the readings for 2026-10-02 to 2026-10-30 are published for the first time with this print and are late publications, not same-day prints. Second, values already published for 2026-01-02 to 2026-10-01 are revised: the family readings by at most 0.004 (about 2 to 3 percent of one standard deviation of a reading), the cost regime by at most 0.0006, and the drift values of 2026-10-01 by at most 0.0085. Nothing before 2026-01-02 changes at the published precision. The history as published before the re-download is kept as data/aci_history_pre_2026-11-05.csv. The 25-symbol market layer stays at 2026-10-01 until the tick files of two of its symbols (CADJPY, CHFJPY) are restored; a further small revision of its 2026 values will follow then and its size will be stated here.

Change log — external panel correction (effective with the 2026-11-05 print)

Correction, effective with the 2026-11-05 print: the panel's last day is now the last closed panel day; the 2026-11-04 22:06 print showed a partial day (7 members) and its last row is withdrawn. A label day closes at 17:00 New York on the next day, so the 21:45 print used to catch the latest day a few hours old; recent rows of the history file are provisional and are revised as strategies report. Panel construction, tags and the T1-external verdicts are unchanged (a display-only amendment, aci/phase1/step5/C2_PANEL_AMENDMENT_1_2026-11-05.md).

Change log — external panel card (effective with the 2026-11-04 print)

From the 2026-11-04 print the page carries a seventh card, the external panel on Collective2, defined in the section of that name and in the pre-registration of 2026-11-04. It is an addition: it changes no reading, percentile, Scoreboard statistic, alert or published number, so it takes effect at once rather than under the 30-day notice that applies to changes of an existing output. The JSON carries it as external_panel and the daily series as external_panel_history.csv; the T1 row of the validation table now carries the external result. Aggregates only; no strategy name or id is published. Descriptive: nothing is re-fitted and no forecast, overlay or sizing value is claimed. A negative T1-external result stays on the page.

Change log — benchmark-relative card (decision 2026-10-29, effective with the 2026-10-29 print)

From the 2026-10-29 print the page carries a sixth card, benchmark-relative performance, defined in the section of that name (added to this page with that print) and proposed by the T6 report as the one use of the benchmark that needs no new signal. Per family it shows the probe reading z, the number of live production accounts scored, the median 20-day account z, the median alpha20 (the account's 20-day z minus the family reading z, with beta fixed at 1.0 and never fitted), the alpha20 quartiles, and the share of accounts above their benchmark. It is a descriptive comparison: not a reading, a percentile, a Scoreboard statistic or an alert; nothing is re-fitted; no forecast, overlay or sizing value is claimed from it (T2, T5, T6). Aggregates only; no account login or strategy name is published. The card's date is the earlier of the last probe reading and the last Scoreboard day, so it reads 2026-10-01 until the tick data is refreshed. It is computed on the corrected registry (membership correction below): the six T&D19L13 "Agg" accounts that correction moved from mean-reversion to session-clock are scored under session-clock, and no other account's figure changed. The JSON carries it as benchmark_relative; every other output is computed without it. This adds an output and changes no published number, so it takes effect at once rather than under the 30-day notice that applies to changes of an existing output.

Change log — sizing multiplier dropped (decision 2026-10-28, effective with the 2026-10-28 print)

The roadmap carried a third output, a per-family sizing multiplier (0.5–1.5, banded, with a dwell), to be published once a nowcast test (T2) and a sizing test (T3) had passed. It was never published. Four pre-registered tests have now returned the same answer from different directions: T2 found no out-of-sample forecast value in the market-state features; T5 found that overlays on the raw readings do not beat same-window permutation nulls on 105 strategy curves and 150 live accounts; T6B found no return persistence at 5–20 days in the family panels once account composition is controlled; T6C found the best of 38 sizing rules per family inside a search-aware permutation null in every window. The operator decided on 2026-10-28 to drop the multiplier from the product rather than keep it on the roadmap. From this print the index publishes no sizing instruction; the JSON field multipliers states that it is dropped and can no longer publish; T3 is retired and T2's record stands. The only risk outputs are the Scoreboard's realised drawdown load and SPRT kill lines, which are coincident, account-level and lagging by construction. The probe index, the Scoreboard and the Pattern Integrity features are unchanged. Should a future pre-registered test establish a sizing mechanism, it would enter as a new output under the 30-day notice and 90-day overlap rule, not by reviving this one.

Change log — mean-reversion family audit (2026-10-28, caveat effective with the 2026-10-28 print)

The T6 finding that the mean-reversion reading moves opposite to the library mean-reversion strategies was audited the same day under a pre-registration (aci/phase4/mr_audit). Decomposing the published reading shows that the mean-reversion probes' own per-trade results track neither the library mean-reversion pool nor the live mean-reversion panel (rho −0.09 to +0.08); the random control they are read against does track the library pool (+0.20 to +0.38), so the published difference carried the control's cost-regime signal with the sign flipped. Re-walking the same entries with fixed 3-, 6- and 12-hour exits (one tick walk per geometry, random control matched) did not reach the pre-registered bar either: best tracking of the library pool +0.26 on 2025–26 and +0.15 on the K-cycle lockbox against a bar of +0.40. By the pre-registered rules neither hypothesis is confirmed, so the mean-reversion reading stays v0.2 and is published with the caveat "does not represent the library mean-reversion family; descriptive"; the family is not split; the next look is the 2027 live record. A third, descriptive step (splits of the same record) found the opposite movement concentrated in the K-cycle library strategies and in the legs of the fourteen non-K-cycle probe symbols, and not distinguishable from zero against the other library strategies or against the live mean-reversion accounts once account composition is removed; it changes nothing above. Nothing was chosen by result and no sign is flipped. The trend and session-clock readings are unaffected.

Change log — publication time (2026-10-28, effective with the 2026-10-29 print)

The first 18:30 ET print (2026-10-28) read the Scoreboard through 2026-10-27. The Bachelier daily run that completes the account panel lands at about 21:15 ET, not 17:17 ET as the notice below assumed, so an 18:30 print sees a partial day and the completeness guard drops it. From the 2026-10-29 print the job runs at 21:45 ET, after that run, so a print dated D reads the Scoreboard through day D as the notice intended. The probe readings, the market-state features and the Scoreboard computation are unchanged; the 2026-10-28 print stands as published and its JSON states scoreboard_through 2026-10-27. Each print's JSON carries readings_through and scoreboard_through; a reader should trust those fields over the clock.

Change log — membership correction (2026-10-28, effective with the 2026-10-29 print)

The account-family map tagged every account whose name contains "Agg" as mean-reversion before checking for an engine name. Nineteen Bachelier accounts named T&D19Lx … Agg or PropMaster Agg (33,766 trades, about half of the live mean-reversion trades) are time-of-day (session-clock) engine variants with an aggressive risk preset, and are moved from the mean-reversion to the session-clock Scoreboard. The rule order is corrected (engine names take precedence over risk-preset words); no reading, percentile, alert or statistic definition changes. The live mean-reversion and session-clock columns of the T1 and T6 rows above were computed under the previous tags; the audit record (aci/phase4/mr_audit) reports both. Confirmed by the operator on 2026-10-28: "Agg" denotes the engine's aggressive risk preset (25–30% drawdown allowed), not a different mechanism; the correction stands.

Change notice (posted 2026-10-27)

Decisions taken on 2026-10-27, published here before they take effect, under the 30-day notice and 90-day overlap rule:

Reports

Pre-registrations and reports live in the project repository under aci/phase0, aci/phase1, aci/phase2, aci/phase3.

Back to the index