# This file was autogenerated by uv via the following command:
#    uv export --format requirements-txt --extra dev --no-hashes --output-file requirements.txt
-e .
alabaster==1.0.0
    # via sphinx
anyio==4.11.0
    # via
    #   httpx
    #   jupyter-server
appdirs==1.4.4
    # via sympy-plot-backends
appnope==0.1.4 ; sys_platform == 'darwin'
    # via ipykernel
argon2-cffi==25.1.0
    # via jupyter-server
argon2-cffi-bindings==25.1.0
    # via argon2-cffi
arrow==1.3.0
    # via isoduration
astroid==3.3.11
    # via pylint
asttokens==3.0.0
    # via stack-data
async-lru==2.0.5
    # via jupyterlab
attrs==25.3.0
    # via
    #   jsonschema
    #   referencing
babel==2.17.0
    # via
    #   jupyterlab-server
    #   sphinx
backports-tarfile==1.2.0 ; python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x'
    # via jaraco-context
beautifulsoup4==4.14.0
    # via
    #   nbconvert
    #   yfinance
black==25.9.0
    # via copul
bleach==6.2.0
    # via nbconvert
build==1.3.0
    # via copul
certifi==2025.8.3
    # via
    #   curl-cffi
    #   httpcore
    #   httpx
    #   requests
cffi==2.0.0
    # via
    #   argon2-cffi-bindings
    #   clarabel
    #   cryptography
    #   curl-cffi
    #   pyzmq
charset-normalizer==3.4.3
    # via requests
clarabel==0.11.1
    # via cvxpy
click==8.3.0
    # via black
colorama==0.4.6 ; os_name == 'nt' or sys_platform == 'win32'
    # via
    #   build
    #   click
    #   ipython
    #   pylint
    #   pytest
    #   sphinx
    #   tqdm
comm==0.2.3
    # via
    #   ipykernel
    #   ipywidgets
contourpy==1.3.2 ; python_full_version < '3.11'
    # via matplotlib
contourpy==1.3.3 ; python_full_version >= '3.11'
    # via matplotlib
coverage==7.10.7
    # via pytest-cov
cryptography==46.0.1 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux'
    # via secretstorage
curl-cffi==0.13.0
    # via yfinance
cvxpy==1.7.3
cycler==0.12.1
    # via matplotlib
debugpy==1.8.17
    # via ipykernel
decorator==5.2.1
    # via ipython
defusedxml==0.7.1
    # via nbconvert
dill==0.4.0
    # via pylint
docutils==0.21.2
    # via
    #   readme-renderer
    #   sphinx
    #   sphinx-rtd-theme
exceptiongroup==1.3.0 ; python_full_version < '3.11'
    # via
    #   anyio
    #   ipython
    #   pytest
execnet==2.1.1
    # via pytest-xdist
executing==2.2.1
    # via stack-data
fastjsonschema==2.21.2
    # via nbformat
fonttools==4.60.0
    # via matplotlib
fqdn==1.5.1
    # via jsonschema
frozendict==2.4.6
    # via yfinance
h11==0.16.0
    # via httpcore
hatchling==1.27.0
    # via copul
httpcore==1.0.9
    # via httpx
httpx==0.28.1
    # via jupyterlab
id==1.5.0
    # via twine
idna==3.10
    # via
    #   anyio
    #   httpx
    #   jsonschema
    #   requests
imagesize==1.4.1
    # via sphinx
importlib-metadata==8.7.0 ; (python_full_version < '3.10.2' and platform_machine == 'ppc64le') or (python_full_version < '3.10.2' and platform_machine == 's390x') or (python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x')
    # via
    #   build
    #   keyring
iniconfig==2.1.0
    # via pytest
ipykernel==6.30.1
    # via
    #   jupyter
    #   jupyter-console
    #   jupyterlab
ipython==8.37.0 ; python_full_version < '3.11'
    # via
    #   ipykernel
    #   ipywidgets
    #   jupyter-console
ipython==9.5.0 ; python_full_version >= '3.11'
    # via
    #   ipykernel
    #   ipywidgets
    #   jupyter-console
ipython-pygments-lexers==1.1.1 ; python_full_version >= '3.11'
    # via ipython
ipywidgets==8.1.7
    # via jupyter
isoduration==20.11.0
    # via jsonschema
isort==6.0.1
    # via pylint
jaraco-classes==3.4.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
    # via keyring
jaraco-context==6.0.1 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
    # via keyring
jaraco-functools==4.3.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
    # via keyring
jedi==0.19.2
    # via ipython
jeepney==0.9.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux'
    # via
    #   keyring
    #   secretstorage
jinja2==3.1.6
    # via
    #   jupyter-server
    #   jupyterlab
    #   jupyterlab-server
    #   mfoci
    #   mpld3
    #   nbconvert
    #   osqp
    #   sphinx
joblib==1.5.2
    # via
    #   copul
    #   osqp
    #   scikit-learn
json5==0.12.1
    # via jupyterlab-server
jsonpointer==3.0.0
    # via jsonschema
jsonschema==4.25.1
    # via
    #   jupyter-events
    #   jupyterlab-server
    #   nbformat
jsonschema-specifications==2025.9.1
    # via jsonschema
jupyter==1.1.1
    # via copul
jupyter-client==8.6.3
    # via
    #   ipykernel
    #   jupyter-console
    #   jupyter-server
    #   nbclient
jupyter-console==6.6.3
    # via jupyter
jupyter-core==5.8.1
    # via
    #   ipykernel
    #   jupyter-client
    #   jupyter-console
    #   jupyter-server
    #   jupyterlab
    #   nbclient
    #   nbconvert
    #   nbformat
jupyter-events==0.12.0
    # via jupyter-server
jupyter-lsp==2.3.0
    # via jupyterlab
jupyter-server==2.17.0
    # via
    #   jupyter-lsp
    #   jupyterlab
    #   jupyterlab-server
    #   notebook
    #   notebook-shim
jupyter-server-terminals==0.5.3
    # via jupyter-server
jupyterlab==4.4.9
    # via
    #   jupyter
    #   notebook
jupyterlab-pygments==0.3.0
    # via nbconvert
jupyterlab-server==2.27.3
    # via
    #   jupyterlab
    #   notebook
jupyterlab-widgets==3.0.15
    # via ipywidgets
keyring==25.6.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
    # via twine
kiwisolver==1.4.9
    # via matplotlib
lark==1.3.0
    # via rfc3987-syntax
llvmlite==0.45.0
    # via numba
markdown-it-py==4.0.0
    # via rich
markupsafe==3.0.3
    # via
    #   jinja2
    #   nbconvert
matplotlib==3.10.6
    # via
    #   copul
    #   mfoci
    #   mpld3
    #   seaborn
    #   sympy-plot-backends
matplotlib-inline==0.1.7
    # via
    #   ipykernel
    #   ipython
mccabe==0.7.0
    # via pylint
mdurl==0.1.2
    # via markdown-it-py
mergedeep==1.3.4
    # via sympy-plot-backends
mfoci==0.2.4
    # via copul
mistune==3.1.4
    # via nbconvert
more-itertools==10.8.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x'
    # via
    #   jaraco-classes
    #   jaraco-functools
mpld3==0.5.11
    # via copul
mpmath==1.3.0
    # via sympy
multitasking==0.0.12
    # via yfinance
mypy==1.18.2
    # via copul
mypy-extensions==1.1.0
    # via
    #   black
    #   mypy
nbclient==0.10.2
    # via nbconvert
nbconvert==7.16.6
    # via
    #   jupyter
    #   jupyter-server
nbformat==5.10.4
    # via
    #   jupyter-server
    #   nbclient
    #   nbconvert
nest-asyncio==1.6.0
    # via ipykernel
nh3==0.3.0
    # via readme-renderer
notebook==7.4.7
    # via jupyter
notebook-shim==0.2.4
    # via
    #   jupyterlab
    #   notebook
numba==0.62.0
    # via copul
numpy==2.2.6 ; python_full_version < '3.11'
    # via
    #   clarabel
    #   contourpy
    #   copul
    #   cvxpy
    #   matplotlib
    #   mfoci
    #   numba
    #   osqp
    #   pandas
    #   patsy
    #   scikit-learn
    #   scipy
    #   scs
    #   seaborn
    #   statsmodels
    #   sympy-plot-backends
    #   yfinance
numpy==2.3.3 ; python_full_version >= '3.11'
    # via
    #   clarabel
    #   contourpy
    #   copul
    #   cvxpy
    #   matplotlib
    #   mfoci
    #   numba
    #   osqp
    #   pandas
    #   patsy
    #   scikit-learn
    #   scipy
    #   scs
    #   seaborn
    #   statsmodels
    #   sympy-plot-backends
    #   yfinance
osqp==1.0.4
    # via cvxpy
overrides==7.7.0 ; python_full_version < '3.12'
    # via jupyter-server
packaging==25.0
    # via
    #   black
    #   build
    #   hatchling
    #   ipykernel
    #   jupyter-events
    #   jupyter-server
    #   jupyterlab
    #   jupyterlab-server
    #   matplotlib
    #   nbconvert
    #   pytest
    #   sphinx
    #   statsmodels
    #   sympy-plot-backends
    #   twine
pandas==2.3.2
    # via
    #   copul
    #   mfoci
    #   seaborn
    #   statsmodels
    #   yfinance
pandocfilters==1.5.1
    # via nbconvert
param==2.2.1
    # via sympy-plot-backends
parso==0.8.5
    # via jedi
pathspec==0.12.1
    # via
    #   black
    #   hatchling
    #   mypy
patsy==1.0.1
    # via statsmodels
peewee==3.18.2
    # via yfinance
pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'
    # via ipython
pillow==11.3.0
    # via matplotlib
platformdirs==4.4.0
    # via
    #   black
    #   jupyter-core
    #   pylint
    #   yfinance
pluggy==1.6.0
    # via
    #   hatchling
    #   pytest
    #   pytest-cov
prometheus-client==0.23.1
    # via jupyter-server
prompt-toolkit==3.0.52
    # via
    #   ipython
    #   jupyter-console
protobuf==6.32.1
    # via yfinance
psutil==7.1.0
    # via ipykernel
ptyprocess==0.7.0 ; os_name != 'nt' or (sys_platform != 'emscripten' and sys_platform != 'win32')
    # via
    #   pexpect
    #   terminado
pure-eval==0.2.3
    # via stack-data
pycparser==2.23 ; implementation_name != 'PyPy'
    # via cffi
pygments==2.19.2
    # via
    #   ipython
    #   ipython-pygments-lexers
    #   jupyter-console
    #   nbconvert
    #   pytest
    #   readme-renderer
    #   rich
    #   sphinx
pylint==3.3.8
    # via copul
pyparsing==3.2.5
    # via matplotlib
pyproject-hooks==1.2.0
    # via build
pytest==8.4.2
    # via
    #   copul
    #   pytest-cov
    #   pytest-xdist
pytest-cov==7.0.0
    # via copul
pytest-xdist==3.8.0
    # via copul
python-dateutil==2.9.0.post0
    # via
    #   arrow
    #   jupyter-client
    #   matplotlib
    #   pandas
python-json-logger==3.3.0
    # via jupyter-events
pytokens==0.1.10
    # via black
pytz==2025.2
    # via
    #   pandas
    #   yfinance
pywin32==311 ; platform_python_implementation != 'PyPy' and sys_platform == 'win32'
    # via jupyter-core
pywin32-ctypes==0.2.3 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'win32'
    # via keyring
pywinpty==3.0.0 ; os_name == 'nt'
    # via
    #   jupyter-server
    #   jupyter-server-terminals
    #   terminado
pyyaml==6.0.3
    # via jupyter-events
pyzmq==27.1.0
    # via
    #   ipykernel
    #   jupyter-client
    #   jupyter-console
    #   jupyter-server
readme-renderer==44.0
    # via twine
referencing==0.36.2
    # via
    #   jsonschema
    #   jsonschema-specifications
    #   jupyter-events
requests==2.32.5
    # via
    #   id
    #   jupyterlab-server
    #   requests-toolbelt
    #   sphinx
    #   twine
    #   yfinance
requests-toolbelt==1.0.0
    # via twine
rfc3339-validator==0.1.4
    # via
    #   jsonschema
    #   jupyter-events
rfc3986==2.0.0
    # via twine
rfc3986-validator==0.1.1
    # via
    #   jsonschema
    #   jupyter-events
rfc3987-syntax==1.1.0
    # via jsonschema
rich==14.1.0
    # via twine
roman-numerals-py==3.1.0 ; python_full_version >= '3.11'
    # via sphinx
rpds-py==0.27.1
    # via
    #   jsonschema
    #   referencing
ruff==0.13.2
    # via copul
scikit-learn==1.7.2
    # via mfoci
scipy==1.15.3 ; python_full_version < '3.11'
    # via
    #   clarabel
    #   copul
    #   cvxpy
    #   osqp
    #   scikit-learn
    #   scs
    #   statsmodels
scipy==1.16.2 ; python_full_version >= '3.11'
    # via
    #   clarabel
    #   copul
    #   cvxpy
    #   osqp
    #   scikit-learn
    #   scs
    #   statsmodels
scs==3.2.8
    # via cvxpy
seaborn==0.13.2
    # via copul
secretstorage==3.4.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' and sys_platform == 'linux'
    # via keyring
send2trash==1.8.3
    # via jupyter-server
setuptools==80.9.0
    # via
    #   jupyterlab
    #   osqp
six==1.17.0
    # via
    #   python-dateutil
    #   rfc3339-validator
sniffio==1.3.1
    # via anyio
snowballstemmer==3.0.1
    # via sphinx
soupsieve==2.8
    # via beautifulsoup4
sphinx==8.1.3 ; python_full_version < '3.11'
    # via
    #   copul
    #   sphinx-rtd-theme
    #   sphinxcontrib-jquery
sphinx==8.2.3 ; python_full_version >= '3.11'
    # via
    #   copul
    #   sphinx-rtd-theme
    #   sphinxcontrib-jquery
sphinx-rtd-theme==3.0.2
    # via copul
sphinxcontrib-applehelp==2.0.0
    # via sphinx
sphinxcontrib-devhelp==2.0.0
    # via sphinx
sphinxcontrib-htmlhelp==2.1.0
    # via sphinx
sphinxcontrib-jquery==4.1
    # via sphinx-rtd-theme
sphinxcontrib-jsmath==1.0.1
    # via sphinx
sphinxcontrib-qthelp==2.0.0
    # via sphinx
sphinxcontrib-serializinghtml==2.0.0
    # via sphinx
stack-data==0.6.3
    # via ipython
statsmodels==0.14.5
    # via
    #   copul
    #   mfoci
sympy==1.14.0
    # via
    #   copul
    #   sympy-plot-backends
sympy-plot-backends==4.0.0
    # via copul
terminado==0.18.1
    # via
    #   jupyter-server
    #   jupyter-server-terminals
threadpoolctl==3.6.0
    # via scikit-learn
tinycss2==1.4.0
    # via bleach
tomli==2.2.1 ; python_full_version <= '3.11'
    # via
    #   black
    #   build
    #   coverage
    #   hatchling
    #   jupyterlab
    #   mypy
    #   pylint
    #   pytest
    #   sphinx
tomlkit==0.13.3
    # via pylint
tornado==6.5.2
    # via
    #   ipykernel
    #   jupyter-client
    #   jupyter-server
    #   jupyterlab
    #   notebook
    #   terminado
tqdm==4.67.1
    # via mfoci
traitlets==5.14.3
    # via
    #   ipykernel
    #   ipython
    #   ipywidgets
    #   jupyter-client
    #   jupyter-console
    #   jupyter-core
    #   jupyter-events
    #   jupyter-server
    #   jupyterlab
    #   matplotlib-inline
    #   nbclient
    #   nbconvert
    #   nbformat
trove-classifiers==2025.9.11.17
    # via hatchling
twine==6.2.0
    # via
    #   copul
    #   mfoci
types-python-dateutil==2.9.0.20250822
    # via arrow
typing-extensions==4.15.0
    # via
    #   anyio
    #   astroid
    #   async-lru
    #   beautifulsoup4
    #   black
    #   copul
    #   cryptography
    #   exceptiongroup
    #   ipython
    #   mistune
    #   mypy
    #   referencing
tzdata==2025.2
    # via pandas
uri-template==1.3.0
    # via jsonschema
urllib3==2.5.0
    # via
    #   requests
    #   twine
wcwidth==0.2.14
    # via prompt-toolkit
webcolors==24.11.1
    # via jsonschema
webencodings==0.5.1
    # via
    #   bleach
    #   tinycss2
websocket-client==1.8.0
    # via jupyter-server
websockets==15.0.1
    # via yfinance
widgetsnbextension==4.0.14
    # via ipywidgets
yfinance==0.2.66
    # via mfoci
zipp==3.23.0 ; (python_full_version < '3.10.2' and platform_machine == 'ppc64le') or (python_full_version < '3.10.2' and platform_machine == 's390x') or (python_full_version < '3.12' and platform_machine != 'ppc64le' and platform_machine != 's390x')
    # via importlib-metadata
