On-balance volume (40) filtered by price movement (1.5σ/20)
Volume reveals intent before price reveals direction: when buyers dominate, the running balance rises even while price still hesitates. Using that balance in place of price to find the trend gets you into the move ahead of anyone watching the chart alone.
Measured in crypto — Binance spot · 540 pairs, delisted ones included · 0.2% per round trip
- ✗invariance
- ?costs
- ?placebo
- ✓benchmark
- ✓out of sample
- ✗multiple testing
At its worst the account was worth 78% less than its own best previous moment, and it spent 1,706 days below that peak.
What was measured
How many of those trades actually count
What it paid, before any deductions
Why it did not pass — it died here · where the result came from
What would have happened to the money
The account would not fit every signal
What this result does NOT say
- One market, one universe
- Measured on 540 spot cryptocurrency pairs, delisted ones included. It says nothing about futures, equities or indices, nor about how the same technique behaves in another market.
- One window of time, not every window
- The measured period runs from 2017-08-17 to 2026-07-28. A market moves through regimes, and a technique can work in one and fail in another — the card measures the regimes that fit inside this window, not the ones still to come.
- One cost structure
- The cost charged is 0.10% per leg, in and out. Anyone paying more than that gets a worse result, and anyone paying less gets a better one — the verdict holds for this fee.
- One exit rule
- The trade was closed by: the technique itself (held until the opposite signal). The same entry measured with a different exit is a different strategy, and can earn a different verdict — it happens in this archive.
- The number of trades is not the sample size
- There are 24,870 trades, but only 29 independent market episodes: a single move fires the technique across dozens of assets at once, and counting those as separate observations inflates any result. It is the smaller number that governs the arithmetic. With 29 episodes, what the data supports is a range from -4.66% to +14.08% per trade — the published average is the centre of it, not the exact measurement.
- Daily bars
- Measured at the daily close. Nothing here measures what happens inside the day, and an intraday technique is not auditable with this data.
Numbers and reproducibility
The six controls
| control | status | t | threshold | episodes |
|---|---|---|---|---|
| invariance | failed | — | — | — |
| costs | inconclusive | 0.99 | 2.05 | 29 |
| placebo | inconclusive | 0.87 | 2.05 | 29 |
| benchmark | passed | — | — | — |
| out of sample | passed | — | — | — |
| multiple testing | failed | — | — | — |
- invariance65% of the gross profit comes from 1243 trades (5% of the total) — lotteryconcentration: +64.50% of the profit sits in the top 5% of trades — with the dates shuffled, +49.73% (fails above +50.00%)
- costsgross +4.710% · cost 0.200% · net +4.510% (t=0.99) · the range runs from -4.859% to +13.879%
- placeboactual +4.510% · placebo +0.451% · excess +4.058% ± 4.672% (t=0.87 against a threshold of 2.05, 29 real groups, 1,243,500 sham dates, draw error ±0.051%)
- benchmarktechnique +4.51% · buy and hold (same horizon) +1.72% · excess +2.79%
- out of sampleasset half A: +3.912% (t=0.91, 29 episodes) · asset half B: +5.093% (t=0.89, 29 episodes) · liquid half (>= US$ 2,066,613/day): +6.103% (t=1.16, 29 episodes) · illiquid half: +2.596% (t=0.60, 28 episodes) · period 1/4 (2017-09-25 a 2022-05-04): +18.417% (t=2.27, 16 episodes) · period 2/4 (2022-05-05 a 2023-12-10): +1.368% (6 episodes — too small, does not count) · period 3/4 (2023-12-11 a 2025-04-29): +0.798% (5 episodes — too small, does not count) · period 4/4 (2025-04-30 a 2026-07-27): -2.448% (5 episodes — too small, does not count)
- multiple testing3 variation(s) tested · t=0.99 across 29 episodes (equivalent to t=0.94) · p≈0.3455 · false positives expected by chance ≈ 1.04
Equity — outside the six controls, and here is why
The t of the trade series is invariant to bet size: 0.5%, 1% and 3% agree to the sixth decimal. Nothing here moves the verdict — it moves what the account would have lived through.
- risking 1.0% per trade
- ×4.32(×2.57–×6.27 depending on the drawn ordering)
- worst drawdown from the peak
- −78%
- days below the previous peak
- 1,706
- signals refused for lack of capital
- 65%
- paths where the account halved (out of 12)
- 0
Reproducibility
- period
- 2017-08-17 to 2026-07-28
- assets that traded
- 540
- variations tested before this one
- 3
- gross per trade
- +4.71%
- net per trade
- +4.51%
- exit rule
- the technique itself (held until the opposite signal)
- median duration bars
- 20
- mean duration bars
- 28.8
- max duration bars
- 350
- fee per leg
- 0.001
- episode days
- 112
- seed
- 20260728
- OBV period
- 40
- OBV filter
- price
- OBV f
- 1.5
- OBV window
- 20
Binance spot klines (delisted pairs included) · collected from 2026-07-27 23:31 to 2026-08-03 10:49 · 540 assets · 750,934 bars · 2017-08-17 to 2026-07-28
Hypothesis, filed before the result
pp. 563–564. The sister layer of the previous one, on the price axis: days on which price barely moved do not move the accumulation. `threshold = mean(|Δprice|, n) + f × deviation(Δprice, n)`; if the day's move falls below it, the index repeats. The source's motivation is the same criticism it makes of the raw OBV: «it is fair to question the validity of posting all of the volume to the upside when the index closed with a minimal gain». NEITHER PARAMETER IS FIXED — the source merely names them, «`n` = the number of periods in both the average and the standard deviation; `f` = the number of standard deviations used to filter the minimum volume». Both enter as a SWEEP. And it marks the asymmetry between the two filters: the price one is two-sided («the price change, which can be positive or negative») and the volume one is one-sided. Family-level prediction, recorded before measuring: (1) NONE survives the corpus-wide Benjamini-Hochberg; (2) the gravedigger in crypto will be CONTROL 1, concentration, as in `volatilidade` (7 of 7) and `posicao` (10 of 10) — in crypto what pays a lot pays it concentrated, and this has been measured three times already; (3) SAITTA'S VOLUME FILTER will cut trades without improving the `t`, which is the signature of a filter that does not separate — PROTOCOLO.md already records the measured case in which the volume filter cut 73% of the trades, left the gross WORSE and inflated the error by 42%; (4) the VOLUME SPIKE as a reversal will have the family's best `t`, being the chapter's only claim about a rare and dated EVENT instead of an accumulated index — and even so it will not pass; (5) the three layers over on-balance volume (raw, filtered by low volume, filtered by movement) will differ from one another by LESS than the error bar, because filtering days out of an accumulator changes the accumulated series little; (6) ON-BALANCE VOLUME will do worse than the moving average crossover the corpus already publishes — if replacing price with volume in a moving average worked, the chapter would not have to admit it never tested that.
filed on 2026-08-04, before the number existed
The original, as it was filed
p. 563–564. A camada irmã da anterior, no eixo do preço: dias em que o preço quase não andou não movem o acumulado. `limiar = média(|Δpreço|, n) + f × desvio(Δpreço, n)`; se o movimento do dia fica abaixo, o índice repete. A motivação da fonte é a mesma crítica que ela faz ao OBV cru: «é justo questionar a validade de lançar todo o volume para o lado da alta quando o índice fechou com uma alta mínima». ⚠️ NENHUM DOS DOIS PARÂMETROS É FIXADO — a fonte apenas os nomeia, «`n` = o número de períodos tanto na média quanto no desvio-padrão; `f` = o número de desvios-padrão usados para filtrar o volume mínimo». Os dois entram como VARREDURA. ⚠️ E ela marca a assimetria entre os dois filtros: o de preço é bilateral («a variação de preço, que pode ser positiva ou negativa») e o de volume é unilateral. Previsão da família, registrada antes de medir: (1) NENHUMA sobrevive ao Benjamini-Hochberg do corpus; (2) o coveiro em cripto será o CONTROLE 1, concentração, como em `volatilidade` (7 de 7) e `posicao` (10 de 10) — em cripto o que rende muito rende concentrado, e isso já foi medido três vezes; (3) o FILTRO DE VOLUME DE SAITTA cortará operação sem melhorar o `t`, que é a assinatura de filtro que não separa — o PROTOCOLO.md já registra o caso medido em que o filtro de volume cortou 73% das operações, deixou o bruto PIOR e inflou o erro em 42%; (4) o PICO DE VOLUME como reversão terá o melhor `t` da família, por ser a única alegação do capítulo sobre um EVENTO raro e datado em vez de um índice acumulado — e ainda assim não passará; (5) as três camadas sobre o saldo de volume (bruta, filtrada por volume baixo, filtrada por movimento) diferirão entre si por MENOS que a barra de erro, porque filtrar dias de um acumulador muda pouco a série acumulada; (6) o SALDO DE VOLUME irá pior que o cruzamento de médias que o corpus já publica — se substituir preço por volume numa média móvel funcionasse, o capítulo não precisaria admitir que nunca testou isso.
Quotations from the source were translated from the Portuguese record and back into English — they are not the author's exact words.
Pre-registration exists to keep prediction apart from rationalisation: written after the number, every hypothesis is right.
This claim has been audited once — there is no history to compare against.