# This file was autogenerated by uv via the following command:
#    uv export --format requirements-txt --no-dev --no-hashes -o requirements.txt
-e .
beautifulsoup4==4.13.4
    # via yfinance
certifi==2025.4.26
    # via
    #   curl-cffi
    #   requests
cffi==1.17.1
    # via curl-cffi
charset-normalizer==3.4.2
    # via requests
colorama==0.4.6 ; sys_platform == 'win32'
    # via tqdm
contourpy==1.3.2
    # via matplotlib
curl-cffi==0.11.1
    # via yfinance
cvxopt==1.3.2
    # via universal-portfolios
cycler==0.12.1
    # via matplotlib
fonttools==4.58.1
    # via matplotlib
frozendict==2.4.6
    # via yfinance
idna==3.10
    # via requests
joblib==1.5.1
    # via scikit-learn
kiwisolver==1.4.8
    # via matplotlib
lxml==5.4.0
    # via pandas-datareader
matplotlib==3.10.3
    # via
    #   seaborn
    #   universal-portfolios
multitasking==0.0.11
    # via yfinance
narwhals==1.41.0
    # via plotly
numpy==2.2.6 ; python_full_version < '3.11'
    # via
    #   contourpy
    #   matplotlib
    #   pandas
    #   patsy
    #   scikit-learn
    #   scipy
    #   seaborn
    #   statsmodels
    #   universal-portfolios
    #   yfinance
numpy==2.4.4 ; python_full_version >= '3.11'
    # via
    #   contourpy
    #   matplotlib
    #   pandas
    #   patsy
    #   scikit-learn
    #   scipy
    #   seaborn
    #   statsmodels
    #   universal-portfolios
    #   yfinance
packaging==25.0
    # via
    #   matplotlib
    #   plotly
    #   statsmodels
pandas==2.2.3
    # via
    #   pandas-datareader
    #   seaborn
    #   statsmodels
    #   universal-portfolios
    #   yfinance
pandas-datareader==0.10.0
    # via universal-portfolios
patsy==1.0.1
    # via statsmodels
peewee==3.18.1
    # via yfinance
pillow==11.2.1
    # via
    #   matplotlib
    #   universal-portfolios
platformdirs==4.3.8
    # via yfinance
plotly==6.1.2
    # via universal-portfolios
protobuf==6.31.0
    # via yfinance
pycparser==2.22
    # via cffi
pyparsing==3.2.3
    # via matplotlib
python-dateutil==2.9.0.post0
    # via
    #   matplotlib
    #   pandas
pytz==2025.2
    # via
    #   pandas
    #   yfinance
requests==2.32.3
    # via
    #   pandas-datareader
    #   universal-portfolios
    #   yfinance
scikit-learn==1.6.1
    # via universal-portfolios
scipy==1.15.3
    # via
    #   scikit-learn
    #   statsmodels
    #   universal-portfolios
seaborn==0.13.2
    # via universal-portfolios
six==1.17.0
    # via python-dateutil
soupsieve==2.7
    # via beautifulsoup4
statsmodels==0.14.5
    # via universal-portfolios
threadpoolctl==3.6.0
    # via scikit-learn
tqdm==4.67.1
    # via universal-portfolios
typing-extensions==4.13.2
    # via beautifulsoup4
tzdata==2025.2
    # via pandas
urllib3==2.4.0
    # via
    #   requests
    #   universal-portfolios
websockets==15.0.1
    # via yfinance
yfinance==0.2.61
    # via universal-portfolios
