CompEcon in Python

Last couple of years I’ve been working from time to time on porting from Matlab to Python the CompEcon toolbox that comes with the textbook by Miranda and Fackler (2002).

A major difference in this implementation is that much of the code is object-oriented, providing classes to represent:

  • Interpolation bases: Chebyshev, Spline, and Linear
  • Dynamic programming models: with discrete and/or continuous state and action variables
  • Nonlinear problems
  • Optimization problems

Some other differences are:

  • The solution of dynamic models is returned as a pandas dataframe, as opposed to a collection of vectors and matrices.
  • Some additional functionality is included, most notably for Smolyak interpolation.
  • Basis objects are callable, so they can be used to interpolation function by “calling” the basis.

Although I haven’t finished this task, there is some progress; to see what is available so far, check these Jupyter notebooks to see which demos have already been replicated with the Python version.

I have shared the source code in Github for some time now, but to make it easy to final users to start using the toolbox right away, I have uploaded it to PyPI. Assuming you have pip on your computer –as will be the case if you’ve installed Anaconda–, you can install the latest release of compecon by typing:

pip install compecon

at a terminal point.

Más sobre Python

En mi post anterior hablé brevemente acerca del creciente uso de Python en economía y cómo conseguirlo. Siguiendo sugerencias de un amigo, he escrito una nota más amplia sobre este tema, en el cual presento ejemplos concretos de tareas que se pueden realizar en Python. Los ejemplos tratan de (1) la solución de modelos de Cournot por métodos numéricos (Newton y colocación),  (2) importación de datos de Internet, (3) estimación de modelos econométricos, y (4) documentos dinámicos (en los que los cuadros y gráficos presentados pueden actualizarse automáticamente).

Python para Economía

Python es un lenguaje versátil y fácil de aprender —de hecho, es muy utilizado para enseñar cursos introductorios de informática.   Su sintaxis es muy clara, lo que facilita el desarrollo y mantenimiento del código.  A pesar de que aún no es tan popular como MATLAB entre economistas, es uno de los lenguajes más populares entre informáticos, por lo que existen múltiples facilidades para aprenderlo (libros, páginas de internet).  Es una excelente alternativa a MATLAB para cálculos científicos (gracias a paquetes como Numpy, Scipy, Matplotlib, y pandas) , en especial porque es completamente gratis.  En años recientes Python ha ganado popularidad entre economistas; por ejemplo, los siguientes libros usan Python para resolver modelos numéricos:

La mejor forma de conseguir Python es a través de Anaconda, una distribución gratuita que incluye más de 300 paquetes de gran utilidad en ciencias, matemática, ingeniería, y análisis de datos. Además de Python, Anaconda incluye herramientas como IPython (para ejecutar Python de manera interactiva), Jupyter (un editor que permite editar texto, código y resultados en un sólo archivo, excelente para documentar trabajos), Spyder (una interfaz gráfica para editar código, similar a la interfaz de MATLAB) y Conda (permite instalar y actualizar paquetes).  Vale aclarar que actualmente existen dos versiones de Python que no son enteramente compatibles entre sí, la 2.7 y la 3.6.  Yo recomiendo la versión 3.6.

Aunque Spyder facilita la edición de código, usuarios avanzados podrían preferir PyCharm, un excelente editor de Python cuya versión “Community” puede utilizarse gratuitamente. La versión “Professional” require de licencia, pero sus ventajas respecto a la “Community” (apoyo para editar páginas web, por ejemplo) no son tan relevantes para trabajos de economía computacional.