At least one test found a defect that invalidates part of what this record claims about itself.
claims still standing after scrutiny
What could be examinedEVIDENCE LEVEL 3 of 5 · record and configuration
7 test(s) run · 0 lacking evidence
Data
Execution
Geometry
Costs
Assets
Distribution
Config
could be checkedno evidence to test this
What ASSAY found
8 defects
Exit prices are computed, not observedfatalIn 100.0% of multi-leg trades, the risk unit solved from each leg matches to the last decimal. Two exits at different moments cannot produce that if the prices were real fills: the exit is computed as entry x (1 + level x R).
There is no gross edge to discount costs fromfatalAverage gross result is -0.425833: the strategy loses before paying any fees. Cost is not the problem, and removing it would not make it viable.
Trades end at levels the configuration never declaresfatal65.0% of trades (93 of 143) end at a level the published configuration neither declares nor allows to be derived: -0.7 (x88), -0.42 (x5). The declared levels are part_a_target_r=+1.2, part_b_be_buffer_r=+0.3, part_b_stop_loss_r=-0.5, part_b_target_r=+2. Either this configuration did not produce this record, or there are parameters governing the exit that were never published.
and 5 more finding(s), detailed below with their evidence
What ASSAY cannot verify
Scope of the examination
No test stood downAll 7 implemented tests could run on this record. The 3 remaining board roles are not built yet: they count neither for nor against.
What this record does establish
Checks passed
the reported gross reconciles with (exit - entry) x size in 258 of 258 trades
cost derived from the record: +0.3283 per trade (258 of 258 non-negative)
Test chain · cheapest to most expensive
Execution log
Code
Test and measurement
Result
F2
Impossible ranges in the columnsentry_price: min 0.377667 / mediana 91.586 / max 65010.7 / ceros 0.0% / cardinalidad 128 entry_price: cola 710x no evaluada, el universo tiene 7 activos de escalas distintas
2 / 3
D6
The record describes the design, not the executionP1 risk multiple: 4 distinct values over 258 trades P1 observed values: [-0.7, -0.42, 1.2, 2.0]
◆ breaks it
D1
Observed exit geometry against the declared oneganancia nominal +1.429R -> observada +1.456R (+1.9%) perdida nominal -0.700R -> observada -0.685R (-2.2%)
1 / 3
E4
Gross edge against the cost flooraverage gross -0.425833 per trade over n=145 (medido desde precios) cost floor 0.584170 per trade
1 / 3
B1
Asset selection captures dispersionT1 Herfindahl 0.1681 frente a equiponderado 0.1429 (exceso 1.18x) T1 reparto: ETH 22.8%, LINK 16.6%, AVAX 15.9%, XRP 15.9%, BNB 15.2%, BTC 12.4%
3 / 31 of 2 checks run
E5
The strategy lives off the tailtrade identity: 145 groups from 258 rows by simbolo+ts_entrada+precio_entrada; actually separating: ts_entrada (17 grupos, puntuacion 0.6); ambiguous 2 of 145 T1 mean -1.0100 / median -3.7816
2 / 3
G1
Declared configuration against what actually ranniveles declarados en el config, con el signo inferido del nombre: part_a_target_r=+1.2, part_b_be_buffer_r=+0.3, part_b_stop_loss_r=-0.5, part_b_target_r=+2 declarados y ejecutados: +1.2 (x30), +2 (x12)
◆ breaks it
8 findings · ordered by severity
Detail with evidence
D6-1 — Exit prices are computed, not observedfatalIn 100.0% of multi-leg trades, the risk unit solved from each leg matches to the last decimal. Two exits at different moments cannot produce that if the prices were real fills: the exit is computed as entry x (1 + level x R).EVIDENCE — will4_2021_2022.csv: entry and exit prices, risk multiple, leg · test D6
E4-1 — There is no gross edge to discount costs fromfatalAverage gross result is -0.425833: the strategy loses before paying any fees. Cost is not the problem, and removing it would not make it viable.EVIDENCE — will4_2021_2022.csv: 145 trades · test E4
G1-3 — Trades end at levels the configuration never declaresfatal65.0% of trades (93 of 143) end at a level the published configuration neither declares nor allows to be derived: -0.7 (x88), -0.42 (x5). The declared levels are part_a_target_r=+1.2, part_b_be_buffer_r=+0.3, part_b_stop_loss_r=-0.5, part_b_target_r=+2. Either this configuration did not produce this record, or there are parameters governing the exit that were never published.EVIDENCE — will4_2021_2022.csv contra config_will4.yaml · test G1
L-07 — Mixed-type time key in 'entry_date'material241 of 258 values are integers and 17 are timestamps. The column cannot be ordered or compared as a time series.EVIDENCE — will4_2021_2022.csv: cut -d, -f? | grep -cE '^[0-9]+$' · test F3
D1-0 — The risk multiple is recorded at nominal valuesmaterialDispersion within the stop cluster is 0.000%: exits are recorded at their theoretical level, not the executed one. Degradation from rounding, slippage and fees is NOT measurable from this record, and any break-even computed from it is understated by construction.EVIDENCE — will4_2021_2022.csv: column r_multiple, 88 losers · test D1
E5-2 — The worst outcome acts as a sinkmaterial69.8% of trades end exactly at -0.7000. That value is not just any loss: it is where the strategy cuts, and it absorbs one in every 1.4 trades. This is NOT independent of F2-3: in any strategy with a fixed stop, the most repeated value in the column IS the stop, and both tests are counting the same fact. F2 reads it as possible default filler; E5 reads it as the cut level. One piece of evidence, two readings.EVIDENCE — will4_2021_2022.csv: 180 of 258 values in risk multiples (145 trades grouped) · test E5
G1-5 — The configuration declares levels that never firedmaterialThese parameters are in the configuration and never appear in the record: part_b_stop_loss_r=-0.5, part_b_be_buffer_r=+0.3. Either the function that uses them never fired across the whole sample, or the parameter is left over from an earlier version.EVIDENCE — config_will4.yaml: 2 de 4 niveles · test G1
F2-3 — One value dominates 'r_multiple'minorThe value -0.7 appears in 180 of 258 records (69.8%) across 4 distinct values. Consistent either with a default filler or with a design level; the two need telling apart.EVIDENCE — will4_2021_2022.csv: column 'r_multiple' · test F2
What the engine assumed when reading the file
Declared column mapping
A column name is a claim by the client, not a fact. The engine infers each column's role from its contents and states it openly. If that reading is wrong, everything above must be revisited.
the reported gross reconciles with (exit - entry) x size in 258 of 258 trades
cost derived from the record: +0.3283 per trade (258 of 258 non-negative)
What this report does not say
What this number measures: what fraction of what the strategy CLAIMS is still standing after scrutiny. What it does not measure: future returns, probability of success, or the quality of the idea. A test can score 3/3 on a strategy that loses money: it means it loses in a way consistent with what it declares. This is backward-looking. A 24 of 24 would not be investment advice.
ASSAY finds problems. It does not certify that a strategy works and it issues no return forecasts. A favourable verdict means the tests applied failed to break the result, not that the result will repeat.
A high karat count with low coverage means nothing: it is obtained by not testing. That is why both figures are always published together. Every figure comes from a test run against the file provided and can be regenerated; whatever could not be assayed is declared as such.