2025.9
Highlighted changes
- New dataprovider method to fetch current funding rates.
- Improved behavior when using
funding_ratesas informative pairs. - Improved “short download-data” runs by using a different parallel method.
- Improved okx download-data speed (300 candles instead of 100 per call).
- Reduced false-positives due to delayed entries for
lookahead-analysisby forcing market orders. - Support nested dicts and lists in webhook messages.
- New
DelistFilterto remove delised pairs from your pairlist (currently supports only binance). - Add
--enable-dynamic-pairlistto backtesting / hyperopt - which can (in combination with ShuffleFilter) shuffle your pairlist at each candle. - freqUI:
- Fix anoying bug in chart tooltip.
- Added z-settings to markArea functionality to control if your areas are behind or in front of the Chart.
:warning: This will be the last release where we will provide pre-built armhf (32bit) images. This will only impact older raspberry PI's - which will now have to install natively.
Sponsor
You can sponsor the work on freqtrade via the following links:
- froggleston (FTUI) https://github.com/sponsors/froggleston/
- robcaulk (freqAI) https://github.com/sponsors/robcaulk/
- xmatthias (freqtrade and freqUI): https://github.com/sponsors/xmatthias/
New Contributors
- @mpagnoulle made their first contribution in https://github.com/freqtrade/freqtrade/pull/12151
- @Kritoooo made their first contribution in https://github.com/freqtrade/freqtrade/pull/12195
- @hustrust made their first contribution in https://github.com/freqtrade/freqtrade/pull/12198
- @alisalama made their first contribution in https://github.com/freqtrade/freqtrade/pull/11625
How to update
As always, you can update your bot using one of the following commands:
docker-compose
docker-compose pull
docker-compose up -d
Installation via setup script
# Deactivate venv and run
./setup.sh --update
Plain native installation
git pull
pip install -U -r requirements.txt
Expand full changelog
f38d2466d chore: bump version to 2025.9
ab764df41 chore(deps): bump ft-pandas-ta from 0.3.15 to 0.3.16
87c5f89b6 fix: ensure exportFilename is a path object
8b4070dbc chore(ci): parallel tests
4e089fd17 chore(ci): split check between windows and linux
f454006ec chore(ci): combine windows ci into generic test runner
f5002929e chore(ci): name some jobs properly
4e1d75a3e chore(ci): improved job naming
d4462ba5d chore(ci): remove useless alias
6dc71269a chore(ci): simplify actions by combining linux and macOS runs
730ccba53 chore: fix return type
117572157 docs: use exchange features include
e5157d547 docs: enhance exchange-features table
7fcb23e0c docs: add exchange overview
f075d90d9 chore: slight refactor in ft_has initialization
bf9474805 docs: update showcase, update outdated link
2890d13d9 feat: Improve styling of list-exchanges table
923277873 docs: add support policy to FAQ
4434df199 docs: improve doc wording
b9e9f6f04 refactor: indicate private methods by convention
f92caf0f1 chore: add response sample to private endpoint
55b90917e docs: Improve documentation clarity
d0546e998 chore: further restructuring to contributing guide
e9f414b29 chore: improve contributing wording
7638261e8 chore: update contributing documentation
a049d6eab feat: add magin_mode to show_config response
06424cae2 chore: update pre-commit hooks
9aeb2eaab feat: add z-level to annotations
c6061daec test: rename tests to match scheme
5be035270 test: add binance spot-delist test
06995f26f chore: improve reliability of binance spot delisting
7b4584467 test: ensure non-unified ccxt method ain't going away.
0a0c2adf7 chore: capture missing exception
7aab3b34d test: add more tests for delist exchange code
da12071d8 chore(deps-dev): bump mypy from 1.18.1 to 1.18.2
99401f9d6 chore: update pre-commit hooks
729bea2d8 chore(deps): bump cryptography from 45.0.7 to 46.0.1
8b72e4f23 chore: fix line-lengths
17202c6d2 test: add test for DelistFilter
567d4331f test: initial delistFilter tests
92c9f443e test: add test for dp.check_delisting
dd2d7bb86 docs: slightly restructure documentation
9c0d61272 add example, make sure to raise error on unsupported exchanges and/or trading mode
ae02a7007 chore(deps): bump psutil from 7.0.0 to 7.1.0
3c6e058b0 chore(deps): bump uvicorn from 0.35.0 to 0.36.0
ad3ddcaad chore(deps-dev): bump ruff from 0.13.0 to 0.13.1
be5605241 chore(deps): bump ccxt from 4.5.4 to 4.5.5
9a888d989 chore(deps): bump fastapi from 0.116.1 to 0.117.1
24a7e585e chore(deps): bump mkdocs-material in the mkdocs group
2120f1ed5 chore(deps-dev): bump pytest-mock in the pytest group
a7c4ec6ea chore: try without brew python fixes
f7b934b30 chore(ci): try to not prune uv cache
d34e7a1e8 chore: don't retry bootstrap indefinitely
4804ec986 chore: cleanup unused (and now unsupported) comments
16117e5b6 chore: remove obsolete todo
985805e0d test: add test for order_book_to_dataframe
a1dad065b docs: enhance doc wording around pairlists
3b03d4346 docs: enhance freqUI documentation page structure
c6551819c chore: re-word help string
e58635a88 test: minor adjustments to new tests
8e3331d0d chore: rename variable for clarity
8391a0612 chore: use ccxt's "set_markets_from_exchange" instead of manual logic
68c00d1c4 chore: bump ccxt min-version requirement
9d5a88416 chore: update pre-commit hooks
aee9b2c74 remove lock
72abae7b9 disable delisting check on non-trading mode
a300df7ff fix precommit
8e500d460 add DelistFilter
d8d8260d7 remove logger
72dd0d062 add spot check for binance
03c67d6a3 switch to use dataprovider to give flexibility to users
6e6a929fa chore: update pre-commit hooks
d069f5477 add delisted pair to blacklist
a4a5fbe4a add column name for bybit and okx
01e288297 fix precommit
7564b1e6d remove extra log, fix delivery time check for binance
cf010c3f1 initial concept
5ff95db9e move the example of blacklist to Programmatic Use card
9f436dcd1 chore: fix RUF043 violations
95a710d4a chore: fix RUF059 violations
19a35ed11 add examples on API docs. Fix some params name
e62ba8ed1 chore: update scipy-stubs in pre-commit
74f459d7e chore(deps): bump numpy from 2.3.2 to 2.3.3
815a35143 chore(deps): bump the scipy group with 2 updates
5e2f4924d chore(deps-dev): bump ruff from 0.12.12 to 0.13.0
d5620cf8b chore: bump types-requests in pre-commit config
776d9ac5e chore(deps): bump numexpr from 2.11.0 to 2.12.1
4b4d090d3 chore(deps-dev): bump mypy from 1.17.1 to 1.18.1
ab7c1ec24 chore(deps): bump ccxt from 4.5.3 to 4.5.4
be5969a1e chore(deps): bump python-telegram-bot from 22.3 to 22.4
992d173ad chore(deps): bump scikit-learn from 1.7.1 to 1.7.2
5396519b2 chore(deps): bump bottleneck from 1.5.0 to 1.6.0
d8122f5d3 chore(deps): bump pydantic from 2.11.7 to 2.11.9
92f8b2dd0 chore(deps-dev): bump the pytest group with 2 updates
29e35cf82 chore(deps): bump zizmorcore/zizmor-action from 0.1.2 to 0.2.0
26ff88c71 chore(deps): bump astral-sh/setup-uv from 6.6.1 to 6.7.0
7b3951f1e chore(deps-dev): bump types-requests in the types group
5dbfc92c5 Add --enable-dynamic-pairlist option in backtesting
a14281722 chore: remove no longer necessary TODO comments
a80f3ae91 fix: re-add candle_type_def to configuration
5f558137d Add cache for expanded_blacklist() in PairListManager in backtest mode
ecd66f8a6 fix: backtesting through UI not working consecutive times
8d965d483 docs: Add link to storing custom data from order_filled
ac519a273 chore: update pre-commit hooks
68429f9c3 fix: improve wording for config overriding strategy values
5cb41badc chore: don't log timeframe from cli twice
7b7b8b8f8 correctly handle pairlist that use wildcard
55201b622 Fix: Hyperopt breaks when self.dynamic_pairlist is set to True
49b9296cd test: Add futures to test matrix
09fabd911 test: simplify and improve fetch_ohlcv test
43be75284 Do not verify the backlist if it is empty
6cfd31c70 fix: "price" shouldn't be sent for regular futures candles
3bce9278b Add cache for gen_pairlist() in StaticPairList in backtest mode
068caf159 test: update test for new okx candle limits
eb8875b64 feat: adjust okx ohlcv candle limits
7219f71bc chore: update pre-commit hooks
eea9133b3 test_time_pair_generator_open_trades_first()
a8f543ce6 Add test_time_pair_generator_refresh_pairlist()
b35172a3b chore: export lookahead command partial
7b8f0583a test: add test for order_type force behavior
7ae89711d docs: update docs for lookahead analysis override
a2c372925 feat: Override order types for lookahead analysis
14c9f783d refactor: Improve clarity of method name
6c9c709c6 chore: use fstring in strategy helper
1c2ffc6aa chore: improve log message
a6d2bc523 chore: fix docker armhf build
737d2804d Fix spelling mistake
a9e82b7fc chore(deps-dev): bump the pytest group with 3 updates
21f77f9c5 chore(deps): bump cryptography from 45.0.6 to 45.0.7
c4c0198d2 chore: Update ta-lib armhf wheel
d72d13ed5 chore(deps): bump ta-lib from 0.6.6 to 0.6.7
8a21cc6d1 chore(deps-dev): bump ruff from 0.12.11 to 0.12.12
b6bedf20c chore(deps): bump xgboost from 3.0.4 to 3.0.5
9f02279d5 chore(deps): bump ccxt from 4.5.2 to 4.5.3
6f9906e93 chore(deps): bump markdown from 3.8.2 to 3.9
e934c3934 chore(deps): bump mkdocs-material in the mkdocs group
d6f78e4cc chore(deps): bump actions/setup-python from 5 to 6
f9cc05b20 chore(deps): bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0
76eb92b82 chore(deps): bump astral-sh/setup-uv from 6.6.0 to 6.6.1
e749051db Fix ShuffleFilter behavior in backtesting
74f52b14c chore(ci): disable package cleanup on pull requests
e33363bf6 feat: allow disabling parallel data-download per exchange
7d77e63b8 chore: simplify comment
cfa855dec test: remove missleading comment
34a72a055 feat: doin't drop last candle for funding fees
a9db7d028 chore: improve log wording
19140e9cf doc: fix funding fee doc sample
b0c3f2ff7 chore(ci): fix actions permission
8686b56b9 chore(ci): automatically cleanup untagged images
6ab731acd chore(ci): Try simpler syntax
8ca63cf0e chore(ci): Improved workflow syntax
5774c08b4 chore(ci): use proper input syntax
b731cdef5 chore(ci): use proper input syntax
b51c93fbc chore(ci): attempt at package-cleanup
e948839fb feat: have timerange have a default display way
587ec513d fix: Odd error downloading wrong timerange when using --days via UI
efed5700b fix: handle RuntimeError on trades download
5ddaea7ef chore: improve log message
66577b741 doc: improve orderbook wording
09017980b docs: add live funding rate documentation
3a7721ebe test: add test for fetch_funding_rate
35cc3efd5 feat: improve docstring and error handling
95ad75690 feat: add "current funding fee" endpoint
816ca2ea1 feat: add error in case of non-available informative dataframe
246891a8f feat: limit downloadable funding rates to funding rate interval
25fd63c6d chore: make internal attribute really private
cadbbd0e2 chore: improve variable naming for clarity
31204a37a chore(ci): set missed env
67774c71e chore(ci): set composite action outputs
44b65daf1 chore(ci): Switch to use outputs instead of global environments
48ff0c574 chore(ci): Use buildx imagetools only
3934aa118 chore(ci): use docker buildx imagetool create
d40efb883 chore(ci): use proper manifest command
84ec09565 chore(ci): Fix docker github login
387431e4d chore(ci): use docker manifest to copy to ghcr
662747c06 chore(ci): enable aliases
89272e9dd chore(ci): don't cache qemu image
23d4d25e3 chore(ci): move everything to docker build action
488a608c9 chore(ci): simplify build steps
a94d18a10 chore(ci): use composite action to extract docker variables
94aba0f9a chore(ci) fix step naming
35c3ca91e chore(ci): fix small typo
53328bc59 chore(ci): allow failure on pull
bb7a4c473 chore(ci): move CI build to action
7d38963c6 chore(ci): extract environment parts to ci file
0544af1f6 chore: update pre-commit hooks
ba87f3e7d chore: exclude .venv and userdata from dockerfiles
b60a3802e feat: remove numpy and pandas downgrade for armhf
2868efa77 chore: remove redundant word in docs/freq-ui.md
fe466e2e8 chore(ci): set environment variables directly
6c5771b40 chore(ci): remove some redundant environment variables
5c81d31bd chore(ci): Updated docker hub login
5b03fc1a8 chore: update pre-commit hooks
5cbcd6844 chore: update armhf binary
3bc1afd14 feat: warn user with clear message when test labels empty
3deb089d6 chore(deps): bump cachetools from 6.1.0 to 6.2.0
1c5a4f4f3 chore(deps): bump questionary from 2.1.0 to 2.1.1
1909fc313 chore: update pre-commit cachetools
3986dc261 chore(deps): bump prompt-toolkit from 3.0.51 to 3.0.52
1f7f2ee3d chore(deps-dev): bump ruff from 0.12.10 to 0.12.11
6e0da1aa3 chore(deps): bump humanize from 4.12.3 to 4.13.0
af3b0ed39 chore(deps): bump orjson from 3.11.2 to 3.11.3
1302b6777 chore(deps-dev): bump types-cachetools in the types group
6d4424860 chore(deps): bump ta-lib from 0.6.5 to 0.6.6
aad21195d docs: document nested webhook functionality
739a67fdc test: add test for new webhook functionality
48bd5cb2c feat: add nested webhook message support
254210228 test: Test telegram init exception handling
81a5d4968 fix: list-data --trades no longer working when used with `--pairs` filter
321b44b77 chore: fix
61a1ed897 chore: bump pyright minimum version
5bb4cffa2 chore: clarify deprecation message
5c314b6f1 chore: bump dev version to 2025.9-dev
9d5295fdb feat: Support for unbounded start and/or end in timerange filtering, added associated tests
eaf3fc883 test: add negative test for parallel download
94c5ddc13 test: add test covering parallel pair merging
a3fedbaba docs: update outdated comments
564634be4 docs: update exported help messages
ab3ae3dc6 chore: Update cli help
d037f67f7 test: add parallel download test
b1b6341a6 test: improve parallel test to capture caching
8c92f9407 chore: use candle_type as argument for parallel-download
e0aa660b5 chore: improve docstring wording
59ab51c06 test: Update basic test for calls to parallel-download
2eb2617b6 chore: make condition more logical
b284572ea chore: update docstring
1e5d9ecfa chore: improved logstring
489cd008d chore: invert "parallel download" option
3ff1e31a8 test: don't use fixture if it's only used once
f21c5ea88 feat: Remove redundant filtering, add tests for pyarrow trade filtering, use date utils for date to ts conversion
82903cc56 feat: Filter trades based on timerange
0233c3871 feat: Only load trades needed for specified timerange
4e2ccfc09 Added use_parallel_download command line option
e4b1e1118 Changed filter to pop
ba2e798f7 Added data.empty / new pair check
85edef839 Changed to use refresh_latest_ohlcv
559f6e279 Parallelisation of iterative data downloads