{"id":28149,"library":"riskfolio-lib","title":"Riskfolio-Lib","description":"Riskfolio-Lib is a Python library for portfolio optimization and quantitative strategic asset allocation. It provides tools for mean-variance, Black-Litterman, risk parity, and other advanced portfolio methods. Current version is 7.2.1, requiring Python >=3.9. The library is actively maintained with a regular release cadence.","status":"active","version":"7.2.1","language":"python","source_language":"en","source_url":"https://github.com/dcajasn/Riskfolio-Lib","tags":["portfolio-optimization","quantitative-finance","risk-management","asset-allocation"],"install":[{"cmd":"pip install riskfolio-lib","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Core array operations","package":"numpy","optional":false},{"reason":"Data handling for returns and prices","package":"pandas","optional":false},{"reason":"Convex optimization solver interface","package":"cvxpy","optional":false},{"reason":"Optimization routines","package":"scipy","optional":false},{"reason":"Plotting efficient frontier and risk-return","package":"matplotlib","optional":true}],"imports":[{"note":"Hyphen in library name, but Python module uses underscore; import as 'riskfolio'.","wrong":"import Portfolio from riskfolio-lib","symbol":"Portfolio","correct":"from riskfolio import Portfolio"},{"note":"HRP is implemented in HCPortfolio class, not a separate module.","wrong":"from riskfolio.lib import HRP","symbol":"HRP (Hierarchical Risk Parity)","correct":"from riskfolio import HCPortfolio"},{"note":"RiskParity is in the top-level namespace.","wrong":"from riskfolio.optimization import RiskParity","symbol":"RiskParity","correct":"from riskfolio import RiskParity"}],"quickstart":{"code":"import numpy as np\nimport pandas as pd\nfrom riskfolio import Portfolio\n\n# Sample data\nereturns = pd.DataFrame(np.random.randn(100, 4), columns=['Asset1','Asset2','Asset3','Asset4'])\n\n# Portfolio object\nport = Portfolio(returns=ereturns)\n\n# Mean-variance optimization\nw = port.optimization(model='Classic', rm='MV', obj='Sharpe', hist=True)\nprint(w)","lang":"python","description":"Basic mean-variance optimization to maximize Sharpe ratio using historical returns."},"warnings":[{"fix":"Convert prices to returns with .pct_change().dropna() before passing to Portfolio.","message":"In version 7.0+, the Portfolio class no longer accepts 'prices' directly; use 'returns' or 'mu' and 'cov' explicitly.","severity":"breaking","affected_versions":">=7.0.0"},{"fix":"Switch to Portfolio object and its optimization method.","message":"The function 'riskfolio.MeanRisk()' is deprecated. Use 'Portfolio.optimization()' with risk measure parameters.","severity":"deprecated","affected_versions":">=6.0.0"},{"fix":"Install cvxpy and optionally 'cvxopt' or 'scipy' for alternative solvers.","message":"The library requires cvxpy with a compatible solver (e.g., ECOS, SCS). Missing solver may cause silent fallback or errors.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Use 'import riskfolio' after 'pip install riskfolio-lib'.","cause":"Importing with hyphen instead of underscore: 'riskfolio-lib' is the package name, but the module is 'riskfolio'.","error":"ModuleNotFoundError: No module named 'riskfolio'"},{"fix":"Pass 'returns' (DataFrame of returns) instead of 'prices' to Portfolio.","cause":"Portfolio class in v7+ does not accept 'prices' as a parameter.","error":"KeyError: 'prices'"},{"fix":"Install a solver: e.g., 'pip install cvxopt'.","cause":"cvxpy is installed but no solver backend is available.","error":"cvxpy.error.SolverError: Solver not found (ECOS, SCS, etc.)"},{"fix":"Drop or interpolate NaN values; use method='ledoit' in covariance estimation: Port = Portfolio(returns, method_cov='ledoit').","cause":"Data contains NaN or insufficient observations causing non-psd covariance.","error":"ValueError: The covariance matrix is not positive semidefinite"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}