I am developing in my free time a python-based supervised chess engine. It is trained on past games to detect who wins (only games without draw), then it proceeds as follows:

1) find the top 4 moves based on static evaluation

2) search until depth four with minimax-algorithm

3) evaluation = 1/2 *( probability of white winning the game + probability based on the material difference)

The first probability is based on supervised learning. I play occasionally chess and when I played on Xboard against this engine, then me and the engine make mistakes. I wanted to ask you, based on your experience if you could look at one game (me=white, engine = black) and maybe find some explanation for the mistakes the engine makes or even maybe suggest an approximate elo of the engine, if this is possible with only one game?

Thanks for your help.(I am not sure how to correctly tag this question)

[fen ""]
1. d4 Nc6 2. Nf3 e6 3. e4 Nf6 4. Nc3 Bb4 5. Bb5 Nxe4 6. Qd3 Nxc3 7. bxc3 Bd6 8. Bxc6 dxc6 9. O-O f5 10. Bg5 Be7 11. h4 Qd6 12. Bxe7 Kxe7 13. Ng5 h6 14. Nf3 Bd7 15. c4 c5 16. Rab1 Bc6 17. Ne5 cxd4 18. Ng6+ Kf7 19. Nxh8+ Rxh8 20. Rb4 Be4 21. Qa3 a5 22. Qxa5 b6 23. Qa3 Ra8 24. Qb3 Bxc2 25. Qb2 Be4 26. c5 Qxc5 27. Rb5 Qc4 28. Qb3 Qxb3 29. axb3 Ke7 30. Rc1 c6 31. Rxb6 f4 32. f3 Bd5 33. Rb7+ Kf8 34. b4 Kg8 35. Rd1 c5 36. Rc7 Bb3 37. Rd2 Ra1+ 38. Kh2 cxb4 39. Rxd4 Bd5 40. Rxb4 Bxf3 41. gxf3 Ra2+ 42. Kh3 Rd2 43. Rc8+ Kh7 44. Rbc4 Kg6 45. Rxf4 e5 46. Re4 Kf6 47. Re8 Rd4 48. R4xe5 Kg6 49. R5e6+ Kh7 50. R6e7 Kg6 51. Rg8 Kf5 52. Rexg7 Ke5 53. Rh7 Rd2 54. Rxh6 Kf4 55. Rf8+ Ke3 56. Re6+ Kd4 57. Rd8+ Kc3 58. Rc8+ Kb3 59. Rb6+ Ka3 60. Ra8# *
  • Welcome on Chess.CE. Can you explain how you built your engine's static evaluation of moves ?
    – Evargalo
    Feb 4, 2019 at 9:46
  • 1
    @Evargalo : First I build from a position a feature vector with features such as the number of attacks or attackers and the number of pieces of a given color etc. Then I train the engine to detect based on these features who will win the game (which it detects with probability 70%) Then I apply the softmax function to evaluat whites winning probability.
    – user18387
    Feb 4, 2019 at 9:49

1 Answer 1


Well done for your engine. I think a positional mistake was 9...f5. It weakened the king position, and without any compensation in return. The move also seriously made the e5 square weak.

Why your engine didn't make a simpler 9...h6? Probably, your engine put too much focus onto material differences into your NN network? You'll have to spend some time on debugging. Your engine needed better understanding of king's safety. Your search depth was also too low.

I estimate FIDE 1600 for your engine.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.