Python implementation of the midasml approach - providing estimation and prediction methods for high-dimensional mixed-frequency time-series data
- Jonas Striaukas - jstriaukas
- Kris Stern - krisstern
- Marcus Egelund-Müller - Mem03
The midasmlpy package implements estimation and prediction methods for high-dimensional mixed-frequency (MIDAS) time-series and panel data in regression models. The regularized MIDAS models are estimated using orthogonal (e.g. Legendre) polynomials and the sparse-group LASSO estimator. For more information on the midasmlpy approach there are references in the footnotes12.
The package is equipped with the fast implementation of the sparse-group LASSO estimator by means of proximal block coordinate descent. High-dimensional mixed frequency time-series data can also be easily manipulated with functions provided in the package.
These can be found at the midasmlpy/src directory.
Compiled .so
files can be found at midasmlpy/compiled directory.
Please note that we have taken the .f90
source code for sparse-group LASSO from the repo of the R package sparsegl
on hosted GitHub at https://github.com/dajmcdon/sparsegl.
We have taken their source code in accordance with their GPL-2.0 license as is without any modification as of November 2nd, 2023 UTC.
Run:
gfortran -c fortran_file.f90
Run:
python -m numpy.f2py -c fortran_file.f90 -m fortran_file
Note: Be sure the python
executable above matches the one in your environment.
- A Julia implementation of the midasml method is available here.
- A MATLAB implementation of the midasml method is available here.
- An R implementation of the midasml method is available here.
To install the midasmlpy
package, download the files and at the directory of files run:
pip install .
To install the midasmlpy
package in development or “editable” mode, do the following:
pip install -e .
We recommend using the VS Code IDE for local development. After cloning this repo, before you install the midasmlpy
package, you should run the following commands in the Terminal one-by-one:
-
Go to the source file directory
cd midasmlpy/src/sparseglf90
-
Delete the original "sparsegllog_module_1.pyf" file in that directory.
-
Compile the f90 code with
f2py
python -m numpy.f2py spmatmul.f90 log_sgl_subfuns.f90 sgl_subfuns.f90 sparsegl.f90 sparsegllog.f90 -m sparsegllog_module -h sparsegllog_module_1.pyf python -m numpy.f2py --fcompiler=gnu95 -c sparsegllog_module_1.pyf spmatmul.f90 log_sgl_subfuns.f90 sgl_subfuns.f90 sparsegl.f90 sparsegllog.f90
Please note that the above instructions are exactly the same as the ones at midasmlpy/src/sparseglf90/README.md
-
Return to the root directory
cd ../../..
-
To install the
midasmlpy
package for development, first ensure that you have gfortran installed. Then do the following instead in “editable” mode:pip install -e .
We are using unittest
as the testing framework for our package. Please set up testing for this framework as per the instructions in the Python testing in Visual Studio Code document. If successful, VS Code should be able to autodetect the tests should be showing up at the Test Explorer view accessible via the beaker icon displayed on the VS Code Activity bar. Note we have assumed that you have the Python extension installed and a Python file open within the editor.
To run the tests, please click on the run icon next to the tests in the Test Explorer, like in the screenshot below:
Note
The run icon only shows up if you hover your cursor over the relevant test(s) in the Test Explorer.
In case you are running the code on a different platform, you can compile the Fortran code <tt>
sglfitF.f90</tt>
by using <tt>
f2py</tt>
which is part of <tt>
numpy</tt>
. There is a guide in midasmlpy/src/sparseglf90/README.md
Footnotes
-
Babii, A., Ghysels, E., & Striaukas, J. High-dimensional Granger causality tests with an application to VIX and news, (2022) Journal of Financial Econometrics, nbac023. https://doi.org/10.1093/jjfinec/nbac023. ↩
-
Babii, A., R. Ball, Ghysels, E., & Striaukas, J. Machine learning panel data regressions with heavy-tailed dependent data: Theory and application, (2022) Journal of Econometrics. https://doi.org/10.1016/j.jeconom.2022.07.001. ↩