← ClaudeAtlas

lib-pyportfoliooptlisted

Textbook mean-variance and Black-Litterman optimizer whose HRPOpt silently accepts a price matrix where it requires returns and returns plausible garbage. TRIGGER - pypfopt, PyPortfolioOpt, EfficientFrontier, HRPOpt, CovarianceShrinkage, DiscreteAllocation, BlackLittermanModel, EfficientCVaR, EfficientSemivariance, CLA, mean_historical_return, capm_return, clean_weights, max_sharpe, min_volatility, portfolio_performance, risk_models.risk_matrix, "efficient frontier", "whole-share allocation". Memory is stale - the repo moved to the PyPortfolio org and 1.6.0 shipped 2026-02-26 after three dormant years under a new maintainer. SKIP for Marcenko-Pastur denoising, HERC or NCO (lib-riskfolio) and for GridSearchCV over portfolio models (lib-skfolio). SKIP for choosing between libraries, or when no library is named - the domain skill's job.
howard-lynn-ye/fin-skills · ★ 1 · AI & Automation · score 77
Install: claude install-skill howard-lynn-ye/fin-skills
# PyPortfolioOpt Textbook mean-variance, Black-Litterman and efficient frontiers with the best prose docs in the category — the right teaching and prototyping choice, and the wrong one the moment you need denoising, HERC or NCO. | | | |---|---| | pip / import | `PyPortfolioOpt` (resolves as `pyportfolioopt`) / **`pypfopt`** | | Version | **1.6.0** (2026-02-26) | | Licence | MIT. `requires_python` is **unset on PyPI** — the package declares no floor at all | | Status | ⚠️ **revived, cautiously healthy** — repo now `github.com/PyPortfolio/PyPortfolioOpt`, 6,007★ / **113 open issues**, pushed 2026-07-07 | The old `robertmartin8/PyPortfolioOpt` URL **redirects** to a `PyPortfolio` GitHub org. The project went nearly dormant — 1.5.5 (2023-05), 1.5.6 (2024-12), no feature release for ~3 years — then shipped 1.6.0 under new stewardship. Robert Martin remains the PyPI author of record; the project's own `docs/Roadmap.rst` names **Tuan Tran as primary maintainer** (issue #587). 113 open issues is a real backlog — treat responsiveness as moderate, not high. ## The trap that costs you money 🚨 **`HRPOpt(returns=...)` takes a RETURNS matrix.** Pass prices and it runs — no exception, no warning — producing a garbage correlation tree and plausible-looking weights you cannot tell from correct ones. This is the single most reported PyPortfolioOpt error. Assert your input contains negative values before you hand it over. The type check is real but **shallow**: `HRPOpt(returns=<numpy arr