Compare commits

...

127 Commits

Author SHA1 Message Date
Matthias 9adf0316f1 Merge pull request #13179 from freqtrade/dependabot/pip/develop/uvicorn-0.47.0
chore(deps): bump uvicorn from 0.46.0 to 0.47.0
2026-05-25 10:00:07 +02:00
Matthias 830166e1c7 Merge pull request #13182 from freqtrade/dependabot/github_actions/develop/zizmorcore/zizmor-action-0.5.6
chore(deps): bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6
2026-05-25 09:59:49 +02:00
Matthias 50aaf2cfc9 Merge pull request #13187 from freqtrade/dependabot/pip/develop/types-96391afc29
chore(deps-dev): bump the types group across 1 directory with 3 updates
2026-05-25 09:57:48 +02:00
Matthias 1b741f9c58 Merge pull request #13186 from freqtrade/dependabot/pip/develop/pandas-3.0.3
chore(deps): bump pandas from 3.0.2 to 3.0.3
2026-05-25 09:53:50 +02:00
Matthias 606f3b7dfe Merge pull request #13181 from freqtrade/dependabot/pip/develop/requests-2.34.2
chore(deps): bump requests from 2.33.1 to 2.34.2
2026-05-25 09:53:35 +02:00
Matthias 2d9b13e65a Merge pull request #13180 from freqtrade/dependabot/pip/develop/mypy-2.1.0
chore(deps-dev): bump mypy from 2.0.0 to 2.1.0
2026-05-25 09:40:04 +02:00
dependabot[bot] 1a476c4078 chore(deps): bump requests from 2.33.1 to 2.34.2
Bumps [requests](https://github.com/psf/requests) from 2.33.1 to 2.34.2.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.33.1...v2.34.2)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.34.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 07:14:52 +00:00
dependabot[bot] 0c1c0990e8 chore(deps): bump uvicorn from 0.46.0 to 0.47.0
Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.46.0 to 0.47.0.
- [Release notes](https://github.com/Kludex/uvicorn/releases)
- [Changelog](https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md)
- [Commits](https://github.com/Kludex/uvicorn/compare/0.46.0...0.47.0)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-version: 0.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 07:14:51 +00:00
Freqtrade Bot be37cafcb9 chore(deps): Apply pre-commit types update 2026-05-25 06:56:04 +00:00
dependabot[bot] 87a9f11773 chore(deps): bump pandas from 3.0.2 to 3.0.3
Bumps [pandas](https://github.com/pandas-dev/pandas) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](https://github.com/pandas-dev/pandas/compare/v3.0.2...v3.0.3)

---
updated-dependencies:
- dependency-name: pandas
  dependency-version: 3.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 06:53:42 +00:00
dependabot[bot] 0fedcf9eb1 chore(deps): bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6
Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.5.3 to 0.5.6.
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/b1d7e1fb5de872772f31590499237e7cce841e8e...5f14fd08f7cf1cb1609c1e344975f152c7ee938d)

---
updated-dependencies:
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 06:49:57 +00:00
dependabot[bot] a54464905b chore(deps-dev): bump the types group across 1 directory with 3 updates
Bumps the types group with 3 updates in the / directory: [types-cachetools](https://github.com/python/typeshed), [types-requests](https://github.com/python/typeshed) and [types-python-dateutil](https://github.com/python/typeshed).


Updates `types-cachetools` from 7.0.0.20260503 to 7.0.0.20260518
- [Commits](https://github.com/python/typeshed/commits)

Updates `types-requests` from 2.33.0.20260508 to 2.33.0.20260518
- [Commits](https://github.com/python/typeshed/commits)

Updates `types-python-dateutil` from 2.9.0.20260508 to 2.9.0.20260518
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-cachetools
  dependency-version: 7.0.0.20260518
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
- dependency-name: types-requests
  dependency-version: 2.33.0.20260518
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
- dependency-name: types-python-dateutil
  dependency-version: 2.9.0.20260518
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 06:43:40 +00:00
Matthias 7c8aeed806 Merge pull request #13183 from freqtrade/dependabot/pip/develop/numpy-2.4.5
chore(deps): bump numpy from 2.4.4 to 2.4.5
2026-05-25 08:42:59 +02:00
dependabot[bot] bd706557bd chore(deps-dev): bump mypy from 2.0.0 to 2.1.0
Bumps [mypy](https://github.com/python/mypy) from 2.0.0 to 2.1.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-version: 2.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 06:38:34 +00:00
Matthias d657a9760a Merge pull request #13178 from freqtrade/dependabot/pip/develop/cachetools-7.1.2
chore(deps): bump cachetools from 7.1.1 to 7.1.2
2026-05-25 08:38:06 +02:00
Matthias 0333e7e227 Merge pull request #13184 from freqtrade/dependabot/github_actions/develop/codecov/codecov-action-6.0.1
chore(deps): bump codecov/codecov-action from 6.0.0 to 6.0.1
2026-05-25 08:24:23 +02:00
dependabot[bot] 90945675bc chore(deps): bump numpy from 2.4.4 to 2.4.5
Bumps [numpy](https://github.com/numpy/numpy) from 2.4.4 to 2.4.5.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.4.4...v2.4.5)

---
updated-dependencies:
- dependency-name: numpy
  dependency-version: 2.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 06:22:25 +00:00
Matthias d3713cbf09 fix: typo 2026-05-25 08:21:21 +02:00
Matthias 9003d5e9e0 fix: disable failing okx live test 2026-05-25 08:19:34 +02:00
dependabot[bot] 7b197aa974 chore(deps): bump codecov/codecov-action from 6.0.0 to 6.0.1
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/57e3a136b779b570ffcdbf80b3bdc90e7fab3de2...e79a6962e0d4c0c17b229090214935d2e33f8354)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 03:25:14 +00:00
dependabot[bot] ec65c88797 chore(deps): bump cachetools from 7.1.1 to 7.1.2
Bumps [cachetools](https://github.com/tkem/cachetools) from 7.1.1 to 7.1.2.
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v7.1.1...v7.1.2)

---
updated-dependencies:
- dependency-name: cachetools
  dependency-version: 7.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 03:24:40 +00:00
Matthias ba6627cd13 chore: update schedule for pre-commit update 2026-05-24 08:59:54 +02:00
Matthias 22a6fdab13 Merge pull request #13161 from ducky-duke/fix/historic-balance-bot-managed-bool
fix: /api/v1/historic_balance returns 500 on MySQL/MariaDB backends
2026-05-23 20:58:58 +02:00
Matthias 580e5b945f test: improve test for bot_balance from mariadb 2026-05-23 20:43:13 +02:00
Matthias 83649ab787 chore: revert unnecessary comment 2026-05-23 20:39:57 +02:00
Matthias 8165fd6310 Merge pull request #13166 from stash86/main-stash
add return type of check_delisting docs section
2026-05-22 17:07:52 +02:00
Stefano 6cf46338ef add return type of check_delisting docs section 2026-05-22 16:53:27 +09:00
Matthias 0d84e80eb7 Merge pull request #13163 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2026-05-21 06:30:27 +02:00
Freqtrade Bot 476abf80cc chore: update binance leverage tiers 2026-05-21 03:38:09 +00:00
ducky-duke a03ebc8472 fix: coerce bot_managed to bool in _rpc_get_historic_balance
read_sql may return the wallet_history `bot_managed` Boolean column as an
integer dtype (e.g. MySQL/MariaDB TINYINT). results.loc[results["bot_managed"]]
then does label-based indexing instead of boolean masking, raising a KeyError
on GET /api/v1/historic_balance (HTTP 500). Coerce with .astype(bool).
2026-05-20 17:57:59 +07:00
Matthias 1182c03b73 Merge pull request #13160 from freqtrade/dependabot/pip/pymdown-extensions-10.21.3
chore(deps): bump pymdown-extensions from 10.21.2 to 10.21.3
2026-05-20 06:31:34 +02:00
Matthias 2152fd7325 chore: temporarily decrase cooldown for pymdown 2026-05-20 06:16:15 +02:00
dependabot[bot] c7f84403d8 chore(deps): bump pymdown-extensions from 10.21.2 to 10.21.3
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.21.2 to 10.21.3.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.21.2...10.21.3)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-version: 10.21.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 21:43:30 +00:00
Matthias 6dcea8bac1 Merge pull request #13158 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2026-05-19 06:44:17 +02:00
Matthias 217a71b834 chore: temporarily revert the zizmor pre-commit update 2026-05-19 06:31:07 +02:00
Freqtrade Bot cf578a4b76 chore: update pre-commit hooks 2026-05-19 04:17:16 +00:00
Matthias f645d3e21a fix: live pair data must respect end-date 2026-05-18 18:25:14 +02:00
Matthias 9c480b4f4d chore: remove urlilb3 newer exclusion 2026-05-18 18:00:52 +02:00
Matthias 3a714cef14 Merge pull request #13154 from freqtrade/dependabot/pip/develop/ccxt-4.5.54
chore(deps): bump ccxt from 4.5.52 to 4.5.54
2026-05-18 06:57:08 +02:00
Matthias d67b54bcb5 chore(ci): work around powershell install failure
happens on northcentralus region (sometimes) ...
2026-05-18 06:34:13 +02:00
Matthias 9aebce306d Merge pull request #13151 from freqtrade/dependabot/pip/develop/types-83c091f25c
chore(deps-dev): bump the types group with 3 updates
2026-05-18 06:26:57 +02:00
Matthias 8e7aed5013 Merge pull request #13157 from freqtrade/dependabot/pip/develop/pydantic-2.13.4
chore(deps): bump pydantic from 2.13.3 to 2.13.4
2026-05-18 06:21:45 +02:00
dependabot[bot] 4cee997d11 chore(deps): bump ccxt from 4.5.52 to 4.5.54
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.5.52 to 4.5.54.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Commits](https://github.com/ccxt/ccxt/compare/v4.5.52...v4.5.54)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-version: 4.5.54
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 04:21:17 +00:00
Matthias 806a11c63a Merge pull request #13156 from freqtrade/dependabot/pip/develop/orjson-3.11.9
chore(deps): bump orjson from 3.11.8 to 3.11.9
2026-05-18 06:19:39 +02:00
Matthias 2e760ae1c5 Merge pull request #13155 from freqtrade/dependabot/pip/develop/mypy-2.0.0
chore(deps-dev): bump mypy from 1.20.2 to 2.0.0
2026-05-18 06:19:20 +02:00
Matthias 674b2c11bd Merge pull request #13153 from freqtrade/dependabot/pip/develop/cryptography-48.0.0
chore(deps): bump cryptography from 47.0.0 to 48.0.0
2026-05-18 06:19:00 +02:00
Freqtrade Bot 5a5dae22d3 chore(deps): Apply pre-commit types update 2026-05-18 03:33:22 +00:00
dependabot[bot] 0a1498af2d chore(deps): bump pydantic from 2.13.3 to 2.13.4
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.13.3 to 2.13.4.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-version: 2.13.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 03:29:40 +00:00
dependabot[bot] e8cdbf0a8e chore(deps): bump orjson from 3.11.8 to 3.11.9
Bumps [orjson](https://github.com/ijl/orjson) from 3.11.8 to 3.11.9.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.11.8...3.11.9)

---
updated-dependencies:
- dependency-name: orjson
  dependency-version: 3.11.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 03:29:32 +00:00
dependabot[bot] c0ee618bd0 chore(deps-dev): bump mypy from 1.20.2 to 2.0.0
Bumps [mypy](https://github.com/python/mypy) from 1.20.2 to 2.0.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.20.2...v2.0.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-version: 2.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 03:29:14 +00:00
dependabot[bot] a4ed0a03f1 chore(deps): bump cryptography from 47.0.0 to 48.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 47.0.0 to 48.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/47.0.0...48.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 48.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 03:28:58 +00:00
dependabot[bot] 25d8d831ec chore(deps-dev): bump the types group with 3 updates
Bumps the types group with 3 updates: [types-requests](https://github.com/python/typeshed), [types-tabulate](https://github.com/python/typeshed) and [types-python-dateutil](https://github.com/python/typeshed).


Updates `types-requests` from 2.33.0.20260503 to 2.33.0.20260508
- [Commits](https://github.com/python/typeshed/commits)

Updates `types-tabulate` from 0.10.0.20260408 to 0.10.0.20260508
- [Commits](https://github.com/python/typeshed/commits)

Updates `types-python-dateutil` from 2.9.0.20260408 to 2.9.0.20260508
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-version: 2.33.0.20260508
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
- dependency-name: types-tabulate
  dependency-version: 0.10.0.20260508
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
- dependency-name: types-python-dateutil
  dependency-version: 2.9.0.20260508
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 03:28:08 +00:00
Matthias 3d91223c2b refactor: further improve hyper function wording 2026-05-17 20:17:43 +02:00
Matthias 875daac375 refactor: improve naming to reflect method functionality 2026-05-17 20:13:42 +02:00
Matthias 03fac42047 chore: fix docstring typo 2026-05-17 17:20:38 +02:00
Matthias 5bcc4fbf03 Merge pull request #13147 from freqtrade/dependabot/docker/python-3.14.5-slim-trixie
chore(deps): bump python from 3.14.3-slim-trixie to 3.14.5-slim-trixie
2026-05-15 06:31:31 +02:00
dependabot[bot] 0ea2258fa8 chore(deps): bump python from 3.14.3-slim-trixie to 3.14.5-slim-trixie
Bumps python from 3.14.3-slim-trixie to 3.14.5-slim-trixie.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.14.5-slim-trixie
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-15 03:15:25 +00:00
Matthias a0627aa2fc docs: improve freqai docs formatting 2026-05-14 19:14:05 +02:00
Matthias 764b32a0cf Merge pull request #13145 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2026-05-14 06:21:48 +02:00
Freqtrade Bot fc634f42f6 chore: update binance leverage tiers 2026-05-14 03:37:42 +00:00
Matthias 8cce4be23c Merge pull request #13141 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2026-05-12 06:29:32 +02:00
Freqtrade Bot 11ab80bfc4 chore: update pre-commit hooks 2026-05-12 04:15:44 +00:00
Matthias e00a1fd28c Merge pull request #13140 from freqtrade/dependabot/pip/urllib3-2.7.0
chore(deps): bump urllib3 from 2.6.3 to 2.7.0
2026-05-11 19:36:08 +02:00
Matthias b132a49f40 chore(ci): use better name for mypy-version-update 2026-05-11 19:23:17 +02:00
Matthias f82e4ce9ec chore: urllib exclude for security fix 2026-05-11 19:17:13 +02:00
Matthias fac00475a1 Merge pull request #13132 from freqtrade/dependabot/pip/develop/types-67d33dbf9b
chore(deps-dev): bump the types group across 1 directory with 2 updates
2026-05-11 19:16:02 +02:00
Matthias 2ac99fc2bf chore: switch environment for security 2026-05-11 19:15:20 +02:00
Freqtrade Bot d935de08fe Apply pre-commit types update 2026-05-11 16:36:09 +00:00
Matthias a92e0b2545 chore(ci): improved condition syntax 2026-05-11 18:34:32 +02:00
Matthias 8abdd496f6 chore: fix pre-commit updates misconception 2026-05-11 18:32:11 +02:00
dependabot[bot] 443a245d82 chore(deps-dev): bump the types group across 1 directory with 2 updates
Bumps the types group with 2 updates in the / directory: [types-cachetools](https://github.com/python/typeshed) and [types-requests](https://github.com/python/typeshed).


Updates `types-cachetools` from 6.2.0.20260408 to 7.0.0.20260503
- [Commits](https://github.com/python/typeshed/commits)

Updates `types-requests` from 2.33.0.20260408 to 2.33.0.20260503
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-cachetools
  dependency-version: 7.0.0.20260503
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: types
- dependency-name: types-requests
  dependency-version: 2.33.0.20260503
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 16:18:16 +00:00
Matthias d95789a2e0 feat(ci): add pre-commit types update workflow 2026-05-11 18:13:06 +02:00
Matthias 3a4adfac52 feat: auto-update pre-commit config 2026-05-11 18:05:52 +02:00
Matthias 523216a39c fix: work around to_json pandas deprecation 2026-05-11 18:05:35 +02:00
Matthias e5d4fd6b62 chore: simplify rpc code 2026-05-11 18:05:21 +02:00
dependabot[bot] 939ea01d12 chore(deps): bump urllib3 from 2.6.3 to 2.7.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.7.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 16:04:30 +00:00
Matthias c587a1ccda Merge pull request #13136 from freqtrade/dependabot/pip/develop/ccxt-4.5.52
chore(deps): bump ccxt from 4.5.51 to 4.5.52
2026-05-11 06:38:12 +02:00
Matthias 6751b8e468 Merge pull request #13134 from freqtrade/dependabot/pip/develop/cachetools-7.1.1
chore(deps): bump cachetools from 7.0.6 to 7.1.1
2026-05-11 06:34:59 +02:00
Matthias ef1dca92eb Merge pull request #13137 from freqtrade/dependabot/pip/develop/pytz-2026.2
chore(deps): bump pytz from 2026.1.post1 to 2026.2
2026-05-11 06:34:49 +02:00
Matthias 0e33e69d8e Merge pull request #13135 from freqtrade/dependabot/pip/develop/build-1.5.0
chore(deps-dev): bump build from 1.4.4 to 1.5.0
2026-05-11 06:34:31 +02:00
dependabot[bot] 021011df31 chore(deps): bump pytz from 2026.1.post1 to 2026.2
Bumps [pytz](https://github.com/stub42/pytz) from 2026.1.post1 to 2026.2.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2026.1.post1...release_2026.2)

---
updated-dependencies:
- dependency-name: pytz
  dependency-version: '2026.2'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 03:04:36 +00:00
dependabot[bot] c2e89e5f11 chore(deps): bump ccxt from 4.5.51 to 4.5.52
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.5.51 to 4.5.52.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Commits](https://github.com/ccxt/ccxt/compare/v4.5.51...v4.5.52)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-version: 4.5.52
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 03:04:29 +00:00
dependabot[bot] ba89faab6a chore(deps-dev): bump build from 1.4.4 to 1.5.0
Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.
- [Release notes](https://github.com/pypa/build/releases)
- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/build/compare/1.4.4...1.5.0)

---
updated-dependencies:
- dependency-name: build
  dependency-version: 1.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 03:04:16 +00:00
dependabot[bot] ef38cb325b chore(deps): bump cachetools from 7.0.6 to 7.1.1
Bumps [cachetools](https://github.com/tkem/cachetools) from 7.0.6 to 7.1.1.
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v7.0.6...v7.1.1)

---
updated-dependencies:
- dependency-name: cachetools
  dependency-version: 7.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-11 03:03:56 +00:00
Matthias e0df17ef33 chore: take some endpoints out of alpha 2026-05-10 15:07:58 +02:00
Matthias c2578dca06 chore: update json schema 2026-05-09 09:09:32 +02:00
Matthias c8605ae8fb fix: require minimum 32 characters for JWT secrets 2026-05-09 08:55:35 +02:00
Matthias 22ef7697e8 chore: remove unused variable 2026-05-09 08:34:49 +02:00
Matthias 77cabd291f Merge pull request #13128 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2026-05-07 07:48:26 +02:00
Freqtrade Bot 59b47a9a67 chore: update binance leverage tiers 2026-05-07 03:37:17 +00:00
Matthias e8eb5cdb4c Merge pull request #13115 from freqtrade/dependabot/pip/develop/uvicorn-0.46.0
chore(deps): bump uvicorn from 0.44.0 to 0.46.0
2026-05-04 09:31:26 +02:00
Matthias c9274a7d04 Merge pull request #13116 from freqtrade/dependabot/pip/develop/ruff-0.15.12
chore(deps-dev): bump ruff from 0.15.11 to 0.15.12
2026-05-04 07:57:25 +02:00
dependabot[bot] c6a481a2dc chore(deps): bump uvicorn from 0.44.0 to 0.46.0
Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.44.0 to 0.46.0.
- [Release notes](https://github.com/Kludex/uvicorn/releases)
- [Changelog](https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md)
- [Commits](https://github.com/Kludex/uvicorn/compare/0.44.0...0.46.0)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-version: 0.46.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 05:49:07 +00:00
Matthias 0188d68a85 Merge pull request #13120 from freqtrade/dependabot/pip/develop/fastapi-0.136.1
chore(deps): bump fastapi from 0.136.0 to 0.136.1
2026-05-04 07:47:49 +02:00
Matthias 10c2ec39db Merge pull request #13122 from freqtrade/dependabot/pip/develop/cachetools-7.0.6
chore(deps): bump cachetools from 7.0.5 to 7.0.6
2026-05-04 07:43:53 +02:00
Matthias d0bf09b7e1 Merge pull request #13121 from freqtrade/dependabot/pip/develop/ccxt-4.5.51
chore(deps): bump ccxt from 4.5.50 to 4.5.51
2026-05-04 07:37:35 +02:00
Matthias d2cbae6f50 Merge pull request #13117 from freqtrade/dependabot/pip/develop/pyarrow-24.0.0
chore(deps): bump pyarrow from 23.0.1 to 24.0.0
2026-05-04 07:36:39 +02:00
dependabot[bot] 7e41443db8 chore(deps-dev): bump ruff from 0.15.11 to 0.15.12
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.11 to 0.15.12.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 05:33:30 +00:00
Matthias 011098209a Merge pull request #13118 from freqtrade/dependabot/pip/develop/pre-commit-4.6.0
chore(deps-dev): bump pre-commit from 4.5.1 to 4.6.0
2026-05-04 07:29:31 +02:00
dependabot[bot] 885a147b48 chore(deps): bump ccxt from 4.5.50 to 4.5.51
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.5.50 to 4.5.51.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Commits](https://github.com/ccxt/ccxt/compare/v4.5.50...v4.5.51)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-version: 4.5.51
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 04:50:13 +00:00
Matthias 1ad03ecb13 Merge pull request #13119 from freqtrade/dependabot/pip/develop/cryptography-47.0.0
chore(deps): bump cryptography from 46.0.7 to 47.0.0
2026-05-04 06:42:38 +02:00
Matthias c46272a7fc chore(dependabot): group bymnasium/sb3 dependencies 2026-05-04 06:41:47 +02:00
Matthias 1d8034ab66 chore: package naming in freqai-rl 2026-05-04 06:41:47 +02:00
Matthias 0b12dcfec9 chore: bump pyarrow armv7 wheel 2026-05-04 06:35:55 +02:00
dependabot[bot] cf541f8e7c chore(deps): bump fastapi from 0.136.0 to 0.136.1
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.136.0 to 0.136.1.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.136.0...0.136.1)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-version: 0.136.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 04:35:04 +00:00
dependabot[bot] 7c46980e9d chore(deps): bump cachetools from 7.0.5 to 7.0.6
Bumps [cachetools](https://github.com/tkem/cachetools) from 7.0.5 to 7.0.6.
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v7.0.5...v7.0.6)

---
updated-dependencies:
- dependency-name: cachetools
  dependency-version: 7.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 04:34:50 +00:00
dependabot[bot] 7c9554349d chore(deps-dev): bump pre-commit from 4.5.1 to 4.6.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 4.5.1 to 4.6.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-version: 4.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 04:33:58 +00:00
Matthias 2d3ccb841d Merge pull request #13114 from freqtrade/dependabot/pip/develop/certifi-2026.4.22
chore(deps): bump certifi from 2026.2.25 to 2026.4.22
2026-05-04 06:33:43 +02:00
Matthias 68768748dc Merge pull request #13113 from freqtrade/dependabot/pip/develop/pydantic-2.13.3
chore(deps): bump pydantic from 2.13.2 to 2.13.3
2026-05-04 06:33:17 +02:00
Matthias 0b0a4e5df1 Merge pull request #13112 from freqtrade/dependabot/pip/develop/mypy-1.20.2
chore(deps-dev): bump mypy from 1.20.1 to 1.20.2
2026-05-04 06:33:04 +02:00
Matthias 2b47d2e91d Merge pull request #13111 from freqtrade/dependabot/pip/develop/build-1.4.4
chore(deps-dev): bump build from 1.4.3 to 1.4.4
2026-05-04 06:32:27 +02:00
Matthias 60cbf93b8f Merge pull request #13110 from freqtrade/dependabot/pip/develop/packaging-26.2
chore(deps): bump packaging from 26.1 to 26.2
2026-05-04 06:32:18 +02:00
dependabot[bot] 1b67a5b533 chore(deps): bump cryptography from 46.0.7 to 47.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.7 to 47.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.7...47.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 47.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 03:04:35 +00:00
dependabot[bot] 30832e702c chore(deps): bump pyarrow from 23.0.1 to 24.0.0
Bumps [pyarrow](https://github.com/apache/arrow) from 23.0.1 to 24.0.0.
- [Release notes](https://github.com/apache/arrow/releases)
- [Commits](https://github.com/apache/arrow/compare/apache-arrow-23.0.1...apache-arrow-24.0.0)

---
updated-dependencies:
- dependency-name: pyarrow
  dependency-version: 24.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 03:04:22 +00:00
dependabot[bot] 8c8738e5f9 chore(deps): bump certifi from 2026.2.25 to 2026.4.22
Bumps [certifi](https://github.com/certifi/python-certifi) from 2026.2.25 to 2026.4.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2026.02.25...2026.04.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2026.4.22
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 03:03:49 +00:00
dependabot[bot] f72d734e8c chore(deps): bump pydantic from 2.13.2 to 2.13.3
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.13.2 to 2.13.3.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-version: 2.13.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 03:03:44 +00:00
dependabot[bot] 110ffde14e chore(deps-dev): bump mypy from 1.20.1 to 1.20.2
Bumps [mypy](https://github.com/python/mypy) from 1.20.1 to 1.20.2.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.20.1...v1.20.2)

---
updated-dependencies:
- dependency-name: mypy
  dependency-version: 1.20.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 03:03:35 +00:00
dependabot[bot] 2d0ab2d973 chore(deps-dev): bump build from 1.4.3 to 1.4.4
Bumps [build](https://github.com/pypa/build) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/pypa/build/releases)
- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/build/compare/1.4.3...1.4.4)

---
updated-dependencies:
- dependency-name: build
  dependency-version: 1.4.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 03:03:27 +00:00
dependabot[bot] 8e9615ba6c chore(deps): bump packaging from 26.1 to 26.2
Bumps [packaging](https://github.com/pypa/packaging) from 26.1 to 26.2.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/26.1...26.2)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.2'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 03:03:19 +00:00
Matthias 55244fb098 Merge pull request #13109 from dtmkeng/improve/maxsize-marketcappairlist
fix: increase marketcap cache size to improve performance
2026-05-03 19:16:28 +02:00
dtmkeng 2087e04a62 fix: reduce marketcap cache size to optimize memory usage 2026-05-03 15:22:31 +07:00
Matthias 5ecd64d17e fix: realized_profit calculation for open trades
while the trade is open, funding fees need to be added on every exit
this keeps realized_profit in line with prior close profits.

closes #13102
2026-05-03 08:50:03 +02:00
dtmkeng 047a107ff3 fix: increase marketcap cache size to improve performance 2026-05-03 02:36:06 +07:00
Matthias 4acdb2eb0c chore: ensure __repr__ always has an order side 2026-05-02 16:25:13 +02:00
Matthias 58a18e1e9c fix: use "toint" for show-trades 2026-05-02 16:21:54 +02:00
Matthias 17b5e9bac7 chore: minor typo fix 2026-05-02 08:27:08 +02:00
Matthias 610d03570c chore: bump version to 2026.5-dev 2026-04-30 07:13:14 +02:00
37 changed files with 7287 additions and 3848 deletions
+5 -1
View File
@@ -49,7 +49,11 @@ updates:
patterns:
- "scipy"
- "scipy-stubs"
gymnasium:
patterns:
- "gymnasium"
- "stable-baselines3"
- "sb3-contrib"
- package-ecosystem: "github-actions"
directory: "/"
cooldown:
+5 -2
View File
@@ -68,7 +68,7 @@ jobs:
run: |
pytest --random-order --cov=freqtrade --cov=freqtrade_client --cov-config=.coveragerc
- uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
- uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-24.04')
with:
fail_ci_if_error: true
@@ -150,7 +150,10 @@ jobs:
run: |
$PSVersionTable
Get-PSRepository | Format-List *
Set-PSRepository psgallery -InstallationPolicy trusted
if (-not (Get-PSRepository -Name PSGallery -ErrorAction SilentlyContinue)) {
Register-PSRepository -Default
}
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module -Name Pester -RequiredVersion 5.7.1 -Confirm:$false -Force -SkipPublisherCheck
$Error.clear()
Invoke-Pester -Path "tests" -CI
@@ -0,0 +1,53 @@
name: Pre-commit Types update
on:
pull_request:
branches:
- "develop"
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}"
cancel-in-progress: true
permissions: {}
jobs:
mypy-version-update:
name: "Pre-commit mypy type versions update"
runs-on: ubuntu-24.04
# Only run this job for pull requests created by dependabot[bot]
if: >
github.event.pull_request.user.login == 'dependabot[bot]' &&
github.repository == github.event.pull_request.head.repo.full_name &&
github.event_name == 'pull_request' &&
startsWith(github.head_ref, 'dependabot/')
environment:
name: dependabot-pulls
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: true
token: ${{ secrets.REPO_SCOPED_TOKEN_DEP }}
ref: ${{ github.head_ref || github.ref }}
- name: Install uv and Python 🐍
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
activate-environment: true
python-version: "3.13"
- name: Install PyYAML
run: |
- name: pre-commit dependencies
run: |
uv pip install $(grep -E "^pyyaml==" requirements-dev.txt)
python build_helpers/pre_commit_update.py --update
- uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9 # v7
with:
commit_message: "chore(deps): Apply pre-commit types update"
commit_user_name: Freqtrade Bot
commit_user_email: 154552126+freqtrade-bot@users.noreply.github.com
commit_author: Freqtrade Bot <154552126+freqtrade-bot@users.noreply.github.com>
+1 -1
View File
@@ -2,7 +2,7 @@ name: Pre-commit auto-update
on:
schedule:
- cron: "0 3 * * 2"
- cron: "13 1 * * 2"
# on demand
workflow_dispatch:
+1 -1
View File
@@ -31,4 +31,4 @@ jobs:
persist-credentials: false
- name: Run zizmor 🌈
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3
uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
+6 -6
View File
@@ -15,23 +15,23 @@ repos:
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v1.20.2"
rev: "v2.1.0"
hooks:
- id: mypy
exclude: build_helpers
additional_dependencies:
- types-cachetools==6.2.0.20260408
- types-cachetools==7.0.0.20260518
- types-filelock==3.2.7
- types-requests==2.33.0.20260408
- types-tabulate==0.10.0.20260408
- types-python-dateutil==2.9.0.20260408
- types-requests==2.33.0.20260518
- types-tabulate==0.10.0.20260508
- types-python-dateutil==2.9.0.20260518
- scipy-stubs==1.17.1.4
- SQLAlchemy==2.0.49
# stages: [push]
- repo: https://github.com/charliermarsh/ruff-pre-commit
# Ruff version.
rev: 'v0.15.12'
rev: 'v0.15.13'
hooks:
- id: ruff
- id: ruff-format
+1 -1
View File
@@ -1,4 +1,4 @@
FROM python:3.14.3-slim-trixie AS base
FROM python:3.14.5-slim-trixie AS base
# Setup env
ENV LANG=C.UTF-8
+42 -2
View File
@@ -1,5 +1,7 @@
# File used in CI to ensure pre-commit dependencies are kept up-to-date.
import argparse
import re
import sys
from pathlib import Path
@@ -10,6 +12,24 @@ pre_commit_file = Path(".pre-commit-config.yaml")
require_dev = Path("requirements-dev.txt")
require = Path("requirements.txt")
parser = argparse.ArgumentParser()
parser.add_argument("--update", action="store_true")
args = parser.parse_args()
def replace_dependency_version(pre_commit_text: str, dependency: str) -> tuple[str, bool]:
"""
Regex-based replacement of a dependency version in the pre-commit config file.
using regex here ensures we only replace the version of the dependency while
keeping the overall file intact.
"""
package_name = dependency.split("==", 1)[0]
pattern = re.compile(rf"^(\s*-\s+){re.escape(package_name)}==.*$", re.MULTILINE)
updated_text, replacements = pattern.subn(rf"\1{dependency}", pre_commit_text, count=1)
return updated_text, replacements > 0 and updated_text != pre_commit_text
with require_dev.open("r") as rfile:
requirements = rfile.readlines()
@@ -23,6 +43,18 @@ supported = ("types-", "SQLAlchemy", "scipy-stubs")
# Only keep the first part of the line up to the first space
type_reqs = [r.strip("\n").split()[0] for r in requirements if r.startswith(supported)]
with pre_commit_file.open("r") as file:
pre_commit_text = file.read()
updated = False
for req in type_reqs:
pre_commit_text, req_updated = replace_dependency_version(pre_commit_text, req)
updated = updated or req_updated
if args.update and updated:
with pre_commit_file.open("w") as file:
file.write(pre_commit_text)
with pre_commit_file.open("r") as file:
f = yaml.load(file, Loader=yaml.SafeLoader)
@@ -40,12 +72,20 @@ for hook in hooks:
for req in type_reqs:
if req not in hooks:
errors.append(f"{req} is missing in pre-config file.")
errors.append(f"{req} is missing in pre-commit config file.")
if updated:
if args.update:
errors.append(".pre-commit-config.yaml was updated to match the requirements files.")
else:
errors.append(
".pre-commit-config.yaml is outdated. Run build_helpers/pre_commit_update.py --update."
)
if errors:
for e in errors:
print(e)
sys.exit(1)
sys.exit(1 if not (args.update and updated) else 0)
sys.exit(0)
+2 -1
View File
@@ -1063,7 +1063,8 @@
"jwt_secret_key": {
"description": "Secret key for JWT authentication.",
"type": "string",
"default": "somethingRandomSomethingRandom123"
"default": "somethingRandomSomethingRandom123",
"minLength": 32
},
"CORS_origins": {
"description": "List of allowed CORS origins.",
+1 -1
View File
@@ -166,7 +166,7 @@ Below are the values you can expect to include/use inside a typical strategy dat
| `df['do_predict']` | Indication of an outlier data point. The return value is integer between -2 and 2, which lets you know if the prediction is trustworthy or not. `do_predict==1` means that the prediction is trustworthy. If the Dissimilarity Index (DI, see details [here](freqai-feature-engineering.md#identifying-outliers-with-the-dissimilarity-index-di)) of the input data point is above the threshold defined in the config, FreqAI will subtract 1 from `do_predict`, resulting in `do_predict==0`. If `use_SVM_to_remove_outliers` is active, the Support Vector Machine (SVM, see details [here](freqai-feature-engineering.md#identifying-outliers-using-a-support-vector-machine-svm)) may also detect outliers in training and prediction data. In this case, the SVM will also subtract 1 from `do_predict`. If the input data point was considered an outlier by the SVM but not by the DI, or vice versa, the result will be `do_predict==0`. If both the DI and the SVM considers the input data point to be an outlier, the result will be `do_predict==-1`. As with the SVM, if `use_DBSCAN_to_remove_outliers` is active, DBSCAN (see details [here](freqai-feature-engineering.md#identifying-outliers-with-dbscan)) may also detect outliers and subtract 1 from `do_predict`. Hence, if both the SVM and DBSCAN are active and identify a datapoint that was above the DI threshold as an outlier, the result will be `do_predict==-2`. A particular case is when `do_predict == 2`, which means that the model has expired due to exceeding `expired_hours`. <br> **Datatype:** Integer between -2 and 2.
| `df['DI_values']` | Dissimilarity Index (DI) values are proxies for the level of confidence FreqAI has in the prediction. A lower DI means the prediction is close to the training data, i.e., higher prediction confidence. See details about the DI [here](freqai-feature-engineering.md#identifying-outliers-with-the-dissimilarity-index-di). <br> **Datatype:** Float.
| `df['%*']` | Any dataframe column prepended with `%` in `feature_engineering_*()` is treated as a training feature. For example, you can include the RSI in the training feature set (similar to in `templates/FreqaiExampleStrategy.py`) by setting `df['%-rsi']`. See more details on how this is done [here](freqai-feature-engineering.md). <br> **Note:** Since the number of features prepended with `%` can multiply very quickly (10s of thousands of features are easily engineered using the multiplictative functionality of, e.g., `include_shifted_candles` and `include_timeframes` as described in the [parameter table](freqai-parameter-table.md)), these features are removed from the dataframe that is returned from FreqAI to the strategy. To keep a particular type of feature for plotting purposes, you would prepend it with `%%` (see details below). <br> **Datatype:** Depends on the feature created by the user.
| `df['%%*']` | Any dataframe column prepended with `%%` in `feature_engineering_*()` is treated as a training feature, just the same as the above `%` prepend. However, in this case, the features are returned back to the strategy for FreqUI/plot-dataframe plotting and monitoring in Dry/Live/Backtesting <br> **Datatype:** Depends on the feature created by the user. Please note that features created in `feature_engineering_expand()` will have automatic FreqAI naming schemas depending on the expansions that you configured (i.e. `include_timeframes`, `include_corr_pairlist`, `indicators_periods_candles`, `include_shifted_candles`). So if you want to plot `%%-rsi` from `feature_engineering_expand_all()`, the final naming scheme for your plotting config would be: `%%-rsi-period_10_ETH/USDT:USDT_1h` for the `rsi` feature with `period=10`, `timeframe=1h`, and `pair=ETH/USDT:USDT` (the `:USDT` is added if you are using futures pairs). It is useful to simply add `print(dataframe.columns)` in your `populate_indicators()` after `self.freqai.start()` to see the full list of available features that are returned to the strategy for plotting purposes.
| `df['%%*']` | Any dataframe column prepended with `%%` in `feature_engineering_*()` is treated as a training feature, just the same as the above `%` prepend. However, in this case, the features are returned back to the strategy for FreqUI/plot-dataframe plotting and monitoring in Dry/Live/Backtesting <br> **Datatype:** Depends on the feature created by the user. <br>*Please note* that features created in `feature_engineering_expand()` will have automatic FreqAI naming schemas depending on the expansions that you configured (i.e. `include_timeframes`, `include_corr_pairlist`, `indicators_periods_candles`, `include_shifted_candles`). So if you want to plot `%%-rsi` from `feature_engineering_expand_all()`, the final naming scheme for your plotting config would be: `%%-rsi-period_10_ETH/USDT:USDT_1h` for the `rsi` feature with `period=10`, `timeframe=1h`, and `pair=ETH/USDT:USDT` (the `:USDT` is added if you are using futures pairs). It is useful to simply add `print(dataframe.columns)` in your `populate_indicators()` after `self.freqai.start()` to see the full list of available features that are returned to the strategy for plotting purposes.
## Setting the `startup_candle_count`
+1 -1
View File
@@ -2,6 +2,6 @@ markdown==3.10.2
mkdocs==1.6.1
mkdocs-material==9.7.6
mdx_truly_sane_lists==1.3
pymdown-extensions==10.21.2
pymdown-extensions==10.21.3
jinja2==3.1.6
mike==2.2.0
+9 -9
View File
@@ -202,20 +202,20 @@ All endpoints in the below table need to be prefixed with the base URL of the AP
| `/blacklist` | GET | Show the current blacklist.
| `/blacklist` | POST | Adds the specified pair to the blacklist.<br/>*Params:*<br/>- `blacklist` (`str`)
| `/blacklist` | DELETE | Deletes the specified list of pairs from the blacklist.<br/>*Params:*<br/>- `[pair,pair]` (`list[str]`)
| `/pair_candles` | GET | Returns dataframe for a pair / timeframe combination while the bot is running. **Alpha**
| `/pair_candles` | POST | Returns dataframe for a pair / timeframe combination while the bot is running, filtered by a provided list of columns to return. **Alpha**<br/>*Params:*<br/>- `<column_list>` (`list[str]`)
| `/pair_history` | GET | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. **Alpha**
| `/pair_history` | POST | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy, filtered by a provided list of columns to return. **Alpha**<br/>*Params:*<br/>- `<column_list>` (`list[str]`)
| `/plot_config` | GET | Get plot config from the strategy (or nothing if not configured). **Alpha**
| `/strategies` | GET | List strategies in strategy directory. **Alpha**
| `/strategy/<strategy>` | GET | Get specific Strategy content by strategy class name. **Alpha**<br/>*Params:*<br/>- `<strategy>` (`str`)
| `/available_pairs` | GET | List available backtest data. **Alpha**
| `/pair_candles` | GET | Returns dataframe for a pair / timeframe combination while the bot is running.
| `/pair_candles` | POST | Returns dataframe for a pair / timeframe combination while the bot is running, filtered by a provided list of columns to return.<br/>*Params:*<br/>- `<column_list>` (`list[str]`)
| `/pair_history` | GET | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy.
| `/pair_history` | POST | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy, filtered by a provided list of columns to return.<br/>*Params:*<br/>- `<column_list>` (`list[str]`)
| `/plot_config` | GET | Get plot config from the strategy (or nothing if not configured).
| `/strategies` | GET | List strategies in strategy directory.
| `/strategy/<strategy>` | GET | Get specific Strategy content by strategy class name.<br/>*Params:*<br/>- `<strategy>` (`str`)
| `/available_pairs` | GET | List available backtest data.
| `/version` | GET | Show version.
| `/sysinfo` | GET | Show information about the system load.
| `/health` | GET | Show bot health (last bot loop).
!!! Warning "Alpha status"
Endpoints labeled with *Alpha status* above may change at any time without notice.
Endpoints labeled with *Alpha status* or *Beta status* above may change at any time without notice.
### Message WebSocket
+2
View File
@@ -910,6 +910,8 @@ if self.dp.runmode.value in ('live', 'dry_run'):
### *check_delisting(pair)*
Return Datetime of the pair delisting schedule if any, otherwise return None
```python
def custom_exit(self, pair: str, trade: Trade, current_time: datetime, current_rate: float, current_profit: float, **kwargs):
if self.dp.runmode.value in ('live', 'dry_run'):
+1 -1
View File
@@ -1,6 +1,6 @@
"""Freqtrade bot"""
__version__ = "2026.4-dev"
__version__ = "2026.5-dev"
if "dev" in __version__:
from pathlib import Path
+1 -1
View File
@@ -393,7 +393,7 @@ def start_show_trades(args: dict[str, Any]) -> None:
tfilter = []
if config.get("trade_ids"):
tfilter.append(Trade.id.in_(config["trade_ids"]))
tfilter.append(Trade.id.in_(int(tid) for tid in config["trade_ids"]))
trades = Trade.get_trades(tfilter).all()
logger.info(f"Printing {len(trades)} Trades: ")
+1
View File
@@ -757,6 +757,7 @@ CONF_SCHEMA = {
"description": "Secret key for JWT authentication.",
"type": "string",
"default": "somethingRandomSomethingRandom123",
"minLength": 32,
},
"CORS_origins": {
"description": "List of allowed CORS origins.",
+1 -1
View File
@@ -559,7 +559,7 @@ class Binance(Exchange):
class Binanceusdm(Binance):
"""Binacne USDM Exchange
"""Binance USDM Exchange
Same as Binance - only futures trading is supported (via ccxt).
Not actually necessary, binance should be preferred.
File diff suppressed because it is too large Load Diff
+6
View File
@@ -214,6 +214,12 @@ def dataframe_to_json(dataframe: pd.DataFrame) -> str:
:param dataframe: A pandas DataFrame
:returns: A JSON string of the pandas DataFrame
"""
date_columns = dataframe.select_dtypes(include=["datetime", "datetime64", "datetimetz"])
# Explicit conversion to ms
# This used to be part of to_json, but was deprecated in pandas 3
for date_column in date_columns:
dataframe[date_column] = date_columns[date_column].dt.as_unit("ms").astype("int64")
return dataframe.to_json(orient="split")
+14 -11
View File
@@ -189,8 +189,8 @@ class Order(ModelBase):
def __repr__(self):
return (
f"Order(id={self.id}, trade={self.ft_trade_id}, order_id={self.order_id}, "
f"side={self.side}, filled={self.safe_filled}, price={self.safe_price}, "
f"amount={self.amount}, "
f"side={self.side or self.ft_order_side}, filled={self.safe_filled}, "
f"price={self.safe_price}, amount={self.amount}, "
f"status={self.status}, date={self.order_date_utc:{DATETIME_PRINT_FORMAT}})"
)
@@ -1248,12 +1248,16 @@ class LocalTrade:
close_profit_abs = 0.0
# Reset funding fees
self.funding_fees = 0.0
funding_fees = 0.0
ordercount = len(self.orders) - 1
# Total funding fees - cumulated over all orders
total_funding_fees = 0.0
# current funding fees - resetting on every exit to be aligned with profit calculation,
# as funding fees are part of the profit
current_funding_fee = 0.0
for i, o in enumerate(self.orders):
if o.ft_is_open or not o.filled:
continue
funding_fees += o.funding_fee or 0.0
current_funding_fee += o.funding_fee or 0.0
total_funding_fees += o.funding_fee or 0.0
tmp_amount = FtPrecise(o.safe_amount_after_fee)
tmp_price = FtPrecise(o.safe_price)
@@ -1268,11 +1272,8 @@ class LocalTrade:
avg_price = current_stake / current_amount
if is_exit:
# Process exits
if i == ordercount and is_closing:
# Apply funding fees only to the last closing order
self.funding_fees = funding_fees
# Intermediate funding fees for profit calculation
self.funding_fees = current_funding_fee
exit_rate = o.safe_price
exit_amount = o.safe_amount_after_fee
prof = self.calculate_profit(exit_rate, exit_amount, float(avg_price))
@@ -1281,10 +1282,12 @@ class LocalTrade:
# This needs to be calculated based on the last occurring exit to be aligned
# with realized_profit.
close_profit = (close_profit_abs / total_stake) * self.leverage
current_funding_fee = 0.0
else:
total_stake += self._calc_open_trade_value(tmp_amount, price)
max_stake_amount += tmp_amount * price
self.funding_fees = funding_fees
# Assign cumulated funding fees after all orders have been processed
self.funding_fees = total_funding_fees
self.max_stake_amount = float(max_stake_amount) / (self.leverage or 1.0)
if close_profit:
@@ -38,7 +38,7 @@ class MarketCapPairList(IPairList):
self._max_rank = self._pairlistconfig.get("max_rank", 30)
self._refresh_period = self._pairlistconfig.get("refresh_period", 86400)
self._categories = self._pairlistconfig.get("categories", [])
self._marketcap_cache: FtTTLCache = FtTTLCache(maxsize=1, ttl=self._refresh_period)
self._marketcap_cache: FtTTLCache = FtTTLCache(maxsize=2, ttl=self._refresh_period)
_coingecko_config = self._config.get("coingecko", {})
+1 -1
View File
@@ -51,7 +51,7 @@ class StrategyResolver(IResolver):
strategy: IStrategy = StrategyResolver._load_strategy(
strategy_name, config=config, extra_dir=config.get("strategy_path")
)
strategy.ft_load_params_from_file()
strategy.ft_set_special_params_from_file()
# Set attributes
# Check if we need to override configuration
# (Attribute name, default, subkey)
-1
View File
@@ -15,7 +15,6 @@ from freqtrade.rpc.api_server.deps import get_api_config
logger = logging.getLogger(__name__)
ALGORITHM = "HS256"
__DEFAULT_JWT = "somethingRandomSomethingRandom123"
router_login = APIRouter()
+6 -4
View File
@@ -796,7 +796,7 @@ class RPC:
results = results.rename({"timestamp": "date"}, axis=1)
results.loc[:, "__date_ts"] = results.loc[:, "date"].dt.as_unit("ms").astype("int64")
# Exclude non-bot managed for now
results_filtered = results.loc[results["bot_managed"]]
results_filtered = results.loc[results["bot_managed"].astype(bool)]
results_final = (
results_filtered.groupby(["date", "__date_ts"])
@@ -1548,8 +1548,7 @@ class RPC:
# band-aid until this is fixed:
# https://github.com/pandas-dev/pandas/issues/45836
datetime_types = ["datetime", "datetime64", "datetimetz"]
date_columns = dataframe.select_dtypes(include=datetime_types)
date_columns = dataframe.select_dtypes(include=["datetime", "datetime64", "datetimetz"])
for date_column in date_columns:
# replace NaT with `None`
dataframe[date_column] = dataframe[date_column].astype(object).replace({NaT: None})
@@ -1695,8 +1694,11 @@ class RPC:
else dt_ts(dt_now() - timedelta(days=30)),
is_new_pair=True, # history is never available - so always treat as new pair
candle_type=config.get("candle_type_def", CandleType.SPOT),
until_ms=timerange_parsed.stopts,
until_ms=timerange_parsed.stopts * 1000 if timerange_parsed.stopts else None,
)
if timerange_parsed.stopts and len(data) > 1:
# trim last candle if it is newer than the stop time
data = data.loc[data["date"] <= timerange_parsed.stopdt]
else:
_data = load_data(
datadir=config["datadir"],
+8 -4
View File
@@ -51,9 +51,10 @@ class HyperStrategyMixin:
for par in self._ft_hyper_params[space].values():
yield par.name, par
def ft_load_params_from_file(self) -> None:
def ft_set_special_params_from_file(self) -> None:
"""
Load Parameters from parameter file
Sets special parameters (stoploss, roi, trailing, max_open_trades) from the
previously loaded file.
Should/must run before config values are loaded in strategy_resolver.
"""
if self._ft_params_from_file:
@@ -96,7 +97,7 @@ class HyperStrategyMixin:
params_values = deep_merge_dicts(
self._ft_params_from_file.get(space, {}), getattr(self, f"{space}_params", {})
)
self._ft_load_params(self._ft_hyper_params[space], params_values, space, hyperopt)
self._ft_set_param(self._ft_hyper_params[space], params_values, space, hyperopt)
def load_params_from_file(self) -> dict:
filename_str = getattr(self, "__file__", "")
@@ -118,12 +119,15 @@ class HyperStrategyMixin:
return {}
def _ft_load_params(
def _ft_set_param(
self, params: SpaceParams, param_values: dict, space: str, hyperopt: bool = False
) -> None:
"""
Set optimizable parameter values.
:param params: Dictionary with new parameter values.
:param param_values: Dictionary with values to set.
:param space: The space to which the parameters belong.
:param hyperopt: Flag indicating if we are in hyperopt mode.
"""
if not param_values:
logger.info(f"No params for {space} found, using default values.")
+1 -1
View File
@@ -1,7 +1,7 @@
from freqtrade_client.ft_rest_client import FtRestClient
__version__ = "2026.4-dev"
__version__ = "2026.5-dev"
if "dev" in __version__:
from pathlib import Path
+1 -1
View File
@@ -1,3 +1,3 @@
# Requirements for freqtrade client library
requests==2.33.1
requests==2.34.2
python-rapidjson==1.23
+1
View File
@@ -222,6 +222,7 @@ exclude-newer = "1 week"
[tool.uv.exclude-newer-package]
ccxt = false
pymdown-extensions = "6 days"
[tool.ruff]
line-length = 100
+8 -8
View File
@@ -6,9 +6,9 @@
-r requirements-freqai-rl.txt
-r docs/requirements-docs.txt
ruff==0.15.11
mypy==1.20.1
pre-commit==4.5.1
ruff==0.15.12
mypy==2.1.0
pre-commit==4.6.0
pytest==9.0.3
pytest-asyncio==1.3.0
pytest-cov==7.1.0
@@ -24,13 +24,13 @@ nbconvert==7.17.1
# mypy types
scipy-stubs==1.17.1.4 # keep in sync with `scipy` in `requirements-hyperopt.txt`
types-cachetools==6.2.0.20260408
types-cachetools==7.0.0.20260518
types-filelock==3.2.7
types-requests==2.33.0.20260408
types-tabulate==0.10.0.20260408
types-python-dateutil==2.9.0.20260408
types-requests==2.33.0.20260518
types-tabulate==0.10.0.20260508
types-python-dateutil==2.9.0.20260518
pip-audit==2.10.0
# For build step in CI
build==1.4.3
build==1.5.0
# For pre-commit-update check
pyyaml==6.0.3
+2 -2
View File
@@ -5,7 +5,7 @@
torch==2.11.0; sys_platform != 'darwin' or platform_machine != 'x86_64'
gymnasium==1.2.3
# SB3 >=2.5.0 depends on torch 2.3.0 - which implies it dropped support x86 macos
stable_baselines3==2.8.0; sys_platform != 'darwin' or platform_machine != 'x86_64'
sb3_contrib==2.8.0; sys_platform != 'darwin' or platform_machine != 'x86_64'
stable-baselines3==2.8.0; sys_platform != 'darwin' or platform_machine != 'x86_64'
sb3-contrib==2.8.0; sys_platform != 'darwin' or platform_machine != 'x86_64'
# Progress bar for stable-baselines3 and sb3-contrib
tqdm==4.67.3
+15 -15
View File
@@ -1,5 +1,5 @@
numpy==2.4.4
pandas==3.0.2
numpy==2.4.5
pandas==3.0.3
bottleneck==1.6.0
numexpr==2.14.1
# Indicator libraries
@@ -7,39 +7,39 @@ ft-pandas-ta==0.3.16
ta-lib==0.6.8
technical==1.6.0
ccxt==4.5.50
cryptography==46.0.7
ccxt==4.5.54
cryptography==48.0.0
aiohttp==3.13.5
SQLAlchemy==2.0.49
python-telegram-bot==22.7
# can't be hard-pinned due to telegram-bot pinning httpx with ~
httpx>=0.24.1
humanize==4.15.0
cachetools==7.0.5
requests==2.33.1
urllib3==2.6.3
certifi==2026.2.25
cachetools==7.1.2
requests==2.34.2
urllib3==2.7.0
certifi==2026.4.22
jsonschema==4.26.0
tabulate==0.10.0
pycoingecko==3.2.0
jinja2==3.1.6
joblib==1.5.3
rich==15.0.0
pyarrow==23.0.1; platform_machine != 'armv7l'
pyarrow==24.0.0; platform_machine != 'armv7l'
# Load ticker files 30% faster
python-rapidjson==1.23
# Properly format api responses
orjson==3.11.8
orjson==3.11.9
# Notify systemd
sdnotify==0.3.2
# API Server
fastapi==0.136.0
pydantic==2.13.2
uvicorn==0.44.0
fastapi==0.136.1
pydantic==2.13.4
uvicorn==0.47.0
pyjwt==2.12.1
aiofiles==25.1.0
psutil==7.2.2
@@ -49,7 +49,7 @@ questionary==2.1.1
prompt-toolkit==3.0.52
# Extensions to datetime library
python-dateutil==2.9.0.post0
pytz==2026.1.post1
pytz==2026.2
#Futures
schedule==1.2.2
@@ -59,4 +59,4 @@ websockets==16.0
janus==2.0.0
ast-comments==1.3.0
packaging==26.1
packaging==26.2
+1 -1
View File
@@ -190,7 +190,7 @@ class ClientProtocol:
self.logger.info("Empty DataFrame")
async def _handle_default(self, name, msgtype, data):
self.logger.info("Unknown message of type {msgtype} received...")
self.logger.info(f"Unknown message of type {msgtype} received...")
self.logger.info(data)
+4 -2
View File
@@ -163,9 +163,11 @@ class TestCCXTExchange:
pytest.skip(f"No sample Balances available for exchange {exchangename}")
def test_ccxt_fetch_tickers(self, exchange: EXCHANGE_FIXTURE_TYPE):
exch, _, exchange_params = exchange
exch, exchangename, exchange_params = exchange
pair = exchange_params["pair"]
if exchangename == "okx":
# TODO: re-enable test once ccxt has this fixed.
pytest.skip("OKX fetch_tickers is currently broken, skipping test")
tickers = exch.get_tickers()
assert pair in tickers
assert "ask" in tickers[pair]
+38
View File
@@ -1471,6 +1471,44 @@ def test_api_historic_balance(botclient, mocker, ticker, fee, markets, is_short)
assert "total_quote" in resp1["columns"]
def test_api_historic_balance_int_bot_managed(botclient, mocker):
"""
read_sql may return the wallet_history `bot_managed` column as an
integer (e.g. MySQL/MariaDB TINYINT)
"""
_, client = botclient
# Single row: with an int64 `bot_managed`
one_row = pd.DataFrame(
{
"timestamp": pd.to_datetime(["2024-01-01"]),
"total_quote": [100.0],
"bot_managed": [1],
}
).astype({"bot_managed": "int64"})
mocker.patch("freqtrade.rpc.rpc.read_sql", return_value=one_row)
rc = client_get(client, f"{BASE_URI}/historic_balance")
assert_response(rc, 200)
assert rc.json()["length"] == 1
assert rc.json()["data"][0][0] == "2024-01-01T00:00:00"
assert rc.json()["data"][0][2] == 100.0
# Mixed rows: the non-bot-managed row (bot_managed=0) must be excluded.
two_rows = pd.DataFrame(
{
"timestamp": pd.to_datetime(["2024-01-01", "2024-01-02"]),
"total_quote": [100.0, 200.0],
"bot_managed": [0, 1],
}
).astype({"bot_managed": "int64"})
mocker.patch("freqtrade.rpc.rpc.read_sql", return_value=two_rows)
rc = client_get(client, f"{BASE_URI}/historic_balance")
assert_response(rc, 200)
assert rc.json()["length"] == 1
assert rc.json()["data"][0][0] == "2024-01-02T00:00:00"
assert rc.json()["data"][0][2] == 200.0
def test_api_performance(botclient, fee):
ftbot, client = botclient
patch_get_signal(ftbot)
+1 -1
View File
@@ -531,7 +531,7 @@ def test_strategy_interface_versioning(dataframe_1m, default_conf):
assert "exit_long" in exitdf
def test_strategy_ft_load_params_from_file(mocker, default_conf):
def test_strategy_ft_set_special_params_from_file(mocker, default_conf):
default_conf.update({"strategy": "StrategyTestV2"})
del default_conf["max_open_trades"]
mocker.patch(
+2 -2
View File
@@ -230,7 +230,7 @@ def test_deep_merge_dicts():
def test_dataframe_json(ohlcv_history):
from pandas.testing import assert_frame_equal
json = dataframe_to_json(ohlcv_history)
json = dataframe_to_json(ohlcv_history.copy())
dataframe = json_to_dataframe(json)
assert list(ohlcv_history.columns) == list(dataframe.columns)
@@ -238,6 +238,6 @@ def test_dataframe_json(ohlcv_history):
assert_frame_equal(ohlcv_history, dataframe)
ohlcv_history.at[1, "date"] = pd.NaT
json = dataframe_to_json(ohlcv_history)
json = dataframe_to_json(ohlcv_history.copy())
dataframe = json_to_dataframe(json)