freqtrade/freqtrade · error · OperationalException

Converting from csv is only supported for kraken.Please refe

Error message

Converting from csv is only supported for kraken.Please refer to the documentation for details about this special mode.

What it means

Raised by convert_trades_format() when convert_from == 'kraken_csv' but the configured exchange (config['exchange']['name']) is not 'kraken'. Kraken CSV import is a special path that reads Kraken's trade-export CSVs, so it is refused for any other exchange. Note the message also documents that this special mode is explained in the docs.

Source

Thrown at freqtrade/data/converter/trade_converter.py:139

            try:
                ohlcv = trades_to_ohlcv(trades, timeframe)
                # Store ohlcv
                data_handler_ohlcv.ohlcv_store(pair, timeframe, data=ohlcv, candle_type=candle_type)
            except ValueError:
                logger.warning(f"Could not convert {pair} to OHLCV.")


def convert_trades_format(config: Config, convert_from: str, convert_to: str, erase: bool):
    """
    Convert trades from one format to another format.
    :param config: Config dictionary
    :param convert_from: Source format
    :param convert_to: Target format
    :param erase: Erase source data (does not apply if source and target format are identical)
    """
    if convert_from == "kraken_csv":
        if config["exchange"]["name"] != "kraken":
            raise OperationalException(
                "Converting from csv is only supported for kraken."
                "Please refer to the documentation for details about this special mode."
            )
        from freqtrade.data.converter.trade_converter_kraken import import_kraken_trades_from_csv

        import_kraken_trades_from_csv(config, convert_to)
        return

    from freqtrade.data.history import get_datahandler

    src = get_datahandler(config["datadir"], convert_from)
    trg = get_datahandler(config["datadir"], convert_to)

    if "pairs" not in config:
        config["pairs"] = src.trades_get_pairs(config["datadir"])
    logger.info(f"Converting trades for {config['pairs']}")
    trading_mode: TradingMode = config.get("trading_mode", TradingMode.SPOT)
    for pair in config["pairs"]:

View on GitHub (pinned to 1c8edfe4d1)

Solutions

  1. Set exchange.name to 'kraken' in the config used for the conversion: `"exchange": {"name": "kraken", ...}`.
  2. Or run with an explicit override: `freqtrade download-data --exchange kraken ...` / point the converter command at a kraken config file.
  3. If you did not mean CSV import, drop 'kraken_csv' as convert_from and use a supported datahandler format (json, jsongz, feather).

Example fix

# before (config.json)
{"exchange": {"name": "binance"}}
# freqtrade convert-data --format-from kraken_csv ...

# after
{"exchange": {"name": "kraken"}}
# freqtrade convert-data --format-from kraken_csv --format-to feather ...
Defensive patterns

Strategy: validation

Validate before calling

if convert_from == 'kraken_csv' and config['exchange']['name'] != 'kraken':
    raise SystemExit('kraken_csv import requires exchange.name == kraken in the config')

Prevention

When it happens

Trigger: Running `freqtrade trade-data-converter` (or convert_trades_format via API) with convert_from='kraken_csv' while config.json still names binance/bybit/etc.; reusing a generic config for the one-off CSV import instead of a kraken config.

Common situations: Users downloading Kraken trade history CSVs and importing them into a bot configured for another exchange (or vice versa); copy-pasted example configs; forgetting to pass --exchange kraken or edit config before the conversion.

Related errors


AI-assisted analysis of freqtrade/freqtrade@1c8edfe4d1 (2026-08-15). Data as JSON: /api/errors/82153cc061d52d89. Report an issue: GitHub.