I have been thinking of the various techniques to chop some dead wood off the search tree. The following idea has appeal to me:
Basically I want to get rid of branches where the losing side, playing the all nodes, sacrifices more and more material in his all-attempt to get even. When the losing side is playing his bad captures, null moves are not a very good defence: to prove that the captures are losing I must recapture, and although I gain material I don't benifit from the reduction that the null move would bring. Yet there seems to be every reason to reduce such branches.
It thus sounds more as something where late-move reductions could be of use. Reductions, however, are pruning decisions taken early in the branch, long before you reach the point where you actually do the pruning, and a lot could happen in between. So I'd rather take the decision to prune at the point where you do it, so I can make sure that it is still justified. The justification to terminate the search for branches of the type I am discussing would be some kind of futility argument: the losing side is so much behind, that it is unlikely he will be able to get back in window in the remaining plies. If, against all expectation, the play upto now was a brilliant series of sacrifices, I leave it to a deeper search to find it.
The farther the score is out-of-window, the more plies you can prune. Current evaluation is a bad measure for this, however, since there might be hanging pieces. You wouldn't want to discard a node if the side to move, although behind in current eval, can do a good capture, or make a grave threat that could bring him back in window (e.g. give a check). Such moves are far from futile. It is not so easy to recognize statically if there are moves available that make a threat, though. So pruning simply because the stm has a bad eval seems too early.
One ply later, good captures the losing side might have played are already incorporated in the current eval. The winning side now has the move, and if it still is far above beta, we have a pruning candidate. We still have to worry about the last move being a grave threat with the potential to annihilate our advantage. Typically the first thing we try with eval>=beta is a null move, and if there is such a grave threat, it will detect the threat by failing low. So this is a natural place to take the decision.
Suppose we act on the idea that it is unlikely that the opponent will be able to gain consistently more than a full piece in every one of his remaining plies. Say we are ahead more than 3 pieces (eval > beta + 3PIECES), because he blundered away a Queen somewhere on the road... If a QS after null move shows that he has no threats we could prune this node if there are 6 or fewer ply remaining search depth left. (Perhaps even 8, for the fact that there was no threat proves that he cannot gain anything in his next ply, so he would have only 3 plies to capture three pieces.) For d=6, ordinary null-move pruning would require a d-R-1 = 2-or-3-ply search to achieve the same, quite a bit more expensive than a mere QS. Basically, the whole idea shows up as null-move pruning with an extremely reduced depth for the null-move search.
The downside is that, in order to prove that there is no threat when eval is so much above beta, you would have to enlarge the window for the null-move search to {beta-1, beta+3PIECES}. A QS with this larger window will still be enormously cheaper than a deeper search with the usual null window {beta-1, beta}, though.
If the null move fails low, you know that it will probably be a waste of time to try a deeper null-move search. Apparently he has an immediate threat that is so great that, despite our lead, we cannot afford to ignore it. If we get an in-window score for the null move, we know that he has some threat, but not grave enough to get even. In that case we should choose between a normal null-move search at depth d-R-1, or try a normal move to nullify the threat.
Note that a succesful threat-evasion would preserve our 3-piece lead (or even increase it, if we are dealing with a phantom threat where we can simply capture the hanging attacker). So although it will be formally searched to 6-ply, almost every reply to it that doesn't capture more than a piece will be pruned by the proposed mechanism. So it will be more like a 2-ply search. A reduced null-move search might just start with a marginal advantage (if his threat was to capture a Queen back), and might have to run to its full depth d-R (i.e. 3 or 4 ply).
For a minor threat the null move might start from an advantage so big that it will also be further reduced trough this mechanism. So what the optimal choice is for the refutation move depends on the magnitude of the threat that the 1-ply null-move search revealed, and on the other hand, if the threat can be refuted at a gain, or merely ameliorated to a smaller loss. Basically, you can expect 2 ply to be pruned of the end of every search for every piece difference between ignoring the threat or refuting it, and you would have to weigh that against the R-ply reduction of the null move.
If you have a good capture on the attacker, I would certainly prefer that over null move, since even winning a Pawn versus losing a Pawn above beta is already nearly good for those 2 ply of extra pruning. Letting a piece capture with impunity (even if the material gain itself is futile) is usually a bad idea, since it is likely to create a lot of tactical trouble in the new position, plus that it weakened your own defense.