Open source • Python 3.13 • simulated capital by default

An LLM trading agent that reads candlestick charts and learns from its own closed trades.

Every four hours it renders a 1920×1080 chart, sends it to a multimodal model with 79 indicators, the news context and its trade memory, and runs the answer through deterministic risk checks before booking a paper trade.

trading
simulated capital (paper)
executor
exchange testnet, no real funds
tests
2,544, ~162 s, ruff and pyright clean
providers
DeepSeek, Google, OpenRouter, LM Studio
chart_vision

Chart images, not only indicator values

A 1920×1080 Plotly candlestick chart with SMA, RSI, CMF and OBV goes to the model with the numeric stack. It reads wick geometry and volume from the picture, and every number it cites is checked against the computed value.

vector_memory

Memory of closed trades

Closed trades are embedded with BAAI/bge-base-en-v1.5 into ChromaDB. Before each decision the bot retrieves the three most similar past setups, each carrying a surprise ratio so a lucky win does not become a rule.

risk_governance

Deterministic limits around the model

The model proposes a trade; symbol restrictions, position caps and stop/target validation stay deterministic. Sizing is capped and uses fixed fallback profiles.

executor

Reasoning and execution are separate processes

The engine emits one JSON decision; a second service places CCXT orders and writes a verdict journal the engine reads back, so the bot confirms what happened to its order instead of assuming it.

Development history

Built in the evenings after warehouse shifts in Wrocław. The repository holds 2,544 tests, an AGENTS.md per package, and an executor that runs against an exchange testnet.

Read the full history →

Articles

Sources

Every number on this page comes from a file in the repository:

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
agent docs, 9 files    AGENTS.md + one per package (src/trading, src/analyzer, ...)
tests 2,544            python -m pytest tests -q   -> all passing, 0 skipped

Risk disclaimer: experimental software, not financial advice. It trades simulated capital by default and has lost money on paper during development.Full disclaimer.