If you find this code helpful and use this code in your research, please cite the following paper. Note that this code is provided for academic research purposes only. This code is not licensed for commercial use.
Computing Bayes Nash Equilibrium Strategies in Auction Games via Simultaneous Online Dual Averaging.
Martin Bichler, Maximilian Fichtl, Matthias Oberlechner
Operations Research, 2023
BibTex for citation
@article{Bichler2023soda,
author = {Bichler, Martin and Fichtl, Maximilian and Oberlechner, Matthias},
title = {Computing Bayes Nash Equilibrium Strategies in Auction Games via Simultaneous Online Dual Averaging},
year = {2023},
journal = {Operations Research},
}
The code contains different projects and can be used to reproduce the respective results.
Project | Publication |
---|---|
soda | Computing Bayes Nash Equilibrium Strategies in Auction Games via Simultaneous Online Dual Averaging. Martin Bichler, Maximilian Fichtl, Matthias Oberlechner Operations Research, 2023 Also presented at the 24th ACM Conference on Economics and Computation, 2023 |
ad_auctions |
Low Revenue in Display Ad Auctions: Algorithmic Collusion vs. Non-Quasilinear Preferences. Martin Bichler, Alok Gupta, Laura Mathews, Matthias Oberlechner Working Paper, 2024 |
contests |
Computing Bayes Nash Equilibrium Strategies in Crowdsourcing Contests Martin Bichler, Markus Ewert, Matthias Oberlechner In 32nd Workshop on Information Technologies and Systems (WITS'22), 2022 |
We focus on incomplete-information (Bayesian) games with continuous type and action space. By discretizing the type and action space, and using distributional strategies, we can apply standard (gradient-based) learning algorithms to approximate Bayes-Nash equilibria (BNE) of given mechanisms.
- Single-Item Auctions
first- and second-price auctions with risk-aversion, different utility functions (quasi-linear, return-on-invest, return-on-spent) - All-Pay Auctions
first- and second-price (war of attrition), risk aversion - LLG-Auction
small combinatorial auction with 2 items, 2 local bidders, and 1 global bidder and correlated valuations of local bidders - Split-Award Auction
procurement auction with 2 agents and (dis-)economies of scale - Tullock Contests
different discrimination parameters - Crowdsourcing Contests
similar to allpay auction but with several prizes
- Dual Averaging
Gradient ascent with lazy projection, exponentiated gradient ascent - Mirror Ascent
projected gradient ascent, exponentiated gradient ascent - Frank-Wolfe Algorithm
- Fictitious Play
After setting up the repository (see Installation) you can either run experiments using the method in main.py or you can checkout the notebooks for a more detailed introduction.
Installation
Note: These setup instructions assume a Linux-based OS and uses python 3.8.10 (or higher).
Install virtualenv (or whatever you prefer for virtual envs)
sudo apt-get install virtualenv
Create a virtual environment with virtual env (you can also choose your own name)
virtualenv venv
You can specify the python version for the virtual environment via the -p flag.
Note that this version already needs to be installed on the system (e.g. virtualenv - p python3 venv
uses the
standard python3 version from the system).
activate the environment with
source ./venv/bin/activate
Install all requirements
pip install -r requirements.txt`
Install the soda package.
pip install -e .
You can also run "pip install ." if you don't want to edit the code. The "-e" flag ensures that pip does not copy the code but uses the editable files instead.
Install pre-commit hooks for your project
pre-commit install
Verify by running on all files:
pre-commit run --all-files
For more information see https://pre-commit.com/.