Soroka — Market Signals & Automation Platform
Soroka is a distributed, event-driven backend platform for real-time cryptocurrency market analysis, signal generation, and post-event performance analytics. The system focuses on data pipelines, anomaly detection, and automated feedback loops rather than direct execution.
System Overview
The platform is designed as a set of independent Python microservices communicating through a shared database and Redis-based event queues.
The system continuously scans the cryptocurrency market, detects structural anomalies, generates filtered signals, and evaluates their post-event performance.
Market Data Ingestion
A Python backend built with FastAPI performs minute-level API requests to Binance, scanning the top 150 trading pairs by liquidity.
- Market snapshots are fetched every minute
- All database operations are fully asynchronous
- Historical data is preserved for comparative analysis
Analytical Microservices
Independent Python microservices analyze incoming market data in near real-time.
- Comparison of current and historical market states
- Detection of market structure anomalies (e.g. BOS events)
- Metric calculation and confidence scoring
- Persistence of analytical results
Each analytical component can be tuned or scaled independently.
Signal Pipeline
When a detected event satisfies predefined filtering rules, the system generates a market signal.
- Signals are enriched with computed metrics
- Published to a Redis queue
- Consumed by Telegram broadcaster and/or trading bot
Redis acts as a decoupling layer between analytics, notification, and execution.
Post-Signal Performance Analytics
Each signal is automatically evaluated after publication.
- PnL calculated at 1, 2, 3, 5, 10, and 15 minutes
- Purely analytical evaluation (no execution required)
- Results reported to Telegram channel
This feedback loop allows continuous validation of signal quality.
Configuration Philosophy
All system behavior is controlled via .env files
on a per-microservice basis.
- No container rebuilds required for tuning
- Fast experimentation with detection logic
- Clear separation between code and strategy
Default Configuration (Excerpt)
# Event filtering
EVENT_FILTER_TYPE=BOS_UP
CONFIDENCE_MIN=0.45
CONFIDENCE_MAX=0.80
# Market structure detection
INTERVAL=1m
LOOKBACK=3
MIN_CANDLES=5
BOS_STRENGTH_THRESHOLD=1.006
MIN_VOLUME_MULTIPLIER=1.3
REQUIRE_BODY_RATIO=0.6
MIN_EVENT_INTERVAL_MINUTES=2
# Risk & analytics parameters
ALLOCATION_PCT=0.50
STOPLOSS_PCT=0.08
LEVERAGE=1
TRADE_TIME=90
# Liquidity & volatility filters
MIN_LIQUIDITY_USDT=10000000
MAX_VOLATILITY=0.25
MIN_TRADE_COUNT=300000
# Infrastructure
REDIS_URL=redis://redis:6379/0 # internal Docker network
TRADE_QUEUE_NAME=trade_bot_queue
MAX_SIGNAL_AGE=60
Output & Distribution
Validated signals are published to the Telegram channel Soroka signals
The same signal stream can be consumed programmatically by automated trading components.
Engineering Focus
- Event-driven architecture
- Asynchronous data pipelines
- Config-driven behavior
- Post-event analytics and feedback loops
- Operational transparency