EDGEVERIS RESEARCH · CONTROLLED SYNTHETIC STUDY
Same trades. Different order. Different risk.
Permutation, IID and block bootstrap do not ask the same question. We compare them on identical trade outcomes, preserve the full experiment and include the cases where larger blocks reduce drawdown.
These are constructed trade sequences, not empirical market findings or a forecast. Every method uses additive USD P/L, $100,000 starting capital and a 200-trade horizon. No trading costs are added or removed.
The result is a method distinction, not a winning sampler
Permutation holds the total fixed
All 10,000 permutations of each mixed fixture finish at $102,000. The clustered fixture still has a $740–$1,760 5th–95th percentile range of maximum drawdown. A fixed terminal result does not mean a fixed path.
Clustering changes block risk
For the clustered input, the 95th percentile drawdown is $2,140 under IID and $7,120 with 20-trade blocks. Those are conditional outcomes of this fixture and method.
Longer blocks are not always riskier
For alternating wins and losses, 20-trade blocks produce a 95th percentile drawdown of $200, versus $2,180 under IID. Blocks preserve the alternating structure too.
Only the order changes in the three mixed inputs
Each mixed fixture contains exactly 100 wins of $120 and 100 losses of $100. All three therefore have $2,000 total P/L, the same 50% win rate and the same marginal distribution. The fourth input is a separate constant-profit control.
- Clustered: 20 wins, then 20 losses, repeated five times.
- Alternating: one win, one loss, repeated 100 times.
- Shuffled: a Fisher–Yates permutation of the clustered input, with Mulberry32 seed 20261008.
- Constant-positive control: 200 profits of $10 each, with the same $2,000 total P/L.
| Order | Total P/L | Terminal equity | Max. drawdown |
|---|---|---|---|
| 20-trade clusters | $2,000 | $102,000 | $2,000 |
| Alternating wins and losses | $2,000 | $102,000 | $100 |
| Seeded shuffled order | $2,000 | $102,000 | $920 |
Inspect the exact 200 trades for each input
20-trade clusters
USD P/L in chronological order. Download this input.
120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00
Alternating wins and losses
USD P/L in chronological order. Download this input.
120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00
Seeded shuffled order
USD P/L in chronological order. Download this input.
-100.00, 120.00, 120.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, -100.00, -100.00, 120.00, 120.00, -100.00, 120.00, -100.00, -100.00, 120.00, 120.00, -100.00, 120.00, -100.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, 120.00, -100.00, 120.00, 120.00, 120.00, -100.00, 120.00, 120.00, -100.00, 120.00, 120.00, 120.00, -100.00, 120.00, 120.00, 120.00, -100.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, -100.00, 120.00, 120.00, -100.00, 120.00, -100.00, -100.00, -100.00, -100.00, 120.00, -100.00, -100.00, 120.00, -100.00, 120.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, -100.00, 120.00, -100.00, -100.00, -100.00, 120.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, -100.00, -100.00, 120.00, -100.00, 120.00, 120.00, 120.00, -100.00, -100.00, 120.00, 120.00, -100.00, 120.00, -100.00, -100.00, 120.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, 120.00, -100.00, -100.00, 120.00, -100.00, 120.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, 120.00, 120.00, -100.00, 120.00, 120.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, -100.00, -100.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, 120.00, 120.00, 120.00, -100.00, -100.00, -100.00, -100.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, 120.00, -100.00, -100.00, 120.00, 120.00, 120.00, -100.00
Constant +$10 control
USD P/L in chronological order. Download this input.
10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00, 10.00
What each sampler actually does
| Method | Construction | What is fixed? | What it asks |
|---|---|---|---|
| Permutation | Uniform Fisher–Yates shuffle, without replacement. | Every trade, number of wins/losses and total additive P/L. | How much can the order of exactly these trades change the path? |
| IID bootstrap | For each of 200 positions, independently draw an input index with replacement. | Trade count and empirical marginal sampling distribution, not the realized count of each outcome. | What paths arise if individual trade outcomes are exchangeable, independent draws from this sample? |
| Circular block bootstrap | Draw uniform start indices with replacement. Copy consecutive trades, wrapping from last to first. Concatenate blocks and truncate the final one to 200 trades. | Trade count and within-block local order. Sampled totals can change. | What paths arise when chunks of this observed order are retained? |
Block lengths are 2, 5, 10 and 20 trades, plus 200 as a deliberately limiting control. Block length 1 is exactly the IID algorithm for the same random stream and is covered by a known-answer test. Circular wrapping creates an artificial connection from the last input trade to the first. Blocks also create artificial joins at their boundaries.
Every fixture–method case runs 10,000 paths with the same seed. This resets the random stream, not the sequence values. Equal seeds across methods do not imply matched underlying draws. Different orders have the same theoretical permutation and IID sampling distributions, but their finite seeded samples need not give identical empirical quantiles.
Definitions used everywhere in this study
E₀ = C; Eₜ = C + Σᵢ₌₁ᵗ xᵢ
Equity is starting capital C plus cumulative signed trade P/L x, in integer cents.
Hₜ = max(E₀, …, Eₜ)DDₜ = Hₜ − Eₜ; MDD = maxₜ DDₜMDD% = maxₜ [100 × (Hₜ − Eₜ) / Hₜ]
Maximum percentage drawdown is computed at each running peak. It is not maximum dollar drawdown divided by the final peak. Initial capital is positive. Equity can become negative, and percentage drawdown can exceed 100%. No account-close or ruin stop is imposed.
Exact permutation invariant: because addition is independent of order, E₂₀₀ = C + Σ xᵢ = $102,000. This statement depends on fixed additive amounts and no path-dependent changes. Compounding, resizing, margin stops and strategy re-entry effects would answer a different question.
Quantiles: sort each metric from smallest to largest and select position max(1, ceil(p × 10,000)). Thus the median is observation 5,000. The 5th–95th range describes the conditional simulated distribution. It is not a confidence interval for future market risk or estimated strategy profitability.
Method reference: the arch time-series bootstrap documentation distinguishes circular fixed blocks, non-wrapping moving blocks and stationary random-length blocks. This study implements only the explicitly described circular fixed-block construction, alongside IID and permutation.
All mixed-fixture results, including the quieter cases
Each interval is the 5th–95th percentile of 10,000 paths. A dot shows the median. The common vertical scale allows comparison between the three inputs. P = permutation, I = IID and numeric labels = circular block length in trades. Axis labels use k for thousands. Exact values remain in the tables. No cases were removed after observing the results.
20-trade clusters
| Sampler | Terminal 5th / median / 95th | Max. DD 5th / median / 95th | Max. DD% median / 95th | DD ≥ $2,000 |
|---|---|---|---|---|
| Permutation | 102,000 / 102,000 / 102,000 | 740 / 1,100 / 1,760 | 1.09% / 1.73% | 182 / 10,000 (1.82%) |
| IID bootstrap | 99,360 / 102,000 / 104,640 | 660 / 1,120 / 2,140 | 1.10% / 2.12% | 730 / 10,000 (7.30%) |
| Circular block 2 | 98,480 / 102,000 / 105,520 | 920 / 1,660 / 3,320 | 1.63% / 3.28% | 3,251 / 10,000 (32.51%) |
| Circular block 5 | 96,940 / 102,000 / 107,060 | 1,340 / 2,560 / 5,280 | 2.50% / 5.22% | 7,408 / 10,000 (74.08%) |
| Circular block 10 | 95,400 / 102,000 / 108,600 | 1,680 / 3,300 / 6,900 | 3.22% / 6.80% | 8,972 / 10,000 (89.72%) |
| Circular block 20 | 95,400 / 102,000 / 108,600 | 1,900 / 3,540 / 7,120 | 3.43% / 7.02% | 9,295 / 10,000 (92.95%) |
| Circular block 200 | 102,000 / 102,000 / 102,000 | 2,000 / 2,000 / 2,000 | 1.97% / 2.00% | 10,000 / 10,000 (100.00%) |
Alternating wins and losses
| Sampler | Terminal 5th / median / 95th | Max. DD 5th / median / 95th | Max. DD% median / 95th | DD ≥ $2,000 |
|---|---|---|---|---|
| Permutation | 102,000 / 102,000 / 102,000 | 740 / 1,100 / 1,740 | 1.09% / 1.72% | 165 / 10,000 (1.65%) |
| IID bootstrap | 99,360 / 102,000 / 104,640 | 660 / 1,120 / 2,180 | 1.10% / 2.15% | 766 / 10,000 (7.66%) |
| Circular block 2 | 102,000 / 102,000 / 102,000 | 200 / 200 / 200 | 0.20% / 0.20% | 0 / 10,000 (0.00%) |
| Circular block 5 | 100,900 / 102,000 / 103,100 | 260 / 340 / 580 | 0.34% / 0.57% | 0 / 10,000 (0.00%) |
| Circular block 10 | 102,000 / 102,000 / 102,000 | 200 / 200 / 200 | 0.20% / 0.20% | 0 / 10,000 (0.00%) |
| Circular block 20 | 102,000 / 102,000 / 102,000 | 200 / 200 / 200 | 0.20% / 0.20% | 0 / 10,000 (0.00%) |
| Circular block 200 | 102,000 / 102,000 / 102,000 | 100 / 100 / 100 | 0.10% / 0.10% | 0 / 10,000 (0.00%) |
Seeded shuffled order
| Sampler | Terminal 5th / median / 95th | Max. DD 5th / median / 95th | Max. DD% median / 95th | DD ≥ $2,000 |
|---|---|---|---|---|
| Permutation | 102,000 / 102,000 / 102,000 | 740 / 1,100 / 1,760 | 1.08% / 1.72% | 173 / 10,000 (1.73%) |
| IID bootstrap | 99,360 / 102,000 / 104,640 | 660 / 1,120 / 2,160 | 1.11% / 2.14% | 776 / 10,000 (7.76%) |
| Circular block 2 | 99,580 / 102,000 / 104,640 | 640 / 1,120 / 2,180 | 1.09% / 2.15% | 747 / 10,000 (7.47%) |
| Circular block 5 | 99,580 / 102,000 / 104,420 | 620 / 1,040 / 1,960 | 1.03% / 1.94% | 471 / 10,000 (4.71%) |
| Circular block 10 | 99,800 / 102,000 / 104,200 | 600 / 960 / 1,720 | 0.95% / 1.69% | 204 / 10,000 (2.04%) |
| Circular block 20 | 99,800 / 102,000 / 104,200 | 600 / 900 / 1,580 | 0.89% / 1.55% | 104 / 10,000 (1.04%) |
| Circular block 200 | 102,000 / 102,000 / 102,000 | 660 / 920 / 920 | 0.90% / 0.91% | 0 / 10,000 (0.00%) |
The threshold column counts paths with maximum closed-trade drawdown at least $2,000, including exact equality. It is a simulation frequency under the selected model, not a prop-firm failure probability. Prop rules can use intraday equity, trailing floors or different checkpoints.
The distribution matters more than one median
The charts below show the clustered fixture. Every displayed histogram includes all 10,000 paths. Within each metric all three charts share one horizontal range and one vertical range. Bins are generated separately from each method’s realized range, so compare distributions rather than equating the height of differently sized bins.
Maximum drawdown distribution
Permutation
Exact bins: USD range → path count
- 440–610 USD → 64 paths
- 610–780 USD → 617 paths
- 780–950 USD → 2,100 paths
- 950–1,120 USD → 2,283 paths
- 1,120–1,290 USD → 2,027 paths
- 1,290–1,460 USD → 1,231 paths
- 1,460–1,630 USD → 804 paths
- 1,630–1,800 USD → 425 paths
- 1,800–1,970 USD → 248 paths
- 1,970–2,140 USD → 106 paths
- 2,140–2,310 USD → 54 paths
- 2,310–2,480 USD → 24 paths
- 2,480–2,650 USD → 11 paths
- 2,650–2,820 USD → 3 paths
- 2,820–2,990 USD → 2 paths
- 2,990–3,160 USD → 1 paths
IID bootstrap
Exact bins: USD range → path count
- 380–649 USD → 486 paths
- 649–918 USD → 2,384 paths
- 918–1,186 USD → 2,806 paths
- 1,186–1,455 USD → 1,774 paths
- 1,455–1,724 USD → 1,177 paths
- 1,724–1,993 USD → 643 paths
- 1,993–2,261 USD → 362 paths
- 2,261–2,530 USD → 148 paths
- 2,530–2,799 USD → 119 paths
- 2,799–3,068 USD → 49 paths
- 3,068–3,336 USD → 22 paths
- 3,336–3,605 USD → 14 paths
- 3,605–3,874 USD → 13 paths
- 3,874–4,143 USD → 1 paths
- 4,143–4,411 USD → 1 paths
- 4,411–4,680 USD → 1 paths
Circular block 20
Exact bins: USD range → path count
- 1,100–1,871 USD → 489 paths
- 1,871–2,643 USD → 1,953 paths
- 2,643–3,414 USD → 2,246 paths
- 3,414–4,185 USD → 1,875 paths
- 4,185–4,956 USD → 1,245 paths
- 4,956–5,728 USD → 846 paths
- 5,728–6,499 USD → 563 paths
- 6,499–7,270 USD → 350 paths
- 7,270–8,041 USD → 203 paths
- 8,041–8,813 USD → 102 paths
- 8,813–9,584 USD → 69 paths
- 9,584–10,355 USD → 36 paths
- 10,355–11,126 USD → 14 paths
- 11,126–11,898 USD → 7 paths
- 11,898–12,669 USD → 1 paths
- 12,669–13,440 USD → 1 paths
Terminal equity distribution
Permutation
Exact bins: USD range → path count
- 102,000–102,000 USD → 10,000 paths
IID bootstrap
Exact bins: USD range → path count
- 95,840–96,569 USD → 2 paths
- 96,569–97,298 USD → 9 paths
- 97,298–98,026 USD → 30 paths
- 98,026–98,755 USD → 173 paths
- 98,755–99,484 USD → 326 paths
- 99,484–100,213 USD → 597 paths
- 100,213–100,941 USD → 1,466 paths
- 100,941–101,670 USD → 1,509 paths
- 101,670–102,399 USD → 1,701 paths
- 102,399–103,128 USD → 1,963 paths
- 103,128–103,856 USD → 1,056 paths
- 103,856–104,585 USD → 652 paths
- 104,585–105,314 USD → 373 paths
- 105,314–106,043 USD → 102 paths
- 106,043–106,771 USD → 35 paths
- 106,771–107,500 USD → 6 paths
Circular block 20
Exact bins: USD range → path count
- 87,040–88,786 USD → 2 paths
- 88,786–90,533 USD → 18 paths
- 90,533–92,279 USD → 67 paths
- 92,279–94,025 USD → 151 paths
- 94,025–95,771 USD → 377 paths
- 95,771–97,518 USD → 785 paths
- 97,518–99,264 USD → 1,182 paths
- 99,264–101,010 USD → 1,491 paths
- 101,010–102,756 USD → 1,684 paths
- 102,756–104,503 USD → 1,571 paths
- 104,503–106,249 USD → 1,243 paths
- 106,249–107,995 USD → 758 paths
- 107,995–109,741 USD → 417 paths
- 109,741–111,488 USD → 164 paths
- 111,488–113,234 USD → 79 paths
- 113,234–114,980 USD → 11 paths
Actual paths, not pointwise percentile envelopes
| Method | Simulation index | Terminal equity | Max. DD |
|---|---|---|---|
| Permutation | 7538 | $102,000 | $1,100 |
| IID bootstrap | 3389 | $103,540 | $1,120 |
| Circular block 20 | 943 | $100,680 | $3,540 |
Controls and negative results are part of the finding
Constant positive input: the methods cannot invent a loss
For all seven variants, every one of the 70,000 constant-positive paths ends at $102,000 with $0 maximum drawdown. The fixed outcome is intentional. A sampler that produces a losing trade or drawdown from this fixture has a mechanical error.
Full-length blocks do not create a fresh terminal outcome
A circular block of length 200 contains every input trade exactly once. It only rotates the sequence. Consequently all its terminal outcomes are $102,000, just like permutation. Yet drawdown need not stay fixed because splitting a losing run across the start/end boundary can change the maximum observed decline. In the shuffled fixture, full-length-block maximum drawdown spans $620–$920. Full-length blocks are a limiting control, not a recommended default.
Blocks can reduce dispersion
In an alternating input, every even-length block contains equal wins and losses. Lengths 2, 10 and 20 therefore also preserve terminal P/L in this experiment. Their joins can create two adjacent losses, which is why their $200 maximum drawdown exceeds the original $100 despite fixed terminal equity. Length 5 can have one more win or loss, so its terminal outcomes spread. This is a structural consequence, not evidence that even block lengths are best for trading.
The seeded-shuffled input supplies a less dramatic case. Its 20-trade-block 95th percentile drawdown is $1,580, below its IID value of $2,160. Selecting only the clustered example would falsely suggest that block bootstrap is always more conservative.
Download the experiment, not just its charts
All 28 cases, input sequences, distribution bins and actual 5th/median/95th drawdown-ranked paths are included. Nothing is a private customer report. Generated results use the same pure, dependency-free resampling kernel as the public tool.
- All exact input sequences (CSV)
- All 28 result summaries (CSV)
- All distribution bins (CSV)
- Actual representative paths (CSV)
- Complete study output (JSON)
- Pure JavaScript kernel
- Known-answer test suite
- Reproduction script
- SHA-256 checksums
- Run instructions
Save the kernel, test suite and reproduction script in one empty directory. Install Node.js 22 or later, then run:
node --test resampling.test.mjs
node reproduce.mjsThe script creates JSON and CSV results in that directory. It makes no network requests and needs no API keys or market-data subscription. Compare the SHA-256 of results.json with the downloadable checksum list. Run time is machine-dependent and is not an investment-performance measure.
Known-answer tests check exact sums and drawdown, independently enumerated two-trade IID outcomes, circular wrap/truncation, block-1 equivalence, seed replay, chunk-size invariance, actual path selection, full-length rotations, invalid-input rejection and safe integer limits. The synthetic control and all three marginal-matched sequences are retained.
Finite simulation counts introduce Monte Carlo variability. Different seeds can change quantiles and crossing frequencies. Reproducibility fixes this run’s output, not its applicability to unseen markets. Results here are not confidence bounds on an unknown future drawdown distribution.
What this study cannot establish
- No historical returns, market evidence, profitability claim or profitable parameter selection is tested.
- Closed-trade drawdown can miss intratrade risk, simultaneous positions, cash flows, broker margin and execution constraints.
- The fixed ledger has no compounding, changing size, market impact, additional costs, account stops or response to new signals.
- IID removes serial dependence. Blocks retain only local structure and assume that resampling the observed chunks is meaningful. Nonstationary regime changes are not repaired automatically.
- Circular wrap and block joins are modeling choices. This study does not estimate an optimal block size or prove that a larger block is more realistic.
- A finite empirical sample cannot introduce a market loss that never appeared in the inputs. Extreme future events remain outside this construction.
How to use the distinction
Use permutation to isolate order risk conditional on exactly the same realized outcomes. Use IID to inspect repeated sampling from individual outcomes when its independence assumption is defensible. Use multiple block lengths to inspect dependence sensitivity, not to choose whichever output gives the most attractive risk estimate. Disagreement is a reason to investigate the source sequence and sampling assumptions.
Read the practical guide to shuffling and block bootstrap, then run these exact fixtures or your own ordered trades locally. For selection effects that resampling does not solve, see walk-forward testing and reused holdouts.
Dependence sensitivity is one part of the evidence. Connect this result to the full strategy validation framework, including costs, selection risk and protected OOS evidence.
Continue from a ledger to a full research workflow
The public study and tool remain usable without an account. EdgeVeris connects saved strategy inputs with validation and risk reports.
Explore the strategy workspace