demo · 30 seconds
You vs the Model
Every number on this page is computed from choices you are about to make. The model fits your rationality with maximum likelihood, places you on a scale against systems that have actually been measured, and then uses your own fitted number to predict what you will do next.
Play. That is the whole instruction.
The model opposite you is a logit responder: it counts what you have played and answers that count with a distribution, not a best guess. Play a few rounds however you like — deliberately, randomly, stubbornly.
No rounds played yet.
Nothing here is scripted. The model draws its move from its own distribution before it sees yours, and every number on this page is computed from the rounds you just played.
Show the maths
The model plays softmax(λ · u₂(belief), λ = 3) against a Laplace-smoothed count of your choices. Its move is a draw from that distribution, not its mode, so it is beatable and it does not lock into a pattern.
Payoffs are the standard rock–paper–scissors matrix: +1 for a win, −1 for a loss, 0 for a draw. The implementation is apps/web/lib/demos/gametheory.ts.
Where your play sits
Your rationality parameter λ̂ is fitted by maximum likelihood on the choices you actually made, against the payoffs you actually faced. It is the same estimator the project runs on market data.
Play at least five rounds. Below that, and whenever no precision on the grid fits better than any other, the estimator refuses to quote a number instead of quoting a meaningless one.
Show the maths
λ̂ = argmaxλ Σt log softmax(λ · u₁(mixt))[at] over a grid of 401 points spanning λ ∈ [0, 20], where mixt is the distribution the model actually drew from in round t. The interval is the profile-likelihood set within 1.92 log-likelihood of the peak, which is the χ²(1) 95% cut.
The flat-likelihood guard is deliberate and matches the library's behaviour: benchmarks/results/toolkit_verdicts.json records flat_likelihood_warned = 1 as an acceptance case — the instrument warns instead of quoting.
Marks on the scale: λ = 1.2 is the bench every reciprocity and dynamics benchmark in this repository is read at; λ ≈ 4.78 is a least-squares logit fit to Goeree & Holt's (2001) matching-pennies subjects, computed on the Ten Little Treasures page from their published frequencies.
Now it plays your λ̂ back at you
Once your precision is fitted, the model can run the same logit rule forward with your number in it and say what you are about to do — before you do it. The expected move is ringed on the buttons above.
Not enough rounds to predict yet.
Play past five rounds and the prediction starts scoring itself.
Show the maths
The prediction is softmax(λ̂ · u₁(mixnext)), evaluated before your click and stored with the round. The scoreboard compares its mode with what you actually chose; no round is re-scored after the fact.
This is the honest version of “the model knows you”. In rock–paper–scissors the equilibrium is uniform, so a well-played opponent is unpredictable and a high hit rate is evidence you drifted off equilibrium, not that the model is clever.