This repository contains a reference implementation of the Markowitz portfolio optimization problem discussed in the paper Markowitz Portfolio Construction at Seventy.
This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements. This version of CVXPY supports Python 3.8 through 3.12. While working on the next release, we continue to officially support
CVXPY 1.5 and 1.4.
This release may not be compatible with NumPy 2.0.
ECOS deprecation
CVXPY has used ECOS as the default solver for many years; however, it has known issues with performance and numerical stability in edge cases. Recently, a new solver, Clarabel, that improves the algorithm and implementation of ECOS has been under development.
In this release, CVXPY uses Clarabel instead of ECOS for all categories of problems where ECOS was previously the default.
In 1.6, we plan to no longer install ECOS as a CVXPY dependency. We have no plans to remove support for calling ECOS as a solver.
We encourage you to try and use Clarabel instead, but if you're dependent on ECOS's exact behavior please explicitly specify it as a solver and as a dependency for your project.
Features and bug fixes
Major updates to the documentation, adding a number of new sections to the User Guide and breaking up the monolithic Advanced features page [Many PRs] @Transurgeon
Added .curvatures containing all curvatures an expression is compatible with #1540@sunnygurm
Variable bounds can be specified with cp.Variable(bound=(lower, upper)) and are directly passed to the solver when helpful. lower and upper can be either a NumPy array or floating point number. #2234, #2321@Paulnkk, @SteveDiamond
Constants can be named by writing cp.Constant(name='...')#2335@SteveDiamond
Added a new atom, vdot, that has the same behavior as scalar_product#2371@Transurgeon
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps cvxpy from 1.4.3 to 1.5.1.
Release notes
Sourced from cvxpy's releases.
... (truncated)
Commits
5bc7313
Releases 1.5.1d4c69ff
Patch 1.5.1 (#2440)44994f8
Fixes docs.ymlb14518b
Bumps to 1.5.14efa32c
Releases 1.5.0460baae
Fixes cvxpy-base for real this time27e0542
Finishes release notes8d1f6ca
Fixes cvxpy-base builds4230150
Fixes solver optionsa0313f0
Adds Parth, removes duplicate Philipp (#2432)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show