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 semantic memory of closed-trade experiences, and applies deterministic risk checks before an order can be sent.
- 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
What this project combines
Open-source trading projects solve different parts of the problem. Freqtrade focuses on mature execution and backtesting; TradingAgents explores multi-agent market research; Vibe-Trading combines vision and agent workflows. This project combines chart vision, local trade memory and deterministic risk limits in one experimental, local-first research loop.
This is not a claim that no other bot has any individual feature, nor a claim of superior returns. Read the linked source code and the risk disclaimer before using any trading software.
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 closed-trade experiences
Closed-trade experiences are 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 risk limits constrain the model
The model proposes a trade, but symbol restrictions, position caps, cooldowns and stop/target validation remain deterministic checks. Position sizing is capped and uses documented fallback profiles rather than treating model confidence as a guarantee.
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 documented eight-role AI-assisted development workflow, 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
Market history, 50+ Numba indicators, a 1920×1080 chart image — and a model prompted 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
market data, 50 lvls config/config.ini · src/analyzer/data_fetcher.py
trade memory 768D src/trading/vector_memory.py (BAAI/bge-base-en-v1.5)
risk limits, pre-entry src/trading/position_management.py
AI-assisted roles x8 .ai/ (supervisor + 7 specialist role files)
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.