Ben Brooks

Department of Economics
University of Chicago (email)

This page hosts my software projects. Needless to say, these are all works in progress. Bug reports are greatly appreciated. Please send them here. You can also find me on GitHub.



developed with Dilip Abreu and Yuliy Sannikov

The SGSolve package consists of tools for solving for the pure strategy subgame perfect Nash equilibria of two player stochastic games with perfect monitoring. The code implements the algorithm of Abreu, Brooks, and Sannikov (2016). The package also contains a graphical interface called SGViewer that can be used to specify, solve, and explore the solutions of stochastic games. Here is a screenshot of SGViewer setting up a game, and here is SGViewer displaying the output of the solver.

You can download pre-compiled binaries of SGViewer (aka stand-alone and ready-to-use programs) for:

Mac OS X

The source code for SGSolve is freely available through the GitHub page under the terms of the GPLv3 license. You can find pre-built documentation for the source code here.


developed with Dirk Bergemann and Stephen E. Morris

Bayes correlated equilibrium (BCE) is a solution concept for games of incomplete information, and is analogous to correlated equilibrium for complete information games. Broadly speaking, the set of BCE corresponds to the joint distributions over actions and hidden state variables that can arise for some information structure and Bayes Nash equilibrium on that information structure. As such, the set of BCE is a prediction for the outcome of a game that is robust to different assumptions about the players' information. What's more, BCE are defined by a set of linear constraints on the joint distribution of actions and the state. With the addition of a linear objective, such as a weighted sum of players' equilibrium payoffs, one has a linear program.

This package consists of tools for finding the set of BCE for a given game. There is an abstract class for games, from which the user can derive classes for their own game of interest. We include examples for auctions and Bertrand competition. In addition, there are classes for using CPLEX to solve for the set of BCE, and a serialization class that uses Boost to save games for further analysis. There is also an interface called bcemex and a graphical interface called bcegui for studying the solution information in MATLAB. All of the tools have been tested on Linux using gcc, but the mex file has also been compiled on Microsoft Windows using mvcc. Here is a picture of our graphical interface in action.



developed with Dilip Abreu, Moshe Katzwer, Rohit Lamba, and Yuliy Sannikov

RGSolve is a Java implementation of the algorithm of Abreu and Sannikov (2013) for solving two player infinitely repeated games with perfect monitoring. The algorithm leverages special structure of equilibria that generate extreme payoffs to quickly find the set of equilibrium payoffs. RGSolve is a standalone program that allows the user to interactively design and solve repeated games within the aforementioned class. The program is hosted at the website for Princeton's William S. Dietrich II Economic Theory Center. You can also find an online applet for solving games here.

Main page.