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)

Example of default production parameters used for signal filtering and trade analytics.

# 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

Values shown are default configuration and can be adjusted independently per microservice.


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
Soroka mobile app Soroka report Soroka report PnL