ASSAY Assay A-0047-EN will4_2021_2022.csv n=258 Engine 2720845 2026-08-22

Assay verdict

THE CLAIMS DO NOT HOLD

At least one test found a defect that invalidates part of what this record claims about itself.

9 OF 21 KARATS claims still standing
after scrutiny
What could be examined EVIDENCE LEVEL 3 of 5 · record and configuration
7 test(s) run · 0 lacking evidence
Data
Execution
Geometry
Costs
Assets
Distribution
Config
could be checked no evidence to test this

What ASSAY found

8 defects

Exit prices are computed, not observedfatal In 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 fromfatal Average 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 declaresfatal 65.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 down All 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

CodeTest and measurementResult
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 observedfatal In 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 fromfatal Average 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 declaresfatal 65.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'material 241 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 valuesmaterial Dispersion 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 sinkmaterial 69.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 firedmaterial These 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'minor The 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.

  ts_salida        <- exit_date   (nombre 1.00 / contenido 1.00)
  simbolo          <- pair   (nombre 1.00 / contenido 1.00)
  resultado_neto   <- net_profit   (nombre 1.00 / contenido 0.90)
  resultado_bruto  <- gross_profit   (nombre 0.85 / contenido 0.90)
  costes           <- fees   (nombre 0.85 / contenido 1.00)
  precio_entrada   <- entry_price   (nombre 1.00 / contenido 1.00)
  precio_salida    <- exit_price   (nombre 1.00 / contenido 1.00)
  tramo            <- part   (nombre 1.00 / contenido 0.85)
  r_multiple       <- r_multiple   (nombre 0.85 / contenido 0.75)
  cantidad         <- qty   (nombre 1.00 / contenido 0.60)
  ts_entrada       <- entry_date   (nombre 1.00 / contenido 0.03)
  direccion        <- ---
  motivo_salida    <- ---
  id_operacion     <- ---

  COLUMNS LEFT UNUSED (1): profit_pct

The record against itself

  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.