mrkeyoor.com_
Fri 16 Oct 18:52 UTC
Automationevaluationupdated 14 Oct 2026

cabbage-trading-machine review

Cabbage Trading Machine is a Python spot-trading bot that runs an RSI/EMA strategy through an existing trading framework, with backtest, paper, and live commands. It has an English README and a Russian getting-started guide, and gives developers a local strategy workflow rather than wallet-scanning or Jev inference.

+1 / 1dstars / 7d
Verdict

Our Cabbage test run timed out after 900 seconds with a failure marker visible, and pip-audit reported 1 known vulnerability, so a passing 5-second build is insufficient grounds for live trading. Consider it for paper-only study of its RSI/EMA framework integration. Skip it if you need wallet scanning, Jev inference, or guaranteed exchange-side stops.

We ran it

Lab card: what happened when we ran cabbage-trading-machineScreenshot of cabbage-trading-machine (github.com/sopersone/cabbage-trading-machine)
Install✓ · 59s134 packages · 918 MB
Build✓ · 5s
Tests✗ timed out · 900sran, no count parsed
Known vulns1(pip-audit)
Repo1419 files~186,273 lines of source · 376.5 MB · 1 CI workflows · tests dir

Answers from our run

Does cabbage-trading-machine build from source?

Dependencies installed in 59 seconds (134 packages), and the build succeeded in 5 seconds. We cloned commit 530c2c6 into a clean Debian container with 3 CPUs and no project-specific setup.

Do cabbage-trading-machine's tests pass?

We could not finish them: the suite was still running after 15 minutes in our container.

Does cabbage-trading-machine have known vulnerabilities in its dependencies?

pip-audit flagged 1 known advisory in the dependency tree at the time of our run.

Who should not use cabbage-trading-machine?

Users seeking Jev inference or Robinhood Chain wallet scanning: the README explicitly lists both integrations as absent.

What are the alternatives to cabbage-trading-machine?

Freqtrade, Hummingbot. Our Cabbage test run timed out after 900 seconds with a failure marker visible, and pip-audit reported 1 known vulnerability, so a passing 5-second build is insufficient grounds for live trading.

Setup3/559-second install and 5-second build, with exchange setup still required
Docs4/5English and Russian guidance names mode, state, and execution limits
Community2/5267 stars, a September push, and no visible issue or release history
Maturity2/5900-second test timeout, a failure marker, and 1 known vulnerability

Who it’s for

Python developers studying Investing Algorithm Framework through an explicit spot-trading wrapper.
Strategy researchers willing to inspect bundled historical data and paper reports before considering live execution.
Developers who want separate configuration checks, offline backtests, and paper commands.

Who it’s NOT for

Users seeking Jev inference or Robinhood Chain wallet scanning: the README explicitly lists both integrations as absent.
Traders requiring guaranteed exchange-side stops: the README says stops may depend on the running bot and do not guarantee fill prices.
Strategies requiring derivatives or alternative authentication: the wrapper currently supports spot pairs with key/secret authentication.
Teams requiring a clean complete suite and a clean dependency audit: our tests timed out after 900 seconds with a visible failure marker, and pip-audit reported 1 known vulnerability.
Operators sharing one runtime state directory between processes: the README expressly warns against that arrangement.

Setup reality

Our sandbox installed commit 530c2c6 in 59 seconds, fetching 134 packages and using 918 MB. The build passed in 5 seconds, but tests timed out after 900 seconds. The log shows 3% and 6% progress, a failure marker, and skips without a completed summary. Pip-audit reported 1 known vulnerability, with no package or severity supplied.

The README recommends Python 3.12 and settings in a local .env file. Offline backtesting uses bundled candles, while paper mode needs exchange data. Live mode requires the selected exchange's API key and secret, supported spot pairs, suitable permissions, and sufficient balances.

State and reports live under directories separated by mode, market, and pair. Do not share a state directory between running processes. Stops may depend on the bot staying active, and limit orders can remain pending. Our no-secrets run did not validate real exchange execution.

The bot trades RSI/EMA signals, without wallet scanning

Stopping Cabbage can interrupt its client-side stop protection. That warning in the README deserves attention before the live command does. This Python bot connects an existing RSI/EMA crossover strategy to Investing Algorithm Framework's order and portfolio services. It supports backtesting, paper execution, and live spot trading through CCXT. Its useful role is an inspectable route through that framework, with explicit commands separating simulation from real orders.

Our checkout contained 1,419 files and roughly 186,273 source lines in 376.5 MB. Much of that breadth comes from including the original framework, its examples, data, and documentation. The README identifies the embedded framework as 9.0.0a18 and says it is the actual runtime. Buying into this repository means learning that underlying system as well as the small Cabbage wrapper.

What happened when we ran it

Our sandbox installed Cabbage's 134 packages in 59 seconds and built it in 5 seconds, but its tests timed out after 900 seconds. We ran commit 530c2c6 on October 13, 2026, in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets. The image was ghcr.io/astral-sh/uv:python3.12-bookworm. Installation occupied 918 MB on disk.

The test log reached progress markers of 3% and 6%, with an F and skip markers visible before the timeout. It contains no completed summary or traceback identifying the failure. We cannot name the failing case, count passing tests, or say what blocked completion from those lines. A 900-second timeout with a visible failure marker is sufficient reason to withhold a clean-suite claim. Increasing the deadline alone would not explain the failure.

Pip-audit reported 1 known vulnerability. The supplied measurement names neither the affected package nor its severity, so the finding cannot support a claim about exploitability or a specific fix. The scan also found 1 CI workflow file, a tests directory, and no Dockerfile. Our no-secrets run contains no evidence of live exchange execution, successful online paper trading, or strategy profitability. Those claims require different observations.

Paper mode is explicit, but still needs exchange data

The 918 MB installed environment precedes account setup and runtime state. The README recommends Python 3.12, a virtual environment, and settings copied from .env.example. Offline backtesting uses bundled data. Paper mode uses exchange quotes, so public exchange access still matters even when it sends no real orders. The doctor command inspects configuration, while its online variant checks public exchange data without placing orders.

Live mode requires the selected exchange's API key and secret, a supported spot pair, suitable account permissions, and sufficient balance. The application wrapper refuses live mode when credentials are absent and rejects upstream environment overrides that could conflict with explicit mode selection. That is a useful boundary to inspect. It does not establish that a given account accepts the chosen order size or that the venue will fill it.

The fixed stop does not guarantee a fill price

Our 5-second build says nothing about exchange behavior. The configured strategy uses long-only spot entries and exits, a fixed quote-currency ticket, and a percentage stop. It excludes incomplete candles and can legitimately generate no orders. The README says the signal schedule cannot run faster than its candle timeframe. This fits someone studying a specific rules-based strategy, rather than someone expecting a universal bot that starts trading immediately after launch.

Stops come from the original framework and are not guaranteed exchange-side orders or guaranteed execution prices. Original limit execution can also leave an order pending. Those are reasons for a competent developer to decline unattended live use unless they have checked the actual execution path and interruption behavior. A percentage in a configuration file cannot establish the eventual sale price.

Backtest reports document a run, not proven returns

A 59-second install does not establish the quality of the historical data or the strategy's returns. The bundled offline backtest uses BTC/EUR candles from June 2024 and writes HTML plus native framework artifacts. The README describes that route as an integration check and explicitly declines to claim the promotional profit narrative. That makes the backtest useful for examining data flow and reporting, while leaving the decision to risk capital unsupported.

The project also says Jev inference, Robinhood Chain wallet scanning, and the promotional smart-wallet strategy are absent. If those features brought you to the repository, walk away: the implementation serves a different task. The strategy source subclasses the upstream crossover strategy and retains long-entry and long-exit signals. It supplies a concrete rules-based bot to read and modify, without the promised intelligence implied by those missing integrations.

Runtime directories cannot be shared by competing processes

The 376.5 MB checkout includes more than the wrapper, and running it creates further state. Cabbage separates runtime directories by mode, market, and pair. The framework persists its database and reports there, and bounded runs or normal shutdown export latest-run.json. The README warns against running two processes against the same state directory. Keep those paths explicit if you compare simulations or operate different pairs, and preserve the reports needed to understand pending orders.

September activity leaves a thin maintenance record

The last push was September 24, 2026. GitHub returned 267 stars, no open issues or PRs, and no latest release. The issue-history endpoint also returned no entries. That is too little history to infer dependable maintenance from a quiet tracker, and the recent push does not justify calling it abandoned. English documentation exists in the main README, alongside a Russian getting-started guide.

For a broader strategy workflow, Freqtrade includes backtesting and Telegram or web controls. Hummingbot suits work needing centralized and decentralized exchange connectors. Cabbage is worth a paper-only investigation when you specifically want its framework integration. Before considering live use, identify the audit finding and the failure behind our 900-second test timeout, then check the exchange behavior the build could never establish.

Alternatives

ProjectWhat it isPick it when
Freqtrade gh↗A Python crypto trading bot with backtesting and Telegram or web controls.pick this instead when you want a broader strategy workflow and operator interface.
HummingbotA trading framework with connectors for centralized and decentralized exchanges.pick this instead when exchange connector coverage is the main reason for choosing a framework.

What people are saying

  1. [velocity-scout] sopersone/cabbage-trading-machine

Sources

  1. Cabbage README
  2. Cabbage configuration example
  3. Application wrapper at measured commit
  4. Strategy at measured commit
  5. Repository facts
  6. Cabbage issue history
  7. Freqtrade README
  8. Hummingbot README

More automation reviews

supersidian · genspark-claw · orc-claude-plugin · tiktok-views-bot · Ydisks-Xianyu-Helper · jev-gui-delegate · the whole board →