freqtrade/freqtrade · error · OperationalException
Pairlist Handlers {', '.join(pairlist_errors)} do not suppor
Error message
Pairlist Handlers {', '.join(pairlist_errors)} do not support backtesting. What it means
Raised by PairListManager when starting a backtest whose pairlist chain contains handlers flagged as non-backtestable (their 'pairlist' needs live/dry data, e.g. VolumePairList-style dynamic volume filtering is different but some handlers simply declare no backtest support). During backtesting, freqtrade validates every configured pairlist handler; any handler whose class does not support the backtesting context is collected into pairlist_errors and the run aborts before any data is processed.
Source
Thrown at freqtrade/plugins/pairlistmanager.py:94
noaction_pairlists.append(pairlist_handler.name)
if pairlist_handler.supports_backtesting == SupportsBacktesting.BIASED:
biased_pairlists.append(pairlist_handler.name)
if noaction_pairlists:
logger.warning(
f"Pairlist Handlers {', '.join(noaction_pairlists)} do not generate "
"any changes during backtesting. While it's safe to leave them enabled, they will "
"not behave like in dry/live modes. "
)
if biased_pairlists:
logger.warning(
f"Pairlist Handlers {', '.join(biased_pairlists)} will introduce a lookahead bias "
"to your backtest results, as they use today's data - which inheritly suffers from "
"'winner bias'."
)
if pairlist_errors:
raise OperationalException(
f"Pairlist Handlers {', '.join(pairlist_errors)} do not support backtesting."
)
@property
def whitelist(self) -> list[str]:
"""The current whitelist"""
return self._whitelist
@property
def blacklist(self) -> list[str]:
"""
The current blacklist
-> no need to overwrite in subclasses
"""
return self._blacklist
@property
def expanded_blacklist(self) -> list[str]:View on GitHub (pinned to 1c8edfe4d1)
Solutions
- Inspect the `pairlists` list in the config you pass to backtesting and remove/replace the handler named in the message with a static `StaticPairList` (or another backtest-compatible handler).
- Keep two configs: one for dry/live with dynamic pairlists, one for backtesting with a static whitelist; point `--config` at the right one.
- If you wrote a custom pairlist handler, verify it implements the backtest-compatible behavior and is not explicitly marked unsupported; test it via `freqtrade test-pairlist` before backtesting.
Example fix
// config.json (before)
"pairlists": [ {"method": "VolumePairList", ...}, {"method": "MyUnsupportedPairlist"} ]
// config-backtest.json (after)
"pairlists": [ {"method": "StaticPairList"} ],
"exchange": { "pair_whitelist": ["BTC/USDT", "ETH/USDT"] } Defensive patterns
Strategy: validation
Validate before calling
from freqtrade.plugins.pairlistmanager import PairListManager # before backtesting, dry-run the pairlist chain in backtest mode PairListManager.validate_backtesting(pairlist_handlers) # raises OperationalException early # simpler: build via freqtrade's config validation or run `freqtrade backtesting --dry-run-wallet 1 --timerange 1d` smoke test
Try / catch
from freqtrade.exceptions import OperationalException
try:
freqtrade.backtesting.Backtesting(config)
except OperationalException as e:
if 'do not support backtesting' in str(e):
logger.error('Switch to StaticPairList for backtests: %s', e)
raise Prevention
- Maintain a dedicated backtest config with StaticPairList.
- Run `freqtrade test-pairlist` after changing pairlist chains.
- Pin freqtrade version in requirements so pairlist support flags don't change silently.
When it happens
Trigger: Running `freqtrade backtesting` with a config where one of the `pairlists` entries is a handler that declares itself unsupported in backtesting (checked via the handler's `is_pairlist_generator`/backtest support logic in PairListManager.validate_backtesting). Only handlers that land in pairlist_errors raise; noaction/biased ones only log warnings.
Common situations: Copying a dry-run/live config into a backtest config without pruning pairlists that rely on live market data; enabling remote/exotic pairlist plugins; upgrading freqtrade where a pairlist's backtest support was removed or the plugin API changed.
Related errors
- No pair in whitelist.
- VolumePairList not allowed for backtesting. Please use Stati
- Dataprovider was not initialized with a pairlist provider.
- Timeframe needs to be set in either configuration or as cli
- PrecisionFilter not allowed for backtesting multiple strateg
AI-assisted analysis of freqtrade/freqtrade@1c8edfe4d1 (2026-08-15).
Data as JSON: /api/errors/0168daecb64c4015.
Report an issue: GitHub.