SciPy 2023

Disciplined Saddle Programming
07-12, 13:55–14:25 (America/Chicago), Zlotnik Ballroom

Our recent work implements a domain-specific language called Disciplined Saddle Programming (DSP) in Python. It is available at https://github.com/cvxgrp/dsp. DSP allows specifying convex-concave saddle, or minimax problems, a class of convex optimization problems commonly used in game theory, machine learning, and finance. One application for DSP is to naturally describe and solve robust optimization problems. We show numerous examples of these problems, including robust regressions and economic applications. However, this only represents a fraction of problems solvable with DSP, and we want to engage with the SciPy community to hear about further potential applications.


Convex-concave saddle problems are a class of optimization problems that generalize convex optimization and have a wide range of practical applications, including game theory, finance, and machine learning. A technical trick to convert to a single convex problem is called dualization. However, carrying out this conversion by hand can be tedious and error-prone.

In this context, we introduced Disciplined Saddle Programming (DSP) in a recent paper, and the accompanying Python package is implemented as an extension of CVXPY. It is available at https://github.com/cvxgrp/dsp. DSP is a domain-specific language (DSL) for specifying saddle problems for which the dualizing trick can be automated. DSP is based on the conic-representable saddle programs developed by Juditsky and Nem irovski, who showed how to carry out the required dualization automatically using conic duality. The DSP language and methods extend Nesterov and Nemirovski's earlier development of conic representable convex problems and can be seen as extending disciplined convex programming (DCP) to saddle problems.

There are numerous benefits of using DSP. The language makes it easier for practitioners to specify and solve saddle problems, and it can handle a wide range of optimization problems, including many robust optimization problems, which have recently gained wider attention. Indeed, some argue that most optimization problems should be solved as robust problems instead, as inputs are rarely obtained with absolute certainty. Further, hearing about even more applications from the SciPy community is an intended side effect to make the package easier to integrate for practitioners.

Just as DCP, and by extension CVXPY, made it easy for users to formulate and solve complex convex problems, DSP allows users to easily formulate and solve saddle problems. The method is implemented in an open-source Python package, also called DSP. This package provides a way to automate the dualization of saddle problems and provides a simple interface for users to formulate and solve complex problems in a structured and disciplined way.

In summary, disciplined saddle programming (DSP) is a new approach that can simplify solving saddle problems in convex optimization. It automates the dualization of saddle problems and provides a simple interface for users to specify and solve complex problems in a structured and disciplined way. DSP is designed to be easy to learn and use, and is compatible with the existing CVXPY framework. DSP has the potential to make saddle problems much easier to solve, which could have a significant impact on a wide range of fields that rely on optimization.

Main instructor Philipp Schiele
Philipp Schiele's educational background is in finance and economics and he is currently pursuing a PhD in financial econometrics at the Ludwig Maximilian University of Munich, where he taught various courses in statistics. He is a CVXPY maintainer and has presented a tutorial at SciPy 2022. Generally, he is enthusiastic about finance, optimization, and technology, especially open-source projects.

This speaker also appears in:

Eric Luxenberg is a PhD candidate in the Electrical Engineering department at Stanford University, advised by Stephen Boyd. His research interests include robust optimization and mathematical finance. He is a contributor to CVXPY, and has developed an open-source package for saddle optimization called DSP. He has also served as the primary instructor of Stanford’s convex optimization course.

This speaker also appears in: