# Can a chess engine tell you why a move is bad or good?

Can any chess engine tell you why a move is bad or good? For example, say a chess engine says the score against my opponent is currently +2 in my favor. I then make a move and my score drops to say 1.4. Can any engine tell me what I did wrong such that my score dropped from 2 to 1.4 (assuming I didn't hang a piece or pawn etc.)

It seems to me that having chess programmers make their programs even stronger is now pointless and it would be much more beneficial to the average chess player if they could have their programs instruct us why a move is bad (or good), assuming they currently cannot do this.

• It might be more beneficial to try to understand why a move is good or bad. Oct 29 '17 at 20:37

Sort of (but not really) - and it's actually getting harder for engines to do this for you. To understand why, you have to understand how the evaluation goes. Engines typically can make snap evaluations on a given position, giving it a raw point value. Then, whatever the position is, they play forward, trying to find the line forward that optimizes that score for both sides.

It's important to understand, that '2.0' or '1.4' score aren't the evaluation/score for the current position. Instead, it's the evaluation N moves down the line, with each side playing the best move the engine found. This is why the "Current evaluation score" jumps around while the computer is thinking. It's not that the 'score' for a position changed - it's just that it found a different line moving forward that ended up in a different position (which had a different score.)

In the past, engines sucked. Not just because of sub-optimal algorithms, but because of very slow hardware - if you think compounding interest is powerful, it's nothing compared to Moore's Law. So computers back then were just looking a few moves into the future. Which made it relatively easy for a human to follow the logic - your score went down because you're losing your knight the next turn.

But now? If your score went from '2.0' to '-0.3', it's possible it's because, due to some unavoidable tactics over the next 7 moves, that you'll have to give up the exchange in order to avoid losing your queen or getting checkmated. But it's hard to show the leap from "Here's the position now" and "Well, I evaluated 20 billion positions going forward, and trust me when I say that you sacrificing the rook for their bishop was the best you could hope for."

Occasionally a move from a grandmaster winning game is said to be "invisible" to a chess engine. Only after the move is made, the engine recognizes the high value of the move. This weakness in the engine could easily be remedied by more exhaustive checking of possible moves.

@D_M mentioned about Chessmaster, but it only reports very simple static features such as:

• Your queen is being attacked
• You lose a pawn in the computer line
• You win an exchange in the computer line

Do you know why Chessmaster did that? That's because the implementation was easy.

Can any engine tell me what I did wrong such that my score dropped from 2 to 1.4 (assuming I didn't hang a piece or pawn etc.)

NO. Chesmaster can't do that. No software can do that. We don't have the technology to do that. Traditional engine programming techniques can't do that.

To do what your describe, we need advanced mathematics/machine learning models. I'm not aware of anything like that.

• But... my version of Chessmaster DID go beyond just material, and told the user about positional considerations. Maybe you had an earlier version? And even if you don't believe me about Chessmaster for some reason, clearly it's possible to do with current technology, given that we in fact do currently have algorithms that score positions based on things like space and pawn position. Engines would be much weaker if the only thing they looked at was material.
– D M
Nov 6 '17 at 6:09
• @D_M No. I'm an experienced engine developer, I know what I'm talking about. It's possible, nothing is impossible. We have sent probes to the space, it's of course possible to build a more intelligent chess engine. But we don't have now. Nov 6 '17 at 6:10
• @D_M What positional considerations you mention in Chessmaster? Post outputs? Nov 6 '17 at 6:11
• There was an example output at chess.com/forum/view/general/chessmaster9 if you scroll down to near the bottom. "As a result of this line of play, your attack potential is increased. Additionally, the development of your pawns is somewhat improved." That's pretty much the output I remember. I'd give you more examples myself if Windows 10 was able to run my old Chessmaster 9000 CD (or if the CD drive wasn't broken on my old computer.)
– D M
Nov 6 '17 at 6:14
• I found another one here: chess.com/forum/view/chess-equipment/… "As a result of this line of play, you win a bishop and a pawn. Additionally, the mobility of your pieces is greatly enhanced, and Black's mobility is lessened. Also, Black's pawn formation is somewhat disrupted. Finally, the pressure on Black's King is somewhat increased, and the pressure on your King is slightly decreased."
– D M
Nov 6 '17 at 6:16

In addition to other answers, engines don't assess positions like humans, so they can't provide a good explanation why they think your move is inferior (emphasis on they think, not necessarily).

But you can follow sidelines using engine suggestions and understand why it was inferior. At least this is what I do.

Could there be an engine which can do this? I guess yes, but from business point of view, probably, an infeasibly huge effort is necessary.

• If you look at the evaluation function of chess engines, I'd say that they do assess positions in much the same way as humans do. The difference is that computers are able to evaluate lots of positions in various lines quickly while a human relies more on experience/general principles. Nov 6 '17 at 11:04

I think the chess engine can "tell" you, but in an indirect way.

What I would do is to play several different moves from the same position. The chess engine will (presumably) give you a different score for each one.

This will allow you to "rank" the various moves. Perhaps a pattern will emerge. If not, you might want to get a (stronger) human player to explain the chess engine's rankings to you.

Yes, I have seen programs that attempt to explain why a move is good or bad in language. Chessmaster 9000 would do this.

Many engines will show you the best line for each move. So it can tell you that if you play g6, it expects the game to go f5 gxf5 Nxf5, whereas if you play b6 it expects the game to go a5 bxa5 Bxa5. Often from there you can see why the move was good or bad. But sometimes it's still very subtle.

There is a tool here where you can input a position and it will tell you exactly why Stockfish evaluates the position the way it does. It only works for a static position (it doesn't look ahead at all), but it's still interesting.

• How do I use that tool? It seems like a htm document. How to open it and interact with it? Nov 5 '17 at 23:48
• Personally, I downloaded it, and then dragged-dropped the file into a browser.
– D M
Nov 6 '17 at 5:55

No. Although Chessmaster as mentioned by everyone can tell you some basic things like if the following line will result in an exchange sacrifice or you may lose a pawn and so so.

But you can also analyse this yourself by playing down the lines. There are no chess engines nor I see any in the near future that can explain why the move is good/bad unless it will cost you material difference. As a engine may have played a move to improve his position in the future say like after 50 moves. There is no way it can explain to you why this move will result in a better position after 50 moves.

Also major chess engines in the market like Stockfish etc. do not even bother to include such features as the level chess engines play at are completely different and very hard to analyse even if we are provided with explanation of every move.

• Chessmaster did say things like "As a result of this line of play, your attack potential is increased. Additionally, the development of your pawns is somewhat improved" or something, and didn't just limit itself to saying whether you'd win or lose material. At least my version did.
– D M
Nov 6 '17 at 6:00

The engine evaluation ("2"/"1.4") is in fact very similar to how a human would evaluate a position. It is basically a sum of various factors such as material, king safety, piece activity, etc. evaluated not for the current position but for the position some 20 moves ahead or so; assuming perfect play from both sides.

In principle one could try to monitor the change in all those factors separately (instead of only their sum as engines do). For instance if a move leads to a lower value for "king safety" later on compared to the best move, one might be tempted to tell the learner something like: Your last move made your king more vulnerable

However I doubt that this would work in actual games, because:

• the learner's move might in fact have other issues: for instance it might neglect development and only because of this the player might have to make concessions later on regarding his king's protection (assuming best play).
• many factors might change at the same time, some going up some going down for instance. Trying to express this in words might be cumbersome, e.g.: Your last move neglected king safety, but improved your piece's activity and you lost a pawn but occupied an open file Would this information be helpful to a learner?

Because of this, I doubt that computer's will be able to teach you positional or intuitive play (based on principles) at least with current technology. Better to use classical methods such as other humans, reading/watching/listening annotated games, etc

There've been attempts to make engines explain why moves are good or bad. Here's an example I am aware of.

You could try clicking through the example to see how helpful it is.