Decisions under uncertainty, measured

aqueval is an independent research project on decision-making AI for games. It develops a chess engine and a poker AI from scratch, and you can play against both in your browser. Every change is tested over thousands of games before it is kept, and every result is published, including the failures.

33 changes in 44 SPRT runs: 26 accepted, 6 rejected, 1 inconclusiveWorking paper / independent research2 active programmesSnapshot · 5 Nov 2026
K = 0.00
A Kalman filter on a simulated signal: noisy readings, the estimate and its 95% band

Principle

No single game decides anything. aqueval studies decisions under uncertainty through verified engines, reproducible experiments and statistical evidence.

≈2980
Elo against Stockfish 17
26 of 33
Improvements kept
0
Poker rule errors
558,803
Hands per second

At a glance

What has been built so far, the evidence for each piece, and the methods behind it. Each entry links to the page where it is measured.

WorkEvidenceMethods and tools
Chess engine in Rust, written from scratch 33 changes tested in 44 SPRT runs, 26 accepted; ≈2980 Elo against strength-limited Stockfish 17 RustAlpha-beta / PVS searchBitboardsSPRT, pentanomial statistics
Neural network that judges chess positions Own NNUE trained on 87.3 million self-play positions on CPU; ≈2560 → ≈2875 Elo in the October gauntlet Neural network trainingQuantised SIMD inferenceSelf-play data
Poker engine for No-Limit Hold'em 0 rule mismatches in 914,873 decisions against PokerKit; 558,803 hands per second on one core Python 3.13NumbaDifferential testing
Poker solver, checked against known solutions CFR, CFR+, Discounted CFR and Monte Carlo CFR match OpenSpiel on Kuhn and Leduc poker Counterfactual regret minimisationExploitabilityValidation against OpenSpiel
Poker strategy for two players Monte Carlo CFR on 23.2 million infosets, 988 million iterations; beats four rule-based agents by 1.5 to 4.4 big blinds per hand Card abstraction (EMD clustering)Local best responseDuplicate matches
Data on how people play poker 21.6 million hands from 2009 parsed without error; 174 million decisions, split by player Data pipelinePlayer-level splitsSelection bias
Thinking ahead during a poker hand (planned) Depth-limited subgame solving for bets outside the abstraction; not started Subgame solvingAction translation

Programmes

Chess is a game of perfect information, poker one of hidden information. Both use the same discipline: a verified engine first, then measured improvements.

Painting: two men at a chessboard in a dark panelled studyPainting: three sisters around a chessboard, one of them looking up
Thomas Eakins, The Chess Players, 1876; Sofonisba Anguissola, The Chess Game, 1555

Chess engine

Version 1.0 released

A chess engine in Rust that judges positions with its own neural network, trained only on its own games. Version 1.0 is released as aqueval chess. The next step is a second, stronger network.

≈2980Elo estimate against strength-limited Stockfish 17, 5 November
Changes accepted
26 of 33
Test method
SPRT against the current main branch
Next milestone
Second network: gen-1 self-play data (running)
Open the chess engine
Painting: two men cheat a young card player, one signalling from behind himPainting: card players at a table, one drawing an ace from behind his back
Caravaggio, The Cardsharps, about 1595; Georges de La Tour, The Cheat with the Ace of Clubs, about 1630

Poker

Phase 2 of 5

A poker AI for No-Limit Texas Hold'em: first a strategy that is hard to exploit, then a model of how people actually play, and both compared. It runs only in simulation, never on real poker sites.

0rule mismatches in 914,873 decisions checked against a reference implementation
Against Slumbot
−11 ± 15 bb/100 over 10,000 hands, not distinguishable from break-even
Human data
21.6 million hands, 174 million decisions
Next milestone
Benchmark against GTO Wizard (planned)
Open the poker programme

How we test

The same four steps apply to a pruning margin in chess and to a new strategy in poker.

  1. One changeper branch
    Each change is a hypothesis on its own branch, measured against the current best version.
  2. Correctness firstperft, rules reference
    Perft node counts in chess, a rules reference in poker. Nothing is measured before it is verified.
  3. Sequential statisticsSPRT, duplicate matches
    SPRT in chess, duplicate matches with confidence intervals in poker. Tests stop when the evidence is sufficient.
  4. Recordwith its error margin
    Accepted, rejected or inconclusive, every result goes into the log with its error margin.
  5. Chess so far26 accepted · 6 rejected · 1 inconclusive

About this project

aqueval is an independent research project on engines for games of perfect and hidden information. Code is written and tested in isolated environments; long runs execute on a single workstation. Results appear here once a milestone has been measured. The poker engine runs only in simulation and never on a live poker site.

About me

  • Rust
  • Python · Numba
  • Search algorithms
  • Statistical testing (SPRT)
  • Game theory (CFR)
  • Neural networks (NNUE)
  • Differential testing
  • Reproducible experiments

Deniz

I am Deniz. aqueval is my side project: a chess engine and a poker bot, built with the help of AI coding agents. I decide what gets built and how it is tested, and every result ends up here, including the ones that failed.

Cite this work (BibTeX)
@misc{aqueval2026,
  author = {Deniz},
  title  = {aqueval: Engines for Games of
            Perfect and Hidden Information},
  year   = {2026},
  note   = {Working paper, updated 5 November 2026},
  howpublished = {Local research page}
}

Follow, verify, get in touch

Explore the chess-engine source and releases, or contact Deniz about methods and results. Poker results are documented in the supplied milestone reports.

Code and test log

Chess-engine source code, test history and documentation in the aqueval-chess repository.

Open the repository
Milestone updates

Versioned chess-engine releases and their documented changes.

View releases