numba>=0.60.0
numpy==2.2.6
scipy>=1.15.0
statsmodels>=0.14.0
pandas>=2.3.1
matplotlib>=3.9.0
seaborn>=0.13.0
openpyxl>=3.1.0
PyYAML>=6.0
easydev>=0.12.0
pyarrow>=18.0.0
fsspec>=2024.12.0
yfinance>=0.2.65
pandas-datareader>=0.10.0
cvxpy>=1.7.0
ecos>=2.0.0
quadprog>=0.1.11
scikit-learn>=1.7.0
qis>=3.3.14

[all]
optimalportfolios[database,jupyter,performance,reports,riskbudgeting,solvers,visualization]

[database]
SQLAlchemy>=2.0.0
psycopg2>=2.9.5

[dev]
pytest>=7.0.0
pytest-cov>=4.0.0
pytest-mock>=3.10.0
pytest-xdist>=3.0.0
black>=22.0.0
flake8>=5.0.0
mypy>=1.0.0
isort>=5.10.0
pre-commit>=3.0.0

[extras]
optimalportfolios[jupyter,reports,solvers]

[jupyter]
jupyter>=1.0.0
notebook>=6.5.0
jupyterlab>=3.0.0
ipykernel>=6.0.0
ipywidgets>=8.0.0

[performance]
memory-profiler>=0.60.0
line-profiler>=4.0.0
py-spy>=0.3.0
scalene>=1.5.0

[reports]
pybloqs>=1.2.13
jinja2>=3.0.0

[riskbudgeting]
pyrb>=0.4.0

[solvers]
cvxopt>=1.3.0
mosek>=10.0.0
gurobi>=11.0.0
clarabel>=0.5.0

[visualization]
plotly>=5.0.0
