路线图和更新日志
路线图
PyPortfolioOpt 现在是一个成熟的软件包,它很稳定,我不打算添加大的新功能(但是我将努力修复错误)。
1.5.0
后台的主要重新设计,感谢 Philipp Schiele 。 - 我们使用了
cp.Parameter
,现在可以用不同的常数(如风险目标)有效地重新运行优化问题。 - 这导致了绘图性能的显著提高,因为我们不再需要重复地重新确定EfficientFrontier
。一些错误的修正(感谢 Eric Armbruster 和 Ayoub Ennassiri )
1.5.1
在 1.5.0 版本的发布中,把版本划分弄错了。Sorry!
1.5.2
小的错误修复
1.5.3
重新包装:
cvxpy
不再是必要依赖,因为我们默认使用ECOS_BB
进行离散分配。将最小的 python 版本提升到
3.8
。我希望能保持尽可能多的版本兼容(我认为大部分的功能应该能在3.6, 3.7
下工作,但依赖关系变得太棘手,难以管理)。改为 numpy 伪逆,以允许现金资产。
有效前沿绘图支持 Ticker 标签
1.5.4
修正了
cvxpy
废除了deepcopy。感谢Philipp的修复!其他一些微小的检查和错误修复。为大家的报告喝彩!
Fixed
cvxpy
deprecating deepcopy. Thanks to Philipp for the fix!Several other tiny checks and bug fixes. Cheers to everyone for the PRs!
1.5.5
Tuan Tran 现在是 PyPortfolioOpt 的主要维护者。
大范围的错误修复和代码改进。
1.4.0
终于实现了 CVaR 优化! 这一直是人们要求最多的功能之一。非常感谢 Nicolas Knudde 的初稿。
重新架构了绘图功能,因此用户可以传递一个坐标轴,允许复杂的绘图(见 cookbook)。
计算最大收益组合的辅助方法(感谢 Philipp Schiele) 的建议)。
一些错误修复和测试改进(感谢`Carl Peasnell <https://github.com/SeaPea1>`_ )。
1.4.1
100%的测试覆盖率
重新组织了文档;增加了 FAQ 页面
重新组织了模块结构,使其更具可扩展性
支持 Python 3.9、dockerfile 版本化、其他包装改进(如 cvxopt 可选)。
1.4.2
完成了 CDaR 优化 - 完全归功于 Nicolas Knudde 。
一些错误的修正
1.3.0
大幅改进了绘图功能:现在可以绘制受限的有效前沿图了
有效的半方差投资组合(感谢 Philipp Schiele )
改进了空头投资组合的功能(感谢 Rich Caputo )。
测试覆盖率大幅提高(感谢 Carl Peasnell )。
一些错误的修复和可用性的改进。
从 TravisCI 迁移到 Github Actions。
1.3.1
小清理(被遗忘的 v1.3.0 的提交)。
1.2.0
增加了 Idzorek 的方法,用于计算给定百分比置信度的
omega
矩阵。修正了最大夏普比率,以允许自定义约束。
分组了区域约束
改进了错误回溯
增加了新的示例(正在进行中)。
打包:添加了更好的 Windows 说明,添加了 docker 支持。
1.2.1
修复了区域约束中的关键排序错误
1.2.2
Matplotlib现在是必要依赖;支持 pandas 1.0。
1.2.3
增加了对改变求解器和详细输出的支持
将 dict 改为 OrderedDict 以支持 python 3.5。
改进了打包/依赖性:简化了 requirements.txt,改进了推送前的流程。
1.2.4
修正了 Ledoit-Wolf 收缩计算中的错误。
修正了绘图文档中的错误,该错误导致它们无法绘制。
1.2.5
修正了
cvxpy
中的复合问题(感谢 Aditya Bhutra )。改进了高级 cvxpy API(感谢 Pat Newell )。
废弃了 James-Stein
在 HRP 中公开了
linkage_method
。增加了对 cvxpy 1.1 的支持。
增加了对
efficient_risk
的错误检查。对文档进行了小的改进。
1.2.6
修正了 Black-Litterman
market_implied_prior_returns
中的顺序依赖错误。修正了 BL cookbook 中的不准确之处。
修正了指数协方差中的错误。
1.2.7
修正了做空/做多投资组合需要保守的风险目标的错误。
1.1.0
对
risk_models
进行了多项补充和改进:引入了一个新的 API,其中函数
risk_models.risk_matrix(method="...")
允许调用所有不同的风险模型。这应该使测试更容易。如果你设置了标志
returns_data=True
,所有方法现在都接受返回数据而不是价格。
自动修复非半正定协方差矩阵!
对
expected_returns
的增加和改进:引入了一个新的 API,其中函数
expected_returns.return_model(method="...")
允许调用所有不同的收益模型。这应该使测试更容易。增加了“适当”复合收益的选项。
增加了 CAPM 收益模型。
from pypfopt import plotting
: 将所有绘图功能移到一个新的类中,并添加了 新的绘图。所有其他绘图功能(分散在不同的类中)都被保留,但从现在已经开始 deprecated。
1.0.0
将依赖从
scipy
迁移到cvxpy
,并对 API 进行了重大的修改。PyPortfolioOpt 现在更加强大和稳定。
这些变化不会影响到基本用户,他们仍然可以使用
max_sharpe()
等功能。额外的目标和约束(包括 L2 正则化)被添加。
增加了有效前沿、分层聚类和HRP树状图基本绘图功能。
增加了一个基本的交易成本目标。
对一些模块和类进行了突破性的修改,使 PyPortfolioOpt 将来更容易扩展:
用
BaseConvexOptimizer
替换了BaseScipyOptimizer
。hierarchical_risk_parity
被hierarchical_portfolios
取代,以便为其他分层方法留出空间。遗憾的是,暂时删除了 CVaR 优化,直到我能够正确修复它。
1.0.1
修正了 CLA 中的小问题:权重调用的错误,efficient_frontier
需要调用权重,set_weights
不需要。
1.0.2
修正了传递 expected_returns=None
失败的小而重要的错误。
现在如文档所写,用户如果他们只想优化最小波动率,可以只传递协方差。
0.5.0
Black-Litterman 模型和文档。
每个资产可以自定义界限
改进了
BaseOptimizer
,增加了一个将权重写入文本的方法并修复了set_weights
中的一个错误。无约束二次效用优化(分析)
修改了文档,增加了关于属性类型的信息和更多的例子。
0.5.1
升级 pandas,修正了点积的一个错误。
0.5.2
将 PuLP、sklearn、noisyopt 作为可选的依赖项,以改善安装体验。
0.5.3
修正了
EfficientFrontier.efficient_risk
中的一个优化错误。如果优化失败,现在会抛出错误。增加了一个隐藏的 API 来改变 scipy 的优化方法。
0.5.4
改进了 Black-Litterman 线性代数,以避免倒置不确定性矩阵。现在能够对观点有 100% 的信心。
澄清了关于 tau 的作用。
为使用
pipenv
的用户添加了一个pipfile
。从文档中删除了 Value-at-risk 防止误用,直到它被正确修复。
0.5.5
开始向 cvxpy 迁移,将离散分配后端从 PuLP 改为 cvxpy。
0.4.0
对
discrete_allocation
的重大改进,增加了分配空头的功能;修改了 Dingyuan Wang 建议的线性编程规划;
在用户指南中增加了后期处理部分。
进一步重构了
HRPOpt
的内容和文档。重大文档更新,例如,支持自定义优化器
0.4.1
在得到 Marcos López de Prado 博士的许可后,重新加入了 CLA。
增加了对不同风险模型的测试。
0.4.2
对
clean_weights
的小修复删除了对 python 3.4 的支持。
对半方差的小改进,感谢 Felipe Schneider 。
0.4.3
增加了
prices_from_returns
实用函数,并为returns_from_prices
提供了更好的文档。增加了
cov_to_corr
方法,从协方差矩阵生成相关矩阵。修正了 readme 例子。
0.3.0
合并了 Dingyuan Wang 的一个牛逼的 PR,该 PR 重构了项目,使其更加自洽和易于扩展。
新的算法: ML de Prado 的 CLA
将连续分配转换为离散分配的新算法(使用线性规划)。
合并了一个 PR 实现单因素和常数相关收缩。
0.3.1
合并了来自 TommyBark 的 PR 。
修正了调用 portfolio_performance
的参数中的一个错误。
0.3.3
迁移到使用 poetry
依赖管理器。仍保留 setup.py
和 requirements.txt
,但 poetry
现在是推荐的方式。
0.3.4
重构了收缩模型,包括单因素和常数相关。
0.2.0
分层风险平价优化
半方差矩阵
指数协方差矩阵
CVaR 优化
更好地支持自定义目标函数
多个错误修复(包括最小波动率与最小方差)。
重构后使所有优化器都继承自
BaseOptimizer
。
0.2.1
在travis构建中包含 python 3.7
合并了来自 schneiderfelipe 的 PR,修正了一个错误信息。
0.1.0
初次发布:
有效边界(最大夏普、最小方差、目标风险/收益)
L2 正则化
离散分配
历史平均收益,指数平均收益
样本协方差,sklearn 包装器
测试用例
文档
0.1.1
错误修复和文档更新