From bb17d5de808255dedef4937ebf1d7dcb3322a953 Mon Sep 17 00:00:00 2001 From: Martin Karrin Date: Wed, 8 Apr 2026 22:04:35 +0200 Subject: [PATCH 1/4] Replaced Poetry with uv for project management --- .github/workflows/build.yml | 111 +- .github/workflows/deploy.yml | 31 +- .github/workflows/docs.yml | 25 +- .github/workflows/test.yml | 35 +- .gitignore | 3 + .pre-commit-config.yaml | 9 +- Makefile | 22 +- README.md | 2 +- docs/README.md | 22 +- .../development/contributing.doctree | Bin 53368 -> 52697 bytes docs/build/html/.doctrees/environment.pickle | Bin 12411767 -> 12411767 bytes .../.doctrees/user_guide/installation.doctree | Bin 24464 -> 24524 bytes .../_sources/development/contributing.rst.txt | 18 +- .../_sources/user_guide/installation.rst.txt | 13 +- docs/build/html/development/contributing.html | 16 +- docs/build/html/searchindex.js | 2 +- docs/build/html/user_guide/installation.html | 13 +- docs/source/development/contributing.rst | 18 +- docs/source/user_guide/installation.rst | 13 +- make.ps1 | 32 +- poetry.lock | 2479 ----------------- pyproject.toml | 52 +- tests/test_package.py | 19 + uv.lock | 1978 +++++++++++++ 24 files changed, 2188 insertions(+), 2725 deletions(-) delete mode 100644 poetry.lock create mode 100644 uv.lock diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 49f79ced..1878e179 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,48 +42,43 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Cache Poetry dependencies + - name: Set up uv + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + + - name: Cache uv dependencies uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: - path: | - ~/AppData/Local/pypoetry/Cache/cache - ~/AppData/Local/pypoetry/Cache/artifacts - key: poetry-windows-${{ hashFiles('poetry.lock') }} - restore-keys: poetry-windows- - - - name: Create virtual environment and install Poetry - run: | - python -m venv venv - . venv/Scripts/activate - python.exe -m pip install --upgrade pip - pip install poetry==2.3.3 + path: ~/AppData/Local/uv/cache + key: uv-windows-${{ hashFiles('pyproject.toml') }} + restore-keys: uv-windows- - - name: Install dependencies with Poetry + - name: Create virtual environment and install dependencies run: | + uv venv venv . venv/Scripts/activate - poetry install --with dev + uv pip install -e ".[dev]" - name: Check and fix with Ruff run: | . venv/Scripts/activate - poetry run ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix + ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix - name: Format with Ruff run: | . venv/Scripts/activate - poetry run ruff format + ruff format - name: Type check with Mypy run: | . venv/Scripts/activate - poetry run mypy . + mypy . - name: Tests with Pytest id: pytest continue-on-error: true run: | . venv/Scripts/activate - PYTHONPATH=${PWD} poetry run pytest + PYTHONPATH=${PWD} pytest - name: Create GitHub issue on failure if: ${{ steps.pytest.outcome == 'failure' }} @@ -109,8 +104,8 @@ jobs: - name: Package and check run: | . venv/Scripts/activate - poetry build - poetry check + uv build + uvx twine check dist/* ubuntu: name: Build on Ubuntu @@ -136,48 +131,43 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Cache Poetry dependencies + - name: Set up uv + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + + - name: Cache uv dependencies uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: - path: | - ~/.cache/pypoetry/cache - ~/.cache/pypoetry/artifacts - key: poetry-ubuntu-${{ hashFiles('poetry.lock') }} - restore-keys: poetry-ubuntu- - - - name: Create virtual environment and install Poetry - run: | - python -m venv venv - . venv/bin/activate - pip install --upgrade pip - pip install poetry==2.3.3 + path: ~/.cache/uv + key: uv-ubuntu-${{ hashFiles('pyproject.toml') }} + restore-keys: uv-ubuntu- - - name: Install dependencies with Poetry + - name: Create virtual environment and install dependencies run: | + uv venv venv . venv/bin/activate - poetry install --with dev + uv pip install -e ".[dev]" - name: Check and fix with Ruff run: | . venv/bin/activate - poetry run ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix + ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix - name: Format with Ruff run: | . venv/bin/activate - poetry run ruff format + ruff format - name: Type check with Mypy run: | . venv/bin/activate - poetry run mypy . + mypy . - name: Tests with Pytest id: pytest continue-on-error: true run: | . venv/bin/activate - PYTHONPATH=${PWD} poetry run pytest + PYTHONPATH=${PWD} pytest - name: Create GitHub issue on failure if: ${{ steps.pytest.outcome == 'failure' }} @@ -203,8 +193,8 @@ jobs: - name: Package and check run: | . venv/bin/activate - poetry build - poetry check + uv build + uvx twine check dist/* macos: name: Build on macOS @@ -230,48 +220,43 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Cache Poetry dependencies + - name: Set up uv + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + + - name: Cache uv dependencies uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: - path: | - ~/Library/Caches/pypoetry/cache - ~/Library/Caches/pypoetry/artifacts - key: poetry-macos-${{ hashFiles('poetry.lock') }} - restore-keys: poetry-macos- - - - name: Create virtual environment and install Poetry - run: | - python -m venv venv - . venv/bin/activate - pip install --upgrade pip - pip install poetry==2.3.3 + path: ~/.cache/uv + key: uv-macos-${{ hashFiles('pyproject.toml') }} + restore-keys: uv-macos- - - name: Install dependencies with Poetry + - name: Create virtual environment and install dependencies run: | + uv venv venv . venv/bin/activate - poetry install --with dev + uv pip install -e ".[dev]" - name: Check and fix with Ruff run: | . venv/bin/activate - poetry run ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix + ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix - name: Format with Ruff run: | . venv/bin/activate - poetry run ruff format + ruff format - name: Type check with Mypy run: | . venv/bin/activate - poetry run mypy . + mypy . - name: Tests with Pytest id: pytest continue-on-error: true run: | . venv/bin/activate - PYTHONPATH=${PWD} poetry run pytest + PYTHONPATH=${PWD} pytest - name: Create GitHub issue on failure if: ${{ steps.pytest.outcome == 'failure' }} @@ -297,5 +282,5 @@ jobs: - name: Package and check run: | . venv/bin/activate - poetry build - poetry check + uv build + uvx twine check dist/* diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 6e303e84..df625012 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -37,40 +37,36 @@ jobs: with: python-version-file: '.python-version' - - name: Create virtual environment - run: python -m venv venv + - name: Set up uv + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 - - name: Install Poetry + - name: Create virtual environment and install dependencies run: | + uv venv venv . venv/bin/activate - pip install poetry==2.3.3 - - - name: Install dependencies with Poetry - run: | - . venv/bin/activate - poetry install --with dev - poetry show -l + uv pip install -e ".[dev]" + uv pip list - name: Check and fix with Ruff run: | . venv/bin/activate - poetry run ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix + ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix - name: Format with Ruff run: | . venv/bin/activate - poetry run ruff format + ruff format - name: Type check with Mypy run: | . venv/bin/activate - poetry run mypy . + mypy . - name: Tests with Pytest id: pytest run: | . venv/bin/activate - PYTHONPATH=${PWD} poetry run pytest + PYTHONPATH=${PWD} pytest - name: Create GitHub issue on failure if: ${{ failure() }} @@ -209,11 +205,8 @@ jobs: - name: Build distributions (sdist + wheel) run: | - python -m venv venv - . venv/bin/activate - pip install poetry==2.3.3 - poetry build - poetry check + uv build + uvx twine check dist/* - name: Upload dist artifacts uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 8e542f92..4a83f010 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -51,26 +51,21 @@ jobs: with: python-version-file: '.python-version' - - name: Manage Poetry cache + - name: Set up uv + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + + - name: Manage uv cache uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: - path: | - ~/.cache/pypoetry/cache - ~/.cache/pypoetry/artifacts - key: poetry-cache-${{ runner.os }}-${{ hashFiles('poetry.lock') }} - restore-keys: poetry-cache-${{ runner.os }}- - - - name: Create virtual environment and install Poetry - run: | - python -m venv venv - . venv/bin/activate - pip install --upgrade pip - pip install poetry==2.3.3 + path: ~/.cache/uv + key: uv-cache-${{ runner.os }}-${{ hashFiles('pyproject.toml') }} + restore-keys: uv-cache-${{ runner.os }}- - - name: Install dependencies with Poetry + - name: Create virtual environment and install dependencies run: | + uv venv venv . venv/bin/activate - poetry install --with docs + uv pip install -e ".[docs]" - name: Build documentation run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 93bab60b..4d9a635b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,37 +43,32 @@ jobs: with: python-version-file: '.python-version' - - name: Manage Poetry cache + - name: Set up uv + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 + + - name: Manage uv cache uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - id: poetry-cache + id: uv-cache with: - path: | - ~/.cache/pypoetry/cache - ~/.cache/pypoetry/artifacts - key: poetry-cache-${{ runner.os }}-${{ hashFiles('poetry.lock') }} - restore-keys: poetry-cache-${{ runner.os }}- - - - name: Create virtual environment and install Poetry - run: | - python -m venv venv - . venv/bin/activate - pip install --upgrade pip - pip install poetry==2.3.3 + path: ~/.cache/uv + key: uv-cache-${{ runner.os }}-${{ hashFiles('pyproject.toml') }} + restore-keys: uv-cache-${{ runner.os }}- - - name: Install dependencies with Poetry + - name: Create virtual environment and install dependencies run: | + uv venv venv . venv/bin/activate - poetry install --with dev + uv pip install -e ".[dev]" - name: Check and fix with Ruff run: | . venv/bin/activate - poetry run ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix + ruff check ./tests/*.py ./openseries/*.py --fix --exit-non-zero-on-fix - name: Format with Ruff run: | . venv/bin/activate - poetry run ruff format + ruff format - name: Manage Mypy cache uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 @@ -86,14 +81,14 @@ jobs: - name: Type check with Mypy run: | . venv/bin/activate - poetry run mypy --cache-dir .mypy_cache . + mypy --cache-dir .mypy_cache . - name: Tests with Pytest id: pytest continue-on-error: true run: | . venv/bin/activate - PYTHONPATH=${PWD} poetry run pytest + PYTHONPATH=${PWD} pytest - name: Create GitHub issue on failure if: ${{ steps.pytest.outcome == 'failure' }} diff --git a/.gitignore b/.gitignore index 7bd3d7ad..43730fd8 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,9 @@ junit.xml # Environments /venv/ +# Setuptools / editable-install metadata (regenerated on pip/uv install -e) +*.egg-info/ + # Pycharm /.idea/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2ec7a1f7..ed082f48 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,6 +2,11 @@ default_language_version: python: python3.14 repos: + - repo: https://github.com/astral-sh/uv-pre-commit + rev: 0.11.4 + hooks: + - id: uv-lock + args: [ --check ] - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.15.9 hooks: @@ -62,7 +67,3 @@ repos: rev: v1.23.1 hooks: - id: zizmor - - repo: https://github.com/python-poetry/poetry - rev: 2.3.3 - hooks: - - id: poetry-check diff --git a/Makefile b/Makefile index 68e5fe39..3aa9de7b 100644 --- a/Makefile +++ b/Makefile @@ -8,33 +8,33 @@ install: python -m venv ./venv venv/bin/python --version venv/bin/python -m pip install --upgrade pip - venv/bin/pip install poetry==2.3.3 + venv/bin/pip install uv @. venv/bin/activate && \ - poetry install --with dev,docs && \ - poetry run pre-commit install + uv lock && \ + uv pip install -e ".[dev,docs]" && \ + pre-commit install test: - poetry run pytest + pytest lint: - poetry run ruff check . --fix --exit-non-zero-on-fix - poetry run ruff format - poetry run mypy . + ruff check . --fix --exit-non-zero-on-fix + ruff format + mypy . clean: @. venv/bin/activate && \ pre-commit uninstall && \ - rm -rf venv && \ - rm -f poetry.lock + rm -rf venv builddocs: @echo "📚 Building documentation..." - cd docs && poetry run sphinx-build -b html source build/html + cd docs && sphinx-build -b html source build/html @echo "✅ Documentation built in docs/build/html/" servedocs: @echo "📚 Starting live documentation server..." - cd docs && poetry run sphinx-autobuild source build/html --host 127.0.0.1 --port 8000 --re-ignore ".*\..*" + cd docs && sphinx-autobuild source build/html --host 127.0.0.1 --port 8000 --re-ignore ".*\..*" @echo "🌐 Documentation server running at http://127.0.0.1:8000" cleandocs: diff --git a/README.md b/README.md index 492ac9cf..01c891b0 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [![GitHub Action Test Suite](https://github.com/CaptorAB/openseries/actions/workflows/test.yml/badge.svg)](https://github.com/CaptorAB/openseries/actions/workflows/test.yml) [![codecov](https://img.shields.io/codecov/c/gh/CaptorAB/openseries?logo=codecov)](https://codecov.io/gh/CaptorAB/openseries/branch/master) [![Documentation Status](https://readthedocs.org/projects/openseries/badge/?version=latest)](https://captorab.github.io/openseries/) -[![Poetry](https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json)](https://python-poetry.org/) +[![uv](https://img.shields.io/badge/package%20manager-uv-blueviolet)](https://github.com/astral-sh/uv) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://beta.ruff.rs/docs/) [![GitHub License](https://img.shields.io/github/license/CaptorAB/openseries)](https://github.com/CaptorAB/openseries/blob/master/LICENSE.md) [![Code Sample](https://img.shields.io/badge/-Code%20Sample-blue)](https://nbviewer.org/github/karrmagadgeteer2/NoteBook/blob/master/openseriesnotebook.ipynb) diff --git a/docs/README.md b/docs/README.md index 14b3b527..9c35f030 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,10 +6,10 @@ This directory contains the documentation for the openseries project, built usin ### Prerequisites -Install the documentation dependencies using Poetry: +Install the documentation dependencies using uv: ```bash -poetry install --with docs +uv pip install -e ".[docs]" ``` ### Building HTML Documentation @@ -18,8 +18,8 @@ To build the HTML documentation: ```bash make builddocs -# or directly with Poetry: -poetry run sphinx-build -b html source build/html +# or directly: +sphinx-build -b html source build/html ``` The built documentation will be available in `build/html/index.html`. @@ -37,15 +37,15 @@ For development with auto-reload: ```bash make servedocs -# or directly with Poetry: -poetry run sphinx-autobuild source build/html --host 127.0.0.1 --port 8000 +# or directly: +sphinx-autobuild source build/html --host 127.0.0.1 --port 8000 ``` This will start a local server at `http://localhost:8000` that automatically rebuilds when files change. ## Documentation Structure -``` +```text docs/ ├── source/ │ ├── index.rst # Main documentation index @@ -85,8 +85,8 @@ docs/ This documentation is configured for [ReadTheDocs](https://readthedocs.org/) hosting: - Configuration: `.readthedocs.yaml` in the project root -- Dependencies: Managed through Poetry in `pyproject.toml` docs group -- Build process: Automated on ReadTheDocs using Poetry +- Dependencies: Managed through `pyproject.toml` optional docs dependencies +- Build process: Automated on ReadTheDocs ## Writing Documentation @@ -192,8 +192,8 @@ When contributing to documentation: **Missing modules:** -- Install missing dependencies: `poetry install --with docs` -- For ReadTheDocs builds, dependencies are managed through Poetry in `pyproject.toml` +- Install missing dependencies: `uv pip install -e ".[docs]"` +- For ReadTheDocs builds, dependencies are managed through `pyproject.toml` **Broken links:** diff --git a/docs/build/html/.doctrees/development/contributing.doctree b/docs/build/html/.doctrees/development/contributing.doctree index b59d60093003755c86e23c28a3ec89aa8ce6db97..7b7e50989edcaf86892382d5f85f233ffe646460 100644 GIT binary patch delta 7952 zcmb7Jd0f+1w)bAiFN6e4Sd=15L?uK;NB}Dc0y5Nr2#Qr|-4W3c5Rp|K6?Je)#ZozF zYwfgv*1FV+;!-?axc7U$ z_bhk&-P~y(_{pAus`aX!@4j@>uUs@@JU(NEm>XK4wh+kAz8DCsdTUIYd@)M}u?!}cFqsPu!Tv|V7 z@$!Iy0Kv^LH^|DyLrc(T)p*fFxaZf5iNtEFv_H$7Q`V-7YB16@TU$;$!gGqrl}@-3@3%Pz+0hKW`nz- zqZONI&m^NDb)7xd{-`VU*q+Luqaz5m4xP%(@bS=2w!AeWPG7;jYE%F>cqCj2H?v0U zUE|$b2cXB9hidSqi zMa#1k7HWGq)oDjmqV@u!#o~)~?1xKHar_N0l8Z3bIF?^@krWBj^F)H0i{u02dbS^C z3`^l(lc~lv{@*#gHf%f>f5?GHgvA$RiyGRBiLg4_VAzcg$oYw`t>JKaPcU>vuVevW z9zKVKLRO+#Gk72c6)+IG<^_wMjzo*{sDxuq2akyFo5(^+WX%Y(m_!@QW~j3I=#!D9 zXFbe?Pe-hSrr~C2xBDu#`GPOGyJe)6^XUVjFfUD6h%E!DYN4_HMwm+@)Ww=vxn~5s z_Xy>1HFh6cDY`AHWrED!ecJq~!Z%6!<=7(W|DMo~z8p-JX-v+CU6$dn-aLwe==2_< zg}ex{TG&aC7stIJt`lzCuPeXjp*nFaJCEsAwF&Qz zcYl;{eM~)@OvmZT<-1dw~8&Eq$j@!r-=on{FItAJ7 zf!!aEYY1XNFfA`#*+(su?frSled*hYUSo@AW8g+|oZjr?Rm;zz-Zqh?5cL;=$n4V^ zoWdXSA;wgqP?ru?yr{Ub*2>5bZ3_Aq@g`?Ta zH2gmW=mb<1niSNI`Ov!UDm1dU;Bw(e_6~u55?yZ)2sIaI`Scim-3OkWK8k%#sQ(px zpAiZ*7b^AP=hzR_eOEMoN8PAl_w1-hov5F~UkI_6IeM*Bbf!(@LnNVPM!zKd03Xhn z#N@7!~Dcb_htSGp)FflO7W9JDXy4b=J5$Qe!q7={{ zj!{RT_d^xf(B{%Z6)Nm^#Z$CXdX1E~C=o9_JtGys(M7-D1q$UL5?S&j3+XPFijq8S zWiOU57w7OQ$r6Pu6_SN?7t3dhQ?yU?Vu>z|V>^4Zw8DncB;G1njL7o1 zWFcL!;Eax6lBPZ0i=}=^GCSRy0O3 z>`~7kMc#uX!Mx>lYzYpc9*1m2YPew-0r6Efank>)Y8qQjedDpOUX9aJA-x6?R!n8v zVf~6su{ol73PQF?2?-}J_0 z!L<5vb{E|;WTRW|e$OsGv>~49!Pbz(1AXCKO@fkxumHHV)}$s?>r2b{PQ!3E62e!; za+Ab8gt*~^Bh`gFyE2ZY!hf!`@-&H?jJWZHBh`i5wJL*6g)6Im!3!nsmx#+J9H}lG ztllE3yS`x@TZDZ|F2b}hY=iM$$Dz0^2*^#ERF{8cG4x4WmQ0&vO)}r&OPgbpuh+Dl z0{hnF@HX#IYh0Vk4@l>yA#5KxPiluunsr?Y`z=(go5;^fTp{Al z5ROzAZg^t?dkJ4dq zQ!+)S)s#m^Y>K0xuF9JhdrBeBB|*93+`6 zNl2F@d7CF`%X^VLxjBPZd66sw-z`bvo`EEDk)%wLkd7qNwcC3U+}$#Pw|Wt@K>1dy z*fo$~9ujPm1f)wZ20NR@6xr*{;3vIIk3sNbY3vx8&PUTDWU3}TT7&nzdtPEFQz{MZ z$?9zxeal!R%UHL~#{VkIcon1Yd|~Am!`*F-{A*dp5**wO@Raddvz6b~fMNSMHUQ3T zGlOxuueubWKgkeD|B`Fzy|9(b+VuL*w>={ z@5r81m%U?WBKyb#szcBR2vSJh0mV<;ds8KsYaw%2ZQxB$Mm(3oi@T<>+k!dP=)Tz^ zh%O*3wU>)G{qQoQG~m#+-EB{P$hb~Rw}F=3A<8Oh7H$N=+1+FNR;E%`ChTbwAE~8X zDq8DRx+Z9R+QzL~I>t65S2XZF%{&7~NKxl+l}+#M*&0~jvGj!Cc*e$yw76kKxi04j z>K{UZmO^MIvhJkcjPl_XJs~_U$7t`!()XEIO>nEDgwynjg1SyCZW2@Yy$pCx@iu;&Z4 z@AP7r_k28m-;3cA{OYG99SnAv!Fj`X!kKy4L-8Ad#6M?w~2qtaBIN zQ^F+&vv`7z&Ky?>%`oV&N!^76BXyVsxb%XGN9$50!eoPD_?Bl8zrP0A?qZBbcFQW!4>k` z3GE%haNtM|-!B({|4VUvuZ|W#yT@;uJEvgfOJ%%^$PF(exf|fwn6i#$`khBB+Cm`n zs1?p0_2U<$L$9FCYtkXo&&o_?b|v|J)MJ&=6{G94C(~IDK`tO9OF~FT zNH8RwN*C`O)u$%0*#b6>7fHnHh?a=B(+AjcqPU2S-~9KP`{umzT25 z#PTO(5v};4mT_h(`+axInfEw*qkG}2qkI~l6M;IOLE#WDyN;zO#*5z}9LXq3@ZW_f z+VN@WHz*QOB%oM=q6Ecm6uVG_iI)b)5ES3zzqe4B#H*TP1d3J^EhvHzqE|Hvc^lR5 zP&|ub4~qXn@imI8;)BKU35sDTB2mmhQHbKtDBef0NSr5*1t>O(>$;;6#XxbraSTB5 zDTx(qTjqfnq(1wJ4qy^VzWng&(Fzjp8X3JB6rg)>IZRE3I8s zRa%4J%?`|?lXB>!{5dIiPRg5;a^|FbIVo38%9GRaeWS>alM>{lT7~q>!8<9Fc!#o!y8L;3TkX zX$II+sQmU^S$q6lO4c5K{gAcCUpi#%@s(cI9$(XC?eVQy)*j!sW$kaHMzzPcU{QM^ z+8R-%+T&xEtUbOc%G%=to2)&41k2jvOO>oWz9z`p<0rqYJznW#?eRla)*ipkWbN^z zMAjbfwOIP(0S-KdW$p2nCTouu2U&YOTxIQXtEAdHblqqE@JEI}RJ*=A10V0E8_S~KuwJlieDoGG^@gSQ)=)wTl@a|BS2iGqR5kD5hzdbl23?FNM#x#sf z7yR)ct0dF%{-)9QFpVbDzrJyhZ6(u9{Y;IP9#ip4SMMFtX7TvkN!HKxw;q3Q>+v49 zUnT1^{jDe7+j=5dKli7D>4Lv1{;ieui*ax DjZ&+7i7_U|sJJ9EnHkT~gv>loo|(k)WX6|FGLu*L)<@HgA#=|A=l1=oe)o58 z-CI>(ebs;3ZTDTLoobzGd&SLeRg=awJgc&6ieudl94ii|9itP`qN)*GuTBdUpfLRD?4VYNZF#Tp{o zjhcn+Mt$r5+kRvF`t~*L@U25J_sW8I9X+Ad(T(d-^_M?-@N_yAGFKYE;>vhZk-41$#vof4IV@Y{=KetsQc)L8wM#3KL zuXz#!HabcjB3PbK7*UT!#x`#q3qeBot8)UI34QL#EDVZV&TE+PE?^*3fEj$vF*sGil*ma4q%b4Ot*FhrCWTU=cG|%*a3b!3_$s~R2=>tk37{8k^XN)c`MD2sDEb@WsUWu8fJ+$%*jNx_c> z2mKPL9TB6>5G`ID^Ut$0;MRy3_)+ho!q!q4?zNXiL$_D5Y6?9+^jZ%qd}7pD;wh7C zG})+6=CI9moJg?>pD-mpFu}WsEh5`&Y76!l4S)B3me+GCQm$yMRwz)fAPP|X>eTpH zD)O_=10sEMSp>BB?&ZJXRHa?qrb@G*j|ajUzp?y??C-Mep9_ES+sfZ0m#TS!w+jyY zSFv933rOR?6E2Ix96m-9U(*d}4TxtqpwkeoE)dUGmEcgnEC@uk5&~nj4-qX^a+v88 zXbg(#5-ST4-{V172Z`r>)0poLr@~~fug7| zCzHaaw}Vnc0vA7f3{mO@!obZA3#G|MT^Nfw65OgTZYVD=sc&y(5$$54m@Z+2auQ?g zU62v{B1?vw!3)?_NuOy)BTg1%PkVClgY*j#E5<3Z{`Sa7-JnFzr9}IV8p}!qM})2z zDF#+cA*>&@meq=`v2c?+sEP$yanBQ@V>oZIgKgfU;iV97^-^rLBNyjG9&=GhF8o8s zvYq5&yRC~V*burO3Zur6gBn4#y=PI_Z8bkJ;Ghm$rGqVzk2$D<>ydd(PMOrGQS4)K zbHmmRP!#8)qS+VJ{h4j|4hWB4>HfgdIKvn)qoLR|1x`mtv;P$qVU8vxy$`@AW&(de z*;VZnk$u*)Hpal13qg#YKuet1nmN)X!cw%HAgB`{9GQ zXIQN0j#j@a$VS=sw8S@gu*rgc45nN48n!}Bjvi)Y#SQkbpFAATiev>A5Batp?m@t` zNo*N;_)>7?+rvTkL{^9KtL|e1xMUZwXAq$JhMr%}Uc|Og|KF5;A84Ge2h;R$_FKaJ zo!YNWU&;;>?h!rL!nxifCFTga>Xm*DB|76thbYH~B# zpW#$)IQwq|sDBcGK709|LH%yqOi!4XXJFsKio7xGp8^!+kTZ;lu15$9QIjrUN!&#R zDKp1$R}}>BjnXj0XjOzEov7~2e1(se0FD5I1dx7LRKWv2S2+io62;UpB?&QTsbWYM zs94dnA1l@m&@elL$*KA2>_|Rcg`1&UmdbiY7FaESEeP)G#=;sGNIrVSpsgBe9 zMy~6%9k~vC=NIuiqB>ptCLY#GbN#nG$~ zk&en(rmLa5D?}ZPgLo41N<*bO71k9NYFAqM_^L3Lt+n>i40%OUc(Yn&VI&eX34-x_ zs+wkwOYt=AZYzS~;t1AhP4F^YD4xn+RtQER!7hvd3}vc*l9nZj+PAGpE-r~+?^%FD5{NCk4HawJ$B3AXS_lqUe;san{vHo0yS&MLqJ91U=QQuY~5Iq%r=pS z4YnQ<;NKMuV#^X9G)YLcK?AqEy~WAc8E#f)vjgB?mB$WJe+u^Rqmimf?}S@bx$GLhVw)7PYlw*Y#Ygs@%-BVEFJYk=J&KpFzRkVz%IQ!|iM z@-5=Tqjo{*1SqXr!j)xuzb>5(hu}tfH@j&aY|<;!yK;V;Gx5 zxM_&XlQ_}^u5X?vEN&XlN};tWhLsU68*wEPN4ml{aYY(i4NWVih~=Lxl|q6cSfs?6HQtK!*7K`u`{-L_fFgQ?9^ z*#-3NHVb|C_gm6-zd2s4F2m|1_IrwO4x(oSu=^NLQ%#tv$;<9qDW^4n%N?AH zJeiBN>k@gqBYpYAIND6H`S6c*8+itK1=md~=l*_6B5tpLN;?OQl$S*6Gr7FL(fX4o zAKrN;gXII;5Up8+fzP7AAcUrL|Y)s=X+pu&%*Ty*3K`e#HvO}_vuCU~9nxs8z#q!FgWPaX;HU|uRPzveVlL#xs{^xegIXo=!IOTaI~Ns zBv|vpXt?`=6OSOgx(xASAs9k6q=q93^*<4ur zVjQ0*amx`mn{cEmxbT;1dAUTCBf>}sQU&6dvO`fhIzjrDrMf{IWeJ?xQpA<*@`Ms&a!|L8U>6~<&7XfDN70Bd zv6G0rk@}9zTTh!e`y*Uy3*fg22a!8e>{Eg@p@jk~27SQSmYTHM&uUnAFGFXEU^QF5xtZg1~D}41ZGwf7%iS1%C)O z?b*dHVeoE8kgUJoGKX6Bj@SMXjg&3*^xjB*hhpx(MY;_m_J#1<6eCm~RP#?|ZI2?~ zCt6yWr}w35|7peY?|qT{CmWU@Ve$Tn{6}JO$T^0#-$@?Q6&}|EYe30Ii%3Ey6RuI`KB&(NXq$^~BhZ4ot=u?L#@eUdNX$0<&K++YU>)~hl zF$p<%i@-IC><4-*l#x&}#{rCevB)dA*F^A!fI8 z$lMRG%%(41pX~Git>m`e_j(L0I_kt9%4ps}o3CXwq~Dim>N^_eWbb0J`uu2!^T4*F zcA-+8M_cYfy9()w?d4-t+)qN@MaT#VAzeUzX%nXqdPN9gXZYrL8b2!&kkg&YQ(Pzk zi5S$tC&op%-2EocB5!UVptpX2B>{aWGMyG!4dq0<)le47I6p+o0*X^jdOln@=?V9G z5?D0^olNDm5_cJKl@dof;%2gq;BhL0KPNFCA!dWbkd7EV+&FcR|3)INAY!M?3hDWx z{TH@liYO6$&NTBL$#4xB5?v@ypP$KP7ki@KxXIb09`@Ea`<82Bw5E?x{94@7n%Ys6 zh(8`o#VEGogqC@!J6h~ih`w!$<8MXt`P}?G2eWq3v z$FS`PiYRe5Gew}#V23@5%_ugaI4O3#7E`y7rW_R0P`r-f5Q?i}A($?sn270#L-7HM z_k?I@b*wC^D5+mrT~detLzys-X3C+N@@J;pnJI5(%9)w+Wu{!2DNkloaEr)=nG$5C zF)EY20QSvzf+grm>o7oMsxMnTBVkp$SegA~Oxi zEQTZUZ*DLea0ECBj9Quj#zZQ=F-z7S|A>;c$2)jgd;D8N)*dh3W$p2PT-F{hk7e!g zwp!L6Z;NH^@m5#VUWf}gep!3GrINMBJ3?7|yfc%v#}8jwd%S;=wZ|I-S$q7_m$k>! zoUA>5y~^6-2brurev!!9<7pO4A3w~5uVz_$JfX?j;~_%U9^bgK_PAS8?M;b2^WXcB ziT@p{uSBq7=)39%%imA+E*vfr=xfXx*mANx#m-U$@4nx~))RQG0Q<8hNbeoNnqlil zUID&%>-sa6zG&HYsf+C*3cYT7LM)L3i(9I5%)NUf9}v6x$r{ojQ;}*4VG&F diff --git a/docs/build/html/.doctrees/environment.pickle b/docs/build/html/.doctrees/environment.pickle index 7e81f98b8be0f64c8ddb53e8aca53b55345ca78b..fe182130f439df1dbdda6a04b46429b94d413eff 100644 GIT binary patch literal 12411767 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 diff --git a/docs/build/html/api/generated/openseries.ReturnSimulation.html b/docs/build/html/api/generated/openseries.ReturnSimulation.html index fa4cd84a..9e65b39d 100644 --- a/docs/build/html/api/generated/openseries.ReturnSimulation.html +++ b/docs/build/html/api/generated/openseries.ReturnSimulation.html @@ -128,14 +128,14 @@

    openseries.ReturnSimulation
    class openseries.ReturnSimulation(*, number_of_sims, trading_days, trading_days_in_year, mean_annual_return, mean_annual_vol, dframe, jumps_lamda=0.0, jumps_sigma=0.0, jumps_mu=0.0, seed=None)[source]
    -

    Bases: BaseModel

    +

    Bases: BaseModel

    The class ReturnSimulation allows for simulating financial timeseries.

    Parameters:
    • number_of_sims (Annotated[int, Gt(gt=0)]) – Number of simulations to generate.

    • trading_days (Annotated[int, Gt(gt=0)]) – Total number of days to simulate.

    • -
    • trading_days_in_year (Annotated[int, Strict(strict=True), Ge(ge=1), Le(le=366)]) – Number of trading days used to annualize.

    • +
    • trading_days_in_year (Annotated[int, Strict(strict=True), Ge(ge=1), Le(le=366)]) – Number of trading days used to annualize.

    • mean_annual_return (float) – Mean annual return of the distribution.

    • mean_annual_vol (Annotated[float, Gt(gt=0)]) – Mean annual standard deviation of the distribution.

    • dframe (DataFrame) – Pandas DataFrame object holding the resulting values.

    • diff --git a/docs/build/html/api/series.html b/docs/build/html/api/series.html index 396c6d13..1d28cb2d 100644 --- a/docs/build/html/api/series.html +++ b/docs/build/html/api/series.html @@ -146,17 +146,17 @@

      OpenTimeSeriesstr) – String identifier of the timeseries and/or instrument.

    • valuetype (ValueType) – Identifies if the series is a series of values or returns.

    • -
    • dates (Annotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$)]], MinLen(min_length=1)]) – Dates of the individual timeseries items. +

    • dates (Annotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$, ascii_only=None)]], MinLen(min_length=1)]) – Dates of the individual timeseries items. These dates will not be altered by methods.

    • values (Annotated[list[float], MinLen(min_length=1)]) – The value or return values of the timeseries items. These values will not be altered by methods.

    • local_ccy (bool) – Boolean flag indicating if timeseries is in local currency.

    • tsdf (DataFrame) – Pandas object holding dates and values that can be altered via methods.

    • -
    • currency (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)]) – ISO 4217 currency code of the timeseries.

    • -
    • domestic (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)]) – ISO 4217 currency code of the user’s home currency. +

    • currency (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)]) – ISO 4217 currency code of the timeseries.

    • +
    • domestic (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)]) – ISO 4217 currency code of the user’s home currency. Defaults to “SEK”.

    • -
    • countries (Annotated[set[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$)]], MinLen(min_length=1)] | Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$)]) – (List of) country code(s) according to ISO 3166-1 alpha-2. +

    • countries (Annotated[set[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$, ascii_only=None)]], MinLen(min_length=1)] | Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$, ascii_only=None)]) – (List of) country code(s) according to ISO 3166-1 alpha-2. Defaults to “SE”.

    • markets (list[str] | str | None) – (List of) markets code(s) supported by exchange_calendars. Optional.

    • @@ -243,7 +243,7 @@

      OpenTimeSeriesParameters:
      • name (str) – String identifier of the timeseries and/or instrument.

      • -
      • dates (Annotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$)]], MinLen(min_length=1)]) – List of date strings as ISO 8601 YYYY-MM-DD.

      • +
      • dates (Annotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$, ascii_only=None)]], MinLen(min_length=1)]) – List of date strings as ISO 8601 YYYY-MM-DD.

      • values (Annotated[list[float], MinLen(min_length=1)]) – Array of float values.

      • valuetype (ValueType) – Identifies if the series is a series of values or returns. Defaults to ValueType.PRICE.

      • @@ -251,7 +251,7 @@

        OpenTimeSeriesstr) – Database identifier of the instrument associated with the timeseries. Optional.

      • isin (str | None) – ISO 6166 identifier code of the associated instrument. Optional.

      • -
      • baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)]) – ISO 4217 currency code of the timeseries. Defaults to “SEK”.

      • +
      • baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)]) – ISO 4217 currency code of the timeseries. Defaults to “SEK”.

      • local_ccy (bool) – Boolean flag indicating if timeseries is in local currency. Defaults to True.

      @@ -312,7 +312,7 @@

      OpenTimeSeriesstr) – Placeholder for a name of the timeseries.

    • valuetype (ValueType) – Identifies if the series is a series of values or returns. Defaults to ValueType.PRICE.

    • -
    • baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)]) – The currency of the timeseries. Defaults to “SEK”.

    • +
    • baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)]) – The currency of the timeseries. Defaults to “SEK”.

    • local_ccy (bool) – Boolean flag indicating if timeseries is in local currency. Defaults to True.

    @@ -736,7 +736,7 @@

    Class Methods for ConstructionParameters:
    • name (str) – String identifier of the timeseries and/or instrument.

    • -
    • dates (Annotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$)]], MinLen(min_length=1)]) – List of date strings as ISO 8601 YYYY-MM-DD.

    • +
    • dates (Annotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$, ascii_only=None)]], MinLen(min_length=1)]) – List of date strings as ISO 8601 YYYY-MM-DD.

    • values (Annotated[list[float], MinLen(min_length=1)]) – Array of float values.

    • valuetype (ValueType) – Identifies if the series is a series of values or returns. Defaults to ValueType.PRICE.

    • @@ -744,7 +744,7 @@

      Class Methods for Constructionstr) – Database identifier of the instrument associated with the timeseries. Optional.

    • isin (str | None) – ISO 6166 identifier code of the associated instrument. Optional.

    • -
    • baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)]) – ISO 4217 currency code of the timeseries. Defaults to “SEK”.

    • +
    • baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)]) – ISO 4217 currency code of the timeseries. Defaults to “SEK”.

    • local_ccy (bool) – Boolean flag indicating if timeseries is in local currency. Defaults to True.

    @@ -805,7 +805,7 @@

    Class Methods for Constructionstr) – Placeholder for a name of the timeseries.

  1. valuetype (ValueType) – Identifies if the series is a series of values or returns. Defaults to ValueType.PRICE.

  2. -
  3. baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)]) – The currency of the timeseries. Defaults to “SEK”.

  4. +
  5. baseccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)]) – The currency of the timeseries. Defaults to “SEK”.

  6. local_ccy (bool) – Boolean flag indicating if timeseries is in local currency. Defaults to True.

  7. diff --git a/docs/build/html/api/simulation.html b/docs/build/html/api/simulation.html index 5e490333..11393552 100644 --- a/docs/build/html/api/simulation.html +++ b/docs/build/html/api/simulation.html @@ -119,14 +119,14 @@

    Simulation
    class openseries.simulation.ReturnSimulation(*, number_of_sims, trading_days, trading_days_in_year, mean_annual_return, mean_annual_vol, dframe, jumps_lamda=0.0, jumps_sigma=0.0, jumps_mu=0.0, seed=None)[source]
    -

    Bases: BaseModel

    +

    Bases: BaseModel

    The class ReturnSimulation allows for simulating financial timeseries.

    Parameters:
    -openseries.owntypes.CountriesType: TypeAlias = typing.Annotated[set[typing.Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern='^[A-Z]{2}$')]], MinLen(min_length=1)] | typing.Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern='^[A-Z]{2}$')]
    +openseries.owntypes.CountriesType: TypeAlias = typing.Annotated[set[typing.Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern='^[A-Z]{2}$', ascii_only=None)]], MinLen(min_length=1)] | typing.Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern='^[A-Z]{2}$', ascii_only=None)]

    Represent a union type

    E.g. for int | str

    @@ -348,7 +348,7 @@

    Type AliasesAnnotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)]

    +

    alias of Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)]

    @@ -360,7 +360,7 @@

    Type AliasesAnnotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$)]

    +

    alias of Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$, ascii_only=None)]

    @@ -372,7 +372,7 @@

    Type AliasesAnnotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$)]], MinLen(min_length=1)]

    +

    alias of Annotated[list[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=True, min_length=10, max_length=10, pattern=^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$, ascii_only=None)]], MinLen(min_length=1)]

    @@ -537,11 +537,11 @@

    Validation Classes
    class openseries.owntypes.Countries(*, countryinput)[source]
    -

    Bases: BaseModel

    +

    Bases: BaseModel

    Declare Countries.

    Parameters:
    -

    countryinput (Annotated[set[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$)]], MinLen(min_length=1)] | Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$)])

    +

    countryinput (Annotated[set[Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$, ascii_only=None)]], MinLen(min_length=1)] | Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=2, max_length=2, pattern=^[A-Z]{2}$, ascii_only=None)])

    @@ -560,11 +560,11 @@

    Validation Classes
    class openseries.owntypes.Currency(*, ccy)[source]
    -

    Bases: BaseModel

    +

    Bases: BaseModel

    Declare Currency.

    Parameters:
    -

    ccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$)])

    +

    ccy (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=True, to_lower=None, strict=True, min_length=3, max_length=3, pattern=^[A-Z]{3}$, ascii_only=None)])

    diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index cf646dad..3b8d4556 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"API Consistency Notes":[[27,null]],"API Reference":[[35,null]],"Adding and Removing Series":[[41,"adding-and-removing-series"]],"Advanced Features":[[36,null]],"Advanced Optimization with Real Data":[[32,"advanced-optimization-with-real-data"]],"Advanced Risk Metrics":[[37,"advanced-risk-metrics"]],"Advanced Weight Strategies":[[38,"advanced-weight-strategies"]],"Analysis Methods":[[1,"analysis-methods"],[24,"analysis-methods"],[40,"analysis-methods"]],"Analysis Workflow":[[40,"analysis-workflow"]],"Annualization":[[40,"annualization"]],"Architecture Overview":[[40,"architecture-overview"]],"Asset Analysis":[[38,"asset-analysis"]],"Backtesting Framework":[[32,"backtesting-framework"]],"Basic Financial Analysis":[[37,null]],"Basic Financial Metrics":[[43,"basic-financial-metrics"]],"Basic Performance Metrics":[[37,"basic-performance-metrics"]],"Basic Portfolio Optimization Setup":[[32,"basic-portfolio-optimization-setup"]],"Basic Rebalanced Portfolio Setup":[[33,"basic-rebalanced-portfolio-setup"]],"Basic Risk Metrics":[[39,"basic-risk-metrics"]],"Basic Setup":[[34,"basic-setup"]],"Benefits of export_plotly_figure":[[36,"benefits-of-export-plotly-figure"]],"Best Practices":[[27,"best-practices"],[40,"best-practices"]],"Bug Reports":[[29,"bug-reports"]],"Building Documentation":[[29,"building-documentation"]],"Business Day Alignment":[[41,"business-day-alignment"]],"Business Day Calendars":[[40,"business-day-calendars"]],"CSV Data":[[41,"csv-data"]],"Calendar Analysis":[[34,"calendar-analysis"]],"Calendar Year Returns":[[37,"calendar-year-returns"]],"Cash Management Analysis":[[33,"cash-management-analysis"]],"Changelog":[[28,null]],"Class Methods for Construction":[[1,"class-methods-for-construction"],[24,"class-methods-for-construction"]],"Code Contributions":[[29,"code-contributions"]],"Code Review Process":[[29,"code-review-process"]],"Code Standards":[[29,"code-standards"]],"Code Style":[[29,"code-style"]],"Commit Messages":[[29,"commit-messages"]],"Common Issues":[[42,"common-issues"]],"Common Issues and Solutions":[[27,"common-issues-and-solutions"]],"Common Patterns":[[43,"common-patterns"]],"Common Properties":[[1,"common-properties"],[24,"common-properties"]],"Community Guidelines":[[29,"community-guidelines"]],"Comparative Analysis":[[31,"comparative-analysis"]],"Comparison with Benchmark":[[37,"comparison-with-benchmark"]],"Complete Analysis Workflow":[[34,"complete-analysis-workflow"]],"Complete Multi-Asset Analysis Workflow":[[31,"complete-multi-asset-analysis-workflow"]],"Complete Optimization Workflow":[[32,"complete-optimization-workflow"]],"Comprehensive Report":[[37,"comprehensive-report"]],"Conditional Value at Risk (CVaR)":[[39,"conditional-value-at-risk-cvar"]],"Consistency Checks":[[40,"consistency-checks"]],"Contributing Guidelines":[[29,"contributing-guidelines"]],"Contributing to openseries":[[29,null]],"Core Concepts":[[40,null]],"Core Dependencies":[[42,"core-dependencies"]],"Core Properties":[[40,"core-properties"]],"Correlation Analysis":[[31,"correlation-analysis"],[38,"correlation-analysis"]],"Correlation and Risk":[[1,"correlation-and-risk"]],"Creating Custom Plots":[[36,"creating-custom-plots"]],"Creating OpenFrame":[[41,"creating-openframe"]],"Creating Visualizations":[[43,"creating-visualizations"]],"Custom Exceptions":[[26,"custom-exceptions"]],"Custom Weight Portfolio":[[38,"custom-weight-portfolio"]],"Daily Rebalancing vs Theoretical Portfolio":[[33,"daily-rebalancing-vs-theoretical-portfolio"]],"Data Alignment":[[40,"data-alignment"]],"Data Export and Import":[[41,"data-export-and-import"]],"Data Handling":[[41,null]],"Data Immutability":[[40,"data-immutability"]],"Data Loading":[[40,"data-loading"]],"Data Manipulation":[[1,"data-manipulation"],[24,"data-manipulation"]],"Data Quality Checks":[[41,"data-quality-checks"]],"Data Transformations":[[41,"data-transformations"],[43,"data-transformations"]],"Data Validation":[[40,"data-validation"],[41,"data-validation"]],"Date Format Validation":[[41,"date-format-validation"]],"Date Handling":[[40,"date-handling"]],"Date Handling Functions":[[0,"date-handling-functions"]],"Date Utilities":[[0,null],[21,"date-utilities"]],"Debugging":[[29,"debugging"]],"Dependencies":[[42,"dependencies"]],"Detailed Portfolio Analysis":[[33,"detailed-portfolio-analysis"]],"Development":[[35,null]],"Development Environment":[[29,"development-environment"]],"Development Installation":[[42,"development-installation"]],"Development Setup":[[29,"development-setup"]],"Development Workflow":[[29,"development-workflow"]],"Different Rebalancing Frequencies":[[33,"different-rebalancing-frequencies"]],"Distribution Analysis":[[37,"distribution-analysis"]],"Docstrings":[[29,"docstrings"]],"Documentation":[[29,"documentation"]],"Documentation Contents":[[35,"documentation-contents"]],"Documentation Contributions":[[29,"documentation-contributions"]],"Documentation Standards":[[29,"documentation-standards"]],"Drawdown Analysis":[[37,"drawdown-analysis"]],"Dropping Missing Data":[[41,"dropping-missing-data"]],"Efficient Data Loading":[[41,"efficient-data-loading"]],"Efficient Frontier":[[38,"efficient-frontier"]],"Embedding Reports in Existing HTML Pages":[[30,"embedding-reports-in-existing-html-pages"]],"Equal Weight Portfolio":[[32,"equal-weight-portfolio"],[38,"equal-weight-portfolio"]],"Equal Weight vs Custom Weight Strategies":[[33,"equal-weight-vs-custom-weight-strategies"]],"Examples":[[35,null]],"Excel Export":[[41,"excel-export"]],"Export Methods":[[1,"export-methods"],[24,"export-methods"],[40,"export-methods"]],"Export Multi-Asset Results":[[31,"export-multi-asset-results"]],"Export Optimization Results":[[32,"export-optimization-results"]],"Export Results":[[34,"export-results"]],"Export Risk Report":[[39,"export-risk-report"]],"Exporting Custom Plotly Figures":[[36,"exporting-custom-plotly-figures"]],"Exporting Results":[[43,"exporting-results"]],"Factor Analysis and Regression":[[36,"factor-analysis-and-regression"]],"Feature Requests":[[29,"feature-requests"]],"File and Network Support":[[42,"file-and-network-support"]],"Financial Calculations":[[40,"financial-calculations"]],"Financial Metrics":[[1,"financial-metrics"],[24,"financial-metrics"]],"Financial Metrics Methods":[[1,"financial-metrics-methods"],[24,"financial-metrics-methods"]],"Financial and Date Utilities":[[42,"financial-and-date-utilities"]],"Frame Management":[[1,"frame-management"]],"Frame-specific Properties":[[1,"frame-specific-properties"]],"From Arrays":[[41,"from-arrays"]],"From Fixed Rate":[[41,"from-fixed-rate"]],"From pandas DataFrame/Series":[[41,"from-pandas-dataframe-series"]],"Function Parameter Names":[[27,"function-parameter-names"]],"Function Return Values":[[27,"function-return-values"]],"Get All Metrics at Once":[[43,"get-all-metrics-at-once"]],"Getting Help":[[29,"getting-help"],[42,"getting-help"]],"Getting Started":[[29,"getting-started"]],"GitHub Releases":[[28,"github-releases"]],"HTML Report Function":[[23,"html-report-function"]],"Handling Different Date Ranges":[[41,"handling-different-date-ranges"]],"Handling Missing Data":[[41,"handling-missing-data"]],"Historical Stress Testing":[[39,"historical-stress-testing"]],"IDE Setup":[[29,"ide-setup"]],"Important API Notes":[[27,"important-api-notes"]],"Important Notes":[[35,null]],"Indices and tables":[[35,"indices-and-tables"]],"Inline HTML Output":[[36,"inline-html-output"]],"Installation":[[42,null]],"Installing from source":[[42,"installing-from-source"]],"Installing openseries":[[42,"installing-openseries"]],"Inverse Volatility Portfolio":[[32,"inverse-volatility-portfolio"]],"Issue: \u201cDo not run resample_to_business_period_ends on return series\u201d":[[27,"issue-do-not-run-resample-to-business-period-ends-on-return-series"]],"Issue: \u201cTypeError: unsupported format string passed to Series.__format__\u201d":[[27,"issue-typeerror-unsupported-format-string-passed-to-series-format"]],"Issue: \u201cTypeError: \u2018DataFrame\u2019 object is not callable\u201d":[[27,"issue-typeerror-dataframe-object-is-not-callable"]],"JSON Export":[[41,"json-export"]],"Key Concepts to Remember":[[43,"key-concepts-to-remember"]],"Key Features":[[35,"key-features"]],"Length Consistency":[[41,"length-consistency"]],"Linux":[[42,"linux"]],"Literal Types":[[26,"literal-types"]],"Loading Data":[[41,"loading-data"]],"Loading Data from External Sources":[[43,"loading-data-from-external-sources"]],"Main Classes":[[21,"main-classes"]],"Managing Multiple Series":[[40,"managing-multiple-series"]],"Maximum Diversification Portfolio":[[32,"maximum-diversification-portfolio"]],"Maximum Diversification Strategy":[[38,"maximum-diversification-strategy"]],"Mean-Variance Optimization":[[32,"mean-variance-optimization"]],"Memory Management":[[40,"memory-management"]],"Memory Usage":[[41,"memory-usage"]],"Method Categories":[[40,"method-categories"]],"Method Chaining vs Object Creation":[[27,"method-chaining-vs-object-creation"]],"Method Parameter Names":[[27,"method-parameter-names"]],"Methods":[[1,"methods"],[24,"methods"]],"Metric Names in DataFrames":[[27,"metric-names-in-dataframes"]],"Minimum Volatility Overweight Portfolio":[[32,"minimum-volatility-overweight-portfolio"]],"Minimum Volatility Overweight Strategy":[[38,"minimum-volatility-overweight-strategy"]],"Monte Carlo Portfolio Simulation":[[32,"monte-carlo-portfolio-simulation"],[38,"monte-carlo-portfolio-simulation"]],"Monte Carlo Risk Simulation":[[39,"monte-carlo-risk-simulation"]],"Monthly and Annual Analysis":[[37,"monthly-and-annual-analysis"]],"Multi-Asset Analysis":[[31,null]],"Multi-Factor Model Analysis":[[36,"multi-factor-model-analysis"]],"Mutation and data layers":[[40,"mutation-and-data-layers"]],"NaN Handling Strategies":[[41,"nan-handling-strategies"]],"Next Steps":[[43,"next-steps"]],"Non-numerical Properties":[[24,"non-numerical-properties"]],"OpenFrame":[[1,null]],"OpenTimeSeries":[[24,null]],"Optional Dependencies":[[42,"optional-dependencies"]],"Other Utilities":[[21,"other-utilities"]],"Outlier Detection":[[41,"outlier-detection"]],"Performance Analysis":[[34,"performance-analysis"]],"Performance Attribution":[[31,"performance-attribution"],[33,"performance-attribution"],[38,"performance-attribution"]],"Performance Comparison Analysis":[[32,"performance-comparison-analysis"]],"Performance Considerations":[[41,"performance-considerations"]],"Platform-Specific Notes":[[42,"platform-specific-notes"]],"Portfolio Analysis":[[1,"portfolio-analysis"],[38,null],[43,"portfolio-analysis"]],"Portfolio Comparison":[[32,"portfolio-comparison"],[38,"portfolio-comparison"]],"Portfolio Constraints":[[22,"portfolio-constraints"]],"Portfolio Construction":[[40,"portfolio-construction"]],"Portfolio Creation":[[27,"portfolio-creation"]],"Portfolio Optimization":[[22,"portfolio-optimization"],[32,null],[38,"portfolio-optimization"]],"Portfolio Simulation":[[22,"portfolio-simulation"]],"Portfolio Tools":[[21,"portfolio-tools"],[22,null]],"Price and Return Conversions":[[41,"price-and-return-conversions"]],"Properties":[[1,"properties"],[24,"properties"]],"Properties vs Methods":[[27,"properties-vs-methods"],[40,"properties-vs-methods"]],"Pull Request Process":[[29,"pull-request-process"]],"Python Version Support":[[35,"python-version-support"]],"Quick Start":[[35,"quick-start"]],"Quick Start Guide":[[43,null]],"Ranking Analysis":[[31,"ranking-analysis"]],"Real-World Application Example":[[33,"real-world-application-example"]],"Real-World Fund Portfolio Optimization":[[32,"real-world-fund-portfolio-optimization"]],"Rebalanced Portfolio Simulation":[[33,null]],"Rebalancing Analysis":[[38,"rebalancing-analysis"]],"Release Notifications":[[28,"release-notifications"]],"Release Process":[[29,"release-process"]],"Report Generation":[[23,null]],"Reporting":[[30,null]],"Resampling":[[40,"resampling"],[41,"resampling"]],"Responsive Design":[[23,"responsive-design"]],"Return Calculations":[[40,"return-calculations"]],"Return Values":[[23,"return-values"]],"ReturnSimulation Class":[[25,"returnsimulation-class"]],"Returns:":[[1,"returns"],[1,"id1"],[1,"id2"],[1,"id3"],[1,"id4"],[1,"id5"],[1,"id6"],[1,"id7"],[1,"id8"],[1,"id9"],[1,"id10"],[1,"id11"],[1,"id12"],[1,"id13"],[1,"id14"],[1,"id15"],[1,"id16"],[1,"id17"],[1,"id18"],[1,"id19"],[1,"id20"],[1,"id21"],[24,"returns"],[24,"id1"],[24,"id2"],[24,"id3"],[24,"id4"],[24,"id5"],[24,"id6"],[24,"id7"],[24,"id8"],[24,"id9"],[24,"id10"],[24,"id11"],[24,"id12"],[24,"id13"],[24,"id14"],[24,"id15"],[24,"id16"],[24,"id17"],[24,"id18"],[24,"id19"],[24,"id20"],[24,"id21"]],"Risk Analysis":[[34,"risk-analysis"],[37,"risk-analysis"]],"Risk Attribution":[[38,"risk-attribution"]],"Risk Decomposition":[[39,"risk-decomposition"]],"Risk Limits and Controls":[[39,"risk-limits-and-controls"]],"Risk Management":[[39,null]],"Risk Metrics":[[40,"risk-metrics"]],"Risk Monitoring Dashboard":[[39,"risk-monitoring-dashboard"]],"Risk Parity Portfolio":[[38,"risk-parity-portfolio"]],"Risk-Adjusted Performance":[[39,"risk-adjusted-performance"]],"Risk-Adjusted Returns":[[37,"risk-adjusted-returns"]],"Risk-Based Portfolio Strategies":[[32,"risk-based-portfolio-strategies"]],"Risk-Return Analysis":[[31,"risk-return-analysis"]],"Rolling Analysis":[[1,"rolling-analysis"],[34,"rolling-analysis"],[37,"rolling-analysis"]],"Rolling Factor Analysis":[[36,"rolling-factor-analysis"]],"Rolling Portfolio Analysis":[[38,"rolling-portfolio-analysis"]],"Rolling Risk Analysis":[[39,"rolling-risk-analysis"]],"Running Tests":[[29,"running-tests"]],"Scenario Analysis":[[39,"scenario-analysis"]],"Sector/Style Analysis":[[31,"sector-style-analysis"]],"Setting Up":[[37,"setting-up"]],"Setting Up Multi-Asset Analysis":[[31,"setting-up-multi-asset-analysis"]],"Setting Up Risk Analysis":[[39,"setting-up-risk-analysis"]],"Setting Up the Data":[[38,"setting-up-the-data"]],"Simple Portfolio Construction":[[38,"simple-portfolio-construction"]],"Simulation":[[21,"simulation"],[25,null]],"Single Asset Analysis":[[34,null]],"Statistical Analysis":[[1,"statistical-analysis"]],"Strategy Comparison with Error Handling":[[38,"strategy-comparison-with-error-handling"]],"Stress Testing":[[31,"stress-testing"],[38,"stress-testing"],[39,"stress-testing"]],"Subset Portfolio Analysis":[[33,"subset-portfolio-analysis"]],"Summary Report":[[38,"summary-report"]],"Summary and Best Practices":[[33,"summary-and-best-practices"]],"Summary and Interpretation":[[37,"summary-and-interpretation"]],"System Requirements":[[42,"system-requirements"]],"Test Coverage":[[29,"test-coverage"]],"Test Structure":[[29,"test-structure"]],"Testing":[[29,"testing"]],"The OpenFrame Class":[[40,"the-openframe-class"]],"The OpenTimeSeries Class":[[40,"the-opentimeseries-class"]],"Time Series Analysis":[[31,"time-series-analysis"]],"Time Series Transformations":[[34,"time-series-transformations"]],"Transaction Cost Analysis":[[33,"transaction-cost-analysis"]],"Transformation Methods":[[40,"transformation-methods"]],"Transformations":[[1,"transformations"],[24,"transformations"]],"Troubleshooting":[[42,"troubleshooting"]],"Tutorials":[[35,null]],"Type Aliases":[[26,"type-aliases"]],"Type Hints":[[29,"type-hints"]],"Type Safety":[[40,"type-safety"]],"Types and Enums":[[21,"types-and-enums"],[26,null]],"Types of Contributions":[[29,"types-of-contributions"]],"Understanding Rebalanced Portfolio Simulation":[[33,"understanding-rebalanced-portfolio-simulation"]],"User Guide":[[35,null]],"Using Real Fund Data for Optimization":[[32,"using-real-fund-data-for-optimization"]],"Using conda":[[42,"using-conda"]],"Using pip (recommended)":[[42,"using-pip-recommended"]],"Using the Built-in HTML Report":[[30,"using-the-built-in-html-report"]],"Using with Plotly Express":[[36,"using-with-plotly-express"]],"Utility Functions":[[21,"utility-functions"],[24,"utility-functions"]],"Validation Classes":[[26,"validation-classes"]],"Validation Methods":[[41,"validation-methods"]],"Value Types":[[26,"value-types"],[40,"value-types"]],"Value Validation":[[41,"value-validation"]],"Value at Risk (VaR) Analysis":[[39,"value-at-risk-var-analysis"]],"ValueType Specification":[[27,"valuetype-specification"]],"Verifying Installation":[[42,"verifying-installation"]],"Visualization":[[1,"visualization"],[22,"visualization"],[24,"visualization"],[34,"visualization"],[37,"visualization"]],"Weight Strategy Details":[[32,"weight-strategy-details"]],"Windows":[[42,"windows"]],"Working with Business Days":[[43,"working-with-business-days"]],"Working with Multiple Assets":[[41,"working-with-multiple-assets"]],"Working with Multiple Assets (OpenFrame)":[[43,"working-with-multiple-assets-openframe"]],"Working with Real Data Sources":[[41,"working-with-real-data-sources"]],"Writing Tests":[[29,"writing-tests"]],"Yahoo Finance Integration":[[41,"yahoo-finance-integration"]],"Your First OpenTimeSeries":[[43,"your-first-opentimeseries"]],"macOS":[[42,"macos"]],"openseries Documentation":[[35,null]],"openseries package":[[21,null]],"openseries.OpenFrame":[[2,null]],"openseries.OpenTimeSeries":[[3,null]],"openseries.ReturnSimulation":[[4,null]],"openseries.ValueType":[[5,null]],"openseries.constrain_optimized_portfolios":[[6,null]],"openseries.date_fix":[[7,null]],"openseries.date_offset_foll":[[8,null]],"openseries.efficient_frontier":[[9,null]],"openseries.export_plotly_figure":[[10,null]],"openseries.generate_calendar_date_range":[[11,null]],"openseries.get_previous_business_day_before_today":[[12,null]],"openseries.holiday_calendar":[[13,null]],"openseries.load_plotly_dict":[[14,null]],"openseries.offset_business_days":[[15,null]],"openseries.prepare_plot_data":[[16,null]],"openseries.report_html":[[17,null]],"openseries.sharpeplot":[[18,null]],"openseries.simulate_portfolios":[[19,null]],"openseries.timeseries_chain":[[20,null]]},"docnames":["api/datefixer","api/frame","api/generated/openseries.OpenFrame","api/generated/openseries.OpenTimeSeries","api/generated/openseries.ReturnSimulation","api/generated/openseries.ValueType","api/generated/openseries.constrain_optimized_portfolios","api/generated/openseries.date_fix","api/generated/openseries.date_offset_foll","api/generated/openseries.efficient_frontier","api/generated/openseries.export_plotly_figure","api/generated/openseries.generate_calendar_date_range","api/generated/openseries.get_previous_business_day_before_today","api/generated/openseries.holiday_calendar","api/generated/openseries.load_plotly_dict","api/generated/openseries.offset_business_days","api/generated/openseries.prepare_plot_data","api/generated/openseries.report_html","api/generated/openseries.sharpeplot","api/generated/openseries.simulate_portfolios","api/generated/openseries.timeseries_chain","api/openseries","api/portfoliotools","api/report","api/series","api/simulation","api/types","api_consistency","development/changelog","development/contributing","examples/custom_reports","examples/multi_asset","examples/portfolio_optimization","examples/rebalanced_portfolio","examples/single_asset","index","tutorials/advanced_features","tutorials/basic_analysis","tutorials/portfolio_analysis","tutorials/risk_management","user_guide/core_concepts","user_guide/data_handling","user_guide/installation","user_guide/quickstart"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1},"filenames":["api/datefixer.rst","api/frame.rst","api/generated/openseries.OpenFrame.rst","api/generated/openseries.OpenTimeSeries.rst","api/generated/openseries.ReturnSimulation.rst","api/generated/openseries.ValueType.rst","api/generated/openseries.constrain_optimized_portfolios.rst","api/generated/openseries.date_fix.rst","api/generated/openseries.date_offset_foll.rst","api/generated/openseries.efficient_frontier.rst","api/generated/openseries.export_plotly_figure.rst","api/generated/openseries.generate_calendar_date_range.rst","api/generated/openseries.get_previous_business_day_before_today.rst","api/generated/openseries.holiday_calendar.rst","api/generated/openseries.load_plotly_dict.rst","api/generated/openseries.offset_business_days.rst","api/generated/openseries.prepare_plot_data.rst","api/generated/openseries.report_html.rst","api/generated/openseries.sharpeplot.rst","api/generated/openseries.simulate_portfolios.rst","api/generated/openseries.timeseries_chain.rst","api/openseries.rst","api/portfoliotools.rst","api/report.rst","api/series.rst","api/simulation.rst","api/types.rst","api_consistency.rst","development/changelog.rst","development/contributing.rst","examples/custom_reports.rst","examples/multi_asset.rst","examples/portfolio_optimization.rst","examples/rebalanced_portfolio.rst","examples/single_asset.rst","index.rst","tutorials/advanced_features.rst","tutorials/basic_analysis.rst","tutorials/portfolio_analysis.rst","tutorials/risk_management.rst","user_guide/core_concepts.rst","user_guide/data_handling.rst","user_guide/installation.rst","user_guide/quickstart.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"0f":39,"10i":37,"11articlecox":[1,2],"1e":29,"1f":[37,40],"1y":[34,41],"2f":[31,32,33,34,35,37,38,39,40,43],"2x2":23,"2y":[34,41,43],"3b":43,"3f":[29,31,32,36,38,39],"3y":[30,31,33,36,39],"4f":[32,33,36,38,39],"5th":39,"5y":[32,34,35,37,38],"75th":31,"960px":23,"A":[0,1,2,3,6,14,15,22,24,26,41],"ALL":34,"AT":39,"All":29,"An":[1,2,3,20,24],"And":[1,2],"At":[1,3,24,26,29],"BOTH":[1,2],"Be":29,"Both":[21,40],"By":26,"Down":[1,2],"For":[1,21,23,24,28,29,31,32,35,36,39,41,42,43],"Here":[31,32,33,34,35,43],"How":[1,10,24],"If":[0,1,2,3,7,10,13,15,23,24,29,40,42],"It":[0,1,2,3,15,24,25,30,33,35],"MOST":31,"Most":[1,24,32,42],"My":[10,27,30],"NOT":27,"No":[27,31,39,42],"On":[40,42],"Or":[27,35],"Other":35,"Some":27,"The":[0,1,2,3,4,6,7,8,9,12,15,16,18,19,20,21,22,23,24,25,26,27,29,30,32,33,35,36,38,41,42],"These":[3,24,27],"They":[26,27],"This":[1,2,4,10,21,25,26,27,29,30,31,32,33,34,36,37,38,39,40,41,42,43],"To":[1,2,27,29,42],"Up":[1,2,35],"We":29,"When":[10,23,27,29,30,32,38,41],"Which":[18,22],"With":[27,41],"You":[36,37,38,42],"Your":35,"_":[32,34],"__init__":[1,2,3,4,5,26,29],"__metadata__":26,"__version__":42,"_analysi":34,"_build":29,"_commonmodel":[1,2,3,21,24],"aapl":[30,31,34,36,39,41],"ab":[29,32,33,37,38,39],"abov":[1,2,24,26],"absolut":[1,24,33,41],"acceler":42,"accept":[1,24],"access":27,"accord":[0,3,4,8,11,12,13,15,24,25],"account":33,"accru":[3,24],"accrual":[3,24,33],"acf":[1,3,24],"acquisit":42,"across":[1,2,3,24,33,40],"activ":[29,33,39,42],"actual":[29,32,33,37,40],"actual_length":41,"actual_return":29,"adapt":[1,23,24,36,37],"add":[0,1,2,3,8,11,12,13,15,18,22,24,29,32,36,38,39],"add_logo":[1,17,18,22,23,24,32],"add_timeseri":[1,2,41,43],"add_trac":36,"addit":[29,38,42],"address":29,"adj_r_squar":36,"adjac":[1,24],"adjust":[0,1,2,3,8,15,24,35,36],"advanc":35,"advantag":36,"agg":38,"aggreg":38,"aim":32,"alert":39,"alia":26,"alias":35,"align":[1,2,3,24,26,38,43],"align_index_to_local_cday":[1,24,33,40,41,43],"all_asset":39,"all_metr":[27,31,34,37,43],"all_portfolio":38,"all_properti":[1,2,3,24,27,31,32,33,34,37,38,39,40,41,43],"all_seri":38,"alloc":[6,9,22,43],"allow":[1,2,3,4,6,9,22,24,25,26,36],"allowed_str":26,"almost":[9,22],"along":[1,9,22,24],"alongsid":[1,24],"alpha":[0,1,2,3,4,8,11,12,13,15,23,24,25],"alphabet":[31,39],"alreadi":[29,42],"also":[1,2,26,27,36,38,40,42],"alter":[3,24],"altern":[32,39,43],"alway":[1,2,3,4,24,25,29,32,40],"amazon":31,"among":32,"amzn":[31,41],"analys":[3,24],"analysi":[0,21,22,23,25,30,35,41,42],"analysis_fram":36,"analyz":[24,31,33,34,35,37,38,39,43],"ani":[1,3,4,24,26,29,36,37,38],"annot":[1,2,3,4,24,25,26],"annual":[1,2,4,23,24,25,31,32,33,34,35,38,39,41,42,43],"annual_return":[37,40],"annual_vol":40,"anomali":32,"anoth":[1,24],"anyth":[0,15,26],"api":[21,29,32,40,43],"append":[29,30,31,32,33,36,38,39,41,43],"appl":[30,31,34,36,39,41,42],"apple_analysi":34,"apple_data":34,"apple_drawdown":34,"apple_metr":34,"apple_return":34,"appli":[20,24,32,40],"applic":[32,35,36],"approach":[29,32,33,39],"appropri":[29,41],"approv":29,"approxim":[29,33],"ar1_coef":[4,25],"arbitrary_types_allow":[1,2,3,4,24,25],"architectur":35,"area":29,"aren":36,"arg":[26,29],"argument":[0,3,4,8,11,12,13,15,26,27],"arithmet":[1,2,4,24,25,37],"arithmetic_ret":[1,2,3,24,26,37],"arithmetic_ret_func":[1,24],"arithmetic_return":37,"arithmeticmean":[1,24],"around":[35,40],"array":[3,24,29,40],"articl":[1,2,3,24],"ascend":31,"ask":29,"asp":[1,2,3,24],"assert_frame_equ":29,"assess":[37,39],"asset":[1,2,6,9,16,21,22,23,24,27,30,32,33,35,36,37,39,40],"asset1":[31,38],"asset2":[31,38],"asset_a":36,"asset_b":36,"asset_column":[1,2],"asset_comparison":36,"asset_data":31,"asset_group":31,"asset_metr":[31,38,39],"asset_mov":39,"asset_nam":[32,33,38],"asset_param":33,"asset_perform":33,"asset_return":38,"asset_vol":[38,39],"assign":32,"associ":[3,24],"assum":[1,2,3,20,24,37,38,39,41],"assumpt":[1,24],"asymmetri":37,"atleastoneframeerror":26,"attempt":26,"attent":27,"attribut":[1,2,3,4,5,26,35,43],"auto":[10,36],"auto_open":[1,10,17,18,22,23,24,32,36],"autocorr":[1,2,3,24,26],"autocorr_func":[1,24],"autocorrel":[1,3,4,24,25],"autom":29,"automat":[1,23,24,33,36,40,41,42,43],"autoregress":[4,25],"avail":[1,2,3,24,32,33,36,38,39,40,42],"averag":[1,2,3,4,24,25,31,33,34,36,38,39],"avg":31,"avg_corr":38,"avg_correl":[31,38],"avg_return":31,"avg_sharp":31,"avg_stress_return":31,"avg_vol":31,"avoid":[3,24,27],"axi":[1,24,38],"b":[1,2,3,24,26,29,41],"back":[20,24,41],"backfil":[1,2,3,24,26],"backtest":[33,35],"backtest_result":32,"backward":[0,8,12,29],"bal_weight":[1,2,33,38],"bar":[1,17,23,24,26,36,37,43],"bar_freq":[17,23],"bargap":[1,24],"bargroupgap":[1,24],"barmod":[1,24],"base":[1,2,3,4,5,16,22,24,25,26,29,35,37,39,43],"base_column":[1,2],"base_zero":[1,2],"basecci":[3,24,32],"baselin":32,"basemodel":[4,21,25,26,40],"basic":[29,35,38,40],"basket":[1,2],"batch":[1,41],"befor":[26,27,29,40],"behav":26,"behavior":29,"behind":40,"benchmark":[1,2,23,30,35],"benefit":[26,31,38],"best":[29,32,35,38,39],"best_idx":39,"best_strategi":32,"beta":[1,2,5,23,26,36,40],"better":[23,31,42],"beyond":[38,39],"bfgs":26,"bfill":[1,2,3,24,26],"bias":[1,2,3,24],"bin":[1,24,29,42],"bind":26,"bme":[1,2,3,24,26,34,37,40,41,43],"bnd":32,"bodi":[23,30],"bond":[32,33,36,37,38],"bond_data":37,"bond_tick":37,"bool":[0,1,2,3,8,9,10,14,17,18,22,23,24],"boolean":[3,24],"bothstartandenderror":26,"bottleneck":42,"bought":[1,2],"bound":[1,6,9,22,24,26],"box":[1,3,24],"bqe":[1,2,3,24,26,40,41],"branch":29,"breach":39,"break":[29,37],"breakpoint":23,"brownian":[4,25],"browser":[1,10,18,22,23,24,37,43],"build":[40,42],"built":[27,29,32,35,40,41,43],"bump":[0,12,15,29],"busdaycalendar":[0,13],"busi":[0,1,2,3,8,11,12,13,15,24,29,35],"buy":33,"buysell_qti":[33,38],"bye":[1,2,3,17,23,24,26,37,41],"byte":26,"c":[1,2,24,35,41,42],"cagr":[1,2,23,24,37,43],"calc_rang":[1,24],"calcul":[0,1,2,3,21,24,26,29,31,32,33,35,36,37,38,39,43],"calculate_return":29,"calculate_sharpe_ratio":29,"calendar":[0,1,2,3,8,11,13,24,29,35,41,42,43],"call":[3,24,27],"calmar":32,"can":[0,3,8,10,11,12,13,15,23,24,26,27,30,31,32,33,36,37,38,40,42,43],"cap":[31,36],"capabl":[21,23,29,43],"capit":[1,2],"capm":[1,2],"captor":[1,14,18,22,24,32],"captorab":42,"captorlogotyp":14,"captur":[1,2,23],"capture_ratio_func":[1,2],"captureratio":[1,2],"carlo":35,"case":[1,2,3,24,29,39,43],"cash":[1,2,35],"cash_analysi":33,"cash_index":[1,2],"cash_pct":33,"cash_posit":33,"cash_seri":33,"categori":35,"caught":40,"cci":26,"cd":[29,42],"cdn":[1,10,17,18,22,23,24,26,36],"certain":32,"cg":26,"chain":[20,24,40],"chang":[1,10,24,28,29,32,36,37,38,39,40,41],"changelog":[29,35],"characterist":[31,37,38,39],"chart":[23,36,37,43],"check":[27,29,35,39,42],"checker":26,"checkout":29,"chi":[3,24],"choic":40,"chosen":[1,2,3,24],"class":[2,3,4,5,29,35,43],"classmethod":[3,4,24,25],"classvar":26,"clean":[40,41],"clear":29,"clone":[29,42],"close":[5,26,27,30,31,32,33,34,35,36,37,38,39,40,41,43],"closer":33,"cluster":[1,24],"co":[1,2],"cobyla":26,"code":[0,1,3,4,8,11,12,13,15,24,25,42],"coeffici":[1,2,4,25,36],"col":[32,36],"collect":[1,40],"colour":[18,22],"column":[1,2,3,24,31,38,39,40,41],"column_nmbr":[3,24,40],"columns_lvl_on":[1,2],"columns_lvl_zero":[1,2,32,40],"com":[1,2,3,24,29,31,42],"combin":[3,24,26],"comment":39,"commit":42,"commod":[33,38],"common":[0,2,20,21,31,35,38,40,41],"compar":[1,2,23,24,32,33,35,37,38,39,40,43],"comparison":[1,2,3,21,23,24,29,30,31,33,35,36,39,43],"comparison_fram":[30,32,33,37,38,39],"comparison_metr":[32,33,37,38],"comparison_seri":33,"compat":[23,29,42],"compil":42,"complet":[23,35,38,39,43],"compon":[1,2,24],"compound":[1,24],"comprehens":[23,24,29,31,32,33,34,35,38,39,41,43],"comput":[1,3,24,41,42],"concaten":40,"concentr":39,"concept":35,"concis":29,"conda":[28,29,35],"condit":[1,24,29,35,37,40],"conditional_value_at_risk":[1,24],"confid":[37,39,40],"confidence_level":39,"config":[1,2,3,4,10,14,24,25,26,32],"config_and_layout":14,"configdict":[1,2,3,4,24,25,26],"configur":[1,2,3,4,24,25,26,29,32],"conflict":42,"conform":[1,2,3,4,24,25,26],"consecut":39,"consid":[29,33,40,41,42],"consider":35,"consist":[21,35,36],"consol":29,"constitu":[1,2,19,22,30,31,32,33,36,37,38,39,40,41,43],"constr":26,"constrain":[6,22,26],"constrain_optimized_portfolio":22,"constraint":35,"construct":[26,29,32,35,43],"contain":[1,2,10,21,23,24,30,33,36],"content":23,"contravari":26,"contrib":38,"contribut":[33,35,38,39,42],"control":[1,2,3,24,35],"conveni":[3,24],"convert":[1,2,3,10,24,27,31,32,34,37,38,39,40,41,42,43],"coordin":[1,24],"copi":[1,2,3,24,31,40,43],"core":[3,24,26,35],"corp":[31,39],"corr":[31,38],"corr_pair":31,"corr_scal":[1,2],"correct":[3,24,26,27,42],"correl":[2,5,26,32,35,36,37,39,43],"correl_matrix":[1,2,27,31,32,37,38,39,43],"correlation_matrix":[31,37,38,39],"cost":[35,38],"count":[38,39],"countri":[0,1,3,4,8,11,12,13,15,24,25,26,33,40,41,43],"countriesnotstringnorliststrerror":[0,13,26],"countriestyp":[0,1,3,4,8,11,12,13,15,24,25,26],"countryinput":26,"countrysettyp":26,"countrystringtyp":26,"cov":29,"covari":26,"cover":[36,41],"cox":[1,2],"crash":39,"creat":[1,2,3,4,18,22,23,24,25,26,27,29,30,31,32,33,34,35,37,38,39,40,42],"creation":29,"criteria":31,"crucial":38,"css":[1,10,23,24,30,36],"csv":34,"cubic":[1,24],"cumprod":38,"cumsum":36,"cumul":[1,2,3,23,24,38,40,41,42,43],"cumulative_contrib":38,"currenc":[3,24,26,32],"currencystringtyp":[3,24,26],"current":[6,16,18,22,29,31,32,34,36,37,39],"current_d":39,"current_metr":39,"current_portfolio":32,"current_portfolio_df":32,"curv":[1,24],"curve_point":[6,22],"curve_typ":[1,24],"custom":[23,27,29,30,35,40,41,43],"custom_dashboard":36,"custom_df":43,"custom_fram":43,"custom_holiday":[0,1,8,11,12,13,15,24],"custom_portfolio":[38,43],"custom_report":30,"custom_weight":[33,38],"custom_weight_portfolio":33,"cut":[9,22],"cvar":[1,5,24,26,34,35,37,40,43],"cvar_90":37,"cvar_95":[37,40],"cvar_99":37,"cvar_down":[1,2,3,24,26,34,37,39,40,43],"cvar_down_func":[1,24,37,39],"cvar_valu":39,"d":[1,3,4,24,25,26,37,39],"d_rang":[3,24],"daili":[1,2,3,23,24,34,35,37,38,39,40,41,42,43],"daily_var_95":39,"dashboard":[35,36],"data":[0,2,3,4,6,7,9,10,16,17,18,19,21,22,23,25,27,29,30,31,33,34,35,36,37,39,42],"data_typ":33,"databas":[3,24],"datafram":[1,2,3,4,9,16,18,19,22,24,25,26,31,32,36,39,40],"dataset":[40,41,42],"date":[1,2,3,4,7,8,11,12,13,15,20,23,24,25,26,29,32,33,34,35,36,37,38,39,43],"date_fix":0,"date_list":40,"date_offset_fol":0,"date_rang":[3,24,36,41],"datealignmenterror":[1,24,26],"datefix":[0,29],"datelisttyp":[3,24,26],"datestringtyp":26,"datetim":[0,1,7,24,26,33,37,39,40,41,42,43],"datetime64":26,"datetimeindex":[3,24,41],"datetyp":[0,7,8,26],"dateutil":42,"day":[0,1,2,3,4,8,11,12,15,24,25,26,29,31,33,34,35,37,38,39],"day_chunk":[1,2,3,24],"days_in_year":[3,24],"daysinyeartyp":[1,2,3,4,24,25,26],"dbc":38,"dd":[3,24,31,33,38],"ddate":[0,15],"dec1":26,"dec2":26,"declar":26,"decomposit":35,"dedic":26,"deepcopi":40,"def":29,"default":[0,1,2,3,4,6,8,9,10,11,12,13,14,15,18,20,22,23,24,25,26,27,29,36],"defaultinterpreterpath":29,"defin":[1,24,31,32,38,39],"definit":26,"del":40,"delbert":[1,2],"delet":[1,2,3,24],"delete_lvl_on":[3,24],"delete_timeseri":[1,2,41],"demean":[1,24],"demonstr":[30,32,33,34,36,37,38,39],"denomin":[1,2],"densiti":26,"depend":[1,2,23,29,35,36],"dependent_column":[1,2],"dependent_variable_idx":36,"deriv":[1,10,24],"describ":29,"descript":[29,34,37,40,43],"design":[21,27,35,40],"desir":26,"desktop":[1,23,24,30,36],"detail":[1,2,23,26,28,29,31,35,38,43],"detailed_portfolio":[33,38],"detect":[1,23,24,40],"determin":[0,1,2,3,8,18,22,24],"dev":[1,24,29,42],"develop":32,"deviat":[1,2,4,24,25,37,39,40],"devic":[1,23,24,36],"df":[36,41],"dframe":[3,4,24,25,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"diagnost":24,"dict":[1,2,14,24],"dictionari":[1,2,3,4,10,24,25,26],"differ":[0,1,2,3,7,24,27,29,31,32,35,36,37,38,39,40],"diffus":[4,25],"dir":[1,24],"direct":[23,31,32,34,36],"directori":[1,17,18,22,23,24,29],"directorypath":[1,18,22,24],"discuss":29,"display":[1,10,23,24,27,30,32,43],"displaymodebar":36,"distribut":[1,4,24,25,32,35,36,39,42,43],"div":[1,10,23,24,26,30,32,36,40],"div_id":10,"diversif":40,"diversifi":[38,39],"divid":[1,2,3,24],"divisor":[3,24],"dlta_degr_freedm":[1,2,3,24],"doc":29,"doctyp":[23,30],"document":[23,36,43],"doe":[0,1,15,24,40],"doesn":27,"dogleg":26,"domest":[3,24],"don":[1,2,27],"download":[31,33,34,35,37,38,39,41,43],"downsid":[1,24,37,39,40],"downside_devi":[1,2,3,24,26,37,39],"downside_vol":37,"downstream":[1,24],"draw":[1,24],"drawdown":[1,24,27,31,32,33,34,35,36,38,39,40,43],"drift":33,"drift_adjust":[1,24],"drop":[1,24,26],"drop_extra":[1,2,33,38],"dropna":41,"dt":[0,1,2,3,4,7,8,11,12,15,24,25,33,40,42,43],"due":26,"dummi":36,"dump":[1,24],"duplic":26,"dure":[1,2,31,38],"e":[1,24,26,29,40,42],"eaf":38,"earli":41,"earlier":[1,20,24],"early_seri":41,"easiest":42,"econom":[1,2],"edg":29,"educ":[1,2],"eem":38,"efa":[36,38],"effect":[27,40,41],"effici":[6,9,18,22,31,32],"efficient_fronti":[16,18,22,27,32,38],"efficient_threshold":31,"efram":[9,22,27,32,38],"either":[1,24],"elif":[33,37,39],"els":[31,32,33,37,39],"emb":30,"embed":[23,35,36],"emerg":[32,38],"empathi":29,"empti":[1,14,24,26,29],"en":[1,24],"enabl":29,"encod":30,"encount":[32,42],"end":[0,1,2,3,4,11,24,25,26,33,40,41,42,43],"end_cut":[1,2],"end_dat":[33,41],"end_dt":[3,24],"endyear":[0,13],"energi":32,"enforc":41,"engin":37,"enhanc":29,"ensur":[29,40,42,43],"entir":41,"enum":[5,35,40,43],"enumer":[31,32,33,36,38,39],"environ":42,"eq_weight":[1,2,26,27,31,32,33,38,39,40,43],"equal":[1,2,31,35,39,40,43],"equal_weight":[1,2,31,33,38,39],"equal_weight_portfolio":[32,33,38],"equal_weight_portfolio_df":[32,38],"equiti":[32,33],"equival":[1,24],"error":[1,2,23,29,33,40,41,42],"especi":29,"estat":32,"etc":[26,29,43],"etf":[32,39],"etf_tick":32,"evalu":[33,39],"event":[38,39],"everi":40,"everyth":29,"ewma":[1,2,3,5,24,26],"ewma_risk":[1,2],"ewma_var":[5,26],"ewma_var_func":[3,24],"ewma_vol":[5,26],"ewma_vol_func":[3,24],"exact":26,"examin":[33,37],"exampl":[10,29,30,31,32,34,36,40,42,43],"exceed":[1,24],"excel":[1,24,31,32,34,37,38,39,42,43],"excel_writ":37,"excelwrit":39,"except":[24,32,35,36,38],"exchang":42,"exchange_calendar":[0,1,3,4,8,11,12,13,15,24,25],"exclud":[3,9,22,24,33],"execut":33,"exist":[1,23,24,26,29,31,34,35,37,40],"exogen":[1,2],"expect":[27,29,32,37,38,39,40,41],"expected_length":41,"expected_return":29,"explain":40,"explan":29,"explicit":[3,4,26,27,40],"explor":43,"exponenti":[1,2,3,24],"export":[10,35,38],"extend":[36,38],"extens":[1,24,29],"extern":35,"extra":26,"extract":[33,39],"extrem":[37,39],"extreme_events_1pct":39,"extreme_events_5pct":39,"f":[27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"factor":[1,2,3,24,35],"factor_nam":36,"factor_seri":36,"factor_tick":36,"fail":[31,32,33,34,36,37,38,39,40,41],"failur":38,"fall":40,"fals":[0,1,2,3,8,10,17,23,24,26,31,32,33,36,38,39],"fama":36,"faster":42,"fat":[37,39],"favor":40,"featur":23,"fee":[3,20,24],"feedback":29,"ffill":[1,2,3,24,26],"field":[3,4],"fieldinfo":[1,2,4,25,26],"fig":[10,34,36],"fig_config":[10,36],"figdict":32,"figur":[1,10,17,18,22,23,24,30,35],"fiilenam":40,"file":[1,10,17,18,22,23,24,26,29,30,36,38,40],"fileexistserror":[1,24],"filenam":[1,10,17,18,22,23,24,30,34,36,37,41,43],"filepath":30,"fill":[1,24,26,40,41,43],"filter":[27,31],"filterwarn":39,"final":[33,38],"final_contrib":38,"final_twr":33,"financ":[1,2,42],"financi":[0,3,4,21,23,25,29,34,35,36],"find":[0,12,31,32,38],"finit":41,"first":[0,1,2,13,15,24,29,31,35,37,38,39,40],"first_column":[1,2],"first_idx":[1,3,24,26,29,31,32,33,34,37,38,39,40,41,43],"first_indic":[1,2,26],"fit":[1,2],"fitted_seri":[1,2],"fix":[3,24,29],"fixerd":[0,7],"flag":[3,14,24],"flight":39,"float":[1,2,3,4,6,9,20,22,24,25,26,29,32,40],"float64":[9,16,22],"focus":[29,31,38,40],"folder":[1,24],"follow":[0,8,29,40,42],"forg":[28,29,35,42],"fork":29,"form":[3,4],"format":[0,1,2,7,24,26,29,36,40,42],"formatted_export":41,"formula":40,"forward":[0,8,41,43],"found":[0,1,2,12,24,41],"foundat":[37,39,43],"frame":[2,26,27,30,31,32,33,36,37,38,39,40,41,43],"frame_outli":41,"frame_valu":41,"framework":[35,38,42],"free":[1,24,29],"french":36,"freq":[1,2,3,24,33,34,37,38,40,41,43],"frequenc":[1,2,3,24,35,38,40,41],"frequency_nam":[33,38],"frequent":[3,24,35],"fresh":[42,43],"friction":33,"from_1d_rate_to_cumret":[3,24],"from_array":[3,24,29,32,37,40,41],"from_dat":[1,2,3,24],"from_deepcopi":[1,2,3,24,27,37,40,43],"from_df":[3,24,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"from_dt":[1,24],"from_fixed_r":[3,24,41],"from_gbm":[4,25],"from_lognorm":[4,25,33,40,42,43],"from_merton_jump_gbm":[4,25],"from_norm":[4,25],"front":[20,24],"frontier":[6,9,22,32],"frontier_df":[27,32,38],"frontier_point":[9,22,32],"full":[10,24,33,40,41],"full_portfolio":33,"fulli":[1,24],"function":[1,2,3,6,9,10,16,20,22,26,29,30,35,36,39],"fund":[1,2,33,35],"fund_univers":32,"fund_universe_isin":32,"fundament":[37,39,40],"g":[1,24,26,40],"gap":[1,24,41],"gb":[40,41,43],"ge":[1,2,4,25,26],"general":[1,24,32],"generat":[0,1,3,4,11,13,17,19,22,24,25,30,32,33,35,36,37,38,39,41],"generate_calendar_date_rang":0,"generic":26,"geo_ret":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,40,42,43],"geo_ret_func":[1,24],"geometr":[4,25,27,31,33,38,40],"get":[27,31,32,33,34,35,37,38,39],"get_previous_business_day_before_today":[0,32],"git":[29,42],"github":[29,42],"give":43,"given":[0,1,2,3,8,15,16,22,24],"gld":[33,38,39],"global":32,"go":[10,29,36],"goff":[1,2],"gold":[33,38,39],"good":[32,37],"googl":[29,30,31,39,41],"got":[29,41],"grace":38,"graph":36,"graph_object":[10,36],"greater":[0,1,11,24],"grid":23,"group":[1,24,26,31,35],"group_asset":31,"group_fram":31,"group_metr":31,"group_nam":31,"group_seri":31,"growth":[1,24,31],"gspc":[35,36,37,38,43],"gt":[4,25],"guid":[29,41],"h1":30,"handl":[1,10,21,24,27,32,33,35,36,43],"happen":[4,25],"head":[23,30],"header":36,"healthcar":32,"heavi":37,"heavili":[1,24],"height":[32,36],"help":[27,40,41],"high":[29,31,32,33,38,39],"higher":[26,32,33,39,42],"highest":31,"highlight":[1,18,22,24],"histnorm":[1,24],"histogram":[1,24,34,36,37,43],"histori":[30,31,32,33,34,35,36,37,38,39,41,43],"hold":[1,2,3,4,24,25],"holiday":[0,1,8,11,12,13,15,24,42],"holiday_calendar":0,"home":[3,24],"hook":[29,42],"horizon":39,"howev":26,"html":[1,10,17,18,22,24,29,35],"html_div":[30,36],"html_templat":30,"html_util":10,"http":42,"https":[1,2,3,24,29,32,42],"id":23,"idea":29,"ideal":36,"identifi":[1,3,5,9,22,24,26,31,38,39,40,43],"idx":[32,38],"idxmax":[32,38],"idxmin":32,"ignor":[10,36,39],"iloc":[3,24,27,31,32,33,34,36,37,38,39],"impact":[38,39],"implement":[29,39],"impli":[1,24,37],"implicit":33,"import":[10,23,29,30,31,32,33,34,36,37,38,39,40,42,43],"importerror":42,"improv":[6,22,29,32],"inc":[1,24,31,34,39,41],"includ":[1,2,10,18,21,22,23,24,29,30,32,33,36,38,39,42],"include_plotlyj":[1,10,17,18,22,23,24,36],"inclus":[3,24,29],"incomplet":[3,24],"incorrect":27,"incorrectargumentcomboerror":[3,24,26],"independ":[1,2,39],"index":[1,2,3,23,24,31,32,33,35,37,38,39,41,43],"index_col":41,"indic":[3,24],"individu":[3,16,22,24,31,33,35,36,38,39,40,43],"individual_return":31,"individual_vol":31,"induc":[4,25],"industri":40,"infer":26,"infer_vari":26,"info_ratio_func":[1,2],"inform":[1,2,5,23,26,27,33,43],"inherit":[21,40],"initi":[1,4,16,22,24,25,26],"initialvaluezeroerror":[1,24,26],"inlin":10,"inner":[1,2,26,40],"inplac":41,"input":[0,3,4,12,26],"instal":[29,35,43],"instanti":26,"instead":[23,27,42],"instrument":[3,24],"instrument_id":[3,24],"int":[0,1,2,3,4,6,8,9,11,13,15,19,22,24,25,26,31,39],"intdefault":26,"integ":[0,1,2,3,8,15,24],"integr":[23,29,36,40,43],"integratedtermin":29,"intend":[1,2,3,24],"intens":41,"interact":[23,29,30,35,37,42,43],"intercept":[1,2,36],"interest":[33,36,39],"intermedi":40,"intermediate_seri":40,"intern":[27,36,38],"interpol":[1,24],"interpret":35,"intersect":[40,41],"inv_vol":[1,2,26,32,38,40],"inv_vol_portfolio":32,"inv_vol_portfolio_df":32,"invalid":[29,31,32,33,36,38,39,40,41],"invalid_seri":[40,41],"invari":26,"invers":[38,40],"invesco":39,"invest":[1,2,32,33,37],"investment_univers":[32,33],"investopedia":[1,2,3,24],"ishar":39,"isin":[3,24,32],"iso":[0,1,3,4,8,11,12,13,15,24,25,40,41],"issu":[29,32,40,41],"item":[0,1,2,3,7,24,27,31,32,33,34,36,38,39],"item_count":[1,2,31,32,33,38,39,40],"item_idx":41,"iter":26,"ixic":43,"j":[1,2,31,32,38],"javascript":[10,23,30,36],"jefe":[1,2],"jensen":[1,2,23],"jensen_alpha":[1,2],"jensensmeasur":[1,2],"join":[38,40],"journal":[1,2],"jp":41,"js":[1,10,18,22,24],"json":[1,24,29,32,34,40,43],"jump":[4,25],"jumps_lamda":[4,25],"jumps_mu":[4,25],"jumps_sigma":[4,25],"just":43,"k":[1,24],"kappa":[1,24,37,39],"kappa3_ratio":[1,2,3,24,26,37,39],"kde":[1,24,26],"key":[1,2,31,32,33,34,38],"key_metr":[27,31,32,38],"keyerror":[1,2],"keyword":[3,4,26],"known":[1,24],"krylov":26,"kurtosi":[1,2,3,24,26,34,37,39,43],"kurtosis_func":[1,24],"l":26,"label":[1,3,4,24,25,26,29,31,32,33,34,36,37,38,39,40,43],"labelsnotuniqueerror":26,"lag":[1,3,4,24,25],"lambda":[31,32,38],"languag":29,"larg":[39,40,41,42],"large_seri":41,"larger":[1,24,37],"last":[0,1,2,13,23,24,30,36,37,39,40],"last_idx":[1,3,24,26,29,31,32,33,34,37,38,39,40,41,43],"last_indic":[1,2,26],"late":41,"late_seri":41,"later":[1,20,24],"latest":42,"launch":29,"layer":35,"layout":[14,23,30,36],"le":[1,2,4,25,26],"learn":[1,2,42,43],"least":[1,2,20,24,29,31,32,38],"left":[1,2,3,24,40],"len":[29,31,32,33,37,38,39,41],"length":[1,2,3,23,24,26,29,31,33,34,37,38,39,40,42,43],"lengths_of_item":[1,2,26,40],"less":[1,2,3,24,35],"let":[33,37,38,39,43],"level":[1,2,3,24,33,37,39],"librari":[1,18,22,24,32,35,36,37,40,42],"like":[26,43],"limit":[1,24,35],"line":[1,2,17,23,24,26,36],"line_fram":[18,22,32],"linear":[1,2,26],"linearregress":[1,2],"link":10,"lint":[29,42],"list":[0,1,2,3,4,8,11,12,13,15,24,25,26,29,32,40,41],"liter":[1,2,3,24,35],"literalbarplotmod":[1,24,26],"literalbizdayfreq":[17,23,26],"literalcaptureratio":[1,2,26],"literalframeprop":26,"literalhowmerg":26,"literaljsonoutput":[1,24,26],"literallineplotmod":[1,18,22,24,26],"literalminimizemethod":[6,9,22,26],"literalnanmethod":[1,24,26],"literalpandasreindexmethod":[1,24,26],"literalplotlyhistogrambarmod":[1,24,26],"literalplotlyhistogramcurvetyp":[1,24,26],"literalplotlyhistogramhistnorm":[1,24,26],"literalplotlyhistogramplottyp":[1,24,26],"literalplotlyjslib":[1,10,17,18,22,23,24,26],"literalplotlyoutput":[1,10,17,18,22,23,24,26],"literalportfolioweight":26,"literalquantileinterp":[1,24,26],"literalseriesprop":26,"literaltrunc":[1,2,26],"ljung":[1,3,24],"ljung_box":[3,24],"lmbda":[1,2,3,24],"ln":[1,24,40],"load":[14,24,30,31,32,33,34,35,36,37,38,39],"load_plotly_dict":32,"loc":[27,31,32,33,35,38,39],"local":[1,3,24,29,32,39],"local_cci":[3,24],"locat":[1,24,29],"lock":[1,2,3,24],"log":[1,24,34,40,41,43],"lognorm":[4,25,43],"logo":[1,10,14,18,22,24,36],"logo_url":10,"long":33,"long_column":[1,2],"longer":23,"longnam":32,"lookback":39,"lookback_d":39,"loss":[3,24,37,39],"low":[32,39],"lower":[1,24,26,32,33,34],"lower_partial_moment_func":[1,24],"lowest":31,"lpm_p":[1,24],"lvl_one":[3,24],"lvl_zero":[3,24,27,30,31,32,33,34,35,36,37,38,39,40,41,43],"lvl_zero_item":[1,2],"m":[1,24,29,37,39,42],"m1":42,"m2":42,"machin":42,"main":[35,40],"maintain":29,"major":29,"make":[29,33,36,42],"make_portfolio":[1,2,27,31,32,33,38,39,40,43],"make_subplot":36,"manag":[29,32,35,38,41,42],"mani":40,"manipul":[21,42],"manual":[0,12,26,31,39],"mar":[1,24],"mark":26,"marker":[18,22,26,32],"market":[0,1,2,3,4,8,11,12,13,15,24,25,26,31,32,33,36,37,38,39,40,41],"market_cap_portfolio":38,"market_column":[1,2],"market_data":31,"market_proxi":[31,38],"market_returns_df":38,"market_seri":36,"marketsnotstringnorliststrerror":26,"master":29,"match":26,"matrix":[1,2,31,37,38,39,43],"max":[1,24,27,31,32,33,34,35,36,37,38,39,40],"max_concentr":39,"max_dd":[33,38,40,43],"max_dd_dat":37,"max_div":[1,2,26,32,38,40],"max_div_portfolio":[32,38],"max_div_portfolio_df":[32,38],"max_drawdown":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,40,43],"max_drawdown_cal_year":[1,2,3,24,26,37],"max_drawdown_d":[1,2,3,24,26,34,37,39],"max_drawdown_func":[1,24],"max_length":[3,24,26],"max_leverage_loc":[1,24],"max_sharpe_idx":[32,38],"max_sharpe_portfolio":32,"max_sharpe_portfolio_df":32,"max_sharpe_weight":32,"max_var_daili":39,"max_volatil":39,"max_weight":39,"maxdiversificationnanerror":[32,38,40],"maxdiversificationnegativeweightserror":[32,38,40],"maxim":[32,38],"maximum":[1,6,9,22,24,33,34,37,39,40,43],"may":[14,26,27,31,32,33,34,36,37,38,39,40,42],"md":29,"mdd":[1,24],"mead":26,"mean":[1,2,4,16,22,24,25,31,33,34,35,36,37,38,39,40,41],"mean_annual_return":[4,25,33,40,42,43],"mean_annual_vol":[4,25,33,40,42,43],"mean_return":29,"meaning":40,"measur":[1,2,24,29,37,39],"mechan":33,"media":[23,31],"medium":33,"mega":31,"member":29,"merg":[1,2,26,29,40],"merge_seri":[1,2,40],"mergingresultedinemptyerror":26,"merton":[4,25],"met":[1,24],"meta":31,"metadata":[1,2,4,25,26],"method":[2,3,4,5,6,9,16,18,21,22,25,31,32,33,34,35,36,38,39,43],"metric":[2,21,23,29,31,32,33,34,35,38],"microsoft":[30,31,39,42],"midpoint":26,"might":27,"min":[31,32,33,36,38,39],"min_accepted_return":[1,24],"min_length":[3,24,26],"min_leverage_loc":[1,24],"min_period":[1,24],"min_sharp":39,"min_vol_idx":32,"min_vol_overweight":[1,2,26,32,38,40],"min_vol_portfolio":[32,38],"min_vol_portfolio_df":[32,38],"min_vol_row":32,"min_vol_weight":32,"minim":[6,9,22,29,42],"minimize_method":[6,9,22],"minimum":[1,6,9,22,24,33,35,39,40],"minlen":[3,24,26],"minor":29,"minut":43,"mismatch":[29,41],"miss":[0,1,8,11,12,13,15,24,35,40,43],"mix":[39,40],"mixedvaluetypeserror":26,"mm":[3,24],"mobil":[1,10,23,24,30,36],"mode":[1,23,24,27],"model":[1,2,3,4,24,25,26],"model_config":[1,2,3,4,24,25,26],"moder":37,"modifi":[1,24,27,29,31,34,37,38,39,40,41,43],"modul":[0,22,29,35,42],"moment":[1,24],"monitor":[28,35],"mont":35,"month":[0,1,2,3,8,23,24,33,34,35,38,39,40,41,43],"monthly_metr":41,"monthly_rebalanc":33,"monthly_rebalanced_seri":33,"monthly_return":37,"monthly_vol":37,"months_from_last":[1,2,3,24,40,41],"months_offset":[0,1,8,24],"motion":[4,25],"motiv":29,"move":[1,2,3,24,39],"ms":[1,24],"msft":[30,31,34,39,41],"msg":29,"multi":[1,2,21,32,35,43],"multi_asset_analysi":31,"multi_factor_linear_regress":[1,2,36],"multiindex":[1,2],"multipl":[1,9,22,23,31,32,34,35,38],"multiple_seri":41,"multipli":[1,24],"must":[0,3,11,24,26,29,38,40,41],"mutabl":40,"mutat":35,"my_plot":[10,36],"mypi":[29,42],"n":[1,24,31,32,33,34,36,37,38,39],"n_asset":39,"name":[1,2,3,4,6,18,22,24,25,26,29,30,31,32,33,34,36,37,38,39,40,41,42,43],"nameerror":[1,24],"nan":[1,24,32,43],"nanalysi":38,"nasdaq":43,"nasset":31,"nativ":[31,32,38,39],"nav":32,"naverag":31,"navperunit":32,"nbest":32,"ncash":33,"ncg":26,"ncorrel":43,"ncreat":[31,38],"ndarray":[9,16,22],"ndetail":33,"ndiffer":33,"ndiversif":31,"nearest":[1,2,3,24,26],"necessari":[26,37],"need":[0,27,29,30,32,36,40,42,43],"negat":[1,2,24,31,32,37,39],"nelder":26,"nequal":31,"netflix":31,"never":40,"new":[0,1,2,3,4,15,24,27,28,29,40,41,42],"new_seri":[1,2,41],"newcom":29,"newton":26,"next":[31,35],"nfactor":36,"nflx":31,"ninvest":32,"nkey":31,"nminimum":32,"nmonth":33,"nmulti":31,"non":38,"none":[0,1,2,3,4,6,8,9,10,11,12,13,15,17,18,22,23,24,25,26,33],"nonetyp":[1,2,4,25,26],"nonnegativefloat":[4,25],"noptim":[32,38],"normal":[1,4,24,25,26,29,37,39],"note":[23,29,31,32,37,39],"now":[27,33,36,37,38,43],"noweightserror":26,"np":[34,37,41],"nportfolio":39,"nr":36,"nrank":[31,32,38],"nresult":[34,38],"nrisk":39,"nroll":38,"nsimul":[32,38],"nsmallest":39,"ntotal":33,"num_port":[9,19,22,32,38,39],"num_simul":39,"numba":42,"number":[0,1,2,3,4,6,8,9,11,15,19,22,24,25,26,31,33,37,38,40,43],"number_of_sim":[4,25,33,40,42,43],"numberofitemsandlabelsnotsameerror":26,"numer":[1,2,32,40,41,42],"numpi":[26,34,37,41,42],"nvda":31,"nverif":39,"nvidia":31,"nworst":39,"nyse":[40,41],"object":[1,2,3,4,20,23,24,25,30,36,40,41],"observ":[1,2,3,24,27,31,33,34,36,37,38,39,40,43],"occur":[1,24],"offset":[0,1,2,3,8,15,24],"offset_business_day":0,"ok":39,"old_fe":[20,24],"omega":[1,24,37,39],"omega_ratio":[1,24,26,37,39],"omega_ratio_func":[1,24],"onc":[29,34,37,41],"one":[1,2,3,6,20,22,23,24,29],"onli":[1,2,3,4,10,23,24,27,32,33,37,39,41],"opac":[1,24],"open":[1,10,18,22,23,24,30,37,43],"openfram":[6,9,16,17,19,21,22,23,24,26,30,31,32,33,35,36,37,38,39],"openframepropertieslist":26,"openpyxl":[37,42],"openseri":[0,1,22,23,24,25,26,27,28,30,31,32,33,34,36,37,38,39,40,41,43],"openseries_env":42,"opentimeseri":[1,2,5,6,16,20,21,22,26,27,29,30,31,32,33,34,35,36,37,38,39,41,42],"opentimeseriespropertieslist":26,"oper":[27,40,41,42],"optim":[1,6,9,16,18,23,24,27,29,35,36,40],"optimal_portfolio":[27,32,38],"optimal_portfolio_df":32,"optimal_portfolio_seri":32,"optimal_weight":38,"optimization_plot":32,"option":[1,2,3,10,23,24,27,36],"ord_least_squares_fit":[1,2],"order":[1,24,39],"ordinari":[1,2],"org":[1,2,24],"orient":[1,10,24,36],"origin":[27,29,31,34,37,38,39,40,41,43],"original_d":40,"original_valu":40,"os":29,"otherwis":[1,10,24],"outcom":[1,24],"outer":[1,2,26,40],"outlier":[1,24],"output":[1,2,5,10,18,22,23,24,26],"output_path":[10,36],"output_typ":[1,10,17,18,22,23,24,30,32,36],"outsid":[1,24],"overlap":[1,24],"overlay":[1,24,26],"overrid":[1,2,3,24],"overview":[35,43],"overweight":[35,40],"overwrit":[1,24],"owntyp":[26,32,38,40],"p":[1,3,24,30,33,35,36,37,38,39,43],"p_":40,"p_t":40,"pacf":[1,3,24],"packag":[3,24,35,42],"pad":[1,2,3,24,26],"page":[10,17,23,28,35],"pair":[31,38],"pair_fram":31,"panda":[1,2,3,4,24,25,26,29,30,31,32,36,37,40,42],"pandas_df":[3,24],"panel":36,"param":33,"paramet":[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,32,33,40],"parenthes":27,"pariti":40,"pars":[0,3,4,7,42],"parse_d":41,"partial":[1,3,24],"partial_autocorr":[3,24,26],"pass":[6,9,22,26,29],"patch":29,"path":[1,10,17,23,24,30,36],"path_typ":[1,24],"pathlib":[10,36],"pathtyp":[1,24],"pattern":[3,24,25,26,27,32,35],"pay":27,"pct_chang":[1,24],"pd":[29,30,36,37,39,41],"pdb":29,"pdf":[1,2],"penal":[1,24,37],"pep":26,"per":[1,3,24,31,37,40],"percent":26,"percentag":[1,24,31,32,33,37,38,39],"percentage_metr":31,"percentil":[1,24,31,39],"percentile_idx":39,"perform":[1,2,23,24,26,29,35,36,40,42,43],"period":[1,2,3,23,24,29,30,31,32,33,34,35,36,37,38,39,40,41,43],"periods_in_a_year":[1,3,24,26,37,40],"periods_in_a_year_fix":[1,2,3,24],"pick":[3,24,31],"pip":[29,35,43],"pitfal":27,"place":[1,2,3,24,27,37,39,40],"placehold":[3,24],"plan":42,"platform":[31,35],"pleas":[28,29],"plot":[1,10,14,17,18,21,22,23,24,27,29,32,34,35,37,42,43],"plot_bar":[1,24,37,43],"plot_data":32,"plot_histogram":[1,24,27,34,37,40,43],"plot_seri":[1,24,34,35,37,40,43],"plot_typ":[1,24],"plotfil":[10,36],"plotlyconfigtyp":10,"plotlylayouttyp":14,"plus":[3,24],"point":[1,4,9,22,24,25,34,38,43],"point_fram":[16,18,22,32],"point_frame_mod":[18,22,32],"popul":[3,24],"popular":[1,2],"portfolio":[2,6,9,16,18,19,30,31,35,39],"portfolio_analysi":38,"portfolio_asset":39,"portfolio_df":[27,31,32,38,39,40,43],"portfolio_impact":39,"portfolio_metr":38,"portfolio_optimization_result":32,"portfolio_return":39,"portfolio_returns_df":38,"portfolio_rolling_vol":38,"portfolio_seri":33,"portfolio_sharp":39,"portfolio_stress_return":38,"portfolio_twr":33,"portfolio_vol":39,"portfolio_volatil":39,"portfolio_vs_market":38,"portfolionam":[6,22],"portfoliotool":[22,39],"posit":[1,2,3,4,24,33,37,39,43],"positive_shar":[1,2,3,24,26,37,39,43],"positive_share_func":[1,24],"positivefloat":[4,25],"positiveint":[4,25],"possibl":[6,9,19,22,26,29],"post":27,"potenti":[32,38],"powel":26,"pr":29,"practic":[1,2,32,35],"pre":[29,42],"predict":[1,2],"prefer":[26,40],"prepar":[16,22,32],"prepare_plot_data":[22,32],"preserv":40,"preview":36,"previous":[0,12],"price":[1,2,3,5,24,26,27,29,32,34,36,37,40,42,43],"primarili":26,"principl":40,"print":[27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"prioriti":[3,24],"privat":21,"probabl":[1,4,24,25,26],"problem":42,"process":[1,4,9,19,22,25,32],"produc":32,"profession":32,"program":29,"project":[26,29],"proper":[10,29,36],"properti":[2,3,4,21,25,26,31,34,35,38,39,43],"propertiesinputvalidationerror":26,"propertieslist":26,"provid":[0,1,3,7,21,22,23,24,25,26,27,29,32,33,35,36,37,38,39,40,43],"proxi":[31,36],"public":[29,32],"publish":29,"purpos":25,"push":29,"pvalu":[3,24],"px":36,"py":29,"pydant":[1,2,3,4,21,24,25,26,35,40,42,43],"pydantic_cor":[3,4],"pylanc":29,"pypi":[28,29],"pyproject":29,"pytest":[29,42],"python":[29,42],"q":[3,24],"qqq":39,"qualiti":[29,35,39,42],"quantil":[1,24,31,38,39],"quantiti":33,"quarter":[23,33,38,40,41],"queri":23,"question":29,"quick":42,"r":[1,2,29,36],"r_squar":36,"rais":[0,1,2,3,4,7,13,24,26,29,32,41],"raise_for_status":32,"random":[4,9,19,22,25,32,38],"rang":[0,1,3,6,9,11,13,22,24,26,29,31,32,34,36,37,38,39,40,43],"rank":[32,35],"rate":[1,3,24,29,36,39],"rather":[33,40],"ratio":[1,2,5,18,22,23,24,26,27,29,31,32,33,34,35,37,38,39,40,43],"ratioinputerror":26,"raw":[1,24],"raw_dat":[0,8],"reach":29,"read_csv":41,"readabl":31,"real":[35,37,43],"real_asset":33,"real_portfolio":33,"real_univers":33,"realist":[25,33,38],"realized_mean_return":[4,25],"realized_vol":[4,25],"rebalanc":[1,2,35],"rebalanced_portfolio":[1,2,33,38],"rebalancing_day":38,"rebas":40,"recent":39,"recent_outli":41,"recent_return":39,"recent_vol":40,"recommend":[29,32],"red":[1,24],"reduc":41,"reduct":31,"refer":[1,2,3,24,43],"reflect":40,"regress":[1,2,35],"regression_result":36,"reindex":[1,24],"reit":38,"relat":[1,2,5,23,24,26,33],"releas":42,"relev":29,"reliabl":32,"relrtrn":[5,26],"remain":[1,2,29,32],"rememb":35,"remot":14,"remov":[1,24],"render":[10,23],"replac":41,"report":[17,35,36],"report_html":[23,30],"repositori":[28,29],"repres":[1,2,6,22,24,26,40],"represent":26,"reproduc":[29,39,42],"request":[27,32,42],"requests_get":32,"requir":[1,2,3,4,10,24,25,26,29,35,40],"resampl":[1,2,3,24,34,37,43],"resample_to_business_period_end":[1,2,3,24,26,34,37,40,41,43],"resampledatalosserror":[3,24,26],"resiz":[10,36],"respect":[1,24,29],"respons":[1,10,14,17,24,30,32,35,36],"restor":[37,39],"result":[4,18,19,22,24,25,26,33,35,36,38,39,40],"ret":[29,31,32,33,38,39],"ret_pct":31,"ret_vol_ratio":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,43],"ret_vol_ratio_func":[1,24],"return":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,25,26,29,32,33,34,35,36,38,39,42,43],"return_diff":33,"return_nan_handl":[1,24,41],"return_v":39,"returns_data":39,"returns_seri":[27,39],"returnseri":[1,2],"returnsimul":[33,35,40,42,43],"reusabl":26,"revalidate_inst":[1,2,3,4,24,25],"revers":[31,32,38],"review":42,"risk":[2,3,9,21,22,23,24,29,35,43],"risk_adj_metr":39,"risk_analysis_report":39,"risk_decomp":39,"risk_free_r":29,"risk_limit":39,"risk_parity_portfolio":38,"risk_report":39,"risk_seri":43,"riskfre":[1,2,24],"riskfree_r":[1,2,24],"robust":[32,35,39],"roll":[2,5,24,26,27,31,35,40,43],"rollbeta":[5,26],"rollcorr":[5,26],"rollcvar":[5,26],"rollinforatio":[5,26],"rolling_beta":[1,2,36],"rolling_corr":[1,2,27,31,36,38,40],"rolling_cvar":39,"rolling_cvar_down":[1,24,39],"rolling_info_ratio":[1,2],"rolling_metr":40,"rolling_ret":[40,43],"rolling_return":[1,24,27,34,37,40,43],"rolling_risk":43,"rolling_var":[34,39],"rolling_var_down":[1,24,27,34,39],"rolling_vol":[1,24,27,34,37,38,39,40,43],"rollrtrn":[5,26],"rollvar":[5,26],"rollvol":[5,26,40],"root":[1,24],"rough":33,"round":[31,32,38,39],"row":[36,41],"rsquar":[1,2],"rtrn":[1,2,3,5,24,26,33,40,42,43],"ruff":[29,42],"ruffen":29,"rug":[1,24],"run":[26,32,42,43],"running_adjust":[3,24],"runtim":26,"russel":43,"rut":[36,43],"s":[0,1,2,3,4,8,11,12,13,15,21,23,24,25,26,30,31,32,33,34,35,36,37,38,39,40,42,43],"safeti":[21,35,43],"sampl":[1,2,3,24,30,36,40,41,42],"save":[1,18,22,23,24,30,36,37,39,40,43],"scalar":27,"scale":[1,2,3,24,39],"scatter":[1,10,18,22,24,36],"scenario":[32,41,43],"scenario_nam":39,"scientif":42,"scikit":[1,2,42],"scipi":[6,9,22,42],"score":[1,24,37,39],"screen":[1,23,24,36],"script":42,"se":[0,3,4,8,11,12,13,15,24,25,32,33,43],"se0011337195":32,"se0011670843":32,"se0015243886":32,"se0017832280":32,"se0017832330":32,"search":35,"second":[1,2,29],"second_column":[1,2],"secondary_i":36,"section":[23,27,30,32,40],"sector":35,"see":26,"seed":[4,9,19,22,25,32,33,38,39,40,42,43],"sek":[3,24],"select":[1,2],"self":[1,2,3,4,24,25,26,27,29,40],"sell":33,"selloff":39,"semant":29,"separ":[1,23,24,33],"sequenc":26,"sequenti":27,"seri":[1,2,3,4,6,20,21,22,24,25,26,29,30,32,33,35,36,37,38,39,42,43],"series1":[41,43],"series2":[41,43],"series3":43,"series_copi":40,"series_datafram":41,"series_list":[30,31,32,38,39,41,43],"series_typ":33,"series_valu":41,"series_with_nan":41,"seriesim":33,"seriesorfloat_co":[1,24,26],"serv":26,"set":[0,1,2,3,10,15,24,26,27,29,32,33,34,35,36,40,42,43],"set_index":41,"set_new_label":[3,24,27,30,31,32,33,34,35,36,37,38,39,40,41,43],"settl":33,"settlement":33,"setup":35,"sever":[29,32,36,40],"share":[1,21,24,39],"sharp":[1,18,22,23,24,29,31,32,33,34,35,37,38,39,43],"sharpe_ratio":[31,32,37,38],"sharpeplot":[16,22,32],"sharperatio":[1,24],"sheet":[1,24,31,32,41],"sheet_nam":39,"sheet_titl":[1,24,41],"shock":39,"short_column":[1,2],"shorter":23,"shortest":[1,2,3,24],"shortfal":[37,39,40],"shorthand":[1,24],"show":[23,29,30,31,32,33,39],"show_last":[1,24],"show_rug":[1,24],"side":23,"signific":37,"silicon":42,"sim_cvar_95":39,"sim_fram":[18,22,32],"sim_return":32,"sim_sharpe_ratio":[32,38],"sim_var_95":39,"sim_volatil":32,"simfram":[19,22,27,32,38,39],"similar":40,"simpl":[1,23,24,29,33,35,36,40,41],"simpli":[1,2],"simplifi":[1,2,3,24,39],"simul":[4,6,9,18,19,35,40,42,43],"simulate_portfolio":[18,22,27,32,38,39],"simulated_df":[27,32,38],"simulated_portfolio":[32,39],"simulation_result":[27,32,38],"simultan":31,"sinc":[3,24],"singl":[1,21,24,35,37,39,41,43],"single_seri":41,"size":[1,4,23,24,25,29,36],"skew":[1,2,3,24,26,34,37,39,43],"skew_func":[1,24],"skip":36,"slsqp":[6,9,22,26],"small":36,"smaller":23,"smallest":[1,24],"social":31,"sold":[1,2],"solid":43,"sophist":[36,38,40],"sort":[31,32,38,39],"sort_valu":31,"sorted_indic":[32,38],"sorted_return":39,"sorted_sharp":31,"sorted_strategi":32,"sortino":[1,23,24,34,37,39,40,43],"sortino_ratio":[1,2,3,24,26,34,37,39,40,43],"sortino_ratio_func":[1,24],"sortinoratio":[1,24],"sought":[1,3,24],"sourc":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,29,35],"sp500":[37,43],"sp500_analysi":[37,43],"sp500_data":43,"sp500_metric":37,"span":[1,2,41],"span_of_day":[1,3,24,26,41],"span_of_days_al":[1,2,26],"sparser":[3,24],"spdr":39,"spec":36,"specif":[2,3,24,29,35,40,41,43],"specifi":[1,2,3,24,27,38,40],"specific_metr":27,"spi":[30,33,39],"split":33,"spreadsheet":[1,24],"squar":[1,2,3,24,36],"stabl":32,"stack":[23,26],"standalon":10,"standard":[1,2,4,18,22,23,24,25,37,40],"start":[0,1,4,11,15,24,25,26,33,38,39,40,41],"start_cut":[1,2],"startyear":[0,13],"state":40,"static":[26,29,42],"statist":[3,24,25,32,33,38,40,43],"stay":28,"std":[1,24,36],"std_dev":29,"stdev":[1,24,32,38,39],"step":[29,35],"stock":[31,32,33,34,36,41],"stock_comparison_report":30,"stock_data":[36,41],"stock_vs_market":36,"store":26,"str":[0,1,2,3,4,6,8,10,11,12,13,15,17,18,22,23,24,25,26],"strategi":[1,2,27,35,40,43],"strategy_fram":33,"strategy_metr":33,"strategy_nam":[32,38],"strenum":[5,26],"stress":35,"stress_dat":38,"stress_return":31,"strftime":[37,39],"strict":[1,2,3,4,24,25,26,29,33,41],"string":[0,1,2,3,10,13,23,24,26,40,41],"stringconstraint":[3,24,26],"strip_whitespac":[3,24,26],"strorbytessequ":26,"strsequenc":26,"structur":[21,32,38,41],"stub":[1,2,3,24],"style":[1,24,35,36],"subclass":[20,24],"subplot":36,"subplot_titl":36,"subset":35,"subset_portfolio":33,"subtract":[3,24],"subtyp":26,"success":38,"sum":[29,31,33,38,39],"summari":[1,2,35,36,39],"summat":[3,24],"suppli":[1,2],"support":[0,1,3,4,7,8,10,11,12,13,15,24,25,29,31,32],"sure":42,"swedish":43,"switch":23,"syntax":26,"synthet":41,"system":[21,35,39],"t":[1,2,24,26,27,36,40],"tabl":[17,23],"tag":23,"tail":[37,39],"take":[1,2,3,24,40],"takeaway":33,"target":[1,24,33],"target_vol":[1,24],"target_weight":33,"target_weight_from_var":[1,24],"tech":[31,39],"tech_fram":41,"tech_stock":31,"tech_tick":31,"techniqu":[32,37,38,39],"technolog":32,"templat":[14,30],"term":[1,2,24,33],"tesla":[31,39],"test":[1,2,3,24,25,33,35,42],"test_calculate_return":29,"test_fram":29,"test_from_arrays_bas":29,"test_from_arrays_invalid_d":29,"test_funct":29,"test_portfoliotool":29,"test_seri":29,"test_specif":29,"testopentimeseri":29,"text":[18,22,26,32],"thank":29,"theoret":[32,35,38],"theoretical_portfolio":[33,38],"theoretical_portfolio_df":[33,38],"theoretical_seri":33,"thereof":[20,24],"threshold":[1,24,31,38,39,41],"threshold_idx":31,"throughout":26,"tick":[1,24],"tick_fmt":[1,24],"ticker":[30,31,32,33,34,35,36,37,38,39,41,43],"ticker_symbol":[34,41],"tidi":27,"time":[1,2,4,21,23,24,25,26,33,35,37,38,39,40,43],"timedelta":39,"timeout":32,"timeseri":[1,2,3,4,6,20,22,24,25,26,43],"timeseries_chain":24,"timeseries_id":[3,24],"timestamp":[26,29],"titl":[1,10,17,18,22,23,24,30,32,36,41],"title_text":36,"titletext":[18,22],"tlt":[33,36,39],"tnc":26,"tnx":37,"to_csv":34,"to_cumret":[1,2,3,24,32,33,40,41,42,43],"to_dat":[1,2,3,24],"to_datafram":[4,25,33,40,42,43],"to_drawdown_seri":[1,24,34,37,40,43],"to_dt":[1,24],"to_excel":[31,32,37,38,39],"to_json":[1,24,34,40,41,43],"to_low":[3,24,26],"to_upp":[3,24,26],"to_xlsx":[1,24,31,32,34,37,39,40,41,43],"today":[0,12],"togeth":[20,24],"toler":29,"tolist":[32,37],"toml":29,"tool":[29,35,38,42],"top":[32,38],"top_indic":38,"top_sharpe_indic":32,"total":[1,4,5,24,25,26,32,33,34,37,38,39,40,43],"total_return":37,"total_trad":33,"touch":23,"toward":29,"trace":[1,24,36],"track":[1,2,23,28,33],"tracking_error":40,"tracking_error_func":[1,2,40],"trackingerror":[1,2],"trade":[4,25,26,33,38,41,42,43],"trading_day":[0,4,11,25,33,38,40,42,43],"trading_days_in_year":[4,25,40,42,43],"tradingdaysnotabovezeroerror":26,"transact":[35,38],"transaction_data":33,"transaction_seri":33,"transform":35,"treasuri":[33,37,39],"treat":[1,2],"tri":42,"troubleshoot":35,"true":[0,1,2,3,4,8,9,10,14,17,18,22,23,24,25,26,29,31,32,33,36,38,41],"trunc_fram":[1,2,32,40,43],"truncat":[1,2,40],"trust":[26,39],"tsdf":[1,2,3,24,26,31,33,38,39,40,41,43],"tsla":[31,34,39,41],"tupl":[1,2,3,6,9,14,17,18,22,23,24,26,27],"turn":21,"tutori":[29,36,37,38,39,43],"tweak":[9,22],"two":[1,2,20,21,24,27,31,35,40],"twr":[1,2,33],"type":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,35,36,42,43],"typealia":26,"typecheck":29,"typeerror":[0,3,7,24],"typeopentimeseri":[20,24],"typevar":26,"typo":29,"unavail":[14,31,32,33,36,38,39],"unclear":29,"underlying":[26,39],"understand":[27,35,37,38,40],"union":26,"uniqu":[23,26],"unit":[1,24,31,37],"univers":[31,32,33,38],"unlik":33,"unnecessari":27,"unpack":27,"untouch":40,"unusu":[37,39],"updat":[28,29,36],"update_layout":[32,36],"url":[10,32],"us":[33,38,40,41,43],"usag":43,"use":[1,2,3,4,10,16,18,21,22,23,24,25,26,27,29,31,33,34,35,37,38,39,40,41,43],"user":[1,3,24,26,40],"usual":40,"utf":30,"util":[1,2,35],"uv":[29,42],"v":[1,24],"valid":[0,3,4,15,21,35,42,43],"valid_d":41,"valid_valu":41,"validate_assign":[1,2,3,4,24,25],"validationerror":[3,4,41],"valu":[0,1,2,3,4,5,15,24,25,29,31,32,34,35,36,37,43],"valuabl":33,"value_list":40,"value_nan_handl":[1,24,32,40,41,43],"value_ret":[1,2,3,24,26,33,34,37,38,39,43],"value_ret_calendar_period":[1,24,34,37],"value_ret_func":[1,24],"value_to_diff":[1,2,3,24,41],"value_to_log":[1,24,34,40,41,43],"value_to_ret":[1,2,3,24,27,29,31,34,37,38,39,40,41,43],"valueerror":[1,2,24,29],"valuelisttyp":[3,24,26],"values_with_nan":41,"valuetyp":[1,2,3,24,26,32,33,40,42,43],"var":[1,3,5,24,26,27,34,35,37,38,40,43],"var_90":37,"var_95":[37,40,43],"var_99":37,"var_daili":39,"var_down":[1,2,3,24,26,34,37,38,39,40,43],"var_down_func":[1,24,37,39],"var_seri":27,"var_valu":39,"variabl":[1,2,26,36],"varianc":[1,2,3,24,26,35],"various":[24,29,32,36,37,38,41,43],"vde":32,"ve":43,"vea":32,"venv":[29,42],"verifi":[35,39],"version":[23,28,29,42],"vertic":23,"vertical_legend":[17,23],"vgt":32,"vht":32,"via":[1,3,24,26],"view":[1,23,24,33],"viewport":[10,36],"virtual":[29,42],"visit":28,"visual":[29,32,35,36,40,42],"vnq":[32,38],"vol":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,40,43],"vol_dat":37,"vol_diff":33,"vol_from_var":[1,2,3,24,26,37],"vol_from_var_func":[1,24],"vol_func":[1,24,40],"vol_pct":31,"vol_seri":37,"vol_valu":37,"volatil":[1,2,3,4,5,16,22,23,24,25,26,27,31,33,34,35,36,37,39,40,43],"volum":[36,41],"volume12":[1,2],"vs":[29,31,35],"vscode":29,"vti":32,"vwo":32,"w":[30,31,39,40,41],"want":42,"warn":39,"watch":28,"way":[26,27,41,42],"web":[23,36],"week":[33,39],"weight":[1,2,3,16,19,22,24,26,27,31,35,39,40,43],"weight_strat":[1,2,27,31,32,33,38,39,40,43],"weighted_avg_return":31,"weighted_avg_vol":31,"weighted_return":38,"welcom":29,"well":[26,36],"what_output":[1,24,41,43],"whether":[1,10,14,18,22,24],"width":[1,23,24,32],"wiki":[1,24],"wikipedia":[1,24],"will":[1,2,3,23,24,27,29,37,40,41,42,43],"window":[1,2,10,18,22,24,27,34,36,39],"winter":[1,2],"within":39,"without":[1,24,27,42],"work":[27,29,32,35,36,40,42],"workflow":[35,36],"working_data":40,"workspacefold":29,"world":[35,43],"worst":[1,2,3,23,24,26,31,34,37,38,39],"worst_1_perc":39,"worst_5_day":39,"worst_5_perc":39,"worst_day":[31,37,38],"worst_days_threshold":38,"worst_func":[1,24],"worst_idx":39,"worst_month":[1,2,3,24,26,37,39],"worst_threshold":31,"worst_year_dd":37,"write":30,"writer":39,"written":[1,24],"wrong":[27,41],"www":[1,2,3,24],"x":[1,2,10,24,31,32,36],"x_column":[1,2],"x_fmt":[1,24],"xbins_siz":[1,24],"xlsx":[1,24,31,32,34,37,38,39,40,41,43],"y":[1,2,10,24,36,37,39],"y_column":[1,2],"y_fmt":[1,24],"yahoo":42,"year":[0,1,2,3,13,23,24,31,34,36,38,39,40],"year_return":[34,37],"yearfrac":[1,3,24,26,37],"yf":[30,31,32,33,34,35,36,37,38,39,41,43],"yfinanc":[30,31,32,33,34,35,36,37,38,39,41,42,43],"yield":[32,37],"yourusernam":29,"yyyi":[3,24],"z":[1,3,24,26,37,39,41],"z_score":[1,2,3,24,26,37,39],"z_score_func":[1,24],"zero":[0,1,2,3,11,15,24,26,38],"zip":[30,31,33,38,39,43],"zscore":[1,24]},"titles":["Date Utilities","OpenFrame","openseries.OpenFrame","openseries.OpenTimeSeries","openseries.ReturnSimulation","openseries.ValueType","openseries.constrain_optimized_portfolios","openseries.date_fix","openseries.date_offset_foll","openseries.efficient_frontier","openseries.export_plotly_figure","openseries.generate_calendar_date_range","openseries.get_previous_business_day_before_today","openseries.holiday_calendar","openseries.load_plotly_dict","openseries.offset_business_days","openseries.prepare_plot_data","openseries.report_html","openseries.sharpeplot","openseries.simulate_portfolios","openseries.timeseries_chain","openseries package","Portfolio Tools","Report Generation","OpenTimeSeries","Simulation","Types and Enums","API Consistency Notes","Changelog","Contributing to openseries","Reporting","Multi-Asset Analysis","Portfolio Optimization","Rebalanced Portfolio Simulation","Single Asset Analysis","openseries Documentation","Advanced Features","Basic Financial Analysis","Portfolio Analysis","Risk Management","Core Concepts","Data Handling","Installation","Quick Start Guide"],"titleterms":{"All":43,"Do":27,"From":41,"Other":21,"The":40,"Up":[31,37,38,39],"Your":43,"__format__":27,"add":41,"adjust":[37,39],"advanc":[32,36,37,38],"alias":26,"align":[40,41],"analysi":[1,24,31,32,33,34,36,37,38,39,40,43],"annual":[37,40],"api":[27,35],"applic":33,"architectur":40,"array":41,"asset":[31,34,38,41,43],"attribut":[31,33,38],"backtest":32,"base":32,"basic":[32,33,34,37,39,43],"benchmark":37,"benefit":36,"best":[27,33,40],"bug":29,"build":29,"built":30,"busi":[40,41,43],"calcul":40,"calendar":[34,37,40],"callabl":27,"carlo":[32,38,39],"cash":33,"categori":40,"chain":27,"changelog":28,"check":[40,41],"class":[1,21,24,25,26,40],"code":29,"commit":29,"common":[1,24,27,42,43],"communiti":29,"compar":31,"comparison":[32,37,38],"complet":[31,32,34],"comprehens":37,"concept":[40,43],"conda":42,"condit":39,"consider":41,"consist":[27,40,41],"constrain_optimized_portfolio":6,"constraint":22,"construct":[1,24,38,40],"content":35,"contribut":29,"control":39,"convers":41,"core":[40,42],"correl":[1,31,38],"cost":33,"coverag":29,"creat":[36,41,43],"creation":27,"csv":41,"custom":[26,33,36,38],"cvar":39,"daili":33,"dashboard":39,"data":[1,24,32,38,40,41,43],"datafram":[27,41],"date":[0,21,40,41,42],"date_fix":7,"date_offset_fol":8,"day":[40,41,43],"debug":29,"decomposit":39,"depend":42,"design":23,"detail":[32,33],"detect":41,"develop":[29,35,42],"differ":[33,41],"distribut":37,"diversif":[32,38],"docstr":29,"document":[29,35],"drawdown":37,"drop":41,"effici":[38,41],"efficient_fronti":9,"embed":30,"enum":[21,26],"environ":29,"equal":[32,33,38],"error":38,"exampl":[33,35],"excel":41,"except":26,"exist":30,"export":[1,24,31,32,34,36,39,40,41,43],"export_plotly_figur":[10,36],"express":36,"extern":43,"factor":36,"featur":[29,35,36],"figur":36,"file":42,"financ":41,"financi":[1,24,37,40,42,43],"first":43,"fix":41,"format":[27,41],"frame":1,"framework":32,"frequenc":33,"frontier":38,"function":[0,21,23,24,27],"fund":32,"generat":23,"generate_calendar_date_rang":11,"get":[29,42,43],"get_previous_business_day_before_today":12,"github":28,"guid":[35,43],"guidelin":29,"handl":[0,38,40,41],"help":[29,42],"hint":29,"histor":39,"holiday_calendar":13,"html":[23,30,36],"ide":29,"immut":40,"import":[27,35,41],"indic":35,"inlin":36,"instal":42,"integr":41,"interpret":37,"invers":32,"issu":[27,42],"json":41,"key":[35,43],"layer":40,"length":41,"limit":39,"linux":42,"liter":26,"load":[40,41,43],"load_plotly_dict":14,"maco":42,"main":21,"manag":[1,33,39,40],"manipul":[1,24],"maximum":[32,38],"mean":32,"memori":[40,41],"messag":29,"method":[1,24,27,40,41],"metric":[1,24,27,37,39,40,43],"minimum":[32,38],"miss":41,"model":36,"monitor":39,"mont":[32,38,39],"month":37,"multi":[31,36],"multipl":[40,41,43],"mutat":40,"name":27,"nan":41,"network":42,"next":43,"non":24,"note":[27,35,42],"notif":28,"numer":24,"object":27,"offset_business_day":15,"onc":43,"openfram":[1,2,40,41,43],"openseri":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29,35,42],"opentimeseri":[3,24,40,43],"optim":[22,32,38],"option":42,"outlier":41,"output":36,"overview":40,"overweight":[32,38],"packag":21,"page":30,"panda":41,"paramet":27,"pariti":38,"pass":27,"pattern":43,"perform":[31,32,33,34,37,38,39,41],"pip":42,"platform":42,"plot":36,"portfolio":[1,21,22,27,32,33,38,40,43],"practic":[27,33,40],"prepare_plot_data":16,"price":41,"process":29,"properti":[1,24,27,40],"pull":29,"python":35,"qualiti":41,"quick":[35,43],"rang":41,"rank":31,"rate":41,"real":[32,33,41],"rebalanc":[33,38],"recommend":42,"refer":35,"regress":36,"releas":[28,29],"rememb":43,"remov":41,"report":[23,29,30,37,38,39],"report_html":17,"request":29,"requir":42,"resampl":[40,41],"resample_to_business_period_end":27,"respons":23,"result":[31,32,34,43],"return":[1,23,24,27,31,37,40,41],"returnsimul":[4,25],"review":29,"risk":[1,31,32,34,37,38,39,40],"roll":[1,34,36,37,38,39],"run":[27,29],"safeti":40,"scenario":39,"sector":31,"seri":[27,31,34,40,41],"set":[31,37,38,39],"setup":[29,32,33,34],"sharpeplot":18,"simpl":38,"simul":[21,22,25,32,33,38,39],"simulate_portfolio":19,"singl":34,"solut":27,"sourc":[41,42,43],"specif":[1,27,42],"standard":29,"start":[29,35,43],"statist":1,"step":43,"strategi":[32,33,38,41],"stress":[31,38,39],"string":27,"structur":29,"style":[29,31],"subset":33,"summari":[33,37,38],"support":[35,42],"system":42,"tabl":35,"test":[29,31,38,39],"theoret":33,"time":[31,34],"timeseries_chain":20,"tool":[21,22],"transact":33,"transform":[1,24,34,40,41,43],"troubleshoot":42,"tutori":35,"type":[21,26,29,40],"typeerror":27,"understand":33,"unsupport":27,"usag":41,"use":[30,32,36,42],"user":35,"util":[0,21,24,42],"valid":[26,40,41],"valu":[23,26,27,39,40,41],"valuetyp":[5,27],"var":39,"varianc":32,"verifi":42,"version":35,"visual":[1,22,24,34,37,43],"volatil":[32,38],"vs":[27,33,40],"weight":[32,33,38],"window":42,"work":[41,43],"workflow":[29,31,32,34,40],"world":[32,33],"write":29,"yahoo":41,"year":37}}) \ No newline at end of file +Search.setIndex({"alltitles":{"API Consistency Notes":[[27,null]],"API Reference":[[35,null]],"Adding and Removing Series":[[41,"adding-and-removing-series"]],"Advanced Features":[[36,null]],"Advanced Optimization with Real Data":[[32,"advanced-optimization-with-real-data"]],"Advanced Risk Metrics":[[37,"advanced-risk-metrics"]],"Advanced Weight Strategies":[[38,"advanced-weight-strategies"]],"Analysis Methods":[[1,"analysis-methods"],[24,"analysis-methods"],[40,"analysis-methods"]],"Analysis Workflow":[[40,"analysis-workflow"]],"Annualization":[[40,"annualization"]],"Architecture Overview":[[40,"architecture-overview"]],"Asset Analysis":[[38,"asset-analysis"]],"Backtesting Framework":[[32,"backtesting-framework"]],"Basic Financial Analysis":[[37,null]],"Basic Financial Metrics":[[43,"basic-financial-metrics"]],"Basic Performance Metrics":[[37,"basic-performance-metrics"]],"Basic Portfolio Optimization Setup":[[32,"basic-portfolio-optimization-setup"]],"Basic Rebalanced Portfolio Setup":[[33,"basic-rebalanced-portfolio-setup"]],"Basic Risk Metrics":[[39,"basic-risk-metrics"]],"Basic Setup":[[34,"basic-setup"]],"Benefits of export_plotly_figure":[[36,"benefits-of-export-plotly-figure"]],"Best Practices":[[27,"best-practices"],[40,"best-practices"]],"Bug Reports":[[29,"bug-reports"]],"Building Documentation":[[29,"building-documentation"]],"Business Day Alignment":[[41,"business-day-alignment"]],"Business Day Calendars":[[40,"business-day-calendars"]],"CSV Data":[[41,"csv-data"]],"Calendar Analysis":[[34,"calendar-analysis"]],"Calendar Year Returns":[[37,"calendar-year-returns"]],"Cash Management Analysis":[[33,"cash-management-analysis"]],"Changelog":[[28,null]],"Class Methods for Construction":[[1,"class-methods-for-construction"],[24,"class-methods-for-construction"]],"Code Contributions":[[29,"code-contributions"]],"Code Review Process":[[29,"code-review-process"]],"Code Standards":[[29,"code-standards"]],"Code Style":[[29,"code-style"]],"Commit Messages":[[29,"commit-messages"]],"Common Issues":[[42,"common-issues"]],"Common Issues and Solutions":[[27,"common-issues-and-solutions"]],"Common Patterns":[[43,"common-patterns"]],"Common Properties":[[1,"common-properties"],[24,"common-properties"]],"Community Guidelines":[[29,"community-guidelines"]],"Comparative Analysis":[[31,"comparative-analysis"]],"Comparison with Benchmark":[[37,"comparison-with-benchmark"]],"Complete Analysis Workflow":[[34,"complete-analysis-workflow"]],"Complete Multi-Asset Analysis Workflow":[[31,"complete-multi-asset-analysis-workflow"]],"Complete Optimization Workflow":[[32,"complete-optimization-workflow"]],"Comprehensive Report":[[37,"comprehensive-report"]],"Conditional Value at Risk (CVaR)":[[39,"conditional-value-at-risk-cvar"]],"Consistency Checks":[[40,"consistency-checks"]],"Contributing Guidelines":[[29,"contributing-guidelines"]],"Contributing to openseries":[[29,null]],"Core Concepts":[[40,null]],"Core Dependencies":[[42,"core-dependencies"]],"Core Properties":[[40,"core-properties"]],"Correlation Analysis":[[31,"correlation-analysis"],[38,"correlation-analysis"]],"Correlation and Risk":[[1,"correlation-and-risk"]],"Creating Custom Plots":[[36,"creating-custom-plots"]],"Creating OpenFrame":[[41,"creating-openframe"]],"Creating Visualizations":[[43,"creating-visualizations"]],"Custom Exceptions":[[26,"custom-exceptions"]],"Custom Weight Portfolio":[[38,"custom-weight-portfolio"]],"Daily Rebalancing vs Theoretical Portfolio":[[33,"daily-rebalancing-vs-theoretical-portfolio"]],"Data Alignment":[[40,"data-alignment"]],"Data Export and Import":[[41,"data-export-and-import"]],"Data Handling":[[41,null]],"Data Immutability":[[40,"data-immutability"]],"Data Loading":[[40,"data-loading"]],"Data Manipulation":[[1,"data-manipulation"],[24,"data-manipulation"]],"Data Quality Checks":[[41,"data-quality-checks"]],"Data Transformations":[[41,"data-transformations"],[43,"data-transformations"]],"Data Validation":[[40,"data-validation"],[41,"data-validation"]],"Date Format Validation":[[41,"date-format-validation"]],"Date Handling":[[40,"date-handling"]],"Date Handling Functions":[[0,"date-handling-functions"]],"Date Utilities":[[0,null],[21,"date-utilities"]],"Debugging":[[29,"debugging"]],"Dependencies":[[42,"dependencies"]],"Detailed Portfolio Analysis":[[33,"detailed-portfolio-analysis"]],"Development":[[35,null]],"Development Environment":[[29,"development-environment"]],"Development Installation":[[42,"development-installation"]],"Development Setup":[[29,"development-setup"]],"Development Workflow":[[29,"development-workflow"]],"Different Rebalancing Frequencies":[[33,"different-rebalancing-frequencies"]],"Distribution Analysis":[[37,"distribution-analysis"]],"Docstrings":[[29,"docstrings"]],"Documentation":[[29,"documentation"]],"Documentation Contents":[[35,"documentation-contents"]],"Documentation Contributions":[[29,"documentation-contributions"]],"Documentation Standards":[[29,"documentation-standards"]],"Drawdown Analysis":[[37,"drawdown-analysis"]],"Dropping Missing Data":[[41,"dropping-missing-data"]],"Efficient Data Loading":[[41,"efficient-data-loading"]],"Efficient Frontier":[[38,"efficient-frontier"]],"Embedding Reports in Existing HTML Pages":[[30,"embedding-reports-in-existing-html-pages"]],"Equal Weight Portfolio":[[32,"equal-weight-portfolio"],[38,"equal-weight-portfolio"]],"Equal Weight vs Custom Weight Strategies":[[33,"equal-weight-vs-custom-weight-strategies"]],"Examples":[[35,null]],"Excel Export":[[41,"excel-export"]],"Export Methods":[[1,"export-methods"],[24,"export-methods"],[40,"export-methods"]],"Export Multi-Asset Results":[[31,"export-multi-asset-results"]],"Export Optimization Results":[[32,"export-optimization-results"]],"Export Results":[[34,"export-results"]],"Export Risk Report":[[39,"export-risk-report"]],"Exporting Custom Plotly Figures":[[36,"exporting-custom-plotly-figures"]],"Exporting Results":[[43,"exporting-results"]],"Factor Analysis and Regression":[[36,"factor-analysis-and-regression"]],"Feature Requests":[[29,"feature-requests"]],"File and Network Support":[[42,"file-and-network-support"]],"Financial Calculations":[[40,"financial-calculations"]],"Financial Metrics":[[1,"financial-metrics"],[24,"financial-metrics"]],"Financial Metrics Methods":[[1,"financial-metrics-methods"],[24,"financial-metrics-methods"]],"Financial and Date Utilities":[[42,"financial-and-date-utilities"]],"Frame Management":[[1,"frame-management"]],"Frame-specific Properties":[[1,"frame-specific-properties"]],"From Arrays":[[41,"from-arrays"]],"From Fixed Rate":[[41,"from-fixed-rate"]],"From pandas DataFrame/Series":[[41,"from-pandas-dataframe-series"]],"Function Parameter Names":[[27,"function-parameter-names"]],"Function Return Values":[[27,"function-return-values"]],"Get All Metrics at Once":[[43,"get-all-metrics-at-once"]],"Getting Help":[[29,"getting-help"],[42,"getting-help"]],"Getting Started":[[29,"getting-started"]],"GitHub Releases":[[28,"github-releases"]],"HTML Report Function":[[23,"html-report-function"]],"Handling Different Date Ranges":[[41,"handling-different-date-ranges"]],"Handling Missing Data":[[41,"handling-missing-data"]],"Historical Stress Testing":[[39,"historical-stress-testing"]],"IDE Setup":[[29,"ide-setup"]],"Important API Notes":[[27,"important-api-notes"]],"Important Notes":[[35,null]],"Indices and tables":[[35,"indices-and-tables"]],"Inline HTML Output":[[36,"inline-html-output"]],"Installation":[[42,null]],"Installing from source":[[42,"installing-from-source"]],"Installing openseries":[[42,"installing-openseries"]],"Inverse Volatility Portfolio":[[32,"inverse-volatility-portfolio"]],"Issue: \u201cDo not run resample_to_business_period_ends on return series\u201d":[[27,"issue-do-not-run-resample-to-business-period-ends-on-return-series"]],"Issue: \u201cTypeError: unsupported format string passed to Series.__format__\u201d":[[27,"issue-typeerror-unsupported-format-string-passed-to-series-format"]],"Issue: \u201cTypeError: \u2018DataFrame\u2019 object is not callable\u201d":[[27,"issue-typeerror-dataframe-object-is-not-callable"]],"JSON Export":[[41,"json-export"]],"Key Concepts to Remember":[[43,"key-concepts-to-remember"]],"Key Features":[[35,"key-features"]],"Length Consistency":[[41,"length-consistency"]],"Linux":[[42,"linux"]],"Literal Types":[[26,"literal-types"]],"Loading Data":[[41,"loading-data"]],"Loading Data from External Sources":[[43,"loading-data-from-external-sources"]],"Main Classes":[[21,"main-classes"]],"Managing Multiple Series":[[40,"managing-multiple-series"]],"Maximum Diversification Portfolio":[[32,"maximum-diversification-portfolio"]],"Maximum Diversification Strategy":[[38,"maximum-diversification-strategy"]],"Mean-Variance Optimization":[[32,"mean-variance-optimization"]],"Memory Management":[[40,"memory-management"]],"Memory Usage":[[41,"memory-usage"]],"Method Categories":[[40,"method-categories"]],"Method Chaining vs Object Creation":[[27,"method-chaining-vs-object-creation"]],"Method Parameter Names":[[27,"method-parameter-names"]],"Methods":[[1,"methods"],[24,"methods"]],"Metric Names in DataFrames":[[27,"metric-names-in-dataframes"]],"Minimum Volatility Overweight Portfolio":[[32,"minimum-volatility-overweight-portfolio"]],"Minimum Volatility Overweight Strategy":[[38,"minimum-volatility-overweight-strategy"]],"Monte Carlo Portfolio Simulation":[[32,"monte-carlo-portfolio-simulation"],[38,"monte-carlo-portfolio-simulation"]],"Monte Carlo Risk Simulation":[[39,"monte-carlo-risk-simulation"]],"Monthly and Annual Analysis":[[37,"monthly-and-annual-analysis"]],"Multi-Asset Analysis":[[31,null]],"Multi-Factor Model Analysis":[[36,"multi-factor-model-analysis"]],"Mutation and data layers":[[40,"mutation-and-data-layers"]],"NaN Handling Strategies":[[41,"nan-handling-strategies"]],"Next Steps":[[43,"next-steps"]],"Non-numerical Properties":[[24,"non-numerical-properties"]],"OpenFrame":[[1,null]],"OpenTimeSeries":[[24,null]],"Optional Dependencies":[[42,"optional-dependencies"]],"Other Utilities":[[21,"other-utilities"]],"Outlier Detection":[[41,"outlier-detection"]],"Performance Analysis":[[34,"performance-analysis"]],"Performance Attribution":[[31,"performance-attribution"],[33,"performance-attribution"],[38,"performance-attribution"]],"Performance Comparison Analysis":[[32,"performance-comparison-analysis"]],"Performance Considerations":[[41,"performance-considerations"]],"Platform-Specific Notes":[[42,"platform-specific-notes"]],"Portfolio Analysis":[[1,"portfolio-analysis"],[38,null],[43,"portfolio-analysis"]],"Portfolio Comparison":[[32,"portfolio-comparison"],[38,"portfolio-comparison"]],"Portfolio Constraints":[[22,"portfolio-constraints"]],"Portfolio Construction":[[40,"portfolio-construction"]],"Portfolio Creation":[[27,"portfolio-creation"]],"Portfolio Optimization":[[22,"portfolio-optimization"],[32,null],[38,"portfolio-optimization"]],"Portfolio Simulation":[[22,"portfolio-simulation"]],"Portfolio Tools":[[21,"portfolio-tools"],[22,null]],"Price and Return Conversions":[[41,"price-and-return-conversions"]],"Properties":[[1,"properties"],[24,"properties"]],"Properties vs Methods":[[27,"properties-vs-methods"],[40,"properties-vs-methods"]],"Pull Request Process":[[29,"pull-request-process"]],"Python Version Support":[[35,"python-version-support"]],"Quick Start":[[35,"quick-start"]],"Quick Start Guide":[[43,null]],"Ranking Analysis":[[31,"ranking-analysis"]],"Real-World Application Example":[[33,"real-world-application-example"]],"Real-World Fund Portfolio Optimization":[[32,"real-world-fund-portfolio-optimization"]],"Rebalanced Portfolio Simulation":[[33,null]],"Rebalancing Analysis":[[38,"rebalancing-analysis"]],"Release Notifications":[[28,"release-notifications"]],"Release Process":[[29,"release-process"]],"Report Generation":[[23,null]],"Reporting":[[30,null]],"Resampling":[[40,"resampling"],[41,"resampling"]],"Responsive Design":[[23,"responsive-design"]],"Return Calculations":[[40,"return-calculations"]],"Return Values":[[23,"return-values"]],"ReturnSimulation Class":[[25,"returnsimulation-class"]],"Returns:":[[1,"returns"],[1,"id1"],[1,"id2"],[1,"id3"],[1,"id4"],[1,"id5"],[1,"id6"],[1,"id7"],[1,"id8"],[1,"id9"],[1,"id10"],[1,"id11"],[1,"id12"],[1,"id13"],[1,"id14"],[1,"id15"],[1,"id16"],[1,"id17"],[1,"id18"],[1,"id19"],[1,"id20"],[1,"id21"],[24,"returns"],[24,"id1"],[24,"id2"],[24,"id3"],[24,"id4"],[24,"id5"],[24,"id6"],[24,"id7"],[24,"id8"],[24,"id9"],[24,"id10"],[24,"id11"],[24,"id12"],[24,"id13"],[24,"id14"],[24,"id15"],[24,"id16"],[24,"id17"],[24,"id18"],[24,"id19"],[24,"id20"],[24,"id21"]],"Risk Analysis":[[34,"risk-analysis"],[37,"risk-analysis"]],"Risk Attribution":[[38,"risk-attribution"]],"Risk Decomposition":[[39,"risk-decomposition"]],"Risk Limits and Controls":[[39,"risk-limits-and-controls"]],"Risk Management":[[39,null]],"Risk Metrics":[[40,"risk-metrics"]],"Risk Monitoring Dashboard":[[39,"risk-monitoring-dashboard"]],"Risk Parity Portfolio":[[38,"risk-parity-portfolio"]],"Risk-Adjusted Performance":[[39,"risk-adjusted-performance"]],"Risk-Adjusted Returns":[[37,"risk-adjusted-returns"]],"Risk-Based Portfolio Strategies":[[32,"risk-based-portfolio-strategies"]],"Risk-Return Analysis":[[31,"risk-return-analysis"]],"Rolling Analysis":[[1,"rolling-analysis"],[34,"rolling-analysis"],[37,"rolling-analysis"]],"Rolling Factor Analysis":[[36,"rolling-factor-analysis"]],"Rolling Portfolio Analysis":[[38,"rolling-portfolio-analysis"]],"Rolling Risk Analysis":[[39,"rolling-risk-analysis"]],"Running Tests":[[29,"running-tests"]],"Scenario Analysis":[[39,"scenario-analysis"]],"Sector/Style Analysis":[[31,"sector-style-analysis"]],"Setting Up":[[37,"setting-up"]],"Setting Up Multi-Asset Analysis":[[31,"setting-up-multi-asset-analysis"]],"Setting Up Risk Analysis":[[39,"setting-up-risk-analysis"]],"Setting Up the Data":[[38,"setting-up-the-data"]],"Simple Portfolio Construction":[[38,"simple-portfolio-construction"]],"Simulation":[[21,"simulation"],[25,null]],"Single Asset Analysis":[[34,null]],"Statistical Analysis":[[1,"statistical-analysis"]],"Strategy Comparison with Error Handling":[[38,"strategy-comparison-with-error-handling"]],"Stress Testing":[[31,"stress-testing"],[38,"stress-testing"],[39,"stress-testing"]],"Subset Portfolio Analysis":[[33,"subset-portfolio-analysis"]],"Summary Report":[[38,"summary-report"]],"Summary and Best Practices":[[33,"summary-and-best-practices"]],"Summary and Interpretation":[[37,"summary-and-interpretation"]],"System Requirements":[[42,"system-requirements"]],"Test Coverage":[[29,"test-coverage"]],"Test Structure":[[29,"test-structure"]],"Testing":[[29,"testing"]],"The OpenFrame Class":[[40,"the-openframe-class"]],"The OpenTimeSeries Class":[[40,"the-opentimeseries-class"]],"Time Series Analysis":[[31,"time-series-analysis"]],"Time Series Transformations":[[34,"time-series-transformations"]],"Transaction Cost Analysis":[[33,"transaction-cost-analysis"]],"Transformation Methods":[[40,"transformation-methods"]],"Transformations":[[1,"transformations"],[24,"transformations"]],"Troubleshooting":[[42,"troubleshooting"]],"Tutorials":[[35,null]],"Type Aliases":[[26,"type-aliases"]],"Type Hints":[[29,"type-hints"]],"Type Safety":[[40,"type-safety"]],"Types and Enums":[[21,"types-and-enums"],[26,null]],"Types of Contributions":[[29,"types-of-contributions"]],"Understanding Rebalanced Portfolio Simulation":[[33,"understanding-rebalanced-portfolio-simulation"]],"User Guide":[[35,null]],"Using Real Fund Data for Optimization":[[32,"using-real-fund-data-for-optimization"]],"Using conda":[[42,"using-conda"]],"Using pip (recommended)":[[42,"using-pip-recommended"]],"Using the Built-in HTML Report":[[30,"using-the-built-in-html-report"]],"Using with Plotly Express":[[36,"using-with-plotly-express"]],"Utility Functions":[[21,"utility-functions"],[24,"utility-functions"]],"Validation Classes":[[26,"validation-classes"]],"Validation Methods":[[41,"validation-methods"]],"Value Types":[[26,"value-types"],[40,"value-types"]],"Value Validation":[[41,"value-validation"]],"Value at Risk (VaR) Analysis":[[39,"value-at-risk-var-analysis"]],"ValueType Specification":[[27,"valuetype-specification"]],"Verifying Installation":[[42,"verifying-installation"]],"Visualization":[[1,"visualization"],[22,"visualization"],[24,"visualization"],[34,"visualization"],[37,"visualization"]],"Weight Strategy Details":[[32,"weight-strategy-details"]],"Windows":[[42,"windows"]],"Working with Business Days":[[43,"working-with-business-days"]],"Working with Multiple Assets":[[41,"working-with-multiple-assets"]],"Working with Multiple Assets (OpenFrame)":[[43,"working-with-multiple-assets-openframe"]],"Working with Real Data Sources":[[41,"working-with-real-data-sources"]],"Writing Tests":[[29,"writing-tests"]],"Yahoo Finance Integration":[[41,"yahoo-finance-integration"]],"Your First OpenTimeSeries":[[43,"your-first-opentimeseries"]],"macOS":[[42,"macos"]],"openseries Documentation":[[35,null]],"openseries package":[[21,null]],"openseries.OpenFrame":[[2,null]],"openseries.OpenTimeSeries":[[3,null]],"openseries.ReturnSimulation":[[4,null]],"openseries.ValueType":[[5,null]],"openseries.constrain_optimized_portfolios":[[6,null]],"openseries.date_fix":[[7,null]],"openseries.date_offset_foll":[[8,null]],"openseries.efficient_frontier":[[9,null]],"openseries.export_plotly_figure":[[10,null]],"openseries.generate_calendar_date_range":[[11,null]],"openseries.get_previous_business_day_before_today":[[12,null]],"openseries.holiday_calendar":[[13,null]],"openseries.load_plotly_dict":[[14,null]],"openseries.offset_business_days":[[15,null]],"openseries.prepare_plot_data":[[16,null]],"openseries.report_html":[[17,null]],"openseries.sharpeplot":[[18,null]],"openseries.simulate_portfolios":[[19,null]],"openseries.timeseries_chain":[[20,null]]},"docnames":["api/datefixer","api/frame","api/generated/openseries.OpenFrame","api/generated/openseries.OpenTimeSeries","api/generated/openseries.ReturnSimulation","api/generated/openseries.ValueType","api/generated/openseries.constrain_optimized_portfolios","api/generated/openseries.date_fix","api/generated/openseries.date_offset_foll","api/generated/openseries.efficient_frontier","api/generated/openseries.export_plotly_figure","api/generated/openseries.generate_calendar_date_range","api/generated/openseries.get_previous_business_day_before_today","api/generated/openseries.holiday_calendar","api/generated/openseries.load_plotly_dict","api/generated/openseries.offset_business_days","api/generated/openseries.prepare_plot_data","api/generated/openseries.report_html","api/generated/openseries.sharpeplot","api/generated/openseries.simulate_portfolios","api/generated/openseries.timeseries_chain","api/openseries","api/portfoliotools","api/report","api/series","api/simulation","api/types","api_consistency","development/changelog","development/contributing","examples/custom_reports","examples/multi_asset","examples/portfolio_optimization","examples/rebalanced_portfolio","examples/single_asset","index","tutorials/advanced_features","tutorials/basic_analysis","tutorials/portfolio_analysis","tutorials/risk_management","user_guide/core_concepts","user_guide/data_handling","user_guide/installation","user_guide/quickstart"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1},"filenames":["api/datefixer.rst","api/frame.rst","api/generated/openseries.OpenFrame.rst","api/generated/openseries.OpenTimeSeries.rst","api/generated/openseries.ReturnSimulation.rst","api/generated/openseries.ValueType.rst","api/generated/openseries.constrain_optimized_portfolios.rst","api/generated/openseries.date_fix.rst","api/generated/openseries.date_offset_foll.rst","api/generated/openseries.efficient_frontier.rst","api/generated/openseries.export_plotly_figure.rst","api/generated/openseries.generate_calendar_date_range.rst","api/generated/openseries.get_previous_business_day_before_today.rst","api/generated/openseries.holiday_calendar.rst","api/generated/openseries.load_plotly_dict.rst","api/generated/openseries.offset_business_days.rst","api/generated/openseries.prepare_plot_data.rst","api/generated/openseries.report_html.rst","api/generated/openseries.sharpeplot.rst","api/generated/openseries.simulate_portfolios.rst","api/generated/openseries.timeseries_chain.rst","api/openseries.rst","api/portfoliotools.rst","api/report.rst","api/series.rst","api/simulation.rst","api/types.rst","api_consistency.rst","development/changelog.rst","development/contributing.rst","examples/custom_reports.rst","examples/multi_asset.rst","examples/portfolio_optimization.rst","examples/rebalanced_portfolio.rst","examples/single_asset.rst","index.rst","tutorials/advanced_features.rst","tutorials/basic_analysis.rst","tutorials/portfolio_analysis.rst","tutorials/risk_management.rst","user_guide/core_concepts.rst","user_guide/data_handling.rst","user_guide/installation.rst","user_guide/quickstart.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"0f":39,"10i":37,"11articlecox":[1,2],"1e":29,"1f":[37,40],"1y":[34,41],"2f":[31,32,33,34,35,37,38,39,40,43],"2x2":23,"2y":[34,41,43],"3b":43,"3f":[29,31,32,36,38,39],"3y":[30,31,33,36,39],"4f":[32,33,36,38,39],"5th":39,"5y":[32,34,35,37,38],"75th":31,"960px":23,"A":[0,1,2,3,6,14,15,22,24,26,41],"ALL":34,"AT":39,"All":29,"An":[1,2,3,20,24],"And":[1,2],"At":[1,3,24,26,29],"BOTH":[1,2],"Be":29,"Both":[21,40],"By":26,"Down":[1,2],"For":[1,21,23,24,28,29,31,32,35,36,39,41,42,43],"Here":[31,32,33,34,35,43],"How":[1,10,24],"If":[0,1,2,3,7,10,13,15,23,24,29,40,42],"It":[0,1,2,3,15,24,25,30,33,35],"MOST":31,"Most":[1,24,32,42],"My":[10,27,30],"NOT":27,"No":[27,31,39,42],"On":[40,42],"Or":[27,35],"Other":35,"Some":27,"The":[0,1,2,3,4,6,7,8,9,12,15,16,18,19,20,21,22,23,24,25,26,27,29,30,32,33,35,36,38,41,42],"These":[3,24,27],"They":[26,27],"This":[1,2,4,10,21,25,26,27,29,30,31,32,33,34,36,37,38,39,40,41,42,43],"To":[1,2,27,29,42],"Up":[1,2,35],"We":29,"When":[10,23,27,29,30,32,38,41],"Which":[18,22],"With":[27,41],"You":[36,37,38,42],"Your":35,"_":[32,34],"__init__":[1,2,3,4,5,26,29],"__metadata__":26,"__version__":42,"_analysi":34,"_build":29,"_commonmodel":[1,2,3,21,24],"aapl":[30,31,34,36,39,41],"ab":[29,32,33,37,38,39],"abov":[1,2,24,26],"absolut":[1,24,33,41],"acceler":42,"accept":[1,24],"access":27,"accord":[0,3,4,8,11,12,13,15,24,25],"account":33,"accru":[3,24],"accrual":[3,24,33],"acf":[1,3,24],"acquisit":42,"across":[1,2,3,24,33,40],"activ":[29,33,39,42],"actual":[29,32,33,37,40],"actual_length":41,"actual_return":29,"adapt":[1,23,24,36,37],"add":[0,1,2,3,8,11,12,13,15,18,22,24,29,32,36,38,39],"add_logo":[1,17,18,22,23,24,32],"add_timeseri":[1,2,41,43],"add_trac":36,"addit":[29,38,42],"address":29,"adj_r_squar":36,"adjac":[1,24],"adjust":[0,1,2,3,8,15,24,35,36],"advanc":35,"advantag":36,"agg":38,"aggreg":38,"aim":32,"alert":39,"alia":26,"alias":35,"align":[1,2,3,24,26,38,43],"align_index_to_local_cday":[1,24,33,40,41,43],"all_asset":39,"all_metr":[27,31,34,37,43],"all_portfolio":38,"all_properti":[1,2,3,24,27,31,32,33,34,37,38,39,40,41,43],"all_seri":38,"alloc":[6,9,22,43],"allow":[1,2,3,4,6,9,22,24,25,26,36],"allowed_str":26,"almost":[9,22],"along":[1,9,22,24],"alongsid":[1,24],"alpha":[0,1,2,3,4,8,11,12,13,15,23,24,25],"alphabet":[31,39],"alreadi":[29,42],"also":[1,2,26,27,36,38,40,42],"alter":[3,24],"altern":[32,39,43],"alway":[1,2,3,4,24,25,29,32,40],"amazon":31,"among":32,"amzn":[31,41],"analys":[3,24],"analysi":[0,21,22,23,25,30,35,41,42],"analysis_fram":36,"analyz":[24,31,33,34,35,37,38,39,43],"ani":[1,3,4,24,26,29,36,37,38],"annot":[1,2,3,4,24,25,26],"annual":[1,2,4,23,24,25,31,32,33,34,35,38,39,41,42,43],"annual_return":[37,40],"annual_vol":40,"anomali":32,"anoth":[1,24],"anyth":[0,15,26],"api":[21,29,32,40,43],"append":[29,30,31,32,33,36,38,39,41,43],"appl":[30,31,34,36,39,41,42],"apple_analysi":34,"apple_data":34,"apple_drawdown":34,"apple_metr":34,"apple_return":34,"appli":[20,24,32,40],"applic":[32,35,36],"approach":[29,32,33,39],"appropri":[29,41],"approv":29,"approxim":[29,33],"ar1_coef":[4,25],"arbitrary_types_allow":[1,2,3,4,24,25],"architectur":35,"area":29,"aren":36,"arg":[26,29],"argument":[0,3,4,8,11,12,13,15,26,27],"arithmet":[1,2,4,24,25,37],"arithmetic_ret":[1,2,3,24,26,37],"arithmetic_ret_func":[1,24],"arithmetic_return":37,"arithmeticmean":[1,24],"around":[35,40],"array":[3,24,29,40],"articl":[1,2,3,24],"ascend":31,"ascii_on":[3,24,26],"ask":29,"asp":[1,2,3,24],"assert_frame_equ":29,"assess":[37,39],"asset":[1,2,6,9,16,21,22,23,24,27,30,32,33,35,36,37,39,40],"asset1":[31,38],"asset2":[31,38],"asset_a":36,"asset_b":36,"asset_column":[1,2],"asset_comparison":36,"asset_data":31,"asset_group":31,"asset_metr":[31,38,39],"asset_mov":39,"asset_nam":[32,33,38],"asset_param":33,"asset_perform":33,"asset_return":38,"asset_vol":[38,39],"assign":32,"associ":[3,24],"assum":[1,2,3,20,24,37,38,39,41],"assumpt":[1,24],"asymmetri":37,"atleastoneframeerror":26,"attempt":26,"attent":27,"attribut":[1,2,3,4,5,26,35,43],"auto":[10,36],"auto_open":[1,10,17,18,22,23,24,32,36],"autocorr":[1,2,3,24,26],"autocorr_func":[1,24],"autocorrel":[1,3,4,24,25],"autom":29,"automat":[1,23,24,33,36,40,41,42,43],"autoregress":[4,25],"avail":[1,2,3,24,32,33,36,38,39,40,42],"averag":[1,2,3,4,24,25,31,33,34,36,38,39],"avg":31,"avg_corr":38,"avg_correl":[31,38],"avg_return":31,"avg_sharp":31,"avg_stress_return":31,"avg_vol":31,"avoid":[3,24,27],"axi":[1,24,38],"b":[1,2,3,24,26,29,41],"back":[20,24,41],"backfil":[1,2,3,24,26],"backtest":[33,35],"backtest_result":32,"backward":[0,8,12,29],"bal_weight":[1,2,33,38],"bar":[1,17,23,24,26,36,37,43],"bar_freq":[17,23],"bargap":[1,24],"bargroupgap":[1,24],"barmod":[1,24],"base":[1,2,3,4,5,16,22,24,25,26,29,35,37,39,43],"base_column":[1,2],"base_zero":[1,2],"basecci":[3,24,32],"baselin":32,"basemodel":[4,21,25,26,40],"basic":[29,35,38,40],"basket":[1,2],"batch":[1,41],"befor":[26,27,29,40],"behav":26,"behavior":29,"behind":40,"benchmark":[1,2,23,30,35],"benefit":[26,31,38],"best":[29,32,35,38,39],"best_idx":39,"best_strategi":32,"beta":[1,2,5,23,26,36,40],"better":[23,31,42],"beyond":[38,39],"bfgs":26,"bfill":[1,2,3,24,26],"bias":[1,2,3,24],"bin":[1,24,29,42],"bind":26,"bme":[1,2,3,24,26,34,37,40,41,43],"bnd":32,"bodi":[23,30],"bond":[32,33,36,37,38],"bond_data":37,"bond_tick":37,"bool":[0,1,2,3,8,9,10,14,17,18,22,23,24],"boolean":[3,24],"bothstartandenderror":26,"bottleneck":42,"bought":[1,2],"bound":[1,6,9,22,24,26],"box":[1,3,24],"bqe":[1,2,3,24,26,40,41],"branch":29,"breach":39,"break":[29,37],"breakpoint":23,"brownian":[4,25],"browser":[1,10,18,22,23,24,37,43],"build":[40,42],"built":[27,29,32,35,40,41,43],"bump":[0,12,15,29],"busdaycalendar":[0,13],"busi":[0,1,2,3,8,11,12,13,15,24,29,35],"buy":33,"buysell_qti":[33,38],"bye":[1,2,3,17,23,24,26,37,41],"byte":26,"c":[1,2,24,35,41,42],"cagr":[1,2,23,24,37,43],"calc_rang":[1,24],"calcul":[0,1,2,3,21,24,26,29,31,32,33,35,36,37,38,39,43],"calculate_return":29,"calculate_sharpe_ratio":29,"calendar":[0,1,2,3,8,11,13,24,29,35,41,42,43],"call":[3,24,27],"calmar":32,"can":[0,3,8,10,11,12,13,15,23,24,26,27,30,31,32,33,36,37,38,40,42,43],"cap":[31,36],"capabl":[21,23,29,43],"capit":[1,2],"capm":[1,2],"captor":[1,14,18,22,24,32],"captorab":42,"captorlogotyp":14,"captur":[1,2,23],"capture_ratio_func":[1,2],"captureratio":[1,2],"carlo":35,"case":[1,2,3,24,29,39,43],"cash":[1,2,35],"cash_analysi":33,"cash_index":[1,2],"cash_pct":33,"cash_posit":33,"cash_seri":33,"categori":35,"caught":40,"cci":26,"cd":[29,42],"cdn":[1,10,17,18,22,23,24,26,36],"certain":32,"cg":26,"chain":[20,24,40],"chang":[1,10,24,28,29,32,36,37,38,39,40,41],"changelog":[29,35],"characterist":[31,37,38,39],"chart":[23,36,37,43],"check":[27,29,35,39,42],"checker":26,"checkout":29,"chi":[3,24],"choic":40,"chosen":[1,2,3,24],"class":[2,3,4,5,29,35,43],"classmethod":[3,4,24,25],"classvar":26,"clean":[40,41],"clear":29,"clone":[29,42],"close":[5,26,27,30,31,32,33,34,35,36,37,38,39,40,41,43],"closer":33,"cluster":[1,24],"co":[1,2],"cobyla":26,"code":[0,1,3,4,8,11,12,13,15,24,25,42],"coeffici":[1,2,4,25,36],"col":[32,36],"collect":[1,40],"colour":[18,22],"column":[1,2,3,24,31,38,39,40,41],"column_nmbr":[3,24,40],"columns_lvl_on":[1,2],"columns_lvl_zero":[1,2,32,40],"com":[1,2,3,24,29,31,42],"combin":[3,24,26],"comment":39,"commit":42,"commod":[33,38],"common":[0,2,20,21,31,35,38,40,41],"compar":[1,2,23,24,32,33,35,37,38,39,40,43],"comparison":[1,2,3,21,23,24,29,30,31,33,35,36,39,43],"comparison_fram":[30,32,33,37,38,39],"comparison_metr":[32,33,37,38],"comparison_seri":33,"compat":[23,29,42],"compil":42,"complet":[23,35,38,39,43],"compon":[1,2,24],"compound":[1,24],"comprehens":[23,24,29,31,32,33,34,35,38,39,41,43],"comput":[1,3,24,41,42],"concaten":40,"concentr":39,"concept":35,"concis":29,"conda":[28,29,35],"condit":[1,24,29,35,37,40],"conditional_value_at_risk":[1,24],"confid":[37,39,40],"confidence_level":39,"config":[1,2,3,4,10,14,24,25,26,32],"config_and_layout":14,"configdict":[1,2,3,4,24,25,26],"configur":[1,2,3,4,24,25,26,29,32],"conflict":42,"conform":[1,2,3,4,24,25,26],"consecut":39,"consid":[29,33,40,41,42],"consider":35,"consist":[21,35,36],"consol":29,"constitu":[1,2,19,22,30,31,32,33,36,37,38,39,40,41,43],"constr":26,"constrain":[6,22,26],"constrain_optimized_portfolio":22,"constraint":35,"construct":[26,29,32,35,43],"contain":[1,2,10,21,23,24,30,33,36],"content":23,"contravari":26,"contrib":38,"contribut":[33,35,38,39,42],"control":[1,2,3,24,35],"conveni":[3,24],"convert":[1,2,3,10,24,27,31,32,34,37,38,39,40,41,42,43],"coordin":[1,24],"copi":[1,2,3,24,31,40,43],"core":[3,24,26,35],"corp":[31,39],"corr":[31,38],"corr_pair":31,"corr_scal":[1,2],"correct":[3,24,26,27,42],"correl":[2,5,26,32,35,36,37,39,43],"correl_matrix":[1,2,27,31,32,37,38,39,43],"correlation_matrix":[31,37,38,39],"cost":[35,38],"count":[38,39],"countri":[0,1,3,4,8,11,12,13,15,24,25,26,33,40,41,43],"countriesnotstringnorliststrerror":[0,13,26],"countriestyp":[0,1,3,4,8,11,12,13,15,24,25,26],"countryinput":26,"countrysettyp":26,"countrystringtyp":26,"cov":29,"covari":26,"cover":[36,41],"cox":[1,2],"crash":39,"creat":[1,2,3,4,18,22,23,24,25,26,27,29,30,31,32,33,34,35,37,38,39,40,42],"creation":29,"criteria":31,"crucial":38,"css":[1,10,23,24,30,36],"csv":34,"cubic":[1,24],"cumprod":38,"cumsum":36,"cumul":[1,2,3,23,24,38,40,41,42,43],"cumulative_contrib":38,"currenc":[3,24,26,32],"currencystringtyp":[3,24,26],"current":[6,16,18,22,29,31,32,34,36,37,39],"current_d":39,"current_metr":39,"current_portfolio":32,"current_portfolio_df":32,"curv":[1,24],"curve_point":[6,22],"curve_typ":[1,24],"custom":[23,27,29,30,35,40,41,43],"custom_dashboard":36,"custom_df":43,"custom_fram":43,"custom_holiday":[0,1,8,11,12,13,15,24],"custom_portfolio":[38,43],"custom_report":30,"custom_weight":[33,38],"custom_weight_portfolio":33,"cut":[9,22],"cvar":[1,5,24,26,34,35,37,40,43],"cvar_90":37,"cvar_95":[37,40],"cvar_99":37,"cvar_down":[1,2,3,24,26,34,37,39,40,43],"cvar_down_func":[1,24,37,39],"cvar_valu":39,"d":[1,3,4,24,25,26,37,39],"d_rang":[3,24],"daili":[1,2,3,23,24,34,35,37,38,39,40,41,42,43],"daily_var_95":39,"dashboard":[35,36],"data":[0,2,3,4,6,7,9,10,16,17,18,19,21,22,23,25,27,29,30,31,33,34,35,36,37,39,42],"data_typ":33,"databas":[3,24],"datafram":[1,2,3,4,9,16,18,19,22,24,25,26,31,32,36,39,40],"dataset":[40,41,42],"date":[1,2,3,4,7,8,11,12,13,15,20,23,24,25,26,29,32,33,34,35,36,37,38,39,43],"date_fix":0,"date_list":40,"date_offset_fol":0,"date_rang":[3,24,36,41],"datealignmenterror":[1,24,26],"datefix":[0,29],"datelisttyp":[3,24,26],"datestringtyp":26,"datetim":[0,1,7,24,26,33,37,39,40,41,42,43],"datetime64":26,"datetimeindex":[3,24,41],"datetyp":[0,7,8,26],"dateutil":42,"day":[0,1,2,3,4,8,11,12,15,24,25,26,29,31,33,34,35,37,38,39],"day_chunk":[1,2,3,24],"days_in_year":[3,24],"daysinyeartyp":[1,2,3,4,24,25,26],"dbc":38,"dd":[3,24,31,33,38],"ddate":[0,15],"dec1":26,"dec2":26,"declar":26,"decomposit":35,"dedic":26,"deepcopi":40,"def":29,"default":[0,1,2,3,4,6,8,9,10,11,12,13,14,15,18,20,22,23,24,25,26,27,29,36],"defaultinterpreterpath":29,"defin":[1,24,31,32,38,39],"definit":26,"del":40,"delbert":[1,2],"delet":[1,2,3,24],"delete_lvl_on":[3,24],"delete_timeseri":[1,2,41],"demean":[1,24],"demonstr":[30,32,33,34,36,37,38,39],"denomin":[1,2],"densiti":26,"depend":[1,2,23,29,35,36],"dependent_column":[1,2],"dependent_variable_idx":36,"deriv":[1,10,24],"describ":29,"descript":[29,34,37,40,43],"design":[21,27,35,40],"desir":26,"desktop":[1,23,24,30,36],"detail":[1,2,23,26,28,29,31,35,38,43],"detailed_portfolio":[33,38],"detect":[1,23,24,40],"determin":[0,1,2,3,8,18,22,24],"dev":[1,24,29,42],"develop":32,"deviat":[1,2,4,24,25,37,39,40],"devic":[1,23,24,36],"df":[36,41],"dframe":[3,4,24,25,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"diagnost":24,"dict":[1,2,14,24],"dictionari":[1,2,3,4,10,24,25,26],"differ":[0,1,2,3,7,24,27,29,31,32,35,36,37,38,39,40],"diffus":[4,25],"dir":[1,24],"direct":[23,31,32,34,36],"directori":[1,17,18,22,23,24,29],"directorypath":[1,18,22,24],"discuss":29,"display":[1,10,23,24,27,30,32,43],"displaymodebar":36,"distribut":[1,4,24,25,32,35,36,39,42,43],"div":[1,10,23,24,26,30,32,36,40],"div_id":10,"diversif":40,"diversifi":[38,39],"divid":[1,2,3,24],"divisor":[3,24],"dlta_degr_freedm":[1,2,3,24],"doc":29,"doctyp":[23,30],"document":[23,36,43],"doe":[0,1,15,24,40],"doesn":27,"dogleg":26,"domest":[3,24],"don":[1,2,27],"download":[31,33,34,35,37,38,39,41,43],"downsid":[1,24,37,39,40],"downside_devi":[1,2,3,24,26,37,39],"downside_vol":37,"downstream":[1,24],"draw":[1,24],"drawdown":[1,24,27,31,32,33,34,35,36,38,39,40,43],"drift":33,"drift_adjust":[1,24],"drop":[1,24,26],"drop_extra":[1,2,33,38],"dropna":41,"dt":[0,1,2,3,4,7,8,11,12,15,24,25,33,40,42,43],"due":26,"dummi":36,"dump":[1,24],"duplic":26,"dure":[1,2,31,38],"e":[1,24,26,29,40,42],"eaf":38,"earli":41,"earlier":[1,20,24],"early_seri":41,"easiest":42,"econom":[1,2],"edg":29,"educ":[1,2],"eem":38,"efa":[36,38],"effect":[27,40,41],"effici":[6,9,18,22,31,32],"efficient_fronti":[16,18,22,27,32,38],"efficient_threshold":31,"efram":[9,22,27,32,38],"either":[1,24],"elif":[33,37,39],"els":[31,32,33,37,39],"emb":30,"embed":[23,35,36],"emerg":[32,38],"empathi":29,"empti":[1,14,24,26,29],"en":[1,24],"enabl":29,"encod":30,"encount":[32,42],"end":[0,1,2,3,4,11,24,25,26,33,40,41,42,43],"end_cut":[1,2],"end_dat":[33,41],"end_dt":[3,24],"endyear":[0,13],"energi":32,"enforc":41,"engin":37,"enhanc":29,"ensur":[29,40,42,43],"entir":41,"enum":[5,35,40,43],"enumer":[31,32,33,36,38,39],"environ":42,"eq_weight":[1,2,26,27,31,32,33,38,39,40,43],"equal":[1,2,31,35,39,40,43],"equal_weight":[1,2,31,33,38,39],"equal_weight_portfolio":[32,33,38],"equal_weight_portfolio_df":[32,38],"equiti":[32,33],"equival":[1,24],"error":[1,2,23,29,33,40,41,42],"especi":29,"estat":32,"etc":[26,29,43],"etf":[32,39],"etf_tick":32,"evalu":[33,39],"event":[38,39],"everi":40,"everyth":29,"ewma":[1,2,3,5,24,26],"ewma_risk":[1,2],"ewma_var":[5,26],"ewma_var_func":[3,24],"ewma_vol":[5,26],"ewma_vol_func":[3,24],"exact":26,"examin":[33,37],"exampl":[10,29,30,31,32,34,36,40,42,43],"exceed":[1,24],"excel":[1,24,31,32,34,37,38,39,42,43],"excel_writ":37,"excelwrit":39,"except":[24,32,35,36,38],"exchang":42,"exchange_calendar":[0,1,3,4,8,11,12,13,15,24,25],"exclud":[3,9,22,24,33],"execut":33,"exist":[1,23,24,26,29,31,34,35,37,40],"exogen":[1,2],"expect":[27,29,32,37,38,39,40,41],"expected_length":41,"expected_return":29,"explain":40,"explan":29,"explicit":[3,4,26,27,40],"explor":43,"exponenti":[1,2,3,24],"export":[10,35,38],"extend":[36,38],"extens":[1,24,29],"extern":35,"extra":26,"extract":[33,39],"extrem":[37,39],"extreme_events_1pct":39,"extreme_events_5pct":39,"f":[27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"factor":[1,2,3,24,35],"factor_nam":36,"factor_seri":36,"factor_tick":36,"fail":[31,32,33,34,36,37,38,39,40,41],"failur":38,"fall":40,"fals":[0,1,2,3,8,10,17,23,24,26,31,32,33,36,38,39],"fama":36,"faster":42,"fat":[37,39],"favor":40,"featur":23,"fee":[3,20,24],"feedback":29,"ffill":[1,2,3,24,26],"field":[3,4],"fieldinfo":[1,2,4,25,26],"fig":[10,34,36],"fig_config":[10,36],"figdict":32,"figur":[1,10,17,18,22,23,24,30,35],"fiilenam":40,"file":[1,10,17,18,22,23,24,26,29,30,36,38,40],"fileexistserror":[1,24],"filenam":[1,10,17,18,22,23,24,30,34,36,37,41,43],"filepath":30,"fill":[1,24,26,40,41,43],"filter":[27,31],"filterwarn":39,"final":[33,38],"final_contrib":38,"final_twr":33,"financ":[1,2,42],"financi":[0,3,4,21,23,25,29,34,35,36],"find":[0,12,31,32,38],"finit":41,"first":[0,1,2,13,15,24,29,31,35,37,38,39,40],"first_column":[1,2],"first_idx":[1,3,24,26,29,31,32,33,34,37,38,39,40,41,43],"first_indic":[1,2,26],"fit":[1,2],"fitted_seri":[1,2],"fix":[3,24,29],"fixerd":[0,7],"flag":[3,14,24],"flight":39,"float":[1,2,3,4,6,9,20,22,24,25,26,29,32,40],"float64":[9,16,22],"focus":[29,31,38,40],"folder":[1,24],"follow":[0,8,29,40,42],"forg":[28,29,35,42],"fork":29,"form":[3,4],"format":[0,1,2,7,24,26,29,36,40,42],"formatted_export":41,"formula":40,"forward":[0,8,41,43],"found":[0,1,2,12,24,41],"foundat":[37,39,43],"frame":[2,26,27,30,31,32,33,36,37,38,39,40,41,43],"frame_outli":41,"frame_valu":41,"framework":[35,38,42],"free":[1,24,29],"french":36,"freq":[1,2,3,24,33,34,37,38,40,41,43],"frequenc":[1,2,3,24,35,38,40,41],"frequency_nam":[33,38],"frequent":[3,24,35],"fresh":[42,43],"friction":33,"from_1d_rate_to_cumret":[3,24],"from_array":[3,24,29,32,37,40,41],"from_dat":[1,2,3,24],"from_deepcopi":[1,2,3,24,27,37,40,43],"from_df":[3,24,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"from_dt":[1,24],"from_fixed_r":[3,24,41],"from_gbm":[4,25],"from_lognorm":[4,25,33,40,42,43],"from_merton_jump_gbm":[4,25],"from_norm":[4,25],"front":[20,24],"frontier":[6,9,22,32],"frontier_df":[27,32,38],"frontier_point":[9,22,32],"full":[10,24,33,40,41],"full_portfolio":33,"fulli":[1,24],"function":[1,2,3,6,9,10,16,20,22,26,29,30,35,36,39],"fund":[1,2,33,35],"fund_univers":32,"fund_universe_isin":32,"fundament":[37,39,40],"g":[1,24,26,40],"gap":[1,24,41],"gb":[40,41,43],"ge":[1,2,4,25,26],"general":[1,24,32],"generat":[0,1,3,4,11,13,17,19,22,24,25,30,32,33,35,36,37,38,39,41],"generate_calendar_date_rang":0,"generic":26,"geo_ret":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,40,42,43],"geo_ret_func":[1,24],"geometr":[4,25,27,31,33,38,40],"get":[27,31,32,33,34,35,37,38,39],"get_previous_business_day_before_today":[0,32],"git":[29,42],"github":[29,42],"give":43,"given":[0,1,2,3,8,15,16,22,24],"gld":[33,38,39],"global":32,"go":[10,29,36],"goff":[1,2],"gold":[33,38,39],"good":[32,37],"googl":[29,30,31,39,41],"got":[29,41],"grace":38,"graph":36,"graph_object":[10,36],"greater":[0,1,11,24],"grid":23,"group":[1,24,26,31,35],"group_asset":31,"group_fram":31,"group_metr":31,"group_nam":31,"group_seri":31,"growth":[1,24,31],"gspc":[35,36,37,38,43],"gt":[4,25],"guid":[29,41],"h1":30,"handl":[1,10,21,24,27,32,33,35,36,43],"happen":[4,25],"head":[23,30],"header":36,"healthcar":32,"heavi":37,"heavili":[1,24],"height":[32,36],"help":[27,40,41],"high":[29,31,32,33,38,39],"higher":[26,32,33,39,42],"highest":31,"highlight":[1,18,22,24],"histnorm":[1,24],"histogram":[1,24,34,36,37,43],"histori":[30,31,32,33,34,35,36,37,38,39,41,43],"hold":[1,2,3,4,24,25],"holiday":[0,1,8,11,12,13,15,24,42],"holiday_calendar":0,"home":[3,24],"hook":[29,42],"horizon":39,"howev":26,"html":[1,10,17,18,22,24,29,35],"html_div":[30,36],"html_templat":30,"html_util":10,"http":42,"https":[1,2,3,24,29,32,42],"id":23,"idea":29,"ideal":36,"identifi":[1,3,5,9,22,24,26,31,38,39,40,43],"idx":[32,38],"idxmax":[32,38],"idxmin":32,"ignor":[10,36,39],"iloc":[3,24,27,31,32,33,34,36,37,38,39],"impact":[38,39],"implement":[29,39],"impli":[1,24,37],"implicit":33,"import":[10,23,29,30,31,32,33,34,36,37,38,39,40,42,43],"importerror":42,"improv":[6,22,29,32],"inc":[1,24,31,34,39,41],"includ":[1,2,10,18,21,22,23,24,29,30,32,33,36,38,39,42],"include_plotlyj":[1,10,17,18,22,23,24,36],"inclus":[3,24,29],"incomplet":[3,24],"incorrect":27,"incorrectargumentcomboerror":[3,24,26],"independ":[1,2,39],"index":[1,2,3,23,24,31,32,33,35,37,38,39,41,43],"index_col":41,"indic":[3,24],"individu":[3,16,22,24,31,33,35,36,38,39,40,43],"individual_return":31,"individual_vol":31,"induc":[4,25],"industri":40,"infer":26,"infer_vari":26,"info_ratio_func":[1,2],"inform":[1,2,5,23,26,27,33,43],"inherit":[21,40],"initi":[1,4,16,22,24,25,26],"initialvaluezeroerror":[1,24,26],"inlin":10,"inner":[1,2,26,40],"inplac":41,"input":[0,3,4,12,26],"instal":[29,35,43],"instanti":26,"instead":[23,27,42],"instrument":[3,24],"instrument_id":[3,24],"int":[0,1,2,3,4,6,8,9,11,13,15,19,22,24,25,26,31,39],"intdefault":26,"integ":[0,1,2,3,8,15,24],"integr":[23,29,36,40,43],"integratedtermin":29,"intend":[1,2,3,24],"intens":41,"interact":[23,29,30,35,37,42,43],"intercept":[1,2,36],"interest":[33,36,39],"intermedi":40,"intermediate_seri":40,"intern":[27,36,38],"interpol":[1,24],"interpret":35,"intersect":[40,41],"inv_vol":[1,2,26,32,38,40],"inv_vol_portfolio":32,"inv_vol_portfolio_df":32,"invalid":[29,31,32,33,36,38,39,40,41],"invalid_seri":[40,41],"invari":26,"invers":[38,40],"invesco":39,"invest":[1,2,32,33,37],"investment_univers":[32,33],"investopedia":[1,2,3,24],"ishar":39,"isin":[3,24,32],"iso":[0,1,3,4,8,11,12,13,15,24,25,40,41],"issu":[29,32,40,41],"item":[0,1,2,3,7,24,27,31,32,33,34,36,38,39],"item_count":[1,2,31,32,33,38,39,40],"item_idx":41,"iter":26,"ixic":43,"j":[1,2,31,32,38],"javascript":[10,23,30,36],"jefe":[1,2],"jensen":[1,2,23],"jensen_alpha":[1,2],"jensensmeasur":[1,2],"join":[38,40],"journal":[1,2],"jp":41,"js":[1,10,18,22,24],"json":[1,24,29,32,34,40,43],"jump":[4,25],"jumps_lamda":[4,25],"jumps_mu":[4,25],"jumps_sigma":[4,25],"just":43,"k":[1,24],"kappa":[1,24,37,39],"kappa3_ratio":[1,2,3,24,26,37,39],"kde":[1,24,26],"key":[1,2,31,32,33,34,38],"key_metr":[27,31,32,38],"keyerror":[1,2],"keyword":[3,4,26],"known":[1,24],"krylov":26,"kurtosi":[1,2,3,24,26,34,37,39,43],"kurtosis_func":[1,24],"l":26,"label":[1,3,4,24,25,26,29,31,32,33,34,36,37,38,39,40,43],"labelsnotuniqueerror":26,"lag":[1,3,4,24,25],"lambda":[31,32,38],"languag":29,"larg":[39,40,41,42],"large_seri":41,"larger":[1,24,37],"last":[0,1,2,13,23,24,30,36,37,39,40],"last_idx":[1,3,24,26,29,31,32,33,34,37,38,39,40,41,43],"last_indic":[1,2,26],"late":41,"late_seri":41,"later":[1,20,24],"latest":42,"launch":29,"layer":35,"layout":[14,23,30,36],"le":[1,2,4,25,26],"learn":[1,2,42,43],"least":[1,2,20,24,29,31,32,38],"left":[1,2,3,24,40],"len":[29,31,32,33,37,38,39,41],"length":[1,2,3,23,24,26,29,31,33,34,37,38,39,40,42,43],"lengths_of_item":[1,2,26,40],"less":[1,2,3,24,35],"let":[33,37,38,39,43],"level":[1,2,3,24,33,37,39],"librari":[1,18,22,24,32,35,36,37,40,42],"like":[26,43],"limit":[1,24,35],"line":[1,2,17,23,24,26,36],"line_fram":[18,22,32],"linear":[1,2,26],"linearregress":[1,2],"link":10,"lint":[29,42],"list":[0,1,2,3,4,8,11,12,13,15,24,25,26,29,32,40,41],"liter":[1,2,3,24,35],"literalbarplotmod":[1,24,26],"literalbizdayfreq":[17,23,26],"literalcaptureratio":[1,2,26],"literalframeprop":26,"literalhowmerg":26,"literaljsonoutput":[1,24,26],"literallineplotmod":[1,18,22,24,26],"literalminimizemethod":[6,9,22,26],"literalnanmethod":[1,24,26],"literalpandasreindexmethod":[1,24,26],"literalplotlyhistogrambarmod":[1,24,26],"literalplotlyhistogramcurvetyp":[1,24,26],"literalplotlyhistogramhistnorm":[1,24,26],"literalplotlyhistogramplottyp":[1,24,26],"literalplotlyjslib":[1,10,17,18,22,23,24,26],"literalplotlyoutput":[1,10,17,18,22,23,24,26],"literalportfolioweight":26,"literalquantileinterp":[1,24,26],"literalseriesprop":26,"literaltrunc":[1,2,26],"ljung":[1,3,24],"ljung_box":[3,24],"lmbda":[1,2,3,24],"ln":[1,24,40],"load":[14,24,30,31,32,33,34,35,36,37,38,39],"load_plotly_dict":32,"loc":[27,31,32,33,35,38,39],"local":[1,3,24,29,32,39],"local_cci":[3,24],"locat":[1,24,29],"lock":[1,2,3,24],"log":[1,24,34,40,41,43],"lognorm":[4,25,43],"logo":[1,10,14,18,22,24,36],"logo_url":10,"long":33,"long_column":[1,2],"longer":23,"longnam":32,"lookback":39,"lookback_d":39,"loss":[3,24,37,39],"low":[32,39],"lower":[1,24,26,32,33,34],"lower_partial_moment_func":[1,24],"lowest":31,"lpm_p":[1,24],"lvl_one":[3,24],"lvl_zero":[3,24,27,30,31,32,33,34,35,36,37,38,39,40,41,43],"lvl_zero_item":[1,2],"m":[1,24,29,37,39,42],"m1":42,"m2":42,"machin":42,"main":[35,40],"maintain":29,"major":29,"make":[29,33,36,42],"make_portfolio":[1,2,27,31,32,33,38,39,40,43],"make_subplot":36,"manag":[29,32,35,38,41,42],"mani":40,"manipul":[21,42],"manual":[0,12,26,31,39],"mar":[1,24],"mark":26,"marker":[18,22,26,32],"market":[0,1,2,3,4,8,11,12,13,15,24,25,26,31,32,33,36,37,38,39,40,41],"market_cap_portfolio":38,"market_column":[1,2],"market_data":31,"market_proxi":[31,38],"market_returns_df":38,"market_seri":36,"marketsnotstringnorliststrerror":26,"master":29,"match":26,"matrix":[1,2,31,37,38,39,43],"max":[1,24,27,31,32,33,34,35,36,37,38,39,40],"max_concentr":39,"max_dd":[33,38,40,43],"max_dd_dat":37,"max_div":[1,2,26,32,38,40],"max_div_portfolio":[32,38],"max_div_portfolio_df":[32,38],"max_drawdown":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,40,43],"max_drawdown_cal_year":[1,2,3,24,26,37],"max_drawdown_d":[1,2,3,24,26,34,37,39],"max_drawdown_func":[1,24],"max_length":[3,24,26],"max_leverage_loc":[1,24],"max_sharpe_idx":[32,38],"max_sharpe_portfolio":32,"max_sharpe_portfolio_df":32,"max_sharpe_weight":32,"max_var_daili":39,"max_volatil":39,"max_weight":39,"maxdiversificationnanerror":[32,38,40],"maxdiversificationnegativeweightserror":[32,38,40],"maxim":[32,38],"maximum":[1,6,9,22,24,33,34,37,39,40,43],"may":[14,26,27,31,32,33,34,36,37,38,39,40,42],"md":29,"mdd":[1,24],"mead":26,"mean":[1,2,4,16,22,24,25,31,33,34,35,36,37,38,39,40,41],"mean_annual_return":[4,25,33,40,42,43],"mean_annual_vol":[4,25,33,40,42,43],"mean_return":29,"meaning":40,"measur":[1,2,24,29,37,39],"mechan":33,"media":[23,31],"medium":33,"mega":31,"member":29,"merg":[1,2,26,29,40],"merge_seri":[1,2,40],"mergingresultedinemptyerror":26,"merton":[4,25],"met":[1,24],"meta":31,"metadata":[1,2,4,25,26],"method":[2,3,4,5,6,9,16,18,21,22,25,31,32,33,34,35,36,38,39,43],"metric":[2,21,23,29,31,32,33,34,35,38],"microsoft":[30,31,39,42],"midpoint":26,"might":27,"min":[31,32,33,36,38,39],"min_accepted_return":[1,24],"min_length":[3,24,26],"min_leverage_loc":[1,24],"min_period":[1,24],"min_sharp":39,"min_vol_idx":32,"min_vol_overweight":[1,2,26,32,38,40],"min_vol_portfolio":[32,38],"min_vol_portfolio_df":[32,38],"min_vol_row":32,"min_vol_weight":32,"minim":[6,9,22,29,42],"minimize_method":[6,9,22],"minimum":[1,6,9,22,24,33,35,39,40],"minlen":[3,24,26],"minor":29,"minut":43,"mismatch":[29,41],"miss":[0,1,8,11,12,13,15,24,35,40,43],"mix":[39,40],"mixedvaluetypeserror":26,"mm":[3,24],"mobil":[1,10,23,24,30,36],"mode":[1,23,24,27],"model":[1,2,3,4,24,25,26],"model_config":[1,2,3,4,24,25,26],"moder":37,"modifi":[1,24,27,29,31,34,37,38,39,40,41,43],"modul":[0,22,29,35,42],"moment":[1,24],"monitor":[28,35],"mont":35,"month":[0,1,2,3,8,23,24,33,34,35,38,39,40,41,43],"monthly_metr":41,"monthly_rebalanc":33,"monthly_rebalanced_seri":33,"monthly_return":37,"monthly_vol":37,"months_from_last":[1,2,3,24,40,41],"months_offset":[0,1,8,24],"motion":[4,25],"motiv":29,"move":[1,2,3,24,39],"ms":[1,24],"msft":[30,31,34,39,41],"msg":29,"multi":[1,2,21,32,35,43],"multi_asset_analysi":31,"multi_factor_linear_regress":[1,2,36],"multiindex":[1,2],"multipl":[1,9,22,23,31,32,34,35,38],"multiple_seri":41,"multipli":[1,24],"must":[0,3,11,24,26,29,38,40,41],"mutabl":40,"mutat":35,"my_plot":[10,36],"mypi":[29,42],"n":[1,24,31,32,33,34,36,37,38,39],"n_asset":39,"name":[1,2,3,4,6,18,22,24,25,26,29,30,31,32,33,34,36,37,38,39,40,41,42,43],"nameerror":[1,24],"nan":[1,24,32,43],"nanalysi":38,"nasdaq":43,"nasset":31,"nativ":[31,32,38,39],"nav":32,"naverag":31,"navperunit":32,"nbest":32,"ncash":33,"ncg":26,"ncorrel":43,"ncreat":[31,38],"ndarray":[9,16,22],"ndetail":33,"ndiffer":33,"ndiversif":31,"nearest":[1,2,3,24,26],"necessari":[26,37],"need":[0,27,29,30,32,36,40,42,43],"negat":[1,2,24,31,32,37,39],"nelder":26,"nequal":31,"netflix":31,"never":40,"new":[0,1,2,3,4,15,24,27,28,29,40,41,42],"new_seri":[1,2,41],"newcom":29,"newton":26,"next":[31,35],"nfactor":36,"nflx":31,"ninvest":32,"nkey":31,"nminimum":32,"nmonth":33,"nmulti":31,"non":38,"none":[0,1,2,3,4,6,8,9,10,11,12,13,15,17,18,22,23,24,25,26,33],"nonetyp":[1,2,4,25,26],"nonnegativefloat":[4,25],"noptim":[32,38],"normal":[1,4,24,25,26,29,37,39],"note":[23,29,31,32,37,39],"now":[27,33,36,37,38,43],"noweightserror":26,"np":[34,37,41],"nportfolio":39,"nr":36,"nrank":[31,32,38],"nresult":[34,38],"nrisk":39,"nroll":38,"nsimul":[32,38],"nsmallest":39,"ntotal":33,"num_port":[9,19,22,32,38,39],"num_simul":39,"numba":42,"number":[0,1,2,3,4,6,8,9,11,15,19,22,24,25,26,31,33,37,38,40,43],"number_of_sim":[4,25,33,40,42,43],"numberofitemsandlabelsnotsameerror":26,"numer":[1,2,32,40,41,42],"numpi":[26,34,37,41,42],"nvda":31,"nverif":39,"nvidia":31,"nworst":39,"nyse":[40,41],"object":[1,2,3,4,20,23,24,25,30,36,40,41],"observ":[1,2,3,24,27,31,33,34,36,37,38,39,40,43],"occur":[1,24],"offset":[0,1,2,3,8,15,24],"offset_business_day":0,"ok":39,"old_fe":[20,24],"omega":[1,24,37,39],"omega_ratio":[1,24,26,37,39],"omega_ratio_func":[1,24],"onc":[29,34,37,41],"one":[1,2,3,6,20,22,23,24,29],"onli":[1,2,3,4,10,23,24,27,32,33,37,39,41],"opac":[1,24],"open":[1,10,18,22,23,24,30,37,43],"openfram":[6,9,16,17,19,21,22,23,24,26,30,31,32,33,35,36,37,38,39],"openframepropertieslist":26,"openpyxl":[37,42],"openseri":[0,1,22,23,24,25,26,27,28,30,31,32,33,34,36,37,38,39,40,41,43],"openseries_env":42,"opentimeseri":[1,2,5,6,16,20,21,22,26,27,29,30,31,32,33,34,35,36,37,38,39,41,42],"opentimeseriespropertieslist":26,"oper":[27,40,41,42],"optim":[1,6,9,16,18,23,24,27,29,35,36,40],"optimal_portfolio":[27,32,38],"optimal_portfolio_df":32,"optimal_portfolio_seri":32,"optimal_weight":38,"optimization_plot":32,"option":[1,2,3,10,23,24,27,36],"ord_least_squares_fit":[1,2],"order":[1,24,39],"ordinari":[1,2],"org":[1,2,24],"orient":[1,10,24,36],"origin":[27,29,31,34,37,38,39,40,41,43],"original_d":40,"original_valu":40,"os":29,"otherwis":[1,10,24],"outcom":[1,24],"outer":[1,2,26,40],"outlier":[1,24],"output":[1,2,5,10,18,22,23,24,26],"output_path":[10,36],"output_typ":[1,10,17,18,22,23,24,30,32,36],"outsid":[1,24],"overlap":[1,24],"overlay":[1,24,26],"overrid":[1,2,3,24],"overview":[35,43],"overweight":[35,40],"overwrit":[1,24],"owntyp":[26,32,38,40],"p":[1,3,24,30,33,35,36,37,38,39,43],"p_":40,"p_t":40,"pacf":[1,3,24],"packag":[3,24,35,42],"pad":[1,2,3,24,26],"page":[10,17,23,28,35],"pair":[31,38],"pair_fram":31,"panda":[1,2,3,4,24,25,26,29,30,31,32,36,37,40,42],"pandas_df":[3,24],"panel":36,"param":33,"paramet":[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,32,33,40],"parenthes":27,"pariti":40,"pars":[0,3,4,7,42],"parse_d":41,"partial":[1,3,24],"partial_autocorr":[3,24,26],"pass":[6,9,22,26,29],"patch":29,"path":[1,10,17,23,24,30,36],"path_typ":[1,24],"pathlib":[10,36],"pathtyp":[1,24],"pattern":[3,24,25,26,27,32,35],"pay":27,"pct_chang":[1,24],"pd":[29,30,36,37,39,41],"pdb":29,"pdf":[1,2],"penal":[1,24,37],"pep":26,"per":[1,3,24,31,37,40],"percent":26,"percentag":[1,24,31,32,33,37,38,39],"percentage_metr":31,"percentil":[1,24,31,39],"percentile_idx":39,"perform":[1,2,23,24,26,29,35,36,40,42,43],"period":[1,2,3,23,24,29,30,31,32,33,34,35,36,37,38,39,40,41,43],"periods_in_a_year":[1,3,24,26,37,40],"periods_in_a_year_fix":[1,2,3,24],"pick":[3,24,31],"pip":[29,35,43],"pitfal":27,"place":[1,2,3,24,27,37,39,40],"placehold":[3,24],"plan":42,"platform":[31,35],"pleas":[28,29],"plot":[1,10,14,17,18,21,22,23,24,27,29,32,34,35,37,42,43],"plot_bar":[1,24,37,43],"plot_data":32,"plot_histogram":[1,24,27,34,37,40,43],"plot_seri":[1,24,34,35,37,40,43],"plot_typ":[1,24],"plotfil":[10,36],"plotlyconfigtyp":10,"plotlylayouttyp":14,"plus":[3,24],"point":[1,4,9,22,24,25,34,38,43],"point_fram":[16,18,22,32],"point_frame_mod":[18,22,32],"popul":[3,24],"popular":[1,2],"portfolio":[2,6,9,16,18,19,30,31,35,39],"portfolio_analysi":38,"portfolio_asset":39,"portfolio_df":[27,31,32,38,39,40,43],"portfolio_impact":39,"portfolio_metr":38,"portfolio_optimization_result":32,"portfolio_return":39,"portfolio_returns_df":38,"portfolio_rolling_vol":38,"portfolio_seri":33,"portfolio_sharp":39,"portfolio_stress_return":38,"portfolio_twr":33,"portfolio_vol":39,"portfolio_volatil":39,"portfolio_vs_market":38,"portfolionam":[6,22],"portfoliotool":[22,39],"posit":[1,2,3,4,24,33,37,39,43],"positive_shar":[1,2,3,24,26,37,39,43],"positive_share_func":[1,24],"positivefloat":[4,25],"positiveint":[4,25],"possibl":[6,9,19,22,26,29],"post":27,"potenti":[32,38],"powel":26,"pr":29,"practic":[1,2,32,35],"pre":[29,42],"predict":[1,2],"prefer":[26,40],"prepar":[16,22,32],"prepare_plot_data":[22,32],"preserv":40,"preview":36,"previous":[0,12],"price":[1,2,3,5,24,26,27,29,32,34,36,37,40,42,43],"primarili":26,"principl":40,"print":[27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"prioriti":[3,24],"privat":21,"probabl":[1,4,24,25,26],"problem":42,"process":[1,4,9,19,22,25,32],"produc":32,"profession":32,"program":29,"project":[26,29],"proper":[10,29,36],"properti":[2,3,4,21,25,26,31,34,35,38,39,43],"propertiesinputvalidationerror":26,"propertieslist":26,"provid":[0,1,3,7,21,22,23,24,25,26,27,29,32,33,35,36,37,38,39,40,43],"proxi":[31,36],"public":[29,32],"publish":29,"purpos":25,"push":29,"pvalu":[3,24],"px":36,"py":29,"pydant":[1,2,3,4,21,24,25,26,35,40,42,43],"pydantic_cor":[3,4],"pylanc":29,"pypi":[28,29],"pyproject":29,"pytest":[29,42],"python":[29,42],"q":[3,24],"qqq":39,"qualiti":[29,35,39,42],"quantil":[1,24,31,38,39],"quantiti":33,"quarter":[23,33,38,40,41],"queri":23,"question":29,"quick":42,"r":[1,2,29,36],"r_squar":36,"rais":[0,1,2,3,4,7,13,24,26,29,32,41],"raise_for_status":32,"random":[4,9,19,22,25,32,38],"rang":[0,1,3,6,9,11,13,22,24,26,29,31,32,34,36,37,38,39,40,43],"rank":[32,35],"rate":[1,3,24,29,36,39],"rather":[33,40],"ratio":[1,2,5,18,22,23,24,26,27,29,31,32,33,34,35,37,38,39,40,43],"ratioinputerror":26,"raw":[1,24],"raw_dat":[0,8],"reach":29,"read_csv":41,"readabl":31,"real":[35,37,43],"real_asset":33,"real_portfolio":33,"real_univers":33,"realist":[25,33,38],"realized_mean_return":[4,25],"realized_vol":[4,25],"rebalanc":[1,2,35],"rebalanced_portfolio":[1,2,33,38],"rebalancing_day":38,"rebas":40,"recent":39,"recent_outli":41,"recent_return":39,"recent_vol":40,"recommend":[29,32],"red":[1,24],"reduc":41,"reduct":31,"refer":[1,2,3,24,43],"reflect":40,"regress":[1,2,35],"regression_result":36,"reindex":[1,24],"reit":38,"relat":[1,2,5,23,24,26,33],"releas":42,"relev":29,"reliabl":32,"relrtrn":[5,26],"remain":[1,2,29,32],"rememb":35,"remot":14,"remov":[1,24],"render":[10,23],"replac":41,"report":[17,35,36],"report_html":[23,30],"repositori":[28,29],"repres":[1,2,6,22,24,26,40],"represent":26,"reproduc":[29,39,42],"request":[27,32,42],"requests_get":32,"requir":[1,2,3,4,10,24,25,26,29,35,40],"resampl":[1,2,3,24,34,37,43],"resample_to_business_period_end":[1,2,3,24,26,34,37,40,41,43],"resampledatalosserror":[3,24,26],"resiz":[10,36],"respect":[1,24,29],"respons":[1,10,14,17,24,30,32,35,36],"restor":[37,39],"result":[4,18,19,22,24,25,26,33,35,36,38,39,40],"ret":[29,31,32,33,38,39],"ret_pct":31,"ret_vol_ratio":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,43],"ret_vol_ratio_func":[1,24],"return":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,25,26,29,32,33,34,35,36,38,39,42,43],"return_diff":33,"return_nan_handl":[1,24,41],"return_v":39,"returns_data":39,"returns_seri":[27,39],"returnseri":[1,2],"returnsimul":[33,35,40,42,43],"reusabl":26,"revalidate_inst":[1,2,3,4,24,25],"revers":[31,32,38],"review":42,"risk":[2,3,9,21,22,23,24,29,35,43],"risk_adj_metr":39,"risk_analysis_report":39,"risk_decomp":39,"risk_free_r":29,"risk_limit":39,"risk_parity_portfolio":38,"risk_report":39,"risk_seri":43,"riskfre":[1,2,24],"riskfree_r":[1,2,24],"robust":[32,35,39],"roll":[2,5,24,26,27,31,35,40,43],"rollbeta":[5,26],"rollcorr":[5,26],"rollcvar":[5,26],"rollinforatio":[5,26],"rolling_beta":[1,2,36],"rolling_corr":[1,2,27,31,36,38,40],"rolling_cvar":39,"rolling_cvar_down":[1,24,39],"rolling_info_ratio":[1,2],"rolling_metr":40,"rolling_ret":[40,43],"rolling_return":[1,24,27,34,37,40,43],"rolling_risk":43,"rolling_var":[34,39],"rolling_var_down":[1,24,27,34,39],"rolling_vol":[1,24,27,34,37,38,39,40,43],"rollrtrn":[5,26],"rollvar":[5,26],"rollvol":[5,26,40],"root":[1,24],"rough":33,"round":[31,32,38,39],"row":[36,41],"rsquar":[1,2],"rtrn":[1,2,3,5,24,26,33,40,42,43],"ruff":[29,42],"ruffen":29,"rug":[1,24],"run":[26,32,42,43],"running_adjust":[3,24],"runtim":26,"russel":43,"rut":[36,43],"s":[0,1,2,3,4,8,11,12,13,15,21,23,24,25,26,30,31,32,33,34,35,36,37,38,39,40,42,43],"safeti":[21,35,43],"sampl":[1,2,3,24,30,36,40,41,42],"save":[1,18,22,23,24,30,36,37,39,40,43],"scalar":27,"scale":[1,2,3,24,39],"scatter":[1,10,18,22,24,36],"scenario":[32,41,43],"scenario_nam":39,"scientif":42,"scikit":[1,2,42],"scipi":[6,9,22,42],"score":[1,24,37,39],"screen":[1,23,24,36],"script":42,"se":[0,3,4,8,11,12,13,15,24,25,32,33,43],"se0011337195":32,"se0011670843":32,"se0015243886":32,"se0017832280":32,"se0017832330":32,"search":35,"second":[1,2,29],"second_column":[1,2],"secondary_i":36,"section":[23,27,30,32,40],"sector":35,"see":26,"seed":[4,9,19,22,25,32,33,38,39,40,42,43],"sek":[3,24],"select":[1,2],"self":[1,2,3,4,24,25,26,27,29,40],"sell":33,"selloff":39,"semant":29,"separ":[1,23,24,33],"sequenc":26,"sequenti":27,"seri":[1,2,3,4,6,20,21,22,24,25,26,29,30,32,33,35,36,37,38,39,42,43],"series1":[41,43],"series2":[41,43],"series3":43,"series_copi":40,"series_datafram":41,"series_list":[30,31,32,38,39,41,43],"series_typ":33,"series_valu":41,"series_with_nan":41,"seriesim":33,"seriesorfloat_co":[1,24,26],"serv":26,"set":[0,1,2,3,10,15,24,26,27,29,32,33,34,35,36,40,42,43],"set_index":41,"set_new_label":[3,24,27,30,31,32,33,34,35,36,37,38,39,40,41,43],"settl":33,"settlement":33,"setup":35,"sever":[29,32,36,40],"share":[1,21,24,39],"sharp":[1,18,22,23,24,29,31,32,33,34,35,37,38,39,43],"sharpe_ratio":[31,32,37,38],"sharpeplot":[16,22,32],"sharperatio":[1,24],"sheet":[1,24,31,32,41],"sheet_nam":39,"sheet_titl":[1,24,41],"shock":39,"short_column":[1,2],"shorter":23,"shortest":[1,2,3,24],"shortfal":[37,39,40],"shorthand":[1,24],"show":[23,29,30,31,32,33,39],"show_last":[1,24],"show_rug":[1,24],"side":23,"signific":37,"silicon":42,"sim_cvar_95":39,"sim_fram":[18,22,32],"sim_return":32,"sim_sharpe_ratio":[32,38],"sim_var_95":39,"sim_volatil":32,"simfram":[19,22,27,32,38,39],"similar":40,"simpl":[1,23,24,29,33,35,36,40,41],"simpli":[1,2],"simplifi":[1,2,3,24,39],"simul":[4,6,9,18,19,35,40,42,43],"simulate_portfolio":[18,22,27,32,38,39],"simulated_df":[27,32,38],"simulated_portfolio":[32,39],"simulation_result":[27,32,38],"simultan":31,"sinc":[3,24],"singl":[1,21,24,35,37,39,41,43],"single_seri":41,"size":[1,4,23,24,25,29,36],"skew":[1,2,3,24,26,34,37,39,43],"skew_func":[1,24],"skip":36,"slsqp":[6,9,22,26],"small":36,"smaller":23,"smallest":[1,24],"social":31,"sold":[1,2],"solid":43,"sophist":[36,38,40],"sort":[31,32,38,39],"sort_valu":31,"sorted_indic":[32,38],"sorted_return":39,"sorted_sharp":31,"sorted_strategi":32,"sortino":[1,23,24,34,37,39,40,43],"sortino_ratio":[1,2,3,24,26,34,37,39,40,43],"sortino_ratio_func":[1,24],"sortinoratio":[1,24],"sought":[1,3,24],"sourc":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,29,35],"sp500":[37,43],"sp500_analysi":[37,43],"sp500_data":43,"sp500_metric":37,"span":[1,2,41],"span_of_day":[1,3,24,26,41],"span_of_days_al":[1,2,26],"sparser":[3,24],"spdr":39,"spec":36,"specif":[2,3,24,29,35,40,41,43],"specifi":[1,2,3,24,27,38,40],"specific_metr":27,"spi":[30,33,39],"split":33,"spreadsheet":[1,24],"squar":[1,2,3,24,36],"stabl":32,"stack":[23,26],"standalon":10,"standard":[1,2,4,18,22,23,24,25,37,40],"start":[0,1,4,11,15,24,25,26,33,38,39,40,41],"start_cut":[1,2],"startyear":[0,13],"state":40,"static":[26,29,42],"statist":[3,24,25,32,33,38,40,43],"stay":28,"std":[1,24,36],"std_dev":29,"stdev":[1,24,32,38,39],"step":[29,35],"stock":[31,32,33,34,36,41],"stock_comparison_report":30,"stock_data":[36,41],"stock_vs_market":36,"store":26,"str":[0,1,2,3,4,6,8,10,11,12,13,15,17,18,22,23,24,25,26],"strategi":[1,2,27,35,40,43],"strategy_fram":33,"strategy_metr":33,"strategy_nam":[32,38],"strenum":[5,26],"stress":35,"stress_dat":38,"stress_return":31,"strftime":[37,39],"strict":[1,2,3,4,24,25,26,29,33,41],"string":[0,1,2,3,10,13,23,24,26,40,41],"stringconstraint":[3,24,26],"strip_whitespac":[3,24,26],"strorbytessequ":26,"strsequenc":26,"structur":[21,32,38,41],"stub":[1,2,3,24],"style":[1,24,35,36],"subclass":[20,24],"subplot":36,"subplot_titl":36,"subset":35,"subset_portfolio":33,"subtract":[3,24],"subtyp":26,"success":38,"sum":[29,31,33,38,39],"summari":[1,2,35,36,39],"summat":[3,24],"suppli":[1,2],"support":[0,1,3,4,7,8,10,11,12,13,15,24,25,29,31,32],"sure":42,"swedish":43,"switch":23,"syntax":26,"synthet":41,"system":[21,35,39],"t":[1,2,24,26,27,36,40],"tabl":[17,23],"tag":23,"tail":[37,39],"take":[1,2,3,24,40],"takeaway":33,"target":[1,24,33],"target_vol":[1,24],"target_weight":33,"target_weight_from_var":[1,24],"tech":[31,39],"tech_fram":41,"tech_stock":31,"tech_tick":31,"techniqu":[32,37,38,39],"technolog":32,"templat":[14,30],"term":[1,2,24,33],"tesla":[31,39],"test":[1,2,3,24,25,33,35,42],"test_calculate_return":29,"test_fram":29,"test_from_arrays_bas":29,"test_from_arrays_invalid_d":29,"test_funct":29,"test_portfoliotool":29,"test_seri":29,"test_specif":29,"testopentimeseri":29,"text":[18,22,26,32],"thank":29,"theoret":[32,35,38],"theoretical_portfolio":[33,38],"theoretical_portfolio_df":[33,38],"theoretical_seri":33,"thereof":[20,24],"threshold":[1,24,31,38,39,41],"threshold_idx":31,"throughout":26,"tick":[1,24],"tick_fmt":[1,24],"ticker":[30,31,32,33,34,35,36,37,38,39,41,43],"ticker_symbol":[34,41],"tidi":27,"time":[1,2,4,21,23,24,25,26,33,35,37,38,39,40,43],"timedelta":39,"timeout":32,"timeseri":[1,2,3,4,6,20,22,24,25,26,43],"timeseries_chain":24,"timeseries_id":[3,24],"timestamp":[26,29],"titl":[1,10,17,18,22,23,24,30,32,36,41],"title_text":36,"titletext":[18,22],"tlt":[33,36,39],"tnc":26,"tnx":37,"to_csv":34,"to_cumret":[1,2,3,24,32,33,40,41,42,43],"to_dat":[1,2,3,24],"to_datafram":[4,25,33,40,42,43],"to_drawdown_seri":[1,24,34,37,40,43],"to_dt":[1,24],"to_excel":[31,32,37,38,39],"to_json":[1,24,34,40,41,43],"to_low":[3,24,26],"to_upp":[3,24,26],"to_xlsx":[1,24,31,32,34,37,39,40,41,43],"today":[0,12],"togeth":[20,24],"toler":29,"tolist":[32,37],"toml":29,"tool":[29,35,38,42],"top":[32,38],"top_indic":38,"top_sharpe_indic":32,"total":[1,4,5,24,25,26,32,33,34,37,38,39,40,43],"total_return":37,"total_trad":33,"touch":23,"toward":29,"trace":[1,24,36],"track":[1,2,23,28,33],"tracking_error":40,"tracking_error_func":[1,2,40],"trackingerror":[1,2],"trade":[4,25,26,33,38,41,42,43],"trading_day":[0,4,11,25,33,38,40,42,43],"trading_days_in_year":[4,25,40,42,43],"tradingdaysnotabovezeroerror":26,"transact":[35,38],"transaction_data":33,"transaction_seri":33,"transform":35,"treasuri":[33,37,39],"treat":[1,2],"tri":42,"troubleshoot":35,"true":[0,1,2,3,4,8,9,10,14,17,18,22,23,24,25,26,29,31,32,33,36,38,41],"trunc_fram":[1,2,32,40,43],"truncat":[1,2,40],"trust":[26,39],"tsdf":[1,2,3,24,26,31,33,38,39,40,41,43],"tsla":[31,34,39,41],"tupl":[1,2,3,6,9,14,17,18,22,23,24,26,27],"turn":21,"tutori":[29,36,37,38,39,43],"tweak":[9,22],"two":[1,2,20,21,24,27,31,35,40],"twr":[1,2,33],"type":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,35,36,42,43],"typealia":26,"typecheck":29,"typeerror":[0,3,7,24],"typeopentimeseri":[20,24],"typevar":26,"typo":29,"unavail":[14,31,32,33,36,38,39],"unclear":29,"underlying":[26,39],"understand":[27,35,37,38,40],"union":26,"uniqu":[23,26],"unit":[1,24,31,37],"univers":[31,32,33,38],"unlik":33,"unnecessari":27,"unpack":27,"untouch":40,"unusu":[37,39],"updat":[28,29,36],"update_layout":[32,36],"url":[10,32],"us":[33,38,40,41,43],"usag":43,"use":[1,2,3,4,10,16,18,21,22,23,24,25,26,27,29,31,33,34,35,37,38,39,40,41,43],"user":[1,3,24,26,40],"usual":40,"utf":30,"util":[1,2,35],"uv":[29,42],"v":[1,24],"valid":[0,3,4,15,21,35,42,43],"valid_d":41,"valid_valu":41,"validate_assign":[1,2,3,4,24,25],"validationerror":[3,4,41],"valu":[0,1,2,3,4,5,15,24,25,29,31,32,34,35,36,37,43],"valuabl":33,"value_list":40,"value_nan_handl":[1,24,32,40,41,43],"value_ret":[1,2,3,24,26,33,34,37,38,39,43],"value_ret_calendar_period":[1,24,34,37],"value_ret_func":[1,24],"value_to_diff":[1,2,3,24,41],"value_to_log":[1,24,34,40,41,43],"value_to_ret":[1,2,3,24,27,29,31,34,37,38,39,40,41,43],"valueerror":[1,2,24,29],"valuelisttyp":[3,24,26],"values_with_nan":41,"valuetyp":[1,2,3,24,26,32,33,40,42,43],"var":[1,3,5,24,26,27,34,35,37,38,40,43],"var_90":37,"var_95":[37,40,43],"var_99":37,"var_daili":39,"var_down":[1,2,3,24,26,34,37,38,39,40,43],"var_down_func":[1,24,37,39],"var_seri":27,"var_valu":39,"variabl":[1,2,26,36],"varianc":[1,2,3,24,26,35],"various":[24,29,32,36,37,38,41,43],"vde":32,"ve":43,"vea":32,"venv":[29,42],"verifi":[35,39],"version":[23,28,29,42],"vertic":23,"vertical_legend":[17,23],"vgt":32,"vht":32,"via":[1,3,24,26],"view":[1,23,24,33],"viewport":[10,36],"virtual":[29,42],"visit":28,"visual":[29,32,35,36,40,42],"vnq":[32,38],"vol":[1,2,3,24,26,27,31,32,33,34,35,37,38,39,40,43],"vol_dat":37,"vol_diff":33,"vol_from_var":[1,2,3,24,26,37],"vol_from_var_func":[1,24],"vol_func":[1,24,40],"vol_pct":31,"vol_seri":37,"vol_valu":37,"volatil":[1,2,3,4,5,16,22,23,24,25,26,27,31,33,34,35,36,37,39,40,43],"volum":[36,41],"volume12":[1,2],"vs":[29,31,35],"vscode":29,"vti":32,"vwo":32,"w":[30,31,39,40,41],"want":42,"warn":39,"watch":28,"way":[26,27,41,42],"web":[23,36],"week":[33,39],"weight":[1,2,3,16,19,22,24,26,27,31,35,39,40,43],"weight_strat":[1,2,27,31,32,33,38,39,40,43],"weighted_avg_return":31,"weighted_avg_vol":31,"weighted_return":38,"welcom":29,"well":[26,36],"what_output":[1,24,41,43],"whether":[1,10,14,18,22,24],"width":[1,23,24,32],"wiki":[1,24],"wikipedia":[1,24],"will":[1,2,3,23,24,27,29,37,40,41,42,43],"window":[1,2,10,18,22,24,27,34,36,39],"winter":[1,2],"within":39,"without":[1,24,27,42],"work":[27,29,32,35,36,40,42],"workflow":[35,36],"working_data":40,"workspacefold":29,"world":[35,43],"worst":[1,2,3,23,24,26,31,34,37,38,39],"worst_1_perc":39,"worst_5_day":39,"worst_5_perc":39,"worst_day":[31,37,38],"worst_days_threshold":38,"worst_func":[1,24],"worst_idx":39,"worst_month":[1,2,3,24,26,37,39],"worst_threshold":31,"worst_year_dd":37,"write":30,"writer":39,"written":[1,24],"wrong":[27,41],"www":[1,2,3,24],"x":[1,2,10,24,31,32,36],"x_column":[1,2],"x_fmt":[1,24],"xbins_siz":[1,24],"xlsx":[1,24,31,32,34,37,38,39,40,41,43],"y":[1,2,10,24,36,37,39],"y_column":[1,2],"y_fmt":[1,24],"yahoo":42,"year":[0,1,2,3,13,23,24,31,34,36,38,39,40],"year_return":[34,37],"yearfrac":[1,3,24,26,37],"yf":[30,31,32,33,34,35,36,37,38,39,41,43],"yfinanc":[30,31,32,33,34,35,36,37,38,39,41,42,43],"yield":[32,37],"yourusernam":29,"yyyi":[3,24],"z":[1,3,24,26,37,39,41],"z_score":[1,2,3,24,26,37,39],"z_score_func":[1,24],"zero":[0,1,2,3,11,15,24,26,38],"zip":[30,31,33,38,39,43],"zscore":[1,24]},"titles":["Date Utilities","OpenFrame","openseries.OpenFrame","openseries.OpenTimeSeries","openseries.ReturnSimulation","openseries.ValueType","openseries.constrain_optimized_portfolios","openseries.date_fix","openseries.date_offset_foll","openseries.efficient_frontier","openseries.export_plotly_figure","openseries.generate_calendar_date_range","openseries.get_previous_business_day_before_today","openseries.holiday_calendar","openseries.load_plotly_dict","openseries.offset_business_days","openseries.prepare_plot_data","openseries.report_html","openseries.sharpeplot","openseries.simulate_portfolios","openseries.timeseries_chain","openseries package","Portfolio Tools","Report Generation","OpenTimeSeries","Simulation","Types and Enums","API Consistency Notes","Changelog","Contributing to openseries","Reporting","Multi-Asset Analysis","Portfolio Optimization","Rebalanced Portfolio Simulation","Single Asset Analysis","openseries Documentation","Advanced Features","Basic Financial Analysis","Portfolio Analysis","Risk Management","Core Concepts","Data Handling","Installation","Quick Start Guide"],"titleterms":{"All":43,"Do":27,"From":41,"Other":21,"The":40,"Up":[31,37,38,39],"Your":43,"__format__":27,"add":41,"adjust":[37,39],"advanc":[32,36,37,38],"alias":26,"align":[40,41],"analysi":[1,24,31,32,33,34,36,37,38,39,40,43],"annual":[37,40],"api":[27,35],"applic":33,"architectur":40,"array":41,"asset":[31,34,38,41,43],"attribut":[31,33,38],"backtest":32,"base":32,"basic":[32,33,34,37,39,43],"benchmark":37,"benefit":36,"best":[27,33,40],"bug":29,"build":29,"built":30,"busi":[40,41,43],"calcul":40,"calendar":[34,37,40],"callabl":27,"carlo":[32,38,39],"cash":33,"categori":40,"chain":27,"changelog":28,"check":[40,41],"class":[1,21,24,25,26,40],"code":29,"commit":29,"common":[1,24,27,42,43],"communiti":29,"compar":31,"comparison":[32,37,38],"complet":[31,32,34],"comprehens":37,"concept":[40,43],"conda":42,"condit":39,"consider":41,"consist":[27,40,41],"constrain_optimized_portfolio":6,"constraint":22,"construct":[1,24,38,40],"content":35,"contribut":29,"control":39,"convers":41,"core":[40,42],"correl":[1,31,38],"cost":33,"coverag":29,"creat":[36,41,43],"creation":27,"csv":41,"custom":[26,33,36,38],"cvar":39,"daili":33,"dashboard":39,"data":[1,24,32,38,40,41,43],"datafram":[27,41],"date":[0,21,40,41,42],"date_fix":7,"date_offset_fol":8,"day":[40,41,43],"debug":29,"decomposit":39,"depend":42,"design":23,"detail":[32,33],"detect":41,"develop":[29,35,42],"differ":[33,41],"distribut":37,"diversif":[32,38],"docstr":29,"document":[29,35],"drawdown":37,"drop":41,"effici":[38,41],"efficient_fronti":9,"embed":30,"enum":[21,26],"environ":29,"equal":[32,33,38],"error":38,"exampl":[33,35],"excel":41,"except":26,"exist":30,"export":[1,24,31,32,34,36,39,40,41,43],"export_plotly_figur":[10,36],"express":36,"extern":43,"factor":36,"featur":[29,35,36],"figur":36,"file":42,"financ":41,"financi":[1,24,37,40,42,43],"first":43,"fix":41,"format":[27,41],"frame":1,"framework":32,"frequenc":33,"frontier":38,"function":[0,21,23,24,27],"fund":32,"generat":23,"generate_calendar_date_rang":11,"get":[29,42,43],"get_previous_business_day_before_today":12,"github":28,"guid":[35,43],"guidelin":29,"handl":[0,38,40,41],"help":[29,42],"hint":29,"histor":39,"holiday_calendar":13,"html":[23,30,36],"ide":29,"immut":40,"import":[27,35,41],"indic":35,"inlin":36,"instal":42,"integr":41,"interpret":37,"invers":32,"issu":[27,42],"json":41,"key":[35,43],"layer":40,"length":41,"limit":39,"linux":42,"liter":26,"load":[40,41,43],"load_plotly_dict":14,"maco":42,"main":21,"manag":[1,33,39,40],"manipul":[1,24],"maximum":[32,38],"mean":32,"memori":[40,41],"messag":29,"method":[1,24,27,40,41],"metric":[1,24,27,37,39,40,43],"minimum":[32,38],"miss":41,"model":36,"monitor":39,"mont":[32,38,39],"month":37,"multi":[31,36],"multipl":[40,41,43],"mutat":40,"name":27,"nan":41,"network":42,"next":43,"non":24,"note":[27,35,42],"notif":28,"numer":24,"object":27,"offset_business_day":15,"onc":43,"openfram":[1,2,40,41,43],"openseri":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29,35,42],"opentimeseri":[3,24,40,43],"optim":[22,32,38],"option":42,"outlier":41,"output":36,"overview":40,"overweight":[32,38],"packag":21,"page":30,"panda":41,"paramet":27,"pariti":38,"pass":27,"pattern":43,"perform":[31,32,33,34,37,38,39,41],"pip":42,"platform":42,"plot":36,"portfolio":[1,21,22,27,32,33,38,40,43],"practic":[27,33,40],"prepare_plot_data":16,"price":41,"process":29,"properti":[1,24,27,40],"pull":29,"python":35,"qualiti":41,"quick":[35,43],"rang":41,"rank":31,"rate":41,"real":[32,33,41],"rebalanc":[33,38],"recommend":42,"refer":35,"regress":36,"releas":[28,29],"rememb":43,"remov":41,"report":[23,29,30,37,38,39],"report_html":17,"request":29,"requir":42,"resampl":[40,41],"resample_to_business_period_end":27,"respons":23,"result":[31,32,34,43],"return":[1,23,24,27,31,37,40,41],"returnsimul":[4,25],"review":29,"risk":[1,31,32,34,37,38,39,40],"roll":[1,34,36,37,38,39],"run":[27,29],"safeti":40,"scenario":39,"sector":31,"seri":[27,31,34,40,41],"set":[31,37,38,39],"setup":[29,32,33,34],"sharpeplot":18,"simpl":38,"simul":[21,22,25,32,33,38,39],"simulate_portfolio":19,"singl":34,"solut":27,"sourc":[41,42,43],"specif":[1,27,42],"standard":29,"start":[29,35,43],"statist":1,"step":43,"strategi":[32,33,38,41],"stress":[31,38,39],"string":27,"structur":29,"style":[29,31],"subset":33,"summari":[33,37,38],"support":[35,42],"system":42,"tabl":35,"test":[29,31,38,39],"theoret":33,"time":[31,34],"timeseries_chain":20,"tool":[21,22],"transact":33,"transform":[1,24,34,40,41,43],"troubleshoot":42,"tutori":35,"type":[21,26,29,40],"typeerror":27,"understand":33,"unsupport":27,"usag":41,"use":[30,32,36,42],"user":35,"util":[0,21,24,42],"valid":[26,40,41],"valu":[23,26,27,39,40,41],"valuetyp":[5,27],"var":39,"varianc":32,"verifi":42,"version":35,"visual":[1,22,24,34,37,43],"volatil":[32,38],"vs":[27,33,40],"weight":[32,33,38],"window":42,"work":[41,43],"workflow":[29,31,32,34,40],"world":[32,33],"write":29,"yahoo":41,"year":37}}) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 0828efb6..1beb4a8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -63,7 +63,7 @@ dependencies = [ [project.optional-dependencies] dev = [ - "mypy==1.20.0", + "mypy==1.20.1", "pandas-stubs>=2.1.2", "pre-commit>=4.5.1", "pytest>=9.0.3", diff --git a/uv.lock b/uv.lock index 4451b988..d963fa17 100644 --- a/uv.lock +++ b/uv.lock @@ -583,7 +583,7 @@ wheels = [ [[package]] name = "mypy" -version = "1.20.0" +version = "1.20.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, @@ -591,44 +591,44 @@ dependencies = [ { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/5c/b0089fe7fef0a994ae5ee07029ced0526082c6cfaaa4c10d40a10e33b097/mypy-1.20.0.tar.gz", hash = "sha256:eb96c84efcc33f0b5e0e04beacf00129dd963b67226b01c00b9dfc8affb464c3", size = 3815028, upload-time = "2026-03-31T16:55:14.959Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/1c/74cb1d9993236910286865679d1c616b136b2eae468493aa939431eda410/mypy-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4525e7010b1b38334516181c5b81e16180b8e149e6684cee5a727c78186b4e3b", size = 14343972, upload-time = "2026-03-31T16:49:04.887Z" }, - { url = "https://files.pythonhosted.org/packages/d5/0d/01399515eca280386e308cf57901e68d3a52af18691941b773b3380c1df8/mypy-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a17c5d0bdcca61ce24a35beb828a2d0d323d3fcf387d7512206888c900193367", size = 13225007, upload-time = "2026-03-31T16:50:08.151Z" }, - { url = "https://files.pythonhosted.org/packages/56/ac/b4ba5094fb2d7fe9d2037cd8d18bbe02bcf68fd22ab9ff013f55e57ba095/mypy-1.20.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f75ff57defcd0f1d6e006d721ccdec6c88d4f6a7816eb92f1c4890d979d9ee62", size = 13663752, upload-time = "2026-03-31T16:49:26.064Z" }, - { url = "https://files.pythonhosted.org/packages/db/a7/460678d3cf7da252d2288dad0c602294b6ec22a91932ec368cc11e44bb6e/mypy-1.20.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b503ab55a836136b619b5fc21c8803d810c5b87551af8600b72eecafb0059cb0", size = 14532265, upload-time = "2026-03-31T16:53:55.077Z" }, - { url = "https://files.pythonhosted.org/packages/a3/3e/051cca8166cf0438ae3ea80e0e7c030d7a8ab98dffc93f80a1aa3f23c1a2/mypy-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1973868d2adbb4584a3835780b27436f06d1dc606af5be09f187aaa25be1070f", size = 14768476, upload-time = "2026-03-31T16:50:34.587Z" }, - { url = "https://files.pythonhosted.org/packages/be/66/8e02ec184f852ed5c4abb805583305db475930854e09964b55e107cdcbc4/mypy-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:2fcedb16d456106e545b2bfd7ef9d24e70b38ec252d2a629823a4d07ebcdb69e", size = 10818226, upload-time = "2026-03-31T16:53:15.624Z" }, - { url = "https://files.pythonhosted.org/packages/13/4b/383ad1924b28f41e4879a74151e7a5451123330d45652da359f9183bcd45/mypy-1.20.0-cp311-cp311-win_arm64.whl", hash = "sha256:379edf079ce44ac8d2805bcf9b3dd7340d4f97aad3a5e0ebabbf9d125b84b442", size = 9750091, upload-time = "2026-03-31T16:54:12.162Z" }, - { url = "https://files.pythonhosted.org/packages/be/dd/3afa29b58c2e57c79116ed55d700721c3c3b15955e2b6251dd165d377c0e/mypy-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:002b613ae19f4ac7d18b7e168ffe1cb9013b37c57f7411984abbd3b817b0a214", size = 14509525, upload-time = "2026-03-31T16:55:01.824Z" }, - { url = "https://files.pythonhosted.org/packages/54/eb/227b516ab8cad9f2a13c5e7a98d28cd6aa75e9c83e82776ae6c1c4c046c7/mypy-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9336b5e6712f4adaf5afc3203a99a40b379049104349d747eb3e5a3aa23ac2e", size = 13326469, upload-time = "2026-03-31T16:51:41.23Z" }, - { url = "https://files.pythonhosted.org/packages/57/d4/1ddb799860c1b5ac6117ec307b965f65deeb47044395ff01ab793248a591/mypy-1.20.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f13b3e41bce9d257eded794c0f12878af3129d80aacd8a3ee0dee51f3a978651", size = 13705953, upload-time = "2026-03-31T16:48:55.69Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b7/54a720f565a87b893182a2a393370289ae7149e4715859e10e1c05e49154/mypy-1.20.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9804c3ad27f78e54e58b32e7cb532d128b43dbfb9f3f9f06262b821a0f6bd3f5", size = 14710363, upload-time = "2026-03-31T16:53:26.948Z" }, - { url = "https://files.pythonhosted.org/packages/b2/2a/74810274848d061f8a8ea4ac23aaad43bd3d8c1882457999c2e568341c57/mypy-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:697f102c5c1d526bdd761a69f17c6070f9892eebcb94b1a5963d679288c09e78", size = 14947005, upload-time = "2026-03-31T16:50:17.591Z" }, - { url = "https://files.pythonhosted.org/packages/77/91/21b8ba75f958bcda75690951ce6fa6b7138b03471618959529d74b8544e2/mypy-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:0ecd63f75fdd30327e4ad8b5704bd6d91fc6c1b2e029f8ee14705e1207212489", size = 10880616, upload-time = "2026-03-31T16:52:19.986Z" }, - { url = "https://files.pythonhosted.org/packages/8a/15/3d8198ef97c1ca03aea010cce4f1d4f3bc5d9849e8c0140111ca2ead9fdd/mypy-1.20.0-cp312-cp312-win_arm64.whl", hash = "sha256:f194db59657c58593a3c47c6dfd7bad4ef4ac12dbc94d01b3a95521f78177e33", size = 9813091, upload-time = "2026-03-31T16:53:44.385Z" }, - { url = "https://files.pythonhosted.org/packages/d6/a7/f64ea7bd592fa431cb597418b6dec4a47f7d0c36325fec7ac67bc8402b94/mypy-1.20.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b20c8b0fd5877abdf402e79a3af987053de07e6fb208c18df6659f708b535134", size = 14485344, upload-time = "2026-03-31T16:49:16.78Z" }, - { url = "https://files.pythonhosted.org/packages/bb/72/8927d84cfc90c6abea6e96663576e2e417589347eb538749a464c4c218a0/mypy-1.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:367e5c993ba34d5054d11937d0485ad6dfc60ba760fa326c01090fc256adf15c", size = 13327400, upload-time = "2026-03-31T16:53:08.02Z" }, - { url = "https://files.pythonhosted.org/packages/ab/4a/11ab99f9afa41aa350178d24a7d2da17043228ea10f6456523f64b5a6cf6/mypy-1.20.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f799d9db89fc00446f03281f84a221e50018fc40113a3ba9864b132895619ebe", size = 13706384, upload-time = "2026-03-31T16:52:28.577Z" }, - { url = "https://files.pythonhosted.org/packages/42/79/694ca73979cfb3535ebfe78733844cd5aff2e63304f59bf90585110d975a/mypy-1.20.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:555658c611099455b2da507582ea20d2043dfdfe7f5ad0add472b1c6238b433f", size = 14700378, upload-time = "2026-03-31T16:48:45.527Z" }, - { url = "https://files.pythonhosted.org/packages/84/24/a022ccab3a46e3d2cdf2e0e260648633640eb396c7e75d5a42818a8d3971/mypy-1.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:efe8d70949c3023698c3fca1e94527e7e790a361ab8116f90d11221421cd8726", size = 14932170, upload-time = "2026-03-31T16:49:36.038Z" }, - { url = "https://files.pythonhosted.org/packages/d8/9b/549228d88f574d04117e736f55958bd4908f980f9f5700a07aeb85df005b/mypy-1.20.0-cp313-cp313-win_amd64.whl", hash = "sha256:f49590891d2c2f8a9de15614e32e459a794bcba84693c2394291a2038bbaaa69", size = 10888526, upload-time = "2026-03-31T16:50:59.827Z" }, - { url = "https://files.pythonhosted.org/packages/91/17/15095c0e54a8bc04d22d4ff06b2139d5f142c2e87520b4e39010c4862771/mypy-1.20.0-cp313-cp313-win_arm64.whl", hash = "sha256:76a70bf840495729be47510856b978f1b0ec7d08f257ca38c9d932720bf6b43e", size = 9816456, upload-time = "2026-03-31T16:49:59.537Z" }, - { url = "https://files.pythonhosted.org/packages/4e/0e/6ca4a84cbed9e62384bc0b2974c90395ece5ed672393e553996501625fc5/mypy-1.20.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:0f42dfaab7ec1baff3b383ad7af562ab0de573c5f6edb44b2dab016082b89948", size = 14483331, upload-time = "2026-03-31T16:52:57.999Z" }, - { url = "https://files.pythonhosted.org/packages/7d/c5/5fe9d8a729dd9605064691816243ae6c49fde0bd28f6e5e17f6a24203c43/mypy-1.20.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:31b5dbb55293c1bd27c0fc813a0d2bb5ceef9d65ac5afa2e58f829dab7921fd5", size = 13342047, upload-time = "2026-03-31T16:54:21.555Z" }, - { url = "https://files.pythonhosted.org/packages/4c/33/e18bcfa338ca4e6b2771c85d4c5203e627d0c69d9de5c1a2cf2ba13320ba/mypy-1.20.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49d11c6f573a5a08f77fad13faff2139f6d0730ebed2cfa9b3d2702671dd7188", size = 13719585, upload-time = "2026-03-31T16:51:53.89Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8d/93491ff7b79419edc7eabf95cb3b3f7490e2e574b2855c7c7e7394ff933f/mypy-1.20.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d3243c406773185144527f83be0e0aefc7bf4601b0b2b956665608bf7c98a83", size = 14685075, upload-time = "2026-03-31T16:54:04.464Z" }, - { url = "https://files.pythonhosted.org/packages/b5/9d/d924b38a4923f8d164bf2b4ec98bf13beaf6e10a5348b4b137eadae40a6e/mypy-1.20.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a79c1eba7ac4209f2d850f0edd0a2f8bba88cbfdfefe6fb76a19e9d4fe5e71a2", size = 14919141, upload-time = "2026-03-31T16:54:51.785Z" }, - { url = "https://files.pythonhosted.org/packages/59/98/1da9977016678c0b99d43afe52ed00bb3c1a0c4c995d3e6acca1a6ebb9b4/mypy-1.20.0-cp314-cp314-win_amd64.whl", hash = "sha256:00e047c74d3ec6e71a2eb88e9ea551a2edb90c21f993aefa9e0d2a898e0bb732", size = 11050925, upload-time = "2026-03-31T16:51:30.758Z" }, - { url = "https://files.pythonhosted.org/packages/5e/e3/ba0b7a3143e49a9c4f5967dde6ea4bf8e0b10ecbbcca69af84027160ee89/mypy-1.20.0-cp314-cp314-win_arm64.whl", hash = "sha256:931a7630bba591593dcf6e97224a21ff80fb357e7982628d25e3c618e7f598ef", size = 10001089, upload-time = "2026-03-31T16:49:43.632Z" }, - { url = "https://files.pythonhosted.org/packages/12/28/e617e67b3be9d213cda7277913269c874eb26472489f95d09d89765ce2d8/mypy-1.20.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:26c8b52627b6552f47ff11adb4e1509605f094e29815323e487fc0053ebe93d1", size = 15534710, upload-time = "2026-03-31T16:52:12.506Z" }, - { url = "https://files.pythonhosted.org/packages/6e/0c/3b5f2d3e45dc7169b811adce8451679d9430399d03b168f9b0489f43adaa/mypy-1.20.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:39362cdb4ba5f916e7976fccecaab1ba3a83e35f60fa68b64e9a70e221bb2436", size = 14393013, upload-time = "2026-03-31T16:54:41.186Z" }, - { url = "https://files.pythonhosted.org/packages/a3/49/edc8b0aa145cc09c1c74f7ce2858eead9329931dcbbb26e2ad40906daa4e/mypy-1.20.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34506397dbf40c15dc567635d18a21d33827e9ab29014fb83d292a8f4f8953b6", size = 15047240, upload-time = "2026-03-31T16:54:31.955Z" }, - { url = "https://files.pythonhosted.org/packages/42/37/a946bb416e37a57fa752b3100fd5ede0e28df94f92366d1716555d47c454/mypy-1.20.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:555493c44a4f5a1b58d611a43333e71a9981c6dbe26270377b6f8174126a0526", size = 15858565, upload-time = "2026-03-31T16:53:36.997Z" }, - { url = "https://files.pythonhosted.org/packages/2f/99/7690b5b5b552db1bd4ff362e4c0eb3107b98d680835e65823fbe888c8b78/mypy-1.20.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2721f0ce49cb74a38f00c50da67cb7d36317b5eda38877a49614dc018e91c787", size = 16087874, upload-time = "2026-03-31T16:52:48.313Z" }, - { url = "https://files.pythonhosted.org/packages/aa/76/53e893a498138066acd28192b77495c9357e5a58cc4be753182846b43315/mypy-1.20.0-cp314-cp314t-win_amd64.whl", hash = "sha256:47781555a7aa5fedcc2d16bcd72e0dc83eb272c10dd657f9fb3f9cc08e2e6abb", size = 12572380, upload-time = "2026-03-31T16:49:52.454Z" }, - { url = "https://files.pythonhosted.org/packages/76/9c/6dbdae21f01b7aacddc2c0bbf3c5557aa547827fdf271770fe1e521e7093/mypy-1.20.0-cp314-cp314t-win_arm64.whl", hash = "sha256:c70380fe5d64010f79fb863b9081c7004dd65225d2277333c219d93a10dad4dd", size = 10381174, upload-time = "2026-03-31T16:51:20.179Z" }, - { url = "https://files.pythonhosted.org/packages/21/66/4d734961ce167f0fd8380769b3b7c06dbdd6ff54c2190f3f2ecd22528158/mypy-1.20.0-py3-none-any.whl", hash = "sha256:a6e0641147cbfa7e4e94efdb95c2dab1aff8cfc159ded13e07f308ddccc8c48e", size = 2636365, upload-time = "2026-03-31T16:51:44.911Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0b/3d/5b373635b3146264eb7a68d09e5ca11c305bbb058dfffbb47c47daf4f632/mypy-1.20.1.tar.gz", hash = "sha256:6fc3f4ecd52de81648fed1945498bf42fa2993ddfad67c9056df36ae5757f804", size = 3815892, upload-time = "2026-04-13T02:46:51.474Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/0d/555ab7453cc4a4a8643b7f21c842b1a84c36b15392061ae7b052ee119320/mypy-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c01eb9bac2c6a962d00f9d23421cd2913840e65bba365167d057bd0b4171a92e", size = 14336012, upload-time = "2026-04-13T02:45:39.935Z" }, + { url = "https://files.pythonhosted.org/packages/57/26/85a28893f7db8a16ebb41d1e9dfcb4475844d06a88480b6639e32a74d6ef/mypy-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:55d12ddbd8a9cac5b276878bd534fa39fff5bf543dc6ae18f25d30c8d7d27fca", size = 13224636, upload-time = "2026-04-13T02:45:49.659Z" }, + { url = "https://files.pythonhosted.org/packages/93/41/bd4cd3c2caeb6c448b669222b8cfcbdee4a03b89431527b56fca9e56b6f3/mypy-1.20.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0aa322c1468b6cdfc927a44ce130f79bb44bcd34eb4a009eb9f96571fd80955", size = 13663471, upload-time = "2026-04-13T02:46:20.276Z" }, + { url = "https://files.pythonhosted.org/packages/3e/56/7ee8c471e10402d64b6517ae10434541baca053cffd81090e4097d5609d4/mypy-1.20.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3f8bc95899cf676b6e2285779a08a998cc3a7b26f1026752df9d2741df3c79e8", size = 14532344, upload-time = "2026-04-13T02:46:44.205Z" }, + { url = "https://files.pythonhosted.org/packages/b5/95/b37d1fa859a433f6156742e12f62b0bb75af658544fb6dada9363918743a/mypy-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:47c2b90191a870a04041e910277494b0d92f0711be9e524d45c074fe60c00b65", size = 14776670, upload-time = "2026-04-13T02:45:52.481Z" }, + { url = "https://files.pythonhosted.org/packages/03/77/b302e4cb0b80d2bdf6bf4fce5864bb4cbfa461f7099cea544eaf2457df78/mypy-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:9857dc8d2ec1a392ffbda518075beb00ac58859979c79f9e6bdcb7277082c2f2", size = 10816524, upload-time = "2026-04-13T02:45:37.711Z" }, + { url = "https://files.pythonhosted.org/packages/7f/21/d969d7a68eb964993ebcc6170d5ecaf0cf65830c58ac3344562e16dc42a9/mypy-1.20.1-cp311-cp311-win_arm64.whl", hash = "sha256:09d8df92bb25b6065ab91b178da843dda67b33eb819321679a6e98a907ce0e10", size = 9750419, upload-time = "2026-04-13T02:45:08.542Z" }, + { url = "https://files.pythonhosted.org/packages/69/1b/75a7c825a02781ca10bc2f2f12fba2af5202f6d6005aad8d2d1f264d8d78/mypy-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:36ee2b9c6599c230fea89bbd79f401f9f9f8e9fcf0c777827789b19b7da90f51", size = 14494077, upload-time = "2026-04-13T02:45:55.085Z" }, + { url = "https://files.pythonhosted.org/packages/b0/54/5e5a569ea5c2b4d48b729fb32aa936eeb4246e4fc3e6f5b3d36a2dfbefb9/mypy-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fba3fb0968a7b48806b0c90f38d39296f10766885a94c83bd21399de1e14eb28", size = 13319495, upload-time = "2026-04-13T02:45:29.674Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a4/a1945b19f33e91721b59deee3abb484f2fa5922adc33bb166daf5325d76d/mypy-1.20.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef1415a637cd3627d6304dfbeddbadd21079dafc2a8a753c477ce4fc0c2af54f", size = 13696948, upload-time = "2026-04-13T02:46:15.006Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c6/75e969781c2359b2f9c15b061f28ec6d67c8b61865ceda176e85c8e7f2de/mypy-1.20.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef3461b1ad5cd446e540016e90b5984657edda39f982f4cc45ca317b628f5a37", size = 14706744, upload-time = "2026-04-13T02:46:00.482Z" }, + { url = "https://files.pythonhosted.org/packages/a8/6e/b221b1de981fc4262fe3e0bf9ec272d292dfe42394a689c2d49765c144c4/mypy-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:542dd63c9e1339b6092eb25bd515f3a32a1453aee8c9521d2ddb17dacd840237", size = 14949035, upload-time = "2026-04-13T02:45:06.021Z" }, + { url = "https://files.pythonhosted.org/packages/ca/4b/298ba2de0aafc0da3ff2288da06884aae7ba6489bc247c933f87847c41b3/mypy-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:1d55c7cd8ca22e31f93af2a01160a9e95465b5878de23dba7e48116052f20a8d", size = 10883216, upload-time = "2026-04-13T02:45:47.232Z" }, + { url = "https://files.pythonhosted.org/packages/c7/f9/5e25b8f0b8cb92f080bfed9c21d3279b2a0b6a601cdca369a039ba84789d/mypy-1.20.1-cp312-cp312-win_arm64.whl", hash = "sha256:f5b84a79070586e0d353ee07b719d9d0a4aa7c8ee90c0ea97747e98cbe193019", size = 9814299, upload-time = "2026-04-13T02:45:21.934Z" }, + { url = "https://files.pythonhosted.org/packages/21/e8/ef0991aa24c8f225df10b034f3c2681213cb54cf247623c6dec9a5744e70/mypy-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f3886c03e40afefd327bd70b3f634b39ea82e87f314edaa4d0cce4b927ddcc1", size = 14500739, upload-time = "2026-04-13T02:46:05.442Z" }, + { url = "https://files.pythonhosted.org/packages/23/73/416ebec3047636ed89fa871dc8c54bf05e9e20aa9499da59790d7adb312d/mypy-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e860eb3904f9764e83bafd70c8250bdffdc7dde6b82f486e8156348bf7ceb184", size = 13314735, upload-time = "2026-04-13T02:46:47.154Z" }, + { url = "https://files.pythonhosted.org/packages/10/1e/1505022d9c9ac2e014a384eb17638fb37bf8e9d0a833ea60605b66f8f7ba/mypy-1.20.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4b5aac6e785719da51a84f5d09e9e843d473170a9045b1ea7ea1af86225df4b", size = 13704356, upload-time = "2026-04-13T02:45:19.773Z" }, + { url = "https://files.pythonhosted.org/packages/98/91/275b01f5eba5c467a3318ec214dd865abb66e9c811231c8587287b92876a/mypy-1.20.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f37b6cd0fe2ad3a20f05ace48ca3523fc52ff86940e34937b439613b6854472e", size = 14696420, upload-time = "2026-04-13T02:45:24.205Z" }, + { url = "https://files.pythonhosted.org/packages/a1/57/b3779e134e1b7250d05f874252780d0a88c068bc054bcff99ca20a3a2986/mypy-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4bbb0f6b54ce7cc350ef4a770650d15fa70edd99ad5267e227133eda9c94218", size = 14936093, upload-time = "2026-04-13T02:45:32.087Z" }, + { url = "https://files.pythonhosted.org/packages/be/33/81b64991b0f3f278c3b55c335888794af190b2d59031a5ad1401bcb69f1e/mypy-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:c3dc20f8ec76eecd77148cdd2f1542ed496e51e185713bf488a414f862deb8f2", size = 10889659, upload-time = "2026-04-13T02:46:02.926Z" }, + { url = "https://files.pythonhosted.org/packages/1b/fd/7adcb8053572edf5ef8f3db59599dfeeee3be9cc4c8c97e2d28f66f42ac5/mypy-1.20.1-cp313-cp313-win_arm64.whl", hash = "sha256:a9d62bbac5d6d46718e2b0330b25e6264463ed832722b8f7d4440ff1be3ca895", size = 9815515, upload-time = "2026-04-13T02:46:32.103Z" }, + { url = "https://files.pythonhosted.org/packages/40/cd/db831e84c81d57d4886d99feee14e372f64bbec6a9cb1a88a19e243f2ef5/mypy-1.20.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:12927b9c0ed794daedcf1dab055b6c613d9d5659ac511e8d936d96f19c087d12", size = 14483064, upload-time = "2026-04-13T02:45:26.901Z" }, + { url = "https://files.pythonhosted.org/packages/d5/82/74e62e7097fa67da328ac8ece8de09133448c04d20ddeaeba251a3000f01/mypy-1.20.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:752507dd481e958b2c08fc966d3806c962af5a9433b5bf8f3bdd7175c20e34fe", size = 13335694, upload-time = "2026-04-13T02:46:12.514Z" }, + { url = "https://files.pythonhosted.org/packages/74/c4/97e9a0abe4f3cdbbf4d079cb87a03b786efeccf5bf2b89fe4f96939ab2e6/mypy-1.20.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c614655b5a065e56274c6cbbe405f7cf7e96c0654db7ba39bc680238837f7b08", size = 13726365, upload-time = "2026-04-13T02:45:17.422Z" }, + { url = "https://files.pythonhosted.org/packages/d7/aa/a19d884a8d28fcd3c065776323029f204dbc774e70ec9c85eba228b680de/mypy-1.20.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2c3f6221a76f34d5100c6d35b3ef6b947054123c3f8d6938a4ba00b1308aa572", size = 14693472, upload-time = "2026-04-13T02:46:41.253Z" }, + { url = "https://files.pythonhosted.org/packages/84/44/cc9324bd21cf786592b44bf3b5d224b3923c1230ec9898d508d00241d465/mypy-1.20.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4bdfc06303ac06500af71ea0cdbe995c502b3c9ba32f3f8313523c137a25d1b6", size = 14919266, upload-time = "2026-04-13T02:46:28.37Z" }, + { url = "https://files.pythonhosted.org/packages/6e/dc/779abb25a8c63e8f44bf5a336217fa92790fa17e0c40e0c725d10cb01bbd/mypy-1.20.1-cp314-cp314-win_amd64.whl", hash = "sha256:0131edd7eba289973d1ba1003d1a37c426b85cdef76650cd02da6420898a5eb3", size = 11049713, upload-time = "2026-04-13T02:45:57.673Z" }, + { url = "https://files.pythonhosted.org/packages/28/08/4172be2ad7de9119b5a92ca36abbf641afdc5cb1ef4ae0c3a8182f29674f/mypy-1.20.1-cp314-cp314-win_arm64.whl", hash = "sha256:33f02904feb2c07e1fdf7909026206396c9deeb9e6f34d466b4cfedb0aadbbe4", size = 9999819, upload-time = "2026-04-13T02:46:35.039Z" }, + { url = "https://files.pythonhosted.org/packages/2d/af/af9e46b0c8eabbce9fc04a477564170f47a1c22b308822282a59b7ff315f/mypy-1.20.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:168472149dd8cc505c98cefd21ad77e4257ed6022cd5ed2fe2999bed56977a5a", size = 15547508, upload-time = "2026-04-13T02:46:25.588Z" }, + { url = "https://files.pythonhosted.org/packages/a7/cd/39c9e4ad6ba33e069e5837d772a9e6c304b4a5452a14a975d52b36444650/mypy-1.20.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:eb674600309a8f22790cca883a97c90299f948183ebb210fbef6bcee07cb1986", size = 14399557, upload-time = "2026-04-13T02:46:10.021Z" }, + { url = "https://files.pythonhosted.org/packages/83/c1/3fd71bdc118ffc502bf57559c909927bb7e011f327f7bb8e0488e98a5870/mypy-1.20.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef2b2e4cc464ba9795459f2586923abd58a0055487cbe558cb538ea6e6bc142a", size = 15045789, upload-time = "2026-04-13T02:45:10.81Z" }, + { url = "https://files.pythonhosted.org/packages/8e/73/6f07ff8b57a7d7b3e6e5bf34685d17632382395c8bb53364ec331661f83e/mypy-1.20.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dee461d396dd46b3f0ed5a098dbc9b8860c81c46ad44fa071afcfbc149f167c9", size = 15850795, upload-time = "2026-04-13T02:45:03.349Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e2/f7dffec1c7767078f9e9adf0c786d1fe0ff30964a77eb213c09b8b58cb76/mypy-1.20.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e364926308b3e66f1361f81a566fc1b2f8cd47fc8525e8136d4058a65a4b4f02", size = 16088539, upload-time = "2026-04-13T02:46:17.841Z" }, + { url = "https://files.pythonhosted.org/packages/1a/76/e0dee71035316e75a69d73aec2f03c39c21c967b97e277fd0ef8fd6aec66/mypy-1.20.1-cp314-cp314t-win_amd64.whl", hash = "sha256:a0c17fbd746d38c70cbc42647cfd884f845a9708a4b160a8b4f7e70d41f4d7fa", size = 12575567, upload-time = "2026-04-13T02:45:34.795Z" }, + { url = "https://files.pythonhosted.org/packages/22/a8/7ed43c9d9c3d1468f86605e323a5d97e411a448790a00f07e779f3211a46/mypy-1.20.1-cp314-cp314t-win_arm64.whl", hash = "sha256:db2cb89654626a912efda69c0d5c1d22d948265e2069010d3dde3abf751c7d08", size = 10378823, upload-time = "2026-04-13T02:45:13.35Z" }, + { url = "https://files.pythonhosted.org/packages/d8/28/926bd972388e65a39ee98e188ccf67e81beb3aacfd5d6b310051772d974b/mypy-1.20.1-py3-none-any.whl", hash = "sha256:1aae28507f253fe82d883790d1c0a0d35798a810117c88184097fe8881052f06", size = 2636553, upload-time = "2026-04-13T02:46:30.45Z" }, ] [[package]] @@ -799,7 +799,7 @@ docs = [ { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "sphinx-autobuild" }, { name = "sphinx-autodoc-typehints", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, - { name = "sphinx-autodoc-typehints", version = "3.10.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "sphinx-autodoc-typehints", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "sphinx-rtd-theme" }, ] @@ -807,7 +807,7 @@ docs = [ requires-dist = [ { name = "exchange-calendars", specifier = ">=4.8" }, { name = "holidays", specifier = ">=0.30" }, - { name = "mypy", marker = "extra == 'dev'", specifier = "==1.20.0" }, + { name = "mypy", marker = "extra == 'dev'", specifier = "==1.20.1" }, { name = "numpy", specifier = ">=1.23.2" }, { name = "openpyxl", specifier = ">=3.1.2" }, { name = "pandas", specifier = ">=2.1.2" }, @@ -992,7 +992,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.12.5" +version = "2.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -1000,106 +1000,111 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/84/6b/69fd5c7194b21ebde0f8637e2a4ddc766ada29d472bfa6a5ca533d79549a/pydantic-2.13.0.tar.gz", hash = "sha256:b89b575b6e670ebf6e7448c01b41b244f471edd276cd0b6fe02e7e7aca320070", size = 843468, upload-time = "2026-04-13T10:51:35.571Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/01/d7/c3a52c61f5b7be648e919005820fbac33028c6149994cd64453f49951c17/pydantic-2.13.0-py3-none-any.whl", hash = "sha256:ab0078b90da5f3e2fd2e71e3d9b457ddcb35d0350854fbda93b451e28d56baaf", size = 471872, upload-time = "2026-04-13T10:51:33.343Z" }, ] [[package]] name = "pydantic-core" -version = "2.41.5" +version = "2.46.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873, upload-time = "2025-11-04T13:39:31.373Z" }, - { url = "https://files.pythonhosted.org/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826, upload-time = "2025-11-04T13:39:32.897Z" }, - { url = "https://files.pythonhosted.org/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869, upload-time = "2025-11-04T13:39:34.469Z" }, - { url = "https://files.pythonhosted.org/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890, upload-time = "2025-11-04T13:39:36.053Z" }, - { url = "https://files.pythonhosted.org/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740, upload-time = "2025-11-04T13:39:37.753Z" }, - { url = "https://files.pythonhosted.org/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021, upload-time = "2025-11-04T13:39:40.94Z" }, - { url = "https://files.pythonhosted.org/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378, upload-time = "2025-11-04T13:39:42.523Z" }, - { url = "https://files.pythonhosted.org/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761, upload-time = "2025-11-04T13:39:44.553Z" }, - { url = "https://files.pythonhosted.org/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303, upload-time = "2025-11-04T13:39:46.238Z" }, - { url = "https://files.pythonhosted.org/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355, upload-time = "2025-11-04T13:39:48.002Z" }, - { url = "https://files.pythonhosted.org/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875, upload-time = "2025-11-04T13:39:49.705Z" }, - { url = "https://files.pythonhosted.org/packages/fe/e6/8c9e81bb6dd7560e33b9053351c29f30c8194b72f2d6932888581f503482/pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", size = 1987549, upload-time = "2025-11-04T13:39:51.842Z" }, - { url = "https://files.pythonhosted.org/packages/11/66/f14d1d978ea94d1bc21fc98fcf570f9542fe55bfcc40269d4e1a21c19bf7/pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", size = 2011305, upload-time = "2025-11-04T13:39:53.485Z" }, - { url = "https://files.pythonhosted.org/packages/56/d8/0e271434e8efd03186c5386671328154ee349ff0354d83c74f5caaf096ed/pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", size = 1972902, upload-time = "2025-11-04T13:39:56.488Z" }, - { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, - { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, - { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, - { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, - { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, - { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, - { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, - { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, - { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, - { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, - { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, - { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, - { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, - { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, - { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, - { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, - { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, - { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, - { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, - { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, - { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, - { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, - { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, - { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, - { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, - { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, - { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, - { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, - { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, - { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, - { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, - { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, - { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, - { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, - { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, - { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, - { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, - { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, - { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, - { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, - { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, - { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, - { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, - { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, - { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, - { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, - { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload-time = "2025-11-04T13:42:39.557Z" }, - { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload-time = "2025-11-04T13:42:42.169Z" }, - { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload-time = "2025-11-04T13:42:44.564Z" }, - { url = "https://files.pythonhosted.org/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905, upload-time = "2025-11-04T13:42:47.156Z" }, - { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, - { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, - { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, - { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980, upload-time = "2025-11-04T13:43:25.97Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865, upload-time = "2025-11-04T13:43:28.763Z" }, - { url = "https://files.pythonhosted.org/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256, upload-time = "2025-11-04T13:43:31.71Z" }, - { url = "https://files.pythonhosted.org/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762, upload-time = "2025-11-04T13:43:34.744Z" }, - { url = "https://files.pythonhosted.org/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141, upload-time = "2025-11-04T13:43:37.701Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317, upload-time = "2025-11-04T13:43:40.406Z" }, - { url = "https://files.pythonhosted.org/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992, upload-time = "2025-11-04T13:43:43.602Z" }, - { url = "https://files.pythonhosted.org/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302, upload-time = "2025-11-04T13:43:46.64Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/6f/0a/9414cddf82eda3976b14048cc0fa8f5b5d1aecb0b22e1dcd2dbfe0e139b1/pydantic_core-2.46.0.tar.gz", hash = "sha256:82d2498c96be47b47e903e1378d1d0f770097ec56ea953322f39936a7cf34977", size = 471441, upload-time = "2026-04-13T09:06:33.813Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/43/9bc38d43a6a48794209e4eb6d61e9c68395f69b7949f66842854b0cd1344/pydantic_core-2.46.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0027da787ae711f7fbd5a76cb0bb8df526acba6c10c1e44581de1b838db10b7b", size = 2121004, upload-time = "2026-04-13T09:05:17.531Z" }, + { url = "https://files.pythonhosted.org/packages/8c/1d/f43342b7107939b305b5e4efeef7d54e267a5ef51515570a5c1d77726efb/pydantic_core-2.46.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:63e288fc18d7eaeef5f16c73e65c4fd0ad95b25e7e21d8a5da144977b35eb997", size = 1947505, upload-time = "2026-04-13T09:04:48.975Z" }, + { url = "https://files.pythonhosted.org/packages/4a/cd/ccf48cbbcaf0d99ba65969459ebfbf7037600b2cfdcca3062084dd83a008/pydantic_core-2.46.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:080a3bdc6807089a1fe1fbc076519cea287f1a964725731d80b49d8ecffaa217", size = 1973301, upload-time = "2026-04-13T09:05:42.149Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ff/a7bb1e7a762fb1f40ad5ef4e6a92c012864a017b7b1fdfb71cf91faa8b73/pydantic_core-2.46.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c065f1c3e54c3e79d909927a8cb48ccbc17b68733552161eba3e0628c38e5d19", size = 2042208, upload-time = "2026-04-13T09:05:32.591Z" }, + { url = "https://files.pythonhosted.org/packages/ea/64/d3f11c6f6ace71526f3b03646df95eaab3f21edd13e00daae3f20f4e5a09/pydantic_core-2.46.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7e2db58ab46cfe602d4255381cce515585998c3b6699d5b1f909f519bc44a5aa", size = 2229046, upload-time = "2026-04-13T09:04:18.59Z" }, + { url = "https://files.pythonhosted.org/packages/d0/64/93db9a63cce71630c58b376d63de498aa93cb341c72cd5f189b5c08f5c28/pydantic_core-2.46.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c660974890ec1e4c65cff93f5670a5f451039f65463e9f9c03ad49746b49fc78", size = 2292138, upload-time = "2026-04-13T09:04:13.816Z" }, + { url = "https://files.pythonhosted.org/packages/e9/96/936fccce22f1f2ae8b2b694de651c2c929847be5f701c927a0bb3b1eb679/pydantic_core-2.46.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3be91482a8db77377c902cca87697388a4fb68addeb3e943ac74f425201a099", size = 2093333, upload-time = "2026-04-13T09:05:15.729Z" }, + { url = "https://files.pythonhosted.org/packages/75/76/c325e7fda69d589e26e772272044fe704c7e525c47d0d32a74f8345ac657/pydantic_core-2.46.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:1c72de82115233112d70d07f26a48cf6996eb86f7e143423ec1a182148455a9d", size = 2138802, upload-time = "2026-04-13T09:03:51.142Z" }, + { url = "https://files.pythonhosted.org/packages/c0/6f/ccaa2ff7d53a017b66841e2d38edd1f38d19ae1a2d0c5efee17f2d432229/pydantic_core-2.46.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7904e58768cd79304b992868d7710bfc85dc6c7ed6163f0f68dbc1dcd72dc231", size = 2181358, upload-time = "2026-04-13T09:04:30.737Z" }, + { url = "https://files.pythonhosted.org/packages/6c/71/0c4b6303e92d63edcb81f5301695cdf70bb351775b4733eea65acdac8384/pydantic_core-2.46.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1af8d88718005f57bb4768f92f4ff16bf31a747d39dfc919b22211b84e72c053", size = 2183985, upload-time = "2026-04-13T09:04:06.792Z" }, + { url = "https://files.pythonhosted.org/packages/71/eb/f6bf255de38a4393aaa10bff224e882b630576bc26ebfb401e42bb965092/pydantic_core-2.46.0-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:a5b891301b02770a5852253f4b97f8bd192e5710067bc129e20d43db5403ede2", size = 2328559, upload-time = "2026-04-13T09:06:14.143Z" }, + { url = "https://files.pythonhosted.org/packages/f2/71/93895a1545f50823a24b21d7761c2bd1b1afea7a6ddc019787caec237361/pydantic_core-2.46.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:48b671fe59031fd9754c7384ac05b3ed47a0cccb7d4db0ec56121f0e6a541b90", size = 2367466, upload-time = "2026-04-13T09:05:59.613Z" }, + { url = "https://files.pythonhosted.org/packages/78/39/62331b3e71f41fb13d486621e2aec49900ba56567fb3a0ae5999fded0005/pydantic_core-2.46.0-cp311-cp311-win32.whl", hash = "sha256:0a52b7262b6cc67033823e9549a41bb77580ac299dc964baae4e9c182b2e335c", size = 1981367, upload-time = "2026-04-13T09:07:37.563Z" }, + { url = "https://files.pythonhosted.org/packages/9f/51/caac70958420e2d6115962f550676df59647c11f96a44c2fcb61662fcd16/pydantic_core-2.46.0-cp311-cp311-win_amd64.whl", hash = "sha256:4103fea1beeef6b3a9fed8515f27d4fa30c929a1973655adf8f454dc49ee0662", size = 2065942, upload-time = "2026-04-13T09:06:37.873Z" }, + { url = "https://files.pythonhosted.org/packages/b2/cf/576b2a4eb5500a1a5da485613b1ea8bc0d7279b27e0426801574b284ae65/pydantic_core-2.46.0-cp311-cp311-win_arm64.whl", hash = "sha256:3137cd88938adb8e567c5e938e486adc7e518ffc96b4ae1ec268e6a4275704d7", size = 2052532, upload-time = "2026-04-13T09:06:03.697Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d2/206c72ad47071559142a35f71efc29eb16448a4a5ae9487230ab8e4e292b/pydantic_core-2.46.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:66ccedb02c934622612448489824955838a221b3a35875458970521ef17b2f9c", size = 2117060, upload-time = "2026-04-13T09:04:47.443Z" }, + { url = "https://files.pythonhosted.org/packages/17/2c/7a53b33f91c8b77e696b1a6aa3bed609bf9374bdc0f8dcda681bc7d922b8/pydantic_core-2.46.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a44f27f4d2788ef9876ec47a43739b118c5904d74f418f53398f6ced3bbcacf2", size = 1951802, upload-time = "2026-04-13T09:05:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/fc/20/90e548c1f6d38800ef11c915881525770ce270d8e5e887563ff046a08674/pydantic_core-2.46.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26a1032bcce6ca4b4670eb3f7d8195bd0a8b8f255f1307823e217ca3cfa7c27", size = 1976621, upload-time = "2026-04-13T09:04:03.909Z" }, + { url = "https://files.pythonhosted.org/packages/20/3c/9c5810ca70b60c623488cdd80f7e9ee1a0812df81e97098b64788719860f/pydantic_core-2.46.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b8d1412f725060527e56675904b17a2d421dddcf861eecf7c75b9dda47921a4", size = 2056721, upload-time = "2026-04-13T09:04:40.992Z" }, + { url = "https://files.pythonhosted.org/packages/1a/a3/d6e5f4cdec84278431c75540f90838c9d0a4dfe9402a8f3902073660ff28/pydantic_core-2.46.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc3d1569edd859cabaa476cabce9eecd05049a7966af7b4a33b541bfd4ca1104", size = 2239634, upload-time = "2026-04-13T09:03:52.478Z" }, + { url = "https://files.pythonhosted.org/packages/46/42/ef58aacf330d8de6e309d62469aa1f80e945eaf665929b4037ac1bfcebc1/pydantic_core-2.46.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38108976f2d8afaa8f5067fd1390a8c9f5cc580175407cda636e76bc76e88054", size = 2315739, upload-time = "2026-04-13T09:05:04.971Z" }, + { url = "https://files.pythonhosted.org/packages/8b/86/c63b12fafa2d86a515bfd1840b39c23a49302f02b653161bf9c3a0566c50/pydantic_core-2.46.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5a06d8ed01dad5575056b5187e5959b336793c6047920a3441ee5b03533836", size = 2098169, upload-time = "2026-04-13T09:07:27.151Z" }, + { url = "https://files.pythonhosted.org/packages/76/19/b5b33a2f6be4755b21a20434293c4364be255f4c1a108f125d101d4cc4ee/pydantic_core-2.46.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:04017ace142da9ce27cafd423a480872571b5c7e80382aec22f7d715ca8eb870", size = 2170830, upload-time = "2026-04-13T09:04:39.448Z" }, + { url = "https://files.pythonhosted.org/packages/99/ae/7559f99a29b7d440012ddb4da897359304988a881efaca912fd2f655652e/pydantic_core-2.46.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2629ad992ed1b1c012e6067f5ffafd3336fcb9b54569449fabb85621f1444ed3", size = 2203901, upload-time = "2026-04-13T09:04:01.048Z" }, + { url = "https://files.pythonhosted.org/packages/dd/0e/b0ef945a39aeb4ac58da316813e1106b7fbdfbf20ac141c1c27904355ac5/pydantic_core-2.46.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3068b1e7bd986aebc88f6859f8353e72072538dcf92a7fb9cf511a0f61c5e729", size = 2191789, upload-time = "2026-04-13T09:06:39.915Z" }, + { url = "https://files.pythonhosted.org/packages/90/f4/830484e07188c1236b013995818888ab93bab8fd88aa9689b1d8fd22220d/pydantic_core-2.46.0-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:1e366916ff69ff700aa9326601634e688581bc24c5b6b4f8738d809ec7d72611", size = 2344423, upload-time = "2026-04-13T09:05:12.252Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ba/e455c18cbdc333177af754e740be4fe9d1de173d65bbe534daf88da02ac0/pydantic_core-2.46.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:485a23e8f4618a1b8e23ac744180acde283fffe617f96923d25507d5cade62ec", size = 2384037, upload-time = "2026-04-13T09:06:24.503Z" }, + { url = "https://files.pythonhosted.org/packages/78/1f/b35d20d73144a41e78de0ae398e60fdd8bed91667daa1a5a92ab958551ba/pydantic_core-2.46.0-cp312-cp312-win32.whl", hash = "sha256:520940e1b702fe3b33525d0351777f25e9924f1818ca7956447dabacf2d339fd", size = 1967068, upload-time = "2026-04-13T09:05:23.374Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/4b6252e9606e8295647b848233cc4137ee0a04ebba8f0f9fb2977655b38c/pydantic_core-2.46.0-cp312-cp312-win_amd64.whl", hash = "sha256:90d2048e0339fa365e5a66aefe760ddd3b3d0a45501e088bc5bc7f4ed9ff9571", size = 2071008, upload-time = "2026-04-13T09:05:21.392Z" }, + { url = "https://files.pythonhosted.org/packages/39/95/d08eb508d4d5560ccbd226ee5971e5ef9b749aba9b413c0c4ed6e406d4f6/pydantic_core-2.46.0-cp312-cp312-win_arm64.whl", hash = "sha256:a70247649b7dffe36648e8f34be5ce8c5fa0a27ff07b071ea780c20a738c05ce", size = 2036634, upload-time = "2026-04-13T09:05:48.299Z" }, + { url = "https://files.pythonhosted.org/packages/df/05/ab3b0742bad1d51822f1af0c4232208408902bdcfc47601f3b812e09e6c2/pydantic_core-2.46.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:a05900c37264c070c683c650cbca8f83d7cbb549719e645fcd81a24592eac788", size = 2116814, upload-time = "2026-04-13T09:04:12.41Z" }, + { url = "https://files.pythonhosted.org/packages/98/08/30b43d9569d69094a0899a199711c43aa58fce6ce80f6a8f7693673eb995/pydantic_core-2.46.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8de8e482fd4f1e3f36c50c6aac46d044462615d8f12cfafc6bebeaa0909eea22", size = 1951867, upload-time = "2026-04-13T09:04:02.364Z" }, + { url = "https://files.pythonhosted.org/packages/db/a0/bf9a1ba34537c2ed3872a48195291138fdec8fe26c4009776f00d63cf0c8/pydantic_core-2.46.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c525ecf8a4cdf198327b65030a7d081867ad8e60acb01a7214fff95cf9832d47", size = 1977040, upload-time = "2026-04-13T09:06:16.088Z" }, + { url = "https://files.pythonhosted.org/packages/71/70/0ba03c20e1e118219fc18c5417b008b7e880f0e3fb38560ec4465984d471/pydantic_core-2.46.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f14581aeb12e61542ce73b9bfef2bca5439d65d9ab3efe1a4d8e346b61838f9b", size = 2055284, upload-time = "2026-04-13T09:05:25.125Z" }, + { url = "https://files.pythonhosted.org/packages/58/cf/1e320acefbde7fb7158a9e5def55e0adf9a4634636098ce28dc6b978e0d3/pydantic_core-2.46.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c108067f2f7e190d0dbd81247d789ec41f9ea50ccd9265a3a46710796ac60530", size = 2238896, upload-time = "2026-04-13T09:05:01.345Z" }, + { url = "https://files.pythonhosted.org/packages/df/f5/ea8ba209756abe9eba891bb0ef3772b4c59a894eb9ad86cd5bd0dd4e3e52/pydantic_core-2.46.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ac10967e9a7bb1b96697374513f9a1a90a59e2fb41566b5e00ee45392beac59", size = 2314353, upload-time = "2026-04-13T09:06:07.942Z" }, + { url = "https://files.pythonhosted.org/packages/e8/f8/5885350203b72e96438eee7f94de0d8f0442f4627237ca8ef75de34db1cd/pydantic_core-2.46.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7897078fe8a13b73623c0955dfb2b3d2c9acb7177aac25144758c9e5a5265aaa", size = 2098522, upload-time = "2026-04-13T09:04:23.239Z" }, + { url = "https://files.pythonhosted.org/packages/bf/88/5930b0e828e371db5a556dd3189565417ddc3d8316bb001058168aadcf5f/pydantic_core-2.46.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:e69ce405510a419a082a78faed65bb4249cfb51232293cc675645c12f7379bf7", size = 2168757, upload-time = "2026-04-13T09:07:12.46Z" }, + { url = "https://files.pythonhosted.org/packages/da/75/63d563d3035a0548e721c38b5b69fd5626fdd51da0f09ff4467503915b82/pydantic_core-2.46.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd28d13eea0d8cf351dc1fe274b5070cc8e1cca2644381dee5f99de629e77cf3", size = 2202518, upload-time = "2026-04-13T09:05:44.418Z" }, + { url = "https://files.pythonhosted.org/packages/a7/53/1958eacbfddc41aadf5ae86dd85041bf054b675f34a2fa76385935f96070/pydantic_core-2.46.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:ee1547a6b8243e73dd10f585555e5a263395e55ce6dea618a078570a1e889aef", size = 2190148, upload-time = "2026-04-13T09:06:56.151Z" }, + { url = "https://files.pythonhosted.org/packages/c7/17/098cc6d3595e4623186f2bc6604a6195eb182e126702a90517236391e9ce/pydantic_core-2.46.0-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:c3dc68dcf62db22a18ddfc3ad4960038f72b75908edc48ae014d7ac8b391d57a", size = 2342925, upload-time = "2026-04-13T09:04:17.286Z" }, + { url = "https://files.pythonhosted.org/packages/71/a7/abdb924620b1ac535c690b36ad5b8871f376104090f8842c08625cecf1d3/pydantic_core-2.46.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:004a2081c881abfcc6854a4623da6a09090a0d7c1398a6ae7133ca1256cee70b", size = 2383167, upload-time = "2026-04-13T09:04:52.643Z" }, + { url = "https://files.pythonhosted.org/packages/d7/c9/2ddd10f50e4b7350d2574629a0f53d8d4eb6573f9c19a6b43e6b1487a31d/pydantic_core-2.46.0-cp313-cp313-win32.whl", hash = "sha256:59d24ec8d5eaabad93097525a69d0f00f2667cb353eb6cda578b1cfff203ceef", size = 1965660, upload-time = "2026-04-13T09:06:05.877Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e7/1efc38ed6f2680c032bcefa0e3ebd496a8c77e92dfdb86b07d0f2fc632b1/pydantic_core-2.46.0-cp313-cp313-win_amd64.whl", hash = "sha256:71186dad5ac325c64d68fe0e654e15fd79802e7cc42bc6f0ff822d5ad8b1ab25", size = 2069563, upload-time = "2026-04-13T09:07:14.738Z" }, + { url = "https://files.pythonhosted.org/packages/c3/1e/a325b4989e742bf7e72ed35fa124bc611fd76539c9f8cd2a9a7854473533/pydantic_core-2.46.0-cp313-cp313-win_arm64.whl", hash = "sha256:8e4503f3213f723842c9a3b53955c88a9cfbd0b288cbd1c1ae933aebeec4a1b4", size = 2034966, upload-time = "2026-04-13T09:04:21.629Z" }, + { url = "https://files.pythonhosted.org/packages/36/3b/914891d384cdbf9a6f464eb13713baa22ea1e453d4da80fb7da522079370/pydantic_core-2.46.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:4fc801c290342350ffc82d77872054a934b2e24163727263362170c1db5416ca", size = 2113349, upload-time = "2026-04-13T09:04:59.407Z" }, + { url = "https://files.pythonhosted.org/packages/35/95/3a0c6f65e231709fb3463e32943c69d10285cb50203a2130a4732053a06d/pydantic_core-2.46.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0a36f2cc88170cc177930afcc633a8c15907ea68b59ac16bd180c2999d714940", size = 1949170, upload-time = "2026-04-13T09:06:09.935Z" }, + { url = "https://files.pythonhosted.org/packages/d1/63/d845c36a608469fe7bee226edeff0984c33dbfe7aecd755b0e7ab5a275c4/pydantic_core-2.46.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a3912e0c568a1f99d4d6d3e41def40179d61424c0ca1c8c87c4877d7f6fd7fb", size = 1977914, upload-time = "2026-04-13T09:04:56.16Z" }, + { url = "https://files.pythonhosted.org/packages/08/6f/f2e7a7f85931fb31671f5378d1c7fc70606e4b36d59b1b48e1bd1ef5d916/pydantic_core-2.46.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3534c3415ed1a19ab23096b628916a827f7858ec8db49ad5d7d1e44dc13c0d7b", size = 2050538, upload-time = "2026-04-13T09:05:06.789Z" }, + { url = "https://files.pythonhosted.org/packages/8c/97/f4aa7181dd9a16dd9059a99fc48fdab0c2aab68307283a5c04cf56de68c4/pydantic_core-2.46.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21067396fc285609323a4db2f63a87570044abe0acddfcca8b135fc7948e3db7", size = 2236294, upload-time = "2026-04-13T09:07:03.2Z" }, + { url = "https://files.pythonhosted.org/packages/24/c1/6a5042fc32765c87101b500f394702890af04239c318b6002cfd627b710d/pydantic_core-2.46.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2afd85b7be186e2fe7cdbb09a3d964bcc2042f65bbcc64ad800b3c7915032655", size = 2312954, upload-time = "2026-04-13T09:06:11.919Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e4/566101a561492ce8454f0844ca29c3b675a6b3a7b3ff577db85ed05c8c50/pydantic_core-2.46.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67e2c2e171b78db8154da602de72ffdc473c6ee51de8a9d80c0f1cd4051abfc7", size = 2102533, upload-time = "2026-04-13T09:06:58.664Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ac/adc11ee1646a5c4dd9abb09a00e7909e6dc25beddc0b1310ca734bb9b48e/pydantic_core-2.46.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c16ae1f3170267b1a37e16dba5c297bdf60c8b5657b147909ca8774ce7366644", size = 2169447, upload-time = "2026-04-13T09:04:11.143Z" }, + { url = "https://files.pythonhosted.org/packages/26/73/408e686b45b82d28ac19e8229e07282254dbee6a5d24c5c7cf3cf3716613/pydantic_core-2.46.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:133b69e1c1ba34d3702eed73f19f7f966928f9aa16663b55c2ebce0893cca42e", size = 2200672, upload-time = "2026-04-13T09:03:54.056Z" }, + { url = "https://files.pythonhosted.org/packages/0a/3b/807d5b035ec891b57b9079ce881f48263936c37bd0d154a056e7fd152afb/pydantic_core-2.46.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:15ed8e5bde505133d96b41702f31f06829c46b05488211a5b1c7877e11de5eb5", size = 2188293, upload-time = "2026-04-13T09:07:07.614Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ed/719b307516285099d1196c52769fdbe676fd677da007b9c349ae70b7226d/pydantic_core-2.46.0-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:8cfc29a1c66a7f0fcb36262e92f353dd0b9c4061d558fceb022e698a801cb8ae", size = 2335023, upload-time = "2026-04-13T09:04:05.176Z" }, + { url = "https://files.pythonhosted.org/packages/8d/90/8718e4ae98c4e8a7325afdc079be82be1e131d7a47cb6c098844a9531ffe/pydantic_core-2.46.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e1155708540f13845bf68d5ac511a55c76cfe2e057ed12b4bf3adac1581fc5c2", size = 2377155, upload-time = "2026-04-13T09:06:18.081Z" }, + { url = "https://files.pythonhosted.org/packages/dd/dc/7172789283b963f81da2fc92b186e22de55687019079f71c4d570822502b/pydantic_core-2.46.0-cp314-cp314-win32.whl", hash = "sha256:de5635a48df6b2eef161d10ea1bc2626153197333662ba4cd700ee7ec1aba7f5", size = 1963078, upload-time = "2026-04-13T09:05:30.615Z" }, + { url = "https://files.pythonhosted.org/packages/e0/69/03a7ea4b6264def3a44eabf577528bcec2f49468c5698b2044dea54dc07e/pydantic_core-2.46.0-cp314-cp314-win_amd64.whl", hash = "sha256:f07a5af60c5e7cf53dd1ff734228bd72d0dc9938e64a75b5bb308ca350d9681e", size = 2068439, upload-time = "2026-04-13T09:04:57.729Z" }, + { url = "https://files.pythonhosted.org/packages/f5/eb/1c3afcfdee2ab6634b802ab0a0f1966df4c8b630028ec56a1cb0a710dc58/pydantic_core-2.46.0-cp314-cp314-win_arm64.whl", hash = "sha256:e7a77eca3c7d5108ff509db20aae6f80d47c7ed7516d8b96c387aacc42f3ce0f", size = 2026470, upload-time = "2026-04-13T09:05:08.654Z" }, + { url = "https://files.pythonhosted.org/packages/5c/30/1177dde61b200785c4739665e3aa03a9d4b2c25d2d0408b07d585e633965/pydantic_core-2.46.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5e7cdd4398bee1aaeafe049ac366b0f887451d9ae418fd8785219c13fea2f928", size = 2107447, upload-time = "2026-04-13T09:05:46.314Z" }, + { url = "https://files.pythonhosted.org/packages/b1/60/4e0f61f99bdabbbc309d364a2791e1ba31e778a4935bc43391a7bdec0744/pydantic_core-2.46.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5c2c92d82808e27cef3f7ab3ed63d657d0c755e0dbe5b8a58342e37bdf09bd2e", size = 1926927, upload-time = "2026-04-13T09:06:20.371Z" }, + { url = "https://files.pythonhosted.org/packages/1d/d0/67f89a8269152c1d6eaa81f04e75a507372ebd8ca7382855a065222caa80/pydantic_core-2.46.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bab80af91cd7014b45d1089303b5f844a9d91d7da60eabf3d5f9694b32a6655", size = 1966613, upload-time = "2026-04-13T09:07:05.389Z" }, + { url = "https://files.pythonhosted.org/packages/cd/07/8dfdc3edc78f29a80fb31f366c50203ec904cff6a4c923599bf50ac0d0ff/pydantic_core-2.46.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1e49ffdb714bc990f00b39d1ad1d683033875b5af15582f60c1f34ad3eeccfaa", size = 2032902, upload-time = "2026-04-13T09:06:42.47Z" }, + { url = "https://files.pythonhosted.org/packages/b0/2a/111c5e8fe24f99c46bcad7d3a82a8f6dbc738066e2c72c04c71f827d8c78/pydantic_core-2.46.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ca877240e8dbdeef3a66f751dc41e5a74893767d510c22a22fc5c0199844f0ce", size = 2244456, upload-time = "2026-04-13T09:05:36.484Z" }, + { url = "https://files.pythonhosted.org/packages/6b/7c/cfc5d11c15a63ece26e148572c77cfbb2c7f08d315a7b63ef0fe0711d753/pydantic_core-2.46.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87e6843f89ecd2f596d7294e33196c61343186255b9880c4f1b725fde8b0e20d", size = 2294535, upload-time = "2026-04-13T09:06:01.689Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2c/f0d744e3dab7bd026a3f4670a97a295157cff923a2666d30a15a70a7e3d0/pydantic_core-2.46.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e20bc5add1dd9bc3b9a3600d40632e679376569098345500799a6ad7c5d46c72", size = 2104621, upload-time = "2026-04-13T09:04:34.388Z" }, + { url = "https://files.pythonhosted.org/packages/a7/64/e7cc4698dc024264d214b51d5a47a2404221b12060dd537d76f831b2120a/pydantic_core-2.46.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:ee6ff79a5f0289d64a9d6696a3ce1f98f925b803dd538335a118231e26d6d827", size = 2130718, upload-time = "2026-04-13T09:04:26.23Z" }, + { url = "https://files.pythonhosted.org/packages/0b/a8/224e655fec21f7d4441438ad2ecaccb33b5a3876ce7bb2098c74a49efc14/pydantic_core-2.46.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:52d35cfb58c26323101c7065508d7bb69bb56338cda9ea47a7b32be581af055d", size = 2180738, upload-time = "2026-04-13T09:05:50.253Z" }, + { url = "https://files.pythonhosted.org/packages/32/7b/b3025618ed4c4e4cbaa9882731c19625db6669896b621760ea95bc1125ef/pydantic_core-2.46.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d14cc5a6f260fa78e124061eebc5769af6534fc837e9a62a47f09a2c341fa4ea", size = 2171222, upload-time = "2026-04-13T09:07:29.929Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e3/68170aa1d891920af09c1f2f34df61dc5ff3a746400027155523e3400e89/pydantic_core-2.46.0-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:4f7ff859d663b6635f6307a10803d07f0d09487e16c3d36b1744af51dbf948b2", size = 2320040, upload-time = "2026-04-13T09:06:35.732Z" }, + { url = "https://files.pythonhosted.org/packages/67/1b/5e65807001b84972476300c1f49aea2b4971b7e9fffb5c2654877dadd274/pydantic_core-2.46.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:8ef749be6ed0d69dba31902aaa8255a9bb269ae50c93888c4df242d8bb7acd9e", size = 2377062, upload-time = "2026-04-13T09:07:39.945Z" }, + { url = "https://files.pythonhosted.org/packages/75/03/48caa9dd5f28f7662bd52bff454d9a451f6b7e5e4af95e289e5e170749c9/pydantic_core-2.46.0-cp314-cp314t-win32.whl", hash = "sha256:d93ca72870133f86360e4bb0c78cd4e6ba2a0f9f3738a6486909ffc031463b32", size = 1951028, upload-time = "2026-04-13T09:04:20.224Z" }, + { url = "https://files.pythonhosted.org/packages/87/ed/e97ff55fe28c0e6e3cba641d622b15e071370b70e5f07c496b07b65db7c9/pydantic_core-2.46.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6ebb2668afd657e2127cb40f2ceb627dd78e74e9dfde14d9bf6cdd532a29ff59", size = 2048519, upload-time = "2026-04-13T09:05:10.464Z" }, + { url = "https://files.pythonhosted.org/packages/b6/51/e0db8267a287994546925f252e329eeae4121b1e77e76353418da5a3adf0/pydantic_core-2.46.0-cp314-cp314t-win_arm64.whl", hash = "sha256:4864f5bbb7993845baf9209bae1669a8a76769296a018cb569ebda9dcb4241f5", size = 2026791, upload-time = "2026-04-13T09:04:37.724Z" }, + { url = "https://files.pythonhosted.org/packages/2d/f1/6731c2d6caf03efe822101edb4783eb3f212f34b7b005a34f039f67e76e1/pydantic_core-2.46.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:ce2e38e27de73ff6a0312a9e3304c398577c418d90bbde97f0ba1ee3ab7ac39f", size = 2121259, upload-time = "2026-04-13T09:07:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/72/fd/ac34d4c92e739e37a040be9e7ea84d116afec5f983a7db856c27135fba77/pydantic_core-2.46.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:f0d34ba062396de0be7421e6e69c9a6821bf6dc73a0ab9959a48a5a6a1e24754", size = 1945798, upload-time = "2026-04-13T09:04:24.729Z" }, + { url = "https://files.pythonhosted.org/packages/b6/a4/f413a522c4047c46b109be6805a3095d35e5a4882fd5b4fdc0909693dfc0/pydantic_core-2.46.0-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4c0a12147b4026dd68789fb9f22f1a8769e457f9562783c181880848bbd6412", size = 1986062, upload-time = "2026-04-13T09:05:57.177Z" }, + { url = "https://files.pythonhosted.org/packages/91/2e/9760025ea8b0f49903c0ceebdfc2d8ef839da872426f2b03cae9de036a7c/pydantic_core-2.46.0-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a99896d9db56df901ab4a63cd6a36348a569cff8e05f049db35f4016a817a3d9", size = 2145344, upload-time = "2026-04-13T09:03:56.924Z" }, + { url = "https://files.pythonhosted.org/packages/74/0c/106ed5cc50393d90523f09adcc50d05e42e748eb107dc06aea971137f02d/pydantic_core-2.46.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:bc0e2fefe384152d7da85b5c2fe8ce2bf24752f68a58e3f3ea42e28a29dfdeb2", size = 2104968, upload-time = "2026-04-13T09:06:26.967Z" }, + { url = "https://files.pythonhosted.org/packages/f5/71/b494cef3165e3413ee9bbbb5a9eedc9af0ea7b88d8638beef6c2061b110e/pydantic_core-2.46.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:a2ab0e785548be1b4362a62c4004f9217598b7ee465f1f420fc2123e2a5b5b02", size = 1940442, upload-time = "2026-04-13T09:06:29.332Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3e/a4d578c8216c443e26a1124f8c1e07c0654264ce5651143d3883d85ff140/pydantic_core-2.46.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16d45aecb18b8cba1c68eeb17c2bb2d38627ceed04c5b30b882fc9134e01f187", size = 1999672, upload-time = "2026-04-13T09:04:42.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c1/9114560468685525a21770138382fd0cb849aaf351ff2c7b97f760d121e0/pydantic_core-2.46.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5078f6c377b002428e984259ac327ef8902aacae6c14b7de740dd4869a491501", size = 2154533, upload-time = "2026-04-13T09:04:50.868Z" }, + { url = "https://files.pythonhosted.org/packages/09/ed/fbd8127e4a19c4fdbb2f4983cf72c7b3534086df640c813c5c0ec4218177/pydantic_core-2.46.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:be3e04979ba4d68183f247202c7f4f483f35df57690b3f875c06340a1579b47c", size = 2119951, upload-time = "2026-04-13T09:04:35.923Z" }, + { url = "https://files.pythonhosted.org/packages/ec/77/df8711ebb45910412f90d75198430fa1120f5618336b71fa00303601c5a4/pydantic_core-2.46.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:b1eae8d7d9b8c2a90b34d3d9014804dca534f7f40180197062634499412ea14e", size = 1953812, upload-time = "2026-04-13T09:05:40.293Z" }, + { url = "https://files.pythonhosted.org/packages/12/fe/14b35df69112bd812d6818a395eeab22eeaa2befc6f85bc54ed648430186/pydantic_core-2.46.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a95a2773680dd4b6b999d4eccdd1b577fd71c31739fb4849f6ada47eabb9c56", size = 2139585, upload-time = "2026-04-13T09:06:46.94Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f0/4fea4c14ebbdeb87e5f6edd2620735fcbd384865f06707fe229c021ce041/pydantic_core-2.46.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25988c3159bb097e06abfdf7b21b1fcaf90f187c74ca6c7bb842c1f72ce74fa8", size = 2179154, upload-time = "2026-04-13T09:04:15.639Z" }, + { url = "https://files.pythonhosted.org/packages/5c/36/6329aa79ba32b73560e6e453164fb29702b115fd3b2b650e796e1dc27862/pydantic_core-2.46.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:747d89bd691854c719a3381ba46b6124ef916ae85364c79e11db9c84995d8d03", size = 2182917, upload-time = "2026-04-13T09:07:24.483Z" }, + { url = "https://files.pythonhosted.org/packages/92/61/edbf7aea71052d410347846a2ea43394f74651bf6822b8fad8703ca00575/pydantic_core-2.46.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:909a7327b83ca93b372f7d48df0ebc7a975a5191eb0b6e024f503f4902c24124", size = 2327716, upload-time = "2026-04-13T09:06:31.681Z" }, + { url = "https://files.pythonhosted.org/packages/a4/11/aa5089b941e85294b1d5d526840b18f0d4464f842d43d8999ce50ef881c1/pydantic_core-2.46.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:2f7e6a3752378a69fadf3f5ee8bc5fa082f623703eec0f4e854b12c548322de0", size = 2365925, upload-time = "2026-04-13T09:05:38.338Z" }, + { url = "https://files.pythonhosted.org/packages/0c/75/e187b0ea247f71f2009d156df88b7d8449c52a38810c9a1bd55dd4871206/pydantic_core-2.46.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:ef47ee0a3ac4c2bb25a083b3acafb171f65be4a0ac1e84edef79dd0016e25eaa", size = 2193856, upload-time = "2026-04-13T09:05:03.114Z" }, ] [[package]] @@ -1415,14 +1420,14 @@ wheels = [ [[package]] name = "scipy-stubs" -version = "1.17.1.3" +version = "1.17.1.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "optype", extra = ["numpy"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/59/59c6cc3f9970154b9ed6b1aff42a0185cdd60cef54adc0404b9e77972221/scipy_stubs-1.17.1.3.tar.gz", hash = "sha256:5eb87a8d23d726706259b012ebe76a4a96a9ae9e141fc59bf55fc8eac2ed9e0f", size = 392185, upload-time = "2026-03-22T22:11:58.34Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/75/d944a11fca64aa84fbb4bfcf613b758319c6103cb30a304a0e9727009d62/scipy_stubs-1.17.1.4.tar.gz", hash = "sha256:cae00c5207aa62ceb4bcadea202d9fbbf002e958f9e4de981720436b8d5c1802", size = 396980, upload-time = "2026-04-13T11:46:54.528Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/d4/94304532c0a75a55526119043dd44a9bd1541a21e14483cbb54261c527d2/scipy_stubs-1.17.1.3-py3-none-any.whl", hash = "sha256:7b91d3f05aa47da06fbca14eb6c5bb4c28994e9245fd250cc847e375bab31297", size = 597933, upload-time = "2026-03-22T22:11:56.525Z" }, + { url = "https://files.pythonhosted.org/packages/92/f8/334aa5a7a482ea89cb14d92f6a4d9ffa1e193e733144d4d14c7ffcb33583/scipy_stubs-1.17.1.4-py3-none-any.whl", hash = "sha256:e6e5c390fb864745bc3d5f591de81f5cb4f84403857d4f660acb5b6339956f5b", size = 604752, upload-time = "2026-04-13T11:46:53.135Z" }, ] [[package]] @@ -1549,7 +1554,7 @@ wheels = [ [[package]] name = "sphinx-autodoc-typehints" -version = "3.10.0" +version = "3.10.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and sys_platform == 'win32'", @@ -1562,9 +1567,9 @@ resolution-markers = [ dependencies = [ { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/58/2f/6152d2e409ffaab18b397ac1cde0920dc071f9afb76125a2d496c80b9976/sphinx_autodoc_typehints-3.10.0.tar.gz", hash = "sha256:7b821a123852176b2ed4f2cb9da8db06531a15b8098a4c7350c68febb7669bd0", size = 72801, upload-time = "2026-04-09T18:05:16.389Z" } +sdist = { url = "https://files.pythonhosted.org/packages/92/71/f9375ce1ef3548c3b1fe42ed0706d8a86a96f34cd04de0507eda05488a9b/sphinx_autodoc_typehints-3.10.1.tar.gz", hash = "sha256:2c750dcab949098eb46e17171abbdf3a19bd2581709efa091b4590da99e68346", size = 73190, upload-time = "2026-04-13T16:05:39.985Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/e9/b75897138c5611213472b5726dbb6106ac6192dd31f219cd154bacefa498/sphinx_autodoc_typehints-3.10.0-py3-none-any.whl", hash = "sha256:2176424f9e1ce3054d9016ac16b51d4b9febffd8cad8ece3b7912b2c4646759f", size = 38703, upload-time = "2026-04-09T18:05:14.923Z" }, + { url = "https://files.pythonhosted.org/packages/65/f9/eddd31fa106c022645dbd238959844c9db820781fd513754ecadde1e90ef/sphinx_autodoc_typehints-3.10.1-py3-none-any.whl", hash = "sha256:0ac4ee9e1f264517b7e163cf7beabf5a3c55dbd6c6fe25c0b12f3707f3d3eb95", size = 38839, upload-time = "2026-04-13T16:05:38.511Z" }, ] [[package]]