This paper presents the Etace Virtual Appliance. The purpose of the software package is, among others, to provide researchers the possibility to explore the dynamics of the Eurace@Unibi agent-based macroeconomic model and to encourage the reproducibility and transparency of research. The package contains various components that allow the user to initialize, simulate and analyze the model. We also give a short overview of what can be done with the Etace Virtual appliance.
In brief, my current position is fully funded by the German Research Foundation (DFG) as part of my research project on heterogeneous agents and nonlinear Bayesian estimations.
With the OSE initiative I also successfully raised funding for teaching and research infrastructure.
Prior to joining the University of Bonn I spent two years as a Postdoc at the
IMFS at
Goethe University Frankfurt
in cooperation with the
Hoover Institution at
Stanford University (longer-term visits in Stanford in 2018 and 2019).
I completed my PhD at the
University of Amsterdam
and
Bielefeld University, supervised jointly by
Cars Hommes and
Herbert Dawid.
I won the 2017 Student Price of the Society for Computational Economics.
Before my academic life I have worked as a professional guitar player and as an IT consultant for several start-up companies.
For many
reasons
I support the use of free and open source software in science.
As such, I think that the access to software must be unrestrained by expensive and restrictive licenses. Implementations should be tractable, and libraries easily extensible. Openness is a booster for performance and flexibility.
My packages can be found on GitHub:
econpizza
pydsge
dime_sampler
DIMESampler.jl
dime-mcmc-matlab
econpizza is a package for simulating nonlinear general equilibrium models, including heterogeneous agent models (and including a simple syntax for expressing and parsing models).
It uses a robust shooting algorithm based on automatic differentiation.
Example heterogeneous agents models (and representative agent models) are provided. The methodology behind this package is documented in
this draft.
pydsge is a Python based solution and simulation toolbox, specifically targeted to provide tools for nonlinear filtering and estimation of models with occasionally binding constraints. Its back-end for nonlinear filtering is
econsieve, a hybrid between the Particle filter and the Kalman filter. Both packages are explained in the respective
method paper above.
dime_sampler (Python),
DIMESampler.jl (Julia) and
dime-mcmc-matlab (matlab)
provide the differential-independence mixture ensemble (DIME) MCMC sampler from my paper on ensemble MCMC sampling. DIME MCMC is a (very fast) global multi-start optimizer and, at the same time, a MCMC sampler that converges to the posterior distribution. This makes any posterior mode density maximization prior to MCMC sampling superfluous. The DIME sampler is pretty robust for odd shaped, multimodal distributions. DIME MCMC is parallelizable: many chains can run in parallel, and the necessary number of draws decreases almost one-to-one with the number of chains.
I maintain a
compilation of unsolved problems in macroeconomics, please be invited to browse or
contribute
(or shoot me a short email).
Macro Puzzles
Some useful econ-related links:
On econometrics:
-
This interactive online textbook (by Roger Labbe) gives an excellent and hands-on introduction into Bayesian filtering.
-
This post explains very nicely how the Hamiltonian Monte Carlo (HMC) Sampler works and, en passant, shows why using Metropolis Hastings might not be a good idea for many problems in practice. Note that HMC is also behind the NUTS sampler used in Stan (a widely used sampling package), but not very feasible for many applications in structural (macro-)econometrics. The reason is that HMC requires the evaluation of the gradient at each draw, which is relatively costly for most of our likelihood functions. Have a look at the DIME sampler if you are looking for a powerful multi-purpose sampler.
Why I use (and endorse) Python:
-
Python (with
numba
or
jax) is incredibly fast
-
Python is easy to debug and provides meaningful error messages
-
Python is a general purpose language, and (truly) object-oriented
-
Python is free and open source. There are no limiting licences or any additional costs
-
Python is matured: updates don't tend to break things and bugs are very rare.
Mayor tech firms just recently invested heavily into Python (jax by google, PyTorch by Meta, amazon, ...), so it will probably be around for longer
-
Python is well documented and has a huge active user base. The answers to many questions can be found on Stack Overflow
-
Python enforces a high code quality and readability
-
Knowing python is also an asset outside of academia. It is the industry standard in machine learning and big data
-
There are a trillion well documented and well tested packages out there for essentially any purpose
-
Python is very well integrated into modern software development workflows (version control and continuous integration using github, automatic documentation using sphinx)
-
"Writing reusable code in matlab is like ordering food in Klingon." (The Unknown PhD Student)
On programming:
Some more handy Python packages:
-
numba - probably by now the first address to speed up your code.
-
jax - emerging to be the new numba.
Developed and endorsed by google.
Different philosophy featuring automatic differenciation.
-
emcee provides very powerful and easily paralellizable MCMC sampler.
-
chaospy - for quasi-random numbers and uncertainty quantification.
-
filterpy (by Roger Labbe, see above) is a collection of linear and nonlinear Bayesian filters.
-
interpolation.py (also by Pablo Winant) provides fast-as-light interpolation tools.