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 Reserach Foundation (DFG) as part of my reserach project on 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.
During my PhD I was financed by scholarships from the Bielefeld Graduate School in Economics and the DFG.
I obtained my MSc in economics from the University of Granada (top of class) and studied economics at Humboldt University Berlin at undergraduate level. I have worked as a professional guitar player and as an IT consultant for several start-up companies.
I am an enthusiast user of
Arch Linux and Python.
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.
I am in particular sceptical towards closed ecosystems like
matlab
and think it is a
barrier
towards future scientific
advancement ("writing reusable code in matlab is like ordering food in Klingon").
See the
collection of links
below for some references on this issue.
As code is getting more and more important, I advertise code sharing and cooperation on new implementations. To that end I encourage the use of
style guides
(they can also be
automatized)
and
version control systems.
My packages can be found on GitHub:
econpizza
pydsge
dime_sampler
DIMESampler.jl
dime-mcmc-matlab
econpizza is a generic nonlinear solver for general equilibrium models, including heterogenous agent models (and including exressing and parsing models).
It uses an alternative shooting algoritm that is faster and more robust than the extended path method implemented in Dynare.
Example heterogenous agents models (and representative agent models) are provided. The 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 (truely) 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)
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.