Most trading bots do arithmetic. This one reads the chart, remembers its trades, and has to defend every call.
Semantic Signal renders a 1920×1080 candlestick chart for a multimodal model, keeps a 768-dimensional memory of every closed trade, and puts one deterministic expected-value gate between the model's opinion and any order.
- trading
- simulated capital (paper)
- live executor
- exchange testnet only — no real funds
- test suite
- 1,549 tests · 1,532 passing · 17 skipped
- providers
- Google AI, DeepSeek, OpenRouter, local — switchable
How it compares — including the rows where I lose
Feature-by-feature against three mature products. ✔ / ✘ only where I could check their public documentation; a question mark means I could not verify it and would rather show a gap than a guess. Freqtrade, 3Commas and Cryptohopper have been in production for years and run thousands of accounts — the rows near the bottom say so.
| Capability | Freqtrade | 3Commas | Cryptohopper | This project |
|---|---|---|---|---|
| Chart vision — an image goes to the model, not floats | ✘ | ? | ? | ✔ 1920×1080 PNG per cycle |
| Semantic memory of its own closed trades | ✘ | ✘ | ✘ | ✔ ChromaDB, 768D |
| Bull case / bear case before deciding | ✘ | ? | ? | ✔ one prompt, two roles |
| Deterministic expected-value gate before entry | ✘ | ? | ? | ✔ math overrides the model |
| Free news / community context (no paid API keys) | ✘ | ? | ? | ✔ RSS + Reddit |
| Automated order execution | ✔ | ✔ | ✔ | ✔ separate executor service |
| Trading with real money today | ✔ | ✔ | ✔ | ✘ testnet only |
| Years in production, thousands of users | ✔ | ✔ | ✔ | ✘ started Dec 2025 |
| Hosted for you — nothing to install or babysit | ✘ | ✔ | ✔ | ✘ you run it yourself |
| Proven, audited profitability | ✘ | ✘ | ✘ | ✘ neither do I — nobody can promise this |
Comparison reflects the vendors' public documentation as of September 2026, not their paid marketing material. If a ✔ or ✘ is wrong, mail [email protected]and it gets fixed.
An image, not just indicator floats
A Plotly candlestick chart at 1920×1080 with SMA, RSI, CMF and OBV goes to the multimodal model alongside the numeric stack. Wick geometry, volume spikes and wedges are read off the picture — but every number the model cites is checked against the computed values.
768D memory of its own mistakes
Every closed trade is embedded with BAAI/bge-base-en-v1.5 into ChromaDB. Before each decision the bot retrieves the top-5 most similar past setups, each tagged with aSurprise Ratio so a lucky win does not become a rule.
Deterministic math beats the model
Expected value is computed from the bot's own closed-trade history. If the math says the trade is not worth taking, the signal is rejected — the model does not get a vote. Position size comes from the same history, not from a confidence score.
Reasoning and execution are separate processes
The engine emits one atomic JSON decision; a second service does CCXT order placement, leverage and exchange-side stops, and writes a verdict journal the engine reads back. The bot confirms what happened to its own order instead of assuming it.
Built in a Wrocław apartment after warehouse shifts
In December 2025 I was working 8-hour warehouse shifts in Poland and testing "AI trading bot" templates in the evenings. Nine months later the project has 1,549 automated tests, an 8-agent development system that maintains the codebase, and a live executor running against an exchange testnet — not a cent of real money, by design.
Read the full development history →From the blog
How the bot reads charts
999 candles, 50+ Numba indicators, a 1080p chart image — and a model that has to defend its call.
Vector memory
How 768D embeddings turn closed trades into lessons the bot retrieves before every decision.
Paper → live: the executor
Why reasoning and order placement are separate services, and what is still missing before real capital.
Where every number on this page comes from
Nothing here is a screenshot from a course. All of it lives ingithub.com/qrak/LLM_trader:
chart image 1920x1080 src/analyzer/pattern_engine/chart_generator.py
999 candles, 50 lvls config/config.ini · src/analyzer/data_fetcher.py
trade memory 768D src/trading/vector_memory.py (BAAI/bge-base-en-v1.5)
EV gate, pre-entry src/trading/position_management.py
dev agents x8 .ai/ (supervisor + 7 specialists)
tests 1,549 python -m pytest tests -q -> 1,532 passed, 17 skipped⚠️ Risk disclaimer: Semantic Signal is an experimental, open-source software project — not financial advice, not a money machine. It trades simulated capital by default, it has lost money on paper during development, and trading cryptocurrencies carries substantial risk of loss. Read the full disclaimer.