Open source • Python 3.13 • simulated capital by default

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.

chart_vision

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.

vector_memory

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.

risk_governance

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.

executor

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

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.