Programming Languages
I began my analytical work in Stata before quickly moving to R, where I spent many years building a suite of packages for structural estimation and Bayesian modeling. More recently, I’ve shifted primarily to Python to take advantage of its rich ecosystem of tools like JAX and scikit-learn.
- Python — Primary language; JAX, scikit-learn, NumPy/SciPy
- R — Extensive experience; authored numerous packages for statistical modeling
- C / C++ — High-performance computing, custom samplers
- Stata — Econometric analysis
- Stan — Probabilistic programming for Bayesian inference
- SQL — Data management and querying
Statistical & Quantitative Methods
- Bayesian Hierarchical Modeling
- Markov Chain Monte Carlo (MCMC) simulation
- Structural estimation of economic models
- Maximum Likelihood & Maximum Simulated Likelihood estimation
- Experimental design and analysis
- Risk preference elicitation and estimation
- Nonparametric and semiparametric methods
Computing & Infrastructure
- Massively parallel computing (GPU & multi-core)
- Linux systems administration
- Git version control
- Reproducible research workflows
Computational Tools
bamcmc — Massively Parallel Adaptive MCMC Sampler
A high-performance Bayesian sampler that adaptively selects proposal distributions based on the current state of many simultaneous MCMC chains. Designed for massively parallel implementations, enabling thousands of chains to be run and sampled from in parallel. Achieves several orders of magnitude speedup over popular alternatives when estimating complex hierarchical models.
rcocl — GPU-Accelerated MCMC Sampling for R
An R package that leverages OpenCL to run MCMC sampling on GPUs, bringing significant performance gains to computationally intensive Bayesian estimation problems.
halton — Halton Sequence Generator
A C++ implementation of Halton sequence generation for quasi-random sampling, useful in simulation-based estimation methods.
repres — Reproducible Research in R
A framework for managing reproducible research workflows in R, providing local package libraries and repositories to ensure consistent, version-controlled computational environments across projects and collaborators.
R Package Suite
A family of R packages for structural estimation of risk and time preferences, belief elicitation, and related econometric tasks.
| Package | Description |
|---|---|
| rcest | Structural model estimation framework with pluggable optimizers and delta method inference |
| rcguts | C++ backend — likelihood functions for risk and time preference estimation |
| rcbelief | Recover subjective beliefs from QSR tasks accounting for risk preferences |
| rcgen | Simulate choices from experimental economics instruments |
| rcstan | Stan integration for structural models |
| mopt | Collection of optimizers for rcest |
| mdists | Uncommon and reparameterized probability distributions |
oTree Experiment Applications
A suite of oTree applications for running incentivized economic experiments.
| App | Description |
|---|---|
| risk_task | Risk preference elicitation via binary lottery pairs |
| beliefs_task | Belief elicitation via QSR token allocation |
| hora_task | Lottery choice with histogram-displayed probability distributions |
| ca_task | Correlation aversion elicitation with lottery pairs |
| insturance_task | Lottery choices framed as insurance decisions |
| trust_game | Trust/send game |
| ultimatum_game | Ultimatum game |
| time_task | Discount rate elicitation via intertemporal MPLs |
| survey_task | YAML-configured questionnaires with JSON response storage |
| intro_task | Session setup, consent, welcome, and final payment display |
| logic_sub | JS library for dynamic survey response generation |