Delta pruning is a fast filter inside quiescence search.
After computing stand pat (static eval), ask: if I capture the most valuable enemy piece,
can I still fail to beat
α? If standPat + queenValue < α, every capture in the move list is hopeless — skip them all without searching.Rule
The Delta Margin Test
Skip capture if:standPat + Δ < αΔ = value of captured piece (900 for queen, 100 for pawn, …)
Pruned
standPat = −400, α = +200. Best capture wins queen (+900) → max score −400+900 = +500? Wait: standPat −400 + 900 = +500 > α. Example pruned: standPat = −800, α = +200, queen capture → −800+900 = +100 < α → skip.
Must search
Margin large enough that capture might beat α. Also search when promotion or check extensions apply — delta is conservative, not a proof.
Flow
Inside Q-Search
1
Compute stand pat
Static eval; update α if standPat > α.
2
For each capture
Compute Δ from victim piece value (MVV).
3
Delta test
If standPat + Δ < α → continue (skip move).
4
Else recurse
Often combined with SEE — delta is cheap pre-filter, SEE is accurate.
for (move : captures) {
delta = pieceValue[victim(move)];
if (standPat + delta < alpha) continue; // delta prune
if (see(move) < 0) continue; // SEE prune
score = -qsearch(-beta, -alpha);
}
| Technique | Where | Test |
|---|---|---|
| Delta pruning | Q-search captures | standPat + piece value < α |
| SEE pruning | Q-search captures | Static exchange < 0 on square |
| Futility pruning | Main search quiet moves | staticEval + margin < α |
Tips
- Use piece values consistent with your eval (not necessarily 900/500/300/100)
- Do not delta-prune promotions or checks — they can exceed margin
- Pair with SEE — delta is optimistic, SEE catches hanging captures
- Only applies in qsearch where stand pat is legal
Part of quiescence search
Delta pruning keeps qsearch fast without missing tactics.
Quiescence SearchEvaluation FunctionRelated: Quiescence Search · Futility Pruning · All Blogs