# Software

This page lists software I have authored along with others’ software that I often recommend to others.

## Authored Software

**pyblp: BLP Demand Estimation with Python 3**

*with Chris Conlon*

Open-source Python 3 package for estimating demand with BLP-type random coefficients logit models. Features include supply-side moments, demographics, nesting parameters, optimal instruments, partial ownership matrices, analytic gradients, fixed effect absorption, fixed point acceleration, sparse grid integration, synthetic data construction, merger simulation, and parametric bootstrapping of post-estimation outputs.

**pyhdfe: High Dimensional Fixed Effect Absorption with Python 3**

*with Anya Tarascina*

Open-source Python 3 package for algorithms that absorb high dimensional fixed effects. Features include matrix residualization, degrees of freedom computation, and common convergence criteria to facilitate algorithm comparisons.

## Recommended Software

**SQLite**

Simple relational database system. SQLite is much easier to set up than client-server systems, but contains all the functionality needed by most researchers to structure and build relations between many datasets. It also comes pre-packaged in Python as the sqlite module.

**Ibis**

Python package that uses familiar pandas-like syntax to build and execute SQL queries. It allows for construction of complex queries and integrates nicely into a Python research workflow.

**rpy2**

Python package that allows researchers to run R functions in Python. This is incredibly useful when a research project is written in Python but relies on statistical routines implemented only in R.

**SymPy**

Python package for symbolic mathematics. Think Mathematica or Maple, but open-source and easier to integrate into modern workflows.

**lfe**

*by Simen Gaure*

Flexible R package for estimating linear models with high-dimensional fixed effects.

**reghdfe**

*by Sergio Correia*

Similar Stata package.

**Selenium**

System for web browser automation. Selenium can simulate clicks and keystrokes to automate the chore of clicking through a website. For example, it can be used to scrape data from a website that lacks a modern API. Python integration is simple with the selenium package.