Inzichten en nieuws

Blog

Diepgaande verkenningen van AI-handel, marktanalyse en de toekomst van DeFi.

Browse collections →
Filter by tag:
July 2, 2026
#algotrading

De framework-belasting: wanneer je backtestbibliotheek trager is dan een naïeve pandas-loop

We hebben acht backtest-engines gebenchmarkt op één identieke parameter-sweep — 150k bars, 80 HMA-cross-combinaties, trade-count-pariteit vastgezet op 2707. Twee van de populairste event-driven frameworks kwamen trager uit dan een met de hand geschreven pandas-loop, terwijl een gevectoriseerde/gecompileerde engine hetzelfde werk ~13,000× sneller draaide. Een studie van de per-bar overhead die populaire bibliotheken nooit gebouwd waren om te amortiseren.

#algotrading#backtest#prestaties
Lees artikel →
July 1, 2026
#algotrading

The Probability of Backtest Overfitting: Did Your Search Beat a Coin Flip?

The Deflated Sharpe Ratio prices the winning strategy; PBO prices the search that picked it. Combinatorially Symmetric Cross-Validation runs C(16,8) = 12,870 train/test splits over a 1000x200 performance matrix and asks: does the in-sample winner land in the bottom half out of sample? The catch almost everyone misses — PBO's null is 0.5, not 1. On 200 zero-edge strategies the best in-sample annualized Sharpe of 1.98 collapses to 0.06 out of sample and PBO = 0.476: a coin flip, fully overfit. Plant a real edge (annualized Sharpe 2.38) and PBO drops to 0.001, the in-sample 3.73 surviving to an out-of-sample 2.34. A moving-average grid on a pure random walk has no out-of-sample skill either — PBO 0.463 averaged over 60 matrices, statistically indistinguishable from the null — and on one representative matrix the mirage is vivid: a best in-sample Sharpe of 2.33 collapses to a median out-of-sample -0.22, PBO 0.573, a 63% chance of a loss.

#algotrading#backtest#overfitting
Lees artikel →
June 30, 2026
#algotrading

De IPC-belasting: zet de backtest-engine achter een socket en verlies 13% — bijna niets daarvan komt door de socket

We hebben een numba-backtestkernel regel voor regel naar Rust geport en op vier manieren over een procesgrens aangeroepen, met een equivalentiepoort die identieke PnL tot de laatste trade bevestigt. Het versturen van de volledige 1,2 MB prijsserie via een Unix-socket kost ~2 ms — ongeveer 0,1% van de taak. JSON-codering van dezelfde payload kost 1348x meer dan ruwe bytes, chatty aanroepen per combinatie versturen de data 80 keer opnieuw, en een aanroeppatroon per bar zou 2,1 s pure IPC kosten op een taak van 2,0 s. De grens is goedkoop; de belasting zit in hoe je hem oversteekt.

#algotrading#backtest#performance
Lees artikel →
June 29, 2026
#algotrading

De Deflated Sharpe Ratio: Hoeveel van je Backtest-'Winnaars' Overleven Multiple Testing?

Een parameterzoektocht is een machine voor het fabriceren van geluk. Op pure ruis — 1.000 strategieën met nul echte edge — behaalt de beste jaarlijkse Sharpe gemiddeld 1,63 en signaleert de naïeve significantietoets 100% van de tijd een ontdekking. We bouwen een gecontroleerde ground truth en laten zien dat de Deflated Sharpe Ratio, de Harvey-Liu haircut en White's Reality Check de eerlijkheid herstellen: valse ontdekkingen dalen van 1,000 naar 0,001-0,057, echte edges boven het ruisplafond blijven behouden met een power van ~1 — en één echte valkuil (gecorreleerde grids) waar de rauwe DSR overdeflateert en het oordeel over een hele band van effectieve-trials-schattingen gelezen moet worden, niet over één getal.

#algotrading#backtest#overfitting
Lees artikel →
June 28, 2026
#algotrading

Objective-Function Design: de metriek die je optimaliseert kiest stiekem je strategie

Om naar de 'beste' strategie te zoeken, moet je eerst 'beste' definiëren — en die scalair kiest in stilte de winnaar. Op synthetische data met een bekende edge (600 seeds, T=2000, 80 drempels) kroont een naïeve per-trade Sharpe een loterij: hij kiest in 56% van de seeds een winnaar met minder dan 5% exposure en degenereert in 57% — bij de meest extreme seed leveren 8 trades een in-sample Sharpe van 21.09 op die out of sample instort tot 0.13. De eerlijke reparatie is bijna saai: meten over de volledige tijdlijn, die nooit degenereert (out-of-sample 1.71). Een trade-count (conf_k) shrinkage en een exposure floor kunnen een per-trade metriek repareren, maar zelfs volledig gerepareerd evenaren ze slechts de full-timeline Sharpe (1.70 tegen 1.71) — nooit meer dan dat. De wet van Goodhart, in een backtest, met gecontroleerde grondwaarheid.

#algotrading#backtest#overfitting
Lees artikel →
June 27, 2026
#algotrading

Look-Ahead Bias: hoe een fout van één bar een Sharpe van 15 fabriceert uit pure ruis

Een gecontroleerde studie van de subtiele look-ahead-lekken die backtests stilletjes opblazen. Zonder enige echte edge fabriceert een fill op dezelfde bar een geannualiseerde Sharpe van +14,8 uit pure ruis; een vooruitblik van één bar door een indicator, +4,8. De taxonomie, de gemeten grootteordes, en hoe je elk lek opspoort voordat het je geld kost.

#algotrading#backtest#look-ahead bias
Lees artikel →
June 26, 2026
#algotrading

De Backtest-snelheidsladder: 298x op een laptop-CPU, identieke PnL tot de laatste trade

Vijf implementaties van dezelfde sweep over 80 parametercombinaties, allemaal geverifieerd op identieke PnL: pandas rolling.apply doet er 69,9 seconden over, numpy 3,1, numba 2,0, parallelle numba 0,23 — een gemeten versnelling van 298x op een Apple M2 Max zonder enige hardwarewijziging, en nog altijd ~13x ten opzichte van een degelijke gevectoriseerde baseline. Wat elke trede oplevert, waarom een GPU niet het ontbrekende stukje is, en waar het echte knelpunt in massale parametersearch zich bevindt.

#algotrading#backtest#performance
Lees artikel →