Sparring A Weakness: Building Positions The Bot Must Punish
You lost a game last night. Somewhere around move 24 you played a move that felt fine, the position curdled over the next ten moves, and you resigned on move 41 without ever being able to point at the exact thing that went wrong. So you clicked “New opponent.”
That rematch is the least efficient thing you could have done with the next forty-five minutes.
A 40-move game at 15+10 contains maybe two or three genuinely hard decisions. The rest is recapture, development, and obvious recapture. You get one attempt at each hard decision, under clock pressure, and then the position is gone forever. Meanwhile the exact position you couldn’t handle can be rebuilt in about fifteen seconds and played out eight times in the time one new game takes. That is the whole trick: practice chess positions against engine opposition, one position at a time, starting from the move before you broke it, until the position stops being frightening.
Find the move before the move
Open the game on Lichess and click “Request a computer analysis” (it’s free, it runs Stockfish server-side, and it takes about twenty seconds). You’ll get the move list annotated with ?!, ? and ??. Chess.com’s Game Review does the same thing with “Inaccuracy”, “Mistake” and “Blunder” labels.
Now ignore the blunder. The blunder is usually a symptom. On move 31 you dropped a knight, but the reason you dropped it is that on move 24 you walked into a position where every move was awkward and you ran out of patience. So back up:
- Tactical error (you missed a fork, a pin, a back-rank mate): back up exactly one move. You want to be sitting in the position where the tactic is available, with the clock running, no arrow to help you.
- Positional error (you traded the wrong piece, released the central tension, created a hook): back up three to five moves. The skill you’re training isn’t spotting a tactic, it’s choosing a plan, and plans need room.
Read the number before you trust it
Most club players look at the engine evaluation and see either “fine” or “bad.” That’s leaving 90% of the information on the floor. Four things to internalise:
The sign is always from White’s point of view. Lichess and Chess.com both do this. If you’re Black and the number gets bigger, you’re doing worse. This trips up more people than it should.
Depth is a claim about confidence, not quality. An evaluation at depth 18 and the same evaluation at depth 32 are not the same statement. Quiet positions stabilise early. Sharp ones swing by a full pawn between depth 20 and depth 30, and if you see the number jumping around as the depth climbs, the position is tactical and you should not trust the shallow read.
Turn on Multi-PV. In Lichess analysis, the gear icon lets you set “Multiple lines” to 3 or 5. Locally, Nibbler and En Croissant both expose Multi-PV directly. This is the single most useful setting for this kind of work, because you don’t want the best move. You want to see the gap between the best move and the move you actually played.
Learn the scale. Here’s a usable rule of thumb for anyone under 2000:
| Eval swing from your move | What actually happened |
|---|---|
| 0.00 to 0.30 | Noise. Ignore it completely. |
| 0.30 to 0.80 | A real inaccuracy. Worth sparring. |
| 0.80 to 1.50 | You gave away something concrete and permanent. |
| 1.50 to 3.00 | A piece, or the structure of the game. |
3.00+ or # | The game ended here, whatever the scoresheet says. |
And one caution the engine won’t give you: 0.00 can be a lie about your life. A theoretically drawn rook endgame that you lose six times out of ten is a weakness, and Stockfish will keep calmly reporting 0.00 while you bleed rating points into it.
How to practice chess positions against engine opposition in two clicks
Lichess. From any game, click “Analysis board”, step to the move you want, then open the menu underneath the board. There’s a “Continue from here” section with “Play with the machine.” Pick a level, pick your colour, go. When the game ends, “Rematch” keeps the custom position, which is the feature that makes this whole method work. You can also paste a FEN straight into lichess.org/analysis if you’re setting something up from a book.
Chess.com. Set the position on the Analysis board, copy the FEN from the box under the board, then go to Play, choose Computer, and use the board-setup option to paste the FEN in as the starting position.
Lucas Chess R (free, Windows) is purpose-built for this. It has a position editor, a ladder of engines calibrated from roughly 300 to 3300, and it will keep a win/loss record per position for you so you don’t have to.
En Croissant or Nibbler if you want a local Stockfish with full Multi-PV control and no server round-trip.
Pick an opponent that punishes, not one that executes
Full-strength Stockfish is the wrong sparring partner. It will beat you in a way that teaches you nothing, because it wins by seeing a 14-move line you were never going to find. What you want is an opponent that reliably takes the free thing you offered and then plays normally.
Lichess Stockfish level 5 or 6 is the practical sweet spot for most people in this band. Better, if the position is a middlegame, challenge one of the Maia bots (maia1, maia5, maia9, trained on human games at roughly 1100, 1500 and 1900), using Lichess’s “From Position” challenge option. Maia misses things the way a person misses things, which means the mistakes it punishes are the ones that will actually cost you rating. For more on choosing and calibrating those opponents, see Sparring Against Human-Like Bots At Your Rating.
Worked example one: the pawn I shouldn’t have traded
Italian Game, Giuoco Pianissimo, me as Black. 1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.c3 Nf6 5.d3 0-0 6.0-0 d6 7.Re1 a6 8.Bb3 Ba7 9.h3 Ne7 10.d4 Ng6 11.Nbd2 c6 12.Bc2, reaching:
r1bq1rk1/bp3ppp/p1pp1nn1/4p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 b - - 0 12
I played 12…exd4, because the tension was annoying and I wanted it gone. Lichess flagged move 12 with ?! and nothing else until move 29, where I got the ??. Multi-PV at depth 30:
Stockfish 17.1 · NNUE · depth 30 · 3 lines
+0.28 12... Re8 13. d5 cxd5 14. exd5 Bb8 15. Nf1 Qc7
+0.31 12... Qc7 13. d5 Nf4 14. Nf1 Bd7 15. g3 Nh5
+0.86 12... exd4 13. cxd4 Re8 14. Nf1 d5 15. e5 Ne4
A swing of 0.55. Nothing. Except the resulting position gave White a pawn on e5, a clamp on f6 and d6, and a kingside attack for the next fifteen moves, while every piece I had sat behind a wall. The evaluation barely moved. The difficulty moved enormously, and that’s what the number can’t tell you.
I set up the pre-12…exd4 position and played it nine times against maia5 at 10+0. Result: lost six, drew two, won one. Then I played the same position four times from White’s side, which is the half of this people skip. Playing White taught me faster than anything else, because I got to feel how free it is to have that space, and how the attack basically plays itself once Black has released the centre. Ten more games as Black: five wins, three draws, two losses, and I have not voluntarily traded on d4 since.
Worked example two: four pawns against three
Rook endgame, me a pawn up, everything on the kingside plus a spare e-pawn:
1r4k1/5ppp/8/8/4P3/8/5PPP/R5K1 w - - 0 1
Stockfish, depth 42: 0.00, three lines, all 0.00. Correct and useless. I had reached a version of this twice in a month and drawn both, and the engine’s verdict (you drew a drawn position, well done) hid the fact that I had no idea what I was doing.
Twelve games against Stockfish level 6 at 15+10, playing the stronger side: three wins, nine draws. Then I spent twenty minutes reading about rook activity and the Vancura setup, specifically the idea that the rook belongs behind the enemy pawns and in front of nothing. Twelve more games: seven wins, five draws. The position hadn’t changed and neither had the evaluation. The conversion rate went from 25% to 58%.
When not to bother
If the mistake was a one-move oversight in a position you otherwise understood, sparring it is a waste. You don’t need twelve reps of a knight fork you’d spot nine times out of ten awake. That’s a time-management and blundercheck problem, and the fix is a pre-move habit, not a training position. Spar the things that recur: structures you misplay, endgames you don’t convert, piece trades you make out of discomfort.
Keep a plain text file. One line per position, FEN first, then what you did wrong in your own words, then your running record. Mine has 31 entries and looks like this:
r1bq1rk1/bp3ppp/p1pp1nn1/4p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 b
released central tension because waiting felt bad
maia5: 6L 2D 1W -> 2L 3D 5W (20 games over 3 weeks)
Pull three entries from it on a Sunday morning, before you’ve played anything, and run each one four times. The file is the asset. The games are just how you pay for it.