Drift Premium did not pass its test.

The pass rule needed a profit factor of at least 1.2 on Set A’s holdout months and on Set B’s 10 untouched coins; in this hypothetical backtest Premium had 1.16 and 1.12 (1,108 and 4,685 positions), and Free, long only had 1.10 and 1.12 (594 and 2,430 positions); the lab’s summary: Premium’s result on the untouched coins is “explained by long exposure in rising markets, not timing”.

The strategy rule tested here is not for sale; Drift Desk Premium, our toolset, is a separate product. One email when the next test starts, on new coins.

See every number

Looking for Drift Desk Premium?

It is our toolset on top of the free Drift Desk, not the rule tested here: the bigger trend on three higher timeframes, entries that wait for the pullback, a watchlist scanner, size and fees before you click, and stop management. $49 once.

See Drift Desk Premium

Premium is a toolset: its signals are not proven to earn more. Test them on your own market.

What we tested.

Drift Free’s own signals and stop on 4h bars, long entries only, with no profit target: each position closes at the first opposite flip.

  1. Signals: Drift Free 1.3.1 with its default inputs (fresh Drift flips; every optional gate off).
  2. Long entries only: a short flip is skipped, never queued.
  3. Initial stop: Drift Free's 10-bar structure stop plus 0.25 ATR(14), sized to 100 USDT of planned risk (1R), and kept for the life of the position.
  4. No profit target: the position closes at the close of the first opposite (bearish) Drift flip.
  5. Timeout raised from Drift Free's 120 bars to 5000 bars; no FINAL position reached it.
  6. Timeframe: 4h.

The export’s rules, word for word. Candidate C1 · 4h · engine figures, no Pine build yet.

The benchmark it faced: Free, long signals only
  1. Signals: Drift Free 1.3.1 with its default inputs (fresh Drift flips; every optional gate off).
  2. Long entries only: a short flip is refused on its flip bar, skipped and never queued.
  3. Initial stop: Drift Free's 10-bar structure stop plus 0.25 ATR(14), sized to 100 USDT of planned risk (1R), and kept for the life of the position.
  4. Profit target: Drift Free's 2R limit, twice the stop distance above the entry.
  5. Timeout: Drift Free's 120 bars; a position still open 120 bars after its entry closes at that bar's close.
  6. One position per symbol: while it is open, further Drift flips are skipped, never queued, and a bearish flip does not close it.
  7. Timeframe: 4h.

The export’s rules for Drift Free 1.3.1, long signals only, word for word · RL · 4h.

The test, in public.

One final run; every number below comes from the lab’s export.

The pass rule said no, word for word:

  1. Set A: Premium profit factor 1.16 is below 1.2.
  2. Set B: Premium profit factor 1.12 is below 1.2.
All 6 conditions, word for word
  1. In both Set A (holdout months) and Set B (untouched coins): Premium net R > 0.
  2. In both sets: Premium net R > Drift Free net R.
  3. In both sets: Premium profit factor >= 1.2.
  4. In both sets: Premium profitable on at least 6 symbols.
  5. Premium net R under STRESS costs (both sets) > 0.
  6. In Set B: Premium net R > Drift Free taking only its long signals.

The lab’s summary, corrected after the final run:

Long-only Drift Premium failed the promotion gate we set after validation and before its final test (profit factor 1.16 on Set A's holdout months and 1.12 on Set B's ten untouched coins, against 1.20), and its +197.6R on the untouched coins is explained by long exposure in rising markets, not timing (timing −14.4R and −18.5R under the two corrected nulls): Drift Free taking only long signals made about as much (+170.7R), and holding Premium's average capital long at constant size made more (+299.1R after costs).

Set
Cost

The scoreboard and the drawers below show Set B · Real costs.

Set B · Real costsSet B: 10 coins never used before the final run, Jan 2020 to 23 Sep 2026. All four columns on 4h bars.Hypothetical backtest, not a live record. 1R = 100 USDT planned risk.

Scoreboard. Set B under Real costs. Net R: Free 1.3.1 −152.3, Free, long only +170.7, Premium +197.6, Always long +299.1.
MetricFree 1.3.1Free, long onlyDrift Premium (research edition)Always long (all costs)
Net R−152.3+170.7+197.6+299.1
Positions2,6072,4304,685held throughout
Average R per position−0.06+0.07+0.04not applicable: held throughout, no positions
Profit factor0.911.121.12not in the export for this view
Max drawdown (R), marked at every 4h close246.6133.8177.893.5
Markets positive1/1010/106/1010/10
Fees and slippage (R)47.545.398.29.8
  • Free 1.3.1 is Drift Desk 1.3.1, the tool on our free page; the lab’s export calls it Drift Free 1.3.1 and chose its 4h timeframe by the rule highest DEV aggregate net R.
  • Max drawdown is marked at every 4h close for all four columns, as in the Strategy Exam; counting closed positions only, the three Drift columns’ drawdowns were 244.0, 133.1 and 170.1.
  • Always long holds Premium’s average capital in the same coins at every 4h close, with every fee and slippage charged, rebalancing included; it has no positions of its own.
  • Positions: 2,275 of Premium’s 4,685 entries were ones Free, long only did not take (+189.8R); on the 2,410 entries both took, Premium’s result was 157.2R below Free, long only’s.
  • All figures come from our backtest engine; only Free 1.3.1’s engine is checked against TradingView (914 of 914 trades matched).

In plain words.Real costs unless a line says Stress. These lines stay fixed: the controls above change only the scoreboard and the drawers.

  • Against Free, long only: Premium minus Free, long only: +26.9R on Set B (4,685 positions against 2,430) and +31.4R on Set A (1,108 against 594).
  • Luck: Not resolved: we re-drew the test’s weeks 20,000 times, and that difference was zero or less in 44 of 100 draws on Set B and 30 of 100 on Set A. Premium’s own net R was zero or less in 11 of 100 on Set B and 20 of 100 on Set A. The lab calls this context only; the protocol decides on point values.
  • Against always long: Always long, with all costs, made +299.1R on Set B and +24.9R on Set A, held throughout; Premium minus always long: −101.5R on Set B and +41.9R on Set A, not resolved on either set (zero or less in 77 and 26 of 100 draws).
  • Timing: Timing, before costs: entries at random times, the same size and held as long, would have earned +314.2R on average on Set B; Premium’s timing added −18.5R (zero or less in 57 of 100 draws). On Set A: +25.3R on average, and its timing added +83.8R (zero or less in 14 of 100 draws). Timing is not resolved on either set: each 2.5%–97.5% range includes zero. With the lab’s other corrected method (the average 4h return), timing is −14.4R on Set B and +81.9R on Set A.
  • Where it came from: Premium’s three largest months on Set B made +78.5R (Jan 2021, 60 positions), +60.7R (Nov 2024, 49 positions) and +52.1R (Aug 2026, 51 positions); without them, its Set B total is +6.4R. On Set A, its largest month made +63.1R (Jul 2025, 60 positions); without it, its Set A total is +3.6R. Its largest single position on Set B, DOGE from 28–29 Jan 2021, made +63.8R. Set B without DOGE and ETC (a subset written before the final run; A6.3): Premium +15.7R over 3,805 positions, Free, long only +144.9R over 1,956.
  • Stress costs: With Stress costs (0.10% commission and 0.05% slippage per fill): Premium +85.4R over 4,685 positions and Free, long only +119.9R over 2,430 on Set B; Premium +18.4R over 1,108 positions and Free, long only +12.3R over 594 on Set A.
  • Against Free 1.3.1: Premium minus Free 1.3.1, which also trades short: +349.9R on Set B (4,685 positions against 2,607) and +56.3R on Set A (1,108 against 642). +202.6R of the Set B gap comes from Free’s 1,359 short positions, which Premium and Free, long only both skip.
  • Disclosed: we wrote the pass rule after the Choose step (validation) and before the final run (committed 24 Sep, 00:28 UTC; the final run started 01:31 UTC); the chosen setting passed the Explore screen only under a reading of one screening rule that we chose after the Explore results were known (A6.1); we tried 36 distinct configurations: 33 pre-registered, 2 neighbour probes added after the Explore results (not promoted) and 1 combination (42 counting each step a configuration reached: 36 Explore, 3 Choose, 3 Final); Premium has no Pine build, so its figures come from our backtest engine, not TradingView; the lab corrected its analysis after the final run (18 corrections, under Corrections).
    The screening rule and the reading we chose

    The DEV neighbour rule drops a survivor whose immediate numeric neighbours all fail the screen. We read it so that a rule with no numeric parameter (long-only) has no neighbour, and the Free base is the control rather than a neighbour. This reading was applied after DEV results were known and ratified after VAL.

By market
Net R and positions by market, Set B, Real costs, in protocol order
MarketFree 1.3.1Free, long onlyPremiumAlways long
DOGE−11.7246+25.2234+133.8437+58.6held
QTUMA2−28.7273+27.5246−14.6498+22.2held
ETC+0.5250+0.6240+48.1443+25.9held
XTZ−0.5262+9.1257−18.7472+12.3held
VET−10.9267+13.7249+1.8480+27.8held
ALGO−23.1272+22.1247−19.2494+18.8held
ZEC−18.2268+38.6241+56.0449+52.5held
DASH−11.8246+6.6237+19.9459+28.9held
HBAR−12.8245+2.6238+4.3468+38.2held
NEO−35.2278+24.7241−13.8485+13.9held

Each cell: net R, then positions. Real costs. Protocol order, not sorted. Always long: all costs, held throughout; the export has its per-coin rows at Real costs only. QTUM replaces BCH, whose data starts too late (A2.2).

By year
Net R by year and edition, Set B, under Real and Stress costs, with positions
YearEditionNet R, RealNet R, StressPositions
2020Free 1.3.1−47.9−55.3370
Free, long only+92.0+85.0350
Premium+75.5+59.9673
2021Free 1.3.1−64.7−70.2407
Free, long only+88.8+84.3353
Premium+137.4+126.9701
2022Free 1.3.1−36.0−43.5384
Free, long only−101.5−109.1376
Premium−88.0−104.6702
2023Free 1.3.1−54.8−65.2388
Free, long only+59.2+49.4352
Premium−15.8−36.3688
2024Free 1.3.1−28.0−36.3393
Free, long only+15.1+8.5330
Premium+25.7+9.5684
2025Free 1.3.1+33.8+25.8399
Free, long only+7.8−0.5401
Premium−3.8−21.7734
2026 (partial)Free 1.3.1+45.3+38.8266
Free, long only+9.3+2.3268
Premium+66.6+51.6503

Years follow the exit time of each position (UTC). Always long has no by-year rows in the export.

Equity curves

The curves draw from curves-REAL.json when this drawer opens.

Robustness checks
Set B, Real costs
CheckFree 1.3.1Free, long onlyPremium
Net R without the 5 largest positions−162.32,602+160.82,425+71.74,680
Profit factor without them0.901.111.04
Lowest net R leaving one market out−152.92,357(no ETC)+132.12,189(no ZEC)+63.84,248(no DOGE)
Net R with crash fills−201.32,607+125.52,430+179.54,685
Profit factor with crash fills0.881.081.11

Under each net R: its positions.

  • The 5 largest positions by R removed (REAL).
  • Each symbol removed in turn (REAL); the rows and the lowest profit factor and net R.
  • A2.3: the REAL run repeated with stops inside a crash bar filled at the bar's extreme instead of the stop level.
Set B in parts
Part of Set BFree 1.3.1Free, long onlyPremium
All of Set B−152.32,607+170.72,430+197.64,685
12 falling quarters+11.71,122−249.71,111−218.52,098
15 rising quarters−164.01,485+420.41,319+416.12,587
Without the 5 largest positions−162.32,602+160.82,425+71.74,680
With Stress costs−205.82,607+119.92,430+85.44,685
Without DOGE and ETC (written before the final run; A6.3)−141.22,111+144.91,956+15.73,805

Each cell: net R, then positions, at Real costs unless the row says Stress. A quarter is falling when the coins’ equal-weight return over it was negative; a position counts in the quarter or year it closed.

Where the Set B difference to Free, long only (+26.9R) comes from, matching positions by coin and entry bar at Real costs: +189.8R from the 2,275 entries only Premium took, −157.2R from the 2,410 entries both took and −5.8R from the 20 entries only Free, long only took.

The benchmark amendment A6 asked for after validation, buying the coins once and holding them (renamed after the final run): +725.0R on Set B (drawdown 3,103.5R, marked at 4h closes) and +8.4R on Set A (drawdown 99.1R, marked at 4h closes); its average capital was 9.9 times Premium’s on Set B and 1.1 times Premium’s on Set A, so it is not matched to Premium’s capital; always long is.

Corrections after the final run · 18 (analysis only: the final runs, the verdict and the protocol are unchanged)

The lab’s 18 corrections after the final run, all dated 2026-09-24, with the corrected wording. Each one’s withdrawn wording stays in summary.json, under Downloads.

  1. PFC-1 · critical · Drift-only null (the timing term)

    Now: Premium timing, with the share of resamples at or below zero: Set B −14.45R (0.556) with the arithmetic mean and −18.46R (0.566) with random entries; Set A +81.89R (0.145) and +83.78R (0.139). On Set B, long exposure alone earns +310.23R to +314.24R before costs, against Premium's +295.78R before costs.

    What changed and why

    What changed: The drift-only null that amendment A6 added after VAL is kept and labelled as A6's definition, which is flawed. Two corrected nulls are added, each with the same week-block bootstrap: the arithmetic-mean null (the same formula with the mean 4h return) and a random-entry null with the same holding durations (the exact expected return of entries drawn uniformly from the window, with no distributional assumption).

    Why: The drift-only null of A6 priced each position at the geometric-mean 4h return. For a position of fixed size, the expected gain from random long exposure follows the arithmetic mean, which exceeds the geometric mean by about half the variance per bar (4h volatility 2.1%–2.8% on Set B). The null therefore understated what random long exposure earns and counted the difference as timing.

  2. PFC-2 · major · The benchmark "with the same average capital"

    Now: Buy D/P0 units and hold: unchanged. Constant long exposure of D: Set B +299.09R after costs (mark-to-market drawdown 93.54R), against Premium's +197.60R (177.77R); Set A +24.90R (81.14R), against +66.77R (103.60R). Counting only the entry and exit fills it would be +308.80R and +26.99R; the rebalancing at every 4h close costs 9.71R and 2.09R.

    What changed and why

    What changed: The benchmark amendment A6 asked for, written after VAL, is kept and renamed accurately: "buy D/P0 units and hold". Its time-average capital is reported. A capital-matched benchmark is added: constant long exposure of D, the edition's average deployed capital, held at every 4h close, with REAL costs on every fill that keeps it there (entry, the rebalancing after each close, exit).

    Why: The benchmark buys D/P0 units once and lets them appreciate, so it does not hold the same average capital: on Set B its time-average capital was 9.90 × Premium's (1.10 × on Set A).

  3. PFC-3 · major · The headline

    Now: Long-only Drift Premium failed the promotion gate we set after validation and before its final test (profit factor 1.16 on Set A's holdout months and 1.12 on Set B's ten untouched coins, against 1.20), and its +197.6R on the untouched coins is explained by long exposure in rising markets, not timing (timing −14.4R and −18.5R under the two corrected nulls): Drift Free taking only long signals made about as much (+170.7R), and holding Premium's average capital long at constant size made more (+299.1R after costs).

    What changed and why

    What changed: The FINAL report's headline is replaced. The new one states that the gate failed and that Premium is long-only, that its profit on the untouched coins is explained by long exposure, and how it compares with Drift Free long-only and with constant long exposure.

    Why: The old headline compared Premium with Drift Free trading both directions, its weakest comparator, and presented Set A as a win "[withdrawn wording]". Premium lost −74.85R in Set A's falling quarters and made 94.5% of its Set A profit in one rising month.

  4. PFC-4 · major · Concentration by month

    Now: Set A: +63.13R of Premium's +66.77R (94.5%) exited in 2025-07; without that month, +3.64R (PF 1.009). Set B: 2021-01, 2024-11, 2026-08 gave +191.21R of +197.60R, and the other 78 months +6.38R. Without the five largest positions: +13.88R (Set A, PF 1.034) and +71.66R (Set B, PF 1.045).

    What changed and why

    What changed: Stated in prose. The methodology's "where the result is weak" now includes leave-one-month-out and top-5 trimming.

    Why: The robustness table amendment A6 asked for held these numbers, but no sentence said that one month carried Set A and three months carried Set B.

  5. PFC-5 · major · What the FINAL shows, and the licensed-claim wording

    Now: Resolved at 95%: none of Premium's net R, margins or timing terms. Closest: Premium − Drift Free on Set B, share of resamples at or below zero: 0.032, and 57.9% of that margin is Drift Free's shorts, which Drift Free long-only also avoids. Unresolved point estimates, with the same share: Premium − Drift Free on Set A (0.258); Premium − Drift Free long-only (A 0.295, B 0.439); Premium net R (A 0.199, B 0.108).

    What changed and why

    What changed: The list headed "Shown" is relabelled into what is resolved and what is not, by the week-block bootstrap. The sentence saying the licensed claim's literal words hold is withdrawn: an unlicensed claim is not described as true.

    Why: Point estimates with a share of resamples at or below zero of 0.258 and 0.439 were listed as shown.

  6. PFC-6 · minor · TV-cost figures

    Now: "TV costs: engine figures; Premium has no Pine build, so no Strategy Tester shows them".

    What changed and why

    What changed: Drift Premium has no Pine build, so no Strategy Tester can show its figures. Its TV-cost numbers are engine figures; only Drift Free 1.3.1 has engine-to-Strategy-Tester parity.

    Why: The FINAL report headed its TV section "[withdrawn wording]", which implied a user could see Premium's TV figures.

  7. PFC-7 · minor · Size of the search

    Now: 42 configuration × stage pairs (36 distinct configurations) in this lab. Before it, earlier ProEA Lab research tried 31 recipes on BTC and ETH and measured three 4h candidates; that work shaped this lab's hypotheses and grid.

    What changed and why

    What changed: The selection-bias caveat names the earlier research that shaped this lab's grid.

    Why: "[withdrawn wording]" counted only this lab's evaluations.

  8. PFC-8 · minor · Lines of the byte-pinned PROTOCOL.md that name internal paths or names

    Now: Lines 14, 43, 120, 121, 122, 123 and 139: two absolute local paths (14, 139), one relative path into the earlier research folder (123), and internal names on 43, 120, 121 and 122.

    What changed and why

    What changed: Lines 122 and 123 are added to the disclosure: the earlier research's internal candidate labels and a relative path into its folder.

    Why: The detector looked for absolute paths and a list of internal names; it missed a relative path and the earlier research's labels.

  9. PFC-9 · minor · What the "buy D/P0 units and hold" benchmark held

    Now: "held a fixed number of coins, bought for 574–662 USDT at the window start".

    What changed and why

    What changed: The FINAL report said the benchmark "[withdrawn wording]". It held a fixed number of coins (D/P0 units), and their value moved with the price.

    Why: The description contradicted the benchmark's definition.

  10. PFC-10 · minor · Curve final points

    Now: The final point equals finalR bit for bit. finalR matches net R within 1.0e-12 R (the export's check allows 1e-6).

    What changed and why

    What changed: The last point of a published curve is not rounded and equals finalR, the full-precision sum in exit order. finalR equals the scoreboard's net R to floating-point precision, not bit for bit.

    Why: The methodology said every curve ends "exactly" at the metrics' net R.

  11. PFC-11 · minor · Size of the FINAL records

    Now: 29.0 MB (27.7 MiB): trades files 27.6 MB, result files 1.4 MB.

    What changed and why

    What changed: Corrected.

    Why: The FINAL report gave the trades files' size as the size of all 48 files.

  12. PFC-12 · minor · An in-place edit of PROTOCOL.md

    Now: Disclosed.

    What changed and why

    What changed: Disclosed in the corrected report: commit cdda29a edited line 159 of PROTOCOL.md in place. Amendment A4.6 gained the cross-reference "(see A5 for the gate)". The public export already disclosed it.

    Why: PROTOCOL.md says amendments are appended and nothing above them is edited; the FINAL report did not mention this edit.

  13. PFC-13 · major · When the promotion gate was set

    Now: The summary sentence says Long-only Drift Premium "failed the promotion gate we set after validation and before its final test". Every other text names the amendment that set what it describes, A5 or A6, both written after VAL and before FINAL.

    What changed and why

    What changed: The one-sentence summary and several other texts overstated how early the promotion gate, and what amendments A5 and A6 added, were set. They now say when: the gate, with its 1.2 bar, after VAL had run and before FINAL (A5, with its Set B condition from A6); the drift-only null, the benchmark of buying D/P0 units, the robustness table and Drift Free long-only's FINAL evaluations in A6, also after VAL and before FINAL. Only protocol v1, amendments A1–A4 and the DEV grid were pre-registered before any Premium result, and only they are described so.

    Why: The gate was committed after VAL had run and after the VAL choice was committed (disclosures.gateTiming: gateCommittedAfterVal is true); its Set B condition against Drift Free long-only was added after the founder saw the VAL robustness audit, in the stricter direction only (A6.2); and A6, which added the drift-only null, the benchmark and the robustness table, was written after VAL too. Describing any of them as set before the results were known overstated the protocol.

  14. PFC-14 · minor · The luck test, as a share of resamples

    Now: Premium timing, "with the share of resamples at or below zero: Set B −14.45R (0.556)"; "Premium − Drift Free on Set B, share of resamples at or below zero: 0.032"; "share of resamples with the margin at or below zero: 0.439"; "a share of resamples at or below zero of 0.258 and 0.439"; methodology.md's table: "share of resamples at or below zero: 0.295"; the bootstrap definitions: "the share of resamples whose timing sum is at or below zero".

    What changed and why

    What changed: Each luck-test number is now written as the share of the week-block bootstrap's resamples at or below zero, in place of the letter P, with the same value; the three bootstrap definitions name that share the same way.

    Why: The number counts resamples: it is the share of the bootstrap's resamples that end at or below zero. Written with the letter P it reads as a statement about the strategy itself, which a count of resamples does not make; the house wording rules write it as a share of resamples.

  15. PFC-15 · minor · The benchmarks, named by what they are

    Now: PFC-2 is headed The benchmark "with the same average capital", and PFC-9 What the "buy D/P0 units and hold" benchmark held. The month and quarter definitions use the equal-weight price return of the set's coins; a reading set before FINAL and A6's summary name a benchmark of holding the same planned notional; methodology.md speaks of the coins' equal-weight price return and heads the definitions "holding benchmarks".

    What changed and why

    What changed: Current text no longer uses the label the FINAL report used for its holding benchmark: each benchmark is named by what it is. Constant long exposure is the comparison that holds the same average capital; the equal-weight price return of a set's coins gives the market's direction; "buy D/P0 units and hold" buys the coins once; and A6 asked for a benchmark of holding the same planned notional. The old values keep the label as recorded.

    Why: The house wording rules allow that label in no spelling in the site's own text. It reads as holding the same capital as the edition, which buying D/P0 units once does not do (PFC-2); constant long exposure does.

  16. PFC-16 · minor · Comparative words

    Now: A6's summary: "Premium net R must also exceed that of Drift Free taking only long signals"; the by-cost definition: "puts these values above premium.netR"; methodology.md: "may not make the comparative claim that the gate licenses only on a pass", "the win, loss and flat counts add up to positions" and "the benchmark ends higher".

    What changed and why

    What changed: The remaining comparative words outside the strings gate.mjs produces now state the comparison they made. A6's summary says Premium net R must also exceed that of Drift Free taking only long signals, as A6.2 does; the by-cost definition says that leaving out the rebalancing fills puts its values above premium.netR; and methodology.md says what the site may not claim, names the win, loss and flat counts, and says the benchmark ends higher without the rebalancing fills.

    Why: The house wording rules allow no comparative praise in the text the site renders. Each sentence keeps its numbers and its meaning.

  17. PFC-17 · minor · Earlier versions, described as never published

    Now: The r3 entry says 2026-09-24-final-r2 is kept unchanged in the lab's history, was never published and is listed on the site by its MANIFEST.json sha256 only; the evidence history says this version holds the same 24 FINAL records; methodology.md's first line says this version was not published at build time and that publishedAt holds the time of the lab commit 2026-09-24-final-r2 was built from, not a publication time; §14 says no existing value changed.

    What changed and why

    What changed: Four texts described earlier versions of this export as public. The r3 entry of the evidence history said 2026-09-24-final-r2 was still available as written; the evidence history's first sentence, and the r4 entry's record of it, said this version made the FINAL records public; methodology.md's first line gave the time in publishedAt as the time of publication; and §14 said no public value of 2026-09-24-final-r2 changed. They now say that 2026-09-24-final-r2 is kept unchanged in the lab's history, was never published and is listed on the site by its MANIFEST.json sha256 only; that this version holds the same FINAL records; that publishedAt, a field name the v2 core keeps, holds the time of the lab commit 2026-09-24-final-r2 was built from, not a publication time; and that no existing value changed.

    Why: None of these versions was ever published: 2026-09-24-final-r2, 2026-09-24-final-r3, 2026-09-24-final-r4 and 2026-09-24-final-r5 were served only on unmerged preview deployments, never in production, and the site serves only the current export and lists earlier ones by their MANIFEST.json sha256 only. publishedAt keeps the v2 core's field name, and its value is a build time.

  18. PFC-18 · minor · The word for when the gate was written

    Now: The summary sentence and PFC-3 say Long-only Drift Premium "failed the promotion gate we set after validation and before its final test"; PFC-13 is headed When the promotion gate was set; the FINAL runner, the pinned files, PFC-15, the r5 entry and methodology.md say set.

    What changed and why

    What changed: Texts said when the promotion gate, what amendments A5 and A6 added and the readings before FINAL were written with a word that can also mean repaired: the summary sentence, the new values of PFC-3, PFC-13 and PFC-15, PFC-13's heading, what, why and record of its edits, the FINAL runner, the pinned files, the r5 entry of the evidence history, and methodology.md's Profit factor bullet, disclosures extension, readings and section 15. They now say set. The same word for a constant amount or size, and the lab test repaired after the FINAL unlock, are unchanged.

    Why: These texts state when the gate and the amendments were written, after VAL and before FINAL (disclosures.gateTiming); none of them was repaired. Set says only when.

Revisions of this export: 2026-09-24-final-r3 (2026-09-24): curves added: Free long-only and constant long exposure; no result changed; 2026-09-24-final-r4 (2026-09-24): added: the Free long-only rules and a reconciliation of the configuration counts; reworded: the first export is not published; no result changed; 2026-09-24-final-r5 (2026-09-24): wording only: when the promotion gate was set, the luck test as a share of resamples, the benchmarks named by what they are, and comparative words; no number, verdict or gate reason changed; 2026-09-24-final-r6 (2026-09-24): wording only: earlier versions described as never published and listed by their MANIFEST.json sha256 only, and "set" for when the gate and amendments A5 and A6 were written; no number, verdict or gate reason changed.

Caveats and disclosures, word for word
Caveats
  • These are post-FINAL analysis corrections dated 2026-09-24: the FINAL runs, the gate verdict and the protocol are unchanged. The first export, 2026-09-24-final, is kept unchanged in the lab's history and is not published (its MANIFEST.json has sha256 e63fb6ed9adae274d8ee1bc6c85380e17186ada37ed00b23a4b62472a315c5f2); disclosures.postFinalCorrections lists every analysis correction since then with its old and new value.
  • These are hypothetical backtests on historical Binance spot data. No live trading record is implied.
  • Survivorship: all 20 pairs were chosen among Binance spot pairs still trading in 2026, so pairs delisted earlier are not represented.
  • BTC and ETH were examined in earlier ProEA Lab research during parts of VAL and HOLDOUT-T, so Set A is also reported without them, and Set B is the primary untouched evidence.
  • Funding and borrow costs are not modelled.
  • Prices are Binance spot klines. A chart on another exchange or data feed can show different bars and so different trades.
  • Engine-to-TradingView parity is established for Drift Free 1.3.1 only. Drift Premium has no Pine build yet, so no Strategy Tester shows its figures; its figures, the TV-cost ones included, are engine figures.
  • Selection bias: 42 configuration × stage pairs (36 distinct configurations) were evaluated in this lab, and configs-ledger.csv lists every one. Before it, earlier ProEA Lab research tried 31 recipes on BTC and ETH and measured three 4h candidates; that work shaped this lab's hypotheses and grid.
  • The promotion gate and amendments A5 and A6 were written after VAL had run, before FINAL.
  • The chosen candidate survived the DEV screen only under the neighbour-rule reading ratified in A6.1.
  • Premium's profit on the untouched coins is explained by long exposure. The drift-only null that amendment A6 added after VAL used the geometric mean and showed a timing term of +244.08R on Set B; with the arithmetic mean or random entries of the same durations the timing term is −14.45R or −18.46R.
  • Drift Free taking only long signals made +170.73R on Set B against Premium's +197.60R (share of resamples with the margin at or below zero: 0.439), and constant long exposure of Premium's average capital made +299.09R after costs.
  • Concentration: 94.5% of Premium's Set A net R came from positions exiting in 2025-07; on Set B its three largest months gave +191.21R of +197.60R.
  • No Premium net R interval of the week-block bootstrap excludes zero; the margins over Drift Free long-only are not statistically resolved.
  • Premium is long-only: it lost money in the falling quarters of both sets and made it in the rising ones.
Disclosures and definitions
  • The promotion gate was written and committed after VAL had run and after the VAL choice was committed, and before FINAL started. The founder chose its conditions without being shown the VAL results (A5). The Set B condition against Drift Free long-only was added after the founder saw the VAL robustness audit, in the stricter direction only (A6.2).
  • The DEV neighbour rule drops a survivor whose immediate numeric neighbours all fail the screen. We read it so that a rule with no numeric parameter (long-only) has no neighbour, and the Free base is the control rather than a neighbour. This reading was applied after DEV results were known and ratified after VAL.
  • Engine-to-TradingView parity is established for Drift Free 1.3.1. Drift Premium has no Pine build yet, so none of its figures, including the TV-cost ones, has a TradingView Strategy Tester check.
  • Two families of the DEV grid have no v2 key: H-ENS (three Drift speeds as sub-positions, E3) and H-PORT (a portfolio heat cap, H5). They are counted in configsTried and listed here. The DEV grid registered no configuration of the entry-timing family (H-ENTRY).
  • Capital-matched constant long exposure (added after FINAL, postFinalCorrections PFC-2). Per symbol and edition, D = the edition's average capital deployed on the symbol over the window (Σ quantity × entry price × time held / window length). Hold D of the coin at every 4h close: buy D at the first window close, trade back to D after each close, sell at the last. P&L = Σ D × (c_k / c_(k−1) − 1). REAL costs, 0.07% of each fill's notional (0.05% commission + 0.02% slippage), on every fill that P&L needs: the entry, the rebalancing after each close but the last, and the exit (costR = fillCostR + rebalanceCostR). entryExitCostsOnlyNetR charges only the entry and exit fills; it books the rebalanced P&L without the trades that make it, so it overstates the benchmark. maxDrawdownRMarkToMarket: the largest fall of the mark-to-market curve (every cost booked when paid), summed over the set's symbols, from 0.
  • Added in 2026-09-24-final-r3: the values the constantLongExposure curves end at, per cost model. The holding is premium's: D per coin = sets.<set>.premium.perSymbol[].deployedUsdt (Premium's average capital deployed on the coin in its REAL FINAL run) under every cost model, on the same Binance 4h closes. It is marked at every 4h close, rebalanced to D after each close without cost, and charged the cost model's fees on two fills only: the entry (D at P0) and the exit (the value held at P1). REAL charges 0.07% and STRESS 0.15% of each fill's notional (commission plus slippage); TV charges 0.04% of the notional plus 1 TradingView tick (the symbol's mintick) per coin unit. frictionlessR is cost-free and the same under every model; fillCostR = the two fills; entryExitCostsOnlyNetR = frictionlessR − fillCostR (under REAL it is premium.entryExitCostsOnlyNetR); maxDrawdownRMarkToMarket = the largest fall of this mark-to-market curve from 0 (a symbol's own curve per symbol; for the set, the curve summed over its symbols). Leaving out the rebalancing fills (premium.rebalanceCostR under REAL) puts these values above premium.netR, which charges them.
Downloads · 11 files

Current: 2026-09-24-final-r6 · /premium-vault/drift-desk/research/v2/2026-09-24-final-r6/

  • PROTOCOL.md13,713 bytes · sha256 58175c1c…8c41Download
  • cells.csv98,224 bytes · sha256 f4abbd05…42bdDownload
  • configs-ledger.csv38,078 bytes · sha256 9620fb50…ee8bDownload
  • curves-REAL.json367,924 bytes · sha256 b8890531…23c6Download
  • curves-STRESS.json368,034 bytes · sha256 187ab02f…acf5Download
  • curves-TV.json367,809 bytes · sha256 5622a86a…7885Download
  • gate.mjs3,563 bytes · sha256 287dc7b1…3fa7Download
  • methodology.md72,256 bytes · sha256 dbe756e4…f1aaDownload
  • summary.json645,882 bytes · sha256 4002d02a…b114Download
  • trades.csv9,186,331 bytes · sha256 1fbf3a61…74b5Download
  • MANIFEST.json1,599 bytes · sha256 f0df7913…fe32Download

MANIFEST.json lists every other file’s sha256 and size.

Not published. Earlier exports, listed by sha256 only, for verification; Corrections lists every change since.

  • 2026-09-24-final-r5/MANIFEST.jsonsha256 cb6cd7c1…cd7e · replaced by 2026-09-24-final-r6 before release (served on unmerged preview deployments only)
  • 2026-09-24-final-r4/MANIFEST.jsonsha256 4ebc2ea0…1312 · replaced by 2026-09-24-final-r5 before release (served on unmerged preview deployments only)
  • 2026-09-24-final-r3/MANIFEST.jsonsha256 5c9742dd…a131 · an earlier version of this export
  • 2026-09-24-final-r2/MANIFEST.jsonsha256 18a6e6a7…f4cd · an earlier version of this export
  • 2026-09-24-final/MANIFEST.jsonsha256 e63fb6ed…c5f2 · the first export
  1. Protocol frozen, done
  2. Data built, done
  3. Engine built, done
  4. Parity captured, done
  5. Engine parity, done
  6. Explore, done
  7. Choose, done, committed 23 Sep, 23:54 UTC
  8. Pass rule, committed 24 Sep, 00:28 UTC, after Choose
  9. Final rundid not pass, did not pass, 24 Sep, 01:31 UTC

The final run is done: it did not pass.

Final run 24 Sep, 01:31 UTC. The pass rule was committed 24 Sep, 00:28 UTC, after Choose.

Markets

10 to explore, 10 untouched until the final run.

Set A · Explore, Choose and Final months

BTCETHBNBXRPADALINKLTCTRXATOMXLM

Set B · untouched until the final run

DOGEQTUMA2ETCXTZVETALGOZECDASHHBARNEO

QTUM replaces BCH, whose data starts too late (A2.2).

Windows

  • Warm-up · Sep–Dec 2019 · both sets
  • Explore · 2020–2023 · Set A
  • Choose · Jan 2024–Mar 2025 · Set A
  • Final · Apr 2025–now · Set A
  • Final, untouched · 2020–now · Set B

The choice never sees Set B or data after March 2025.

Costs

  • Real0.05% per fill + 0.02% slippage
  • Stress0.10% + 0.05%
  • TV-style0.04% + 1 tick

1R = 100 USDT planned risk.

  • PROTOCOL.md 58175c1c…8c41 as exported
  • gate.mjs 287dc7b1…3fa7, committed 24 Sep, 00:28 UTC
  • First committed in e736347, 23 Sep 15:15 UTC
  • MANIFEST.json f0df7913…fe32 · 2026-09-24-final-r6, a revised export of one final run
Check it yourself
Full hashes (sha256), as exported
PROTOCOL.md 58175c1c87f8b81ef8375fba817b5f8ce21d80ab47a2c549b646f8006f778c41gate.mjs 287dc7b1ae95f5c0e99783e0d2f251e735388e33047bde1568025e5984003fa7MANIFEST.json f0df7913c6337f95a4ae21339cfce9c3baa3894a87b147fb1d9350e4d664fe32data manifest 3b12bf229badb0435f8d26fe49b093aee0c913b88829eee8169df37b0e1b9288
gate.mjs by commit
  • e736347 23 Sep, 15:15 UTC · 12b133f6… · fail-closed placeholder
  • ed15b10 23 Sep, 15:16 UTC · fd2d638b… · fail-closed placeholder
  • cdda29a 24 Sep, 00:24 UTC · 25d9f893… · pass rule defined
  • 3544b22 24 Sep, 00:28 UTC · 287dc7b1… · pass rule defined
Pre-registration record in the export
  • e736347 23 Sep, 15:15 UTC
  • ed15b10 23 Sep, 15:16 UTC
  • 289a14d 23 Sep, 20:06 UTC
  • cdda29a 24 Sep, 00:24 UTC
  • 3544b22 24 Sep, 00:28 UTC

The export ran from lab commit db33957. These hashes prove the files, not the dates: the dates need our lab commits made public.

Amendments, word for word
  • A1 (2026-09-23). Defines continuous data: the first Binance 1h bar opens on or before 2019-10-01 00:00 UTC, and no more than 2% of 1h bars are missing from then to the end of the data. A symbol that fails is replaced by the listed substitutes in order, Set A first.
  • A2 (2026-09-23). Discloses earlier 4h research on BTC and ETH that overlaps VAL and HOLDOUT-T, so FINAL reports Set A with and without BTC and ETH and treats Set B as the primary untouched evidence. It also records that BCHUSDT fails A1 and is replaced in substitute order, keeps extreme real prints uncleaned, adds a crash-fill stress to FINAL, and limits claims to effects FINAL's sample can resolve.
  • A3 (2026-09-23). Sets the publication format. FINAL is also published under the TV cost model for Strategy Tester parity; years follow trade exit time (UTC); equity curves are cumulative closed-trade net R at exit time; the export format is drift-public-research/v2; and gate.mjs exports the one comparative sentence the site may print if the gate passes.
  • A4 (2026-09-24). Written before any DEV result. Higher-timeframe rules use Drift Desk's own Pine idiom (the previous completed higher-timeframe candle) and block entries until their data is ready; the volatility percentile needs 90 days of data. REAL and STRESS keep the data's native price precision, while TV uses TradingView's tick and lot sizes. 1R is fixed at 100 USDT; windows are assigned by entry-bar close, years and curves by exit-bar close. Every research run names its window, and VAL, HOLDOUT-T and Set B stay locked until the freeze files unlock them. It discloses that engine parity work printed Drift Free (not Premium) results on BTC, ETH and XRP windows overlapping VAL and HOLDOUT-T.
  • A5 (2026-09-24). Written after VAL had run and before FINAL. Defines the promotion gate the founder chose from two offered options: in both Set A (HOLDOUT-T) and Set B, Premium net R above 0 and above Drift Free's, profit factor at least 1.2 and at least 6 profitable symbols, plus Premium net R under STRESS costs (both sets) above 0; and the one comparative sentence the site may print if the gate passes. The founder had seen DEV results but not VAL results when choosing.
  • A6 (2026-09-24). Written after VAL and before FINAL. Ratifies the neighbour-rule reading under which the long-only rule, and so the chosen candidate, survived the DEV screen, and requires every FINAL publication to disclose it. Adds a stricter gate condition after the founder saw the VAL robustness audit: on Set B, Premium net R must also exceed that of Drift Free taking only long signals. Lists what FINAL must also report (Free long-only, a benchmark of holding the same planned notional, a drift-only null, leave-one-out and trimmed profit factors, STRESS, crash-month exclusion, the margin split, falling markets, and the with/without subsets), records pre-FINAL disclosures, and defines how FINAL re-pins the code hash with the candidate's files byte-identical.
How a setting is chosen (frozen), word for word
  1. DEV family screen (Set A, DEV, REAL): a config survives if aggregate net R beats the Free comparator, it is profitable on ≥ 6 of 10 symbols, and it has ≥ 300 positions. Survivors are ranked by aggregate net R (tie: smaller max drawdown). Parameter neighbours must not collapse (a survivor whose immediate neighbours are all non-survivors is flagged fragile and dropped).
  2. Combine the top surviving families into at most 3 candidates, run DEV, then freeze each candidate's definition (config + code hash).
  3. VAL (Set A, VAL, REAL): choose the single candidate with the highest aggregate net R among those with net R above the Free comparator and PF ≥ 1.2. If none qualifies: stop and report "no validated Premium".
  4. FINAL (HOLDOUT-T on Set A + Set B full period): run once, report as-is, REAL and STRESS. No tuning after FINAL. Any later change is a new protocol version with new untouched data.

From PROTOCOL.md, “Selection (mechanical)”.

Every configuration tried, by name

33 pre-registered: F0 4h, F0 1h, F0 15m, E3 4h, E3 1h, H5 4h, H5 1h, X3 1h, X3 4h, X4 1h, X4 4h, XF 1h, XF 4h, XC 1h, XC 4h, XH 1h, XH 4h, RD 1h, RD 4h, RE 1h, RE 4h, RL 1h, RL 4h, C10 15m, C10 1h, C20 15m, C20 1h, VE 1h, VE 4h, VA 1h, VA 4h, P1 1h, P1 4h

2 neighbour probes: XHk2.5 4h, XHk4 4h

1 combination: C1 4h

33 pre-registered DEV-GRID configurations + 2 neighbour probes of XH 4h added after the DEV results (XHk2.5 4h and XHk4 4h; neither promoted) + 1 combination (C1 4h) = 36 distinct configurations; configuration × stage pairs: 39 before FINAL (DEV 36, VAL 3) and 42 after (FINAL 3); evaluations: 39 before FINAL and 63 after; runs: 40 before FINAL and 64 after, one more than the evaluations because RL 4h's DEV evaluation was run a second time (on the frozen code as candidate C3's DEV record, with the same evaluation hash and identical trades).

Parity

Lab engine, as exported: PASS, 914 of 914 native TradingView trades on 16 captures, for Drift Free 1.3.1 only.

Drift Free 1.3.1 in this lab's engine against TradingView Strategy Tester trade lists on the same Binance bars, under TradingView's default costs (0.04% commission, 1 tick). Sources: 6 captured for this lab (BTC, ETH and XRP at 1h; BTC and ETH at 4h; BTC at 15m) and 10 earlier ProEA Lab captures (BTC and ETH at 15m, 1h and 4h). All 914 native trades were matched on direction and entry time and were exact on every field (exit time and signal, prices, quantity, commission, profit). maxNetProfitDiffPct is the largest |engine − native| net profit of a source as a percent of its native net profit. The record was made on 2026-09-23; the lab's test suite re-runs the same comparison against the current engine before every lab commit, the export's included. Scope: parity covers Drift Free 1.3.1 only. Drift Premium has no Pine build yet, so its figures, including the TV-cost column, are engine figures without a TradingView check.

Check the files

Every file of this export is under Downloads above with its sha256. Run sha256sum on each and compare; MANIFEST.json lists them all. The caveats and disclosures are above, word for word.

  • Free-engine checks, not Premium results: the lab engine matched 914 of 914 native TradingView trades on 16 captures.
  • The lab: Engine-to-TradingView parity is established for Drift Free 1.3.1. Drift Premium has no Pine build yet, so none of its figures, including the TV-cost ones, has a TradingView Strategy Tester check.
  • Before this protocol: earlier ProEA Lab research tried 31 recipes on BTC and ETH and measured three 4h candidates; that work shaped this lab's hypotheses and grid.

What happens next.

Our second test, on coins we had not tested, has finished; by our records, its rules and pass rule were fingerprinted on GitHub before its final run, and we are building a Strategy Exam tool for members, with no date yet.

See the Strategy Exam

Second test: rules and pass rule fingerprinted on GitHub · cc238b2 · 24 Sep 2026Amendment v2-A2 fingerprinted on GitHub · 37ce132 · pass rule unchangedCorrection appended on GitHub · 71da159 · fingerprints unchanged

Straight answers.

Did Premium add anything to Free’s long signals?

Not resolved: this test cannot separate the difference from chance. At Real costs, Free, long only made +170.7R over 2,430 positions on Set B and Premium +197.6R over 4,685 (Set A: +35.4R over 594 and +66.8R over 1,108).We re-drew the test’s weeks 20,000 times; Premium minus Free, long only was zero or less in 44 of 100 draws on Set B and 30 of 100 on Set A.

Does Free stay free?

Yes. Drift Desk keeps its full source, its fixes and its zero price.

Does it work on my market?

Tested on 20 Binance spot USDT pairs, 4h bars only. Other markets, feeds and timeframes are untested.

Hypothetical backtests, not a live record. Simulated fills, not broker fills. We, ProEA Lab, write this code with AI assistance. Trading involves risk.