The working title of this study was "We tested 32 strategies". When we counted the ledgers line by line, 26 is the number that fits the claim in the title. 32 is the number of distinct strategies across the whole project, including six tested earlier under different protocols. The section "How we counted" explains both numbers.
1. The short version
- 26 strategies were tested this week, every one under rules sealed before any result was computed. None passed. Three were monthly rules on ETFs (exchange-traded funds: single shares that each hold a whole basket of stocks or bonds) (turn-of-the-month, sector momentum, region momentum). Twenty-three were classic daily swing rules on 22 ETFs: RSI(2) dip-buys, breakouts, moving-average crosses, inside bars, fair value gaps, "turtle soup" and others. Across the project’s full ledger of 36 trials, 32 of them distinct strategies, nothing has passed.
- The two near-misses failed in instructive ways. Canadian sector momentum (C2) passed every economic test but produced 85 completed trades against a pre-set minimum of 100. The same rule on US sector funds then failed. The best daily rule in the practice round, Connors R3 (C22), made +0.285% per trade after costs. On the sealed later data it made +0.051%. A simulated $200 account following it fell 53.2% from its peak, bottoming in March 2020.
- Most popular daily setups lost money after a 0.20% round-trip cost even before the final test. Every breakout rule, the weekly trend and sector-strength rules, both fair-value-gap rules and the liquidity-sweep rule had a negative or near-zero net result per trade in the practice data. The seven closely related RSI(2) dip-buy rules were all positive but weak. Only one of them cleared the bar to reach the final round.
2. Why most backtests lie
A backtest replays a trading rule on old prices to see what it would have earned. Backtests are easy to run and easy to fool yourself with, for two reasons.
Overfitting. Every rule has choices in it: which indicator, which threshold, how many days to hold. If you try enough choices on the same data, some will fit the past by luck. They look brilliant on the data used to pick them and then do nothing on new data. The rule ends up describing the noise in that particular stretch of history, not a repeatable pattern.
Multiple testing. Suppose you test 100 strategies that have no real edge at all. By chance alone, some of them will look good. In an idealised simulation recorded in this project (clean random noise, 200 trades per strategy), the best of 100 no-edge strategies reached a t-statistic of 2.56. A t-statistic measures how far a result sits from zero compared with how much it bounces around. Around 2 is the traditional "probably not luck" bar. So a test that cleared the usual bar would have been pure luck. The more strategies you try, the higher the bar a real winner has to clear.
Most published or sold backtests report the winner and not the number of things tried to find it. You cannot judge the winner without that number. That is why this study counts every trial and publishes every loser.
3. How we tested
Pre-registration, sealed with a hash
Pre-registration means writing down every rule before looking at any result: the strategy, the data, the dates, the costs and the exact pass/fail tests. Ours were then hashed. A hash (here SHA-256) is a 64-character fingerprint of a file. Change one character and the fingerprint changes completely. The fingerprints were recorded at sealing time:
- The monthly round (C1–C3) was sealed at 17:55:14 UTC on 16 October 2026. It was sealed before any return, Sharpe, alpha or signal had been computed on any period.
- The daily-swing tournament (C01–C23) was sealed at 19:57:57 UTC the same day. No price data for it had been downloaded at that point.
The fingerprints are listed in Section 9, so anyone can check that the rules we report are the rules we wrote.
A one-touch holdout
A holdout is a slice of data locked away while the rules are designed and checked. It is opened once, at the end, for the final verdict. Our holdouts were locked in code. The data loader refused any date in the holdout unless an unlock file held the exact fingerprint of the sealed pre-registration. Every read, allowed or refused, was written to an access log. After a run, the unlock was consumed and a second run was refused. If a bug had been found after a run, both outputs would have been published and the worse verdict would have stood.
- Monthly round: each strategy had an earlier "in-sample" period, ending where the original research paper’s data ended. It also had a later holdout on Canadian-listed ETFs. Only the holdout decided the verdict.
- Daily tournament: the practice round ("discovery") used every bar up to 31 December 2012. The final round ("confirmation") used 2013-01-01 to 2026-09-30.
Kill criteria
Each strategy had to pass every test. Failing any one killed it. The tests, in plain words:
- Alpha t-statistic. Alpha is return beyond what simple exposure to the stock market explains. A strategy that only rides the market up has no alpha. Monthly round: alpha against SPY (an S&P 500 fund) with a t-statistic of at least 2.394. Daily tournament: the net return per trade itself with a t of at least 1.96. The bars differ because of the Bonferroni rule, explained below.
- Sharpe ratio (monthly round only). The Sharpe ratio is average return divided by how much returns bounce around: return per unit of bumpiness. The strategy had to match or beat both SPY and simply holding its own ETFs over the same months.
- Breakeven cost. The round-trip cost at which the profit disappears had to be at least 0.50%. A round trip is one buy plus the matching sell.
- Drawdown halts. A drawdown is a fall from a running peak in account value. A halt "trips" whenever the simulated account falls 10% below its peak, and the peak resets at each trip. At most 2 trips per 10 years were allowed.
- Sample size. At least 100 completed round trips. The monthly round also needed at least 120 holdout months.
- Placebo. A placebo here is a fake strategy that trades at random times in the same instruments, with the same holding lengths and the same costs. We ran 1,000 of them. The real strategy had to beat nearly all of them. That meant the 98.333rd percentile in the monthly round and the 95th in the final of the daily tournament.
- Deflated Sharpe. The deflated Sharpe ratio (Bailey and López de Prado, 2014) asks how likely it is that a Sharpe ratio this high is real, given how many strategies were tried in total. It returns a probability between 0 and 1. We required at least 0.95.
Bonferroni is the simplest correction for multiple testing. If you test k strategies at once, you divide the allowed error rate by k, which raises the t-statistic bar. With k = 3 the two-sided bar is 2.394. With k = 1 it is 1.96. Only one daily strategy reached the final, so its bar was 1.96.
Costs
Every result is net, meaning after costs. The base cost was 0.20% per round trip (0.10% on each side). We also published results at other cost levels. The monthly round used 0.057%, 0.10%, 0.50% and 1.00%; the daily tournament used 0.10% and 0.50%.
The trial ledger
Every trial was written into an append-only ledger, a log where rows can be added but never edited or deleted. A trial that died still counts. The ledger’s trial count, N, feeds the deflated Sharpe, so every extra attempt makes passing harder for all later ones. N was 12 for C1–C3, 13 for the replication R1, and 36 for the daily tournament.
Integrity checks before the final
Before the holdout was opened, the monthly strategies also had to show that the machinery worked:
- they reached a t of at least 2.0 on the in-sample data;
- they failed on random-walk fake prices (passing in no more than 10 of 100 fake panels);
- they detected a planted +1% signal (t of at least 2.0);
- their loader refused an unauthorised read of the holdout.
The test suite passed 195 of 195 before the monthly holdout runs. In the daily tournament, the engine was cross-checked against a published figure. The basic RSI(2) rule on SPY produced 158 trades over 1994–2012, about 8 a year. That is in line with the roughly 7.9 a year published for that rule.
How we counted
The tournament ledger ends at N = 36 trials. That is more than the number of distinct strategies, for two reasons:
| Step | Count | Source |
|---|---|---|
| Trials in the ledger | 36 | TOURNEY_LEDGER.md |
| minus 3 "shift variants" (C1–C3 rerun one period late as an integrity check; counted as trials to be strict, but the same strategies) | 33 | LEDGER.md rows 7–9 |
| minus R1 (C2's exact rule rerun on US sector funds; a replication, not a new strategy) | 32 distinct strategies | LEDGER.md row 12; PREREG-R1 |
| minus the 6 tested earlier in the project, under protocols that differed from this week’s sealed process | 26 tested this week under sealed pre-registration | LEDGER.md decision D2 |
The six earlier strategies are a bull-flag pattern, a momentum-decile screen, a reversal after a 3% one-day drop, insider cluster buying, volatility-scaled momentum held as five stocks ("Part B"), and short-term momentum (STMOM). They were tested between late August and 10 October 2026. Three of them (the 3% drop, Part B and STMOM) had written pre-registrations. We did not find one for the other three in the project record, and none used this week’s fingerprint seal or locked holdout. So we do not claim "32 under pre-registered rules". Section 4 reports all 32. A December tax-loss test from the same period was judged invalid by the project, because the data held only two Decembers. It is not in the ledger and is not counted here.
A note on the word "swing". The 23 tournament rules hold for a few days to about three weeks. C1 holds for four trading days. C2 and C3 rebalance monthly, which is the slow end of swing trading.
4. Results: every strategy
Families: mean reversion (buy a dip and expect a bounce), trend/breakout (buy strength and expect more), ICT-style (price-structure patterns popular on social media), rotation/momentum (hold whatever has risen most), calendar, and event.
This week’s monthly round (holdout on Canadian-listed ETFs)
| ID | Strategy | Family | Verdict | Killed by |
|---|---|---|---|---|
| C1 | Turn-of-the-month: buy XSP.TO at the month’s last close, sell 3 days later | Calendar | FAIL | Alpha t −1.30; Sharpe −0.01 vs SPY 0.77; breakeven cost 0.20%; 26.3% of placebos beat it; deflated Sharpe 0.047 |
| C2 | Hold the top 3 of 7 TSX sector ETFs by 12-month momentum | Rotation | FAIL | Sample size only: 85 round trips vs 100 required |
| C3 | Hold the best of 5 region/bond ETFs, or cash | Rotation | FAIL | Alpha t −1.36; Sharpe 0.47 vs SPY 0.96; 36 round trips; 65.6% of placebos beat it; deflated Sharpe 0.469 |
| R1 | Replication of C2 on 9 US sector ETFs, 2000–2026 (not a new strategy) | Rotation | FAIL | Alpha t 1.40 vs 1.96; 2.62 halt trips per 10 years vs 2; deflated Sharpe 0.931 vs 0.95 |
This week’s daily-swing tournament (practice round up to 2012; final from 2013)
To reach the final, a rule needed at least 100 practice trades, a positive net mean per trade with t ≥ 2.0, and a placebo percentile of at least 95. Every rule had at least 100 trades. The table shows the practice-round t-statistic and placebo percentile, net of 0.20% per round trip.
RSI(2) is a 0–100 score of how stretched the last two days' moves are; below 10 means very oversold. IBS (internal bar strength) shows where the close sat within the day’s range. A fair value gap is a three-bar pattern in which the first bar’s high and the third bar’s low do not overlap, leaving a "gap" that traders expect price to revisit.
| ID | Strategy | Family | Practice t | Placebo pct | Verdict | Killed by |
|---|---|---|---|---|---|---|
| C22 | Connors R3 (RSI(2) falls 3 days in a row, ends below 10, above 200-day average) | Mean reversion | +2.28 | 100.0 | FAIL in final | See Section 5 |
| C21 | Cumulative RSI(2) | Mean reversion | +1.78 | 100.0 | FAIL | t below 2.0 |
| C02 | RSI(2) < 5 | Mean reversion | +1.74 | 100.0 | FAIL | t below 2.0 |
| C23 | Connors %b(5,1): close near the bottom of a 5-day Bollinger band 3 days running | Mean reversion | +1.46 | 100.0 | FAIL | t below 2.0 |
| C17 | Power-of-three, weekly | ICT-style | +1.44 | 100.0 | FAIL | t below 2.0 |
| C03 | Double 7s: close at a 7-day low, above 200-day average | Mean reversion | +1.29 | 100.0 | FAIL | t below 2.0 |
| C04 | 3 down closes | Mean reversion | +1.24 | 100.0 | FAIL | t below 2.0 |
| C01 | Connors RSI(2) < 10 | Mean reversion | +1.24 | 100.0 | FAIL | t below 2.0 |
| C10 | 10-day average crosses above 50-day average | Trend | +1.04 | 84.1 | FAIL | t below 2.0; placebo |
| C19 | Weekly sector loser reversal | Mean reversion | +0.68 | 92.1 | FAIL | t below 2.0; placebo |
| C06 | Close below lower Bollinger band (20-day average minus 2 standard deviations) | Mean reversion | +0.48 | 77.2 | FAIL | t below 2.0; placebo |
| C20 | Weekly time-series momentum: hold while price is above its level 20 days ago | Trend | +0.09 | 11.7 | FAIL | t below 2.0; placebo |
| C05 | IBS < 0.2 | Mean reversion | −0.45 | 99.7 | FAIL | Net mean negative |
| C07 | Pullback to the 20-day exponential moving average in an uptrend | Trend | −0.65 | 26.4 | FAIL | Net mean negative; placebo |
| C08 | Donchian breakout: close above the prior 20-day high | Breakout | −0.79 | 0.1 | FAIL | Net mean negative; placebo |
| C18 | Weekly top sector by relative strength | Rotation | −1.09 | 14.9 | FAIL | Net mean negative; placebo |
| C12 | NR7 (narrowest range of 7) breakout | Breakout | −1.12 | 0.0 | FAIL | Net mean negative; placebo |
| C13 | Gap-down reversal | Mean reversion | −1.20 | 90.0 | FAIL | Net mean negative; placebo |
| C11 | Inside-bar breakout | Breakout | −1.25 | 0.0 | FAIL | Net mean negative; placebo |
| C15 | Inverse fair value gap | ICT-style | −1.54 | 0.0 | FAIL | Net mean negative; placebo |
| C14 | Bullish fair value gap retest (daily) | ICT-style | −1.59 | 34.8 | FAIL | Net mean negative; placebo |
| C09 | 52-week-high breakout, 10-day hold | Breakout | −1.74 | 0.1 | FAIL | Net mean negative; placebo |
| C16 | Turtle soup (liquidity sweep of a 20-day low) | ICT-style | −2.37 | 0.0 | FAIL | Net mean negative, significantly |
Earlier in the project (different protocols, listed for completeness)
| Strategy | Family | Verdict | What killed it |
|---|---|---|---|
| Bull flag | Trend/breakout | No edge | 87% of its profit was the market rising while trades were held |
| Momentum decile | Momentum | No edge | t = 0.542 |
| Reversal after a ≥3% one-day drop (20 TSX large caps) | Mean reversion | FAIL | t between −0.22 and +0.41 across 1-, 3- and 5-day holds |
| Insider cluster buying | Event | Do not build | Tradable names, 2017–2026: −0.30% over 21 days vs SPY, t −1.36 |
| Volatility-scaled momentum, 5 stocks ("Part B") | Momentum | FAIL | No version passed all four tests. Plain and trend-filtered versions tripped a 10% halt 11 and 9 times; the scaled version had a Sharpe of 0.66 vs SPY’s 1.06 |
| Short-term momentum (STMOM) | Momentum | Not significant | +0.395% a month net over its benchmark, t 1.64 over 254 months |
Score: 0 of 26 this week; 0 of 32 across the project.
5. The near-misses, honestly
C2: passed every economic test, failed on trade count, then failed to replicate
C2 held the three Canadian sector ETFs with the best 12-month returns, skipping the latest month, and rebalanced monthly. Over its holdout (164 months, 2013-02 to 2026-09):
- alpha t of 2.56 against a bar of 2.394, with a market beta of 0.53 (beta is how much a strategy moves with the market; 1.0 moves one-for-one);
- net Sharpe of 1.23 a year, against SPY’s 1.04 and 0.99 for holding all seven ETFs equally;
- breakeven cost of 7.3% per round trip, far above the 0.50% bar;
- only 0.1% of 1,000 placebos beat it;
- deflated Sharpe of 0.991 with N = 12;
- in a simulated $750 account under the project’s caps, $750 grew to $1,834 over 13.7 years, with 1 halt trip.
It produced 85 completed round trips. The bar was 100. The verdict is FAIL, as written in advance. We did not relax the minimum after seeing the result. The minimum exists because a rule with too few trades can look excellent by luck, and loosening it after the fact is exactly the habit this study is about.
The honest next step was a new trial: the same rule, word for word, on the nine original US sector funds, 2000-01 to 2026-09 (321 months). This replication, R1, was sealed before any return on that data was computed. It failed:
- alpha t of 1.40 against a bar of 1.96;
- 7 halt trips in 26.7 years (2.62 per 10 years, against a limit of 2);
- deflated Sharpe of 0.931, below 0.95.
Its Sharpe of 0.65 a year essentially tied simply holding all nine sectors (also 0.65). The likeliest reading is that C2's Canadian result belonged to that period and that market. A strong result on one dataset is not the same as a result that survives replication.
C22, Connors R3: the practice-round winner that faded
The rule: price is above its 200-day average, RSI(2) has fallen three days in a row from below 60, and today’s RSI(2) is under 10. Buy at the next open. Sell at the next open after RSI(2) rises above 70, or earlier if a volatility-based stop or the 15-day time limit hits.
| Row | Practice (to 2012) | Final (2013 to Sep 2026) |
|---|---|---|
| Trades | 1,323 | 1,544 |
| Net mean per trade (after 0.20%) | +0.285% | +0.051% |
| t-statistic | 2.28 | 0.49 (bar 1.96) |
| Win rate | 68.0% | 63.2% |
| Breakeven round-trip cost | 0.485% | 0.251% (bar 0.50%) |
| Placebo percentile | 100.0 | 90.9 (bar 95) |
| Deflated Sharpe (N = 36) | 0.310 | 0.0005 (bar 0.95) |
It passed only the trade-count test in the final. Two warnings were on record before the final was run. C22 was the best of seven closely related dip-buy rules, and picking the best of a related family is exactly the selection effect a final round exists to test. And its practice breakeven of 0.485% was already below the 0.50% bar.
Win rate deserves a word. A 63.2% win rate sounds good. But at a net +0.051% per trade it is close to break-even, because the losses are larger than the wins. In the final, 426 of 1,544 trades (28%) ended at the stop.
The $200 account. The pre-registration simulated a $200 account taking every signal with full equity, one position at a time, after costs:
- it started at $200.00 on 24 January 2013 and ended at $216.18 on 23 September 2026, after 392 trades;
- its lowest point was $105.99 on 19 March 2020, a maximum drawdown of 53.2%;
- the 10% halt tripped 12 times in 13.74 years (8.73 per 10 years, against a limit of 2).
Run on the practice data, the same account would already have tripped the halt 10 times in about 19 years.
6. What could not be tested, and why
We declared these untestable in the sealed pre-registration, before any data was downloaded:
- Order flow (footprint charts, cumulative delta, absorption, bid/ask imbalance). These need tick-level trade and quote data showing which side was aggressive. Free daily bars have none of that.
- GEX (dealer gamma exposure). This needs a daily history of options open interest by strike and expiry. Free sources give only today’s options chain, not its history.
- Intraday ICT (kill zones, silver bullet, session sweeps, intraday fair value gaps and order blocks, OTE entries, intraday power-of-three, SMT divergence). These need years of 1- to 15-minute bars. The free source serves about 7 days of 1-minute bars, about 60 days of 5- to 30-minute bars and about 730 days of hourly bars. That is far short of the 100-plus trades across several market regimes this test requires.
- Order blocks, premium/discount (OTE Fibonacci) and market-structure shifts on any timeframe. Their definitions are discretionary: which candle, which swing. Any codified version would be a new rule, not the source’s. The codifiable parts were tested on daily bars: fair value gaps (C14, C15), the liquidity sweep (C16) and weekly power-of-three (C17). All four failed.
- Short selling versions of everything were excluded, because the account the tests were built for can only buy.
"Not tested" does not mean "works". It means this study says nothing about them either way.
7. What this means for a small-account trader
These are facts from the runs above, not advice.
- Costs are the first filter. At a 0.20% round trip, random entries held 2 to 4 days lost roughly the cost. Most breakout and pattern rules did worse than that. C22's final-round profit of +0.051% per trade became −0.249% at a 0.50% round-trip cost.
- High win rates hid thin edges. The seven RSI(2) dip-buy rules won 62–68% of practice trades. Only one reached the t-statistic bar, and it faded in the final.
- Popular named patterns did not show an edge on daily ETF data. Both fair-value-gap rules, turtle soup, inside bars, NR7, Donchian and 52-week-high breakouts all had negative net means per trade in the practice data.
- A small account feels drawdowns in full. The one rule that reached the final would have taken a $200 account down to $105.99 at its worst, and it tripped a 10% halt 12 times in under 14 years.
- Slow rules struggle to prove themselves. A monthly rotation made 85 completed trades in 13.7 years. That was too few for our pre-set minimum, even though it passed every economic test.
- One good backtest is not evidence of a durable edge. C2 looked strong on Canadian data and did not replicate on US data. C22 looked best in its practice round and did not hold up in its final.
8. Limitations
- Survivorship. Individual stocks were skipped on purpose, and that was declared before any data was touched. The free daily price source lacks history for most delisted companies. Those are disproportionately companies whose dips kept falling, so a stock universe would have flattered dip-buying by an amount we could not measure. ETFs largely avoid this problem, but that means the results apply to liquid ETFs, not to stock picking. At least five of the six earlier project tests used individual stocks and carry this bias.
- The 2026 data snapshot. ETF prices came from downloads of free, vendor-adjusted daily data taken on 16 October 2026, each fingerprinted. The vendor adjusts history for splits and dividends, and those adjustments can change between downloads. A rerun on a later download may differ in small ways. The fingerprints let anyone tell whether they are using the same snapshot.
-
Our own choices. Where a rule could be read two ways, we logged the reading we chose before running it. The monthly round’s ambiguity log has 20 entries, A1–A20. Three examples:
- the random-walk test drifts slightly upward, so a buy-only rule can pass it more easily (A5);
- the shift test was ruled uninformative for the monthly-data strategies (A15);
- the trial-variance rule in the deflated Sharpe was set to the strictest of three readings (A19).
The tournament logged its own readings, for example how to treat a repeated 20-day low in turtle soup. Where a rule allowed two readings, the pre-registration counted the worse result. The tested rules also differ from their published originals. Entries and exits happen at the next open, not the close, and every daily rule carries a volatility stop and a 15-day time limit. Published results are only a rough guide to ours.
-
This is not proof that no strategy works. It shows that these 26 rules, as written, on this data, with these costs, did not pass these tests. A rule we did not test, a different market, or data we could not get (Section 6) could give a different answer. A true but small edge could also fail tests this strict. Strict tests trade some missed real edges for far fewer false ones.
9. Reproduce it
Every file below can be checked with sha256sum. Code to be published with this study.
Monthly round (C1–C3, R1)
| File | SHA-256 |
|---|---|
| prereg/C1.md (PREREG-C1) | a5047cac4772475843177b6933825aeb17b0492bf242507240dc45c96e9f544a |
| prereg/C2.md (PREREG-C2) | e9f0e9dd7ecc56917cf3e2ddddb1531b60cd92e5d941678193f748239601e81d |
| prereg/C3.md (PREREG-C3) | 5c98b5783515207e29c3e7b726aec56bd3d99ba6964bb1c3214a5d71a859102c |
| prereg/R1.md (PREREG-R1) | 89ea575b2aabc2e47e7bf5769655b760bb129f9d4c54df615435aaf941745f82 |
| ADDENDUM-C1-2026-10-16.md | c7a9af1c7f35eb6d277a39962db9c161b4c0f3bd76e3a7e6e0462558eb892b60 |
| ADDENDUM-K7-2026-10-16.md | cbe29d1771c810ad08ebe721a8dea171bd1ae1c3efdbb032af56e36af7e15e9b |
| ADDENDUM-GATE-2026-10-16.md | af6cc83e127dda1ddf47197b64e0d926c221d9a2cbaa5aa091994b829296d740 |
| data/DATA_SHA256.txt (23 raw data snapshots) | 11e4d11a330ecf37873eac2d67f899ccd0d2e52a54ebdc05b09f6a67e539d4f0 |
| data/r1/DATA_SHA256.txt (R1 data) | 4d03a57b7b2f04f6edd52fc6b1018f5153f9acf3876068328382074cf1967884 |
| out/insample_results.json | f65e225eb3bdb7264a7819b8f106e6641d8d104033e5a9f7c8428cef9356a166 |
| out/holdout_C1.json | 3bdc4afb97ef6be0f390900674a9b2d31e300404bec3584a95f8294cd462866e |
| out/holdout_C2.json | 71ca35452c1e10e6931ba0ac0b636b8f933ad3ec832d3f22cdde784df7e2b99d |
| out/holdout_C3.json | 314cdfae01da10f003580ecb889d5e54e46cd3b0b6abd45637458cc4b83ca7fc |
| out/holdout_R1.json | 1be497497cfda3bd066f73d9c4129ac1d06e1f200661e79352cf92dc8aae0faa |
| LEDGER.md, first 7,796 bytes (frozen part) | 3c692c7a6a474c8cc7fe1e954c27103a9b7eb7551174d80f48de8121663dd0a4 |
Also: SEAL.md, INSAMPLE-2026-10-16.md, AMBIGUITIES.md, ACCESS_LOG.md and RESULT-weekend-strategy-search-holdout-2026-10-16.md. Each holdout ran exactly once with python3 -I code/run_holdout.py <C>.
Daily-swing tournament (C01–C23)
| File | SHA-256 |
|---|---|
| PREREG.md (17,232 bytes) | afce5e06d6b6f8ce9d0ef8d1d3961a55d8cc65fc107b41c8ebf741df8bf74d3f |
| DATA_SHA256.txt (22 ETF files, snapshot 2026-10-16T19:58:23Z) | 06660068df33105596b84eb65e7289b802bd225a93bb3c660342dbdd3f4349e0 |
| out/discovery.json | cdd8a3653c5e7113f765d5d978c0f1458fc96119364a7553acd7ede55ebb8870 |
| out/confirmation_C22.json | 73c1be4b5a0fdcf82521e1542dd432d2514eaa1e01093a30195894abe9cd4c4e |
Also: SEAL.md, DISCOVERY.md, CONFIRMATION.md, TOURNEY_LEDGER.md and ACCESS_LOG.md. The final ran once with python3 -I code/run_confirmation.py C22. A second invocation was refused.