Introducing Remora: Building a Real-Time Market Risk Engine
I’ve recently launched a new project: Remora. It’s a service for algorithmic traders that adds a layer of market awareness I felt was missing from tools like Freqtrade – helping strategies actually understand the current market and make smarter trading decisions.
When building and backtesting crypto strategies, I noticed that even the “good” ones would get wrecked by just a few bad trades during wild market swings. Remora is my attempt to fix that: it gives trading bots real-time context so they can avoid high-risk conditions and focus on opportunities that actually make sense.
TL;DR: I built Remora, a production-ready market risk microservice using FastAPI, ClickHouse, and modern MLOps practices. It analyzes dozens of real-time market conditions and returns a simple safe_to_trade signal that can filter out 30-60% of losing trades. The system is now live, handling real-time requests with sub-100ms response times, and includes a complete observability stack with Prometheus and Grafana.
Table of Contents
The Problem: Trading Bots Need Market Context
The Challenge
When building algorithmic trading strategies, I noticed a consistent pattern:
- Good strategies were failing not because of bad logic, but because they traded during terrible market conditions
- 30-60% of losing trades happened during extreme fear, volatility spikes, choppy markets, or bearish news events
- Strategies had no awareness of current market regime, volatility levels, or external risk factors
- Single bad entries during panic conditions could wipe out weeks of gains
Traditional trading bots focus on technical indicators (RSI, MACD, moving averages) but completely ignore:
- Market regime (bull, bear, choppy, panic)
- Volatility levels (normal vs extreme)
- External sentiment (Fear & Greed Index, news sentiment)
- Macro indicators (VIX, DXY, funding rates)
- Event flags (extreme fear, panic, bear market signals)
What Is Remora?
Remora is a real-time market risk microservice that provides trading bots with market context. It analyzes dozens of market conditions in real-time and returns a simple boolean: safe_to_trade.
Core Features
- Market Regime Detection: Classifies market conditions (bull, bear, choppy, high_vol, panic, sideways)
- Volatility Scoring: Calculates and classifies volatility (low, normal, high, extreme) using ATR%, Bollinger width, and returns stddev
- Composite Risk Score: Weighted risk assessment (0-1) from multiple factors
- Safe-to-Trade Flag: Boolean signal indicating whether conditions are favorable
- REST API: Real-time API endpoints for live trading integration
- Multi-Exchange Support: Works with Kraken, Binance, and other CCXT-compatible exchanges
- Observability Stack: Prometheus metrics and Grafana dashboards
What Remora Monitors
Remora continuously tracks:
- Technical Indicators: SMA50/200, ADX, ATR%, RSI, Bollinger Bands
- Market Regime: Trend classification, momentum, trend strength
- External Data: Fear & Greed Index, CryptoPanic news sentiment, VIX, DXY
- On-Chain Metrics: BTC dominance, funding rates, liquidation data
- Event Flags: Extreme fear, panic, bear market, high volatility signals
Example API Response
Listing 1: Remora risk assessment API response
{
"safe_to_trade": false,
"risk_score": 0.77,
"risk_class": "very_high",
"regime": "choppy",
"volatility": 0.047,
"volatility_classification": "low",
"risk_confidence": 0.73,
"trend_classification": "sideways",
"momentum_classification": "neutral",
"reasoning": [
"Extreme Fear (F&G=15) - blocking trades",
"Trading disabled due to global risk conditions"
],
"blocked_by": ["flag_extreme_fear"],
"risk_breakdown": {
"volatility": 0.017,
"regime": 0.24,
"trend_strength": 0.1,
"momentum": 0.066,
"external": 0.35
},
"event_flags": {
"flag_extreme_fear": true,
"flag_high_volatility": false,
"flag_downtrend": false,
"flag_panic": false
},
"recommendation": "no_entry",
"fear_greed_index": 15,
"btc_dominance": 56.37,
"funding_rate": 0.000069,
"vix": 20.52,
"dxy": 122.24
}
Tech Stack: FastAPI, ClickHouse, and Modern MLOps
Remora is built with a modern, production-ready tech stack designed for real-time performance and scalability:
Backend & API
- FastAPI: Modern Python web framework with async support, automatic OpenAPI docs, and excellent performance
- Python 3.11+: Type hints, async/await, modern language features
- Pydantic: Data validation and settings management
- CCXT: Unified cryptocurrency exchange API for multi-exchange support
- APScheduler: Background task scheduling for data updates
Data Storage & Analytics
- ClickHouse: Columnar database for time-series data, historical risk metrics, and analytics
- Materialised Views: Pre-aggregated risk data for fast queries (learned from my ClickHouse MLOps work)
- CSV Output: File-based output for backtesting compatibility with Freqtrade
Observability & Monitoring
- Prometheus: Metrics collection and time-series storage
- Grafana: Real-time dashboards for risk metrics, API performance, and system health
- Custom Metrics: Risk scores, regime classifications, API latency, data freshness
Infrastructure
- Docker & Docker Compose: Containerized deployment with observability stack included
- Uvicorn: ASGI server for FastAPI
- Environment Variables: Configuration management for different environments
External Data Sources
- Exchange APIs: Kraken, Binance via CCXT
- Alternative.me: Fear & Greed Index
- CryptoPanic: News sentiment analysis
- Yahoo Finance: VIX, DXY macro indicators
- Coinglass: Funding rates, liquidation data
Why This Stack? FastAPI provides excellent async performance and automatic API documentation. ClickHouse handles billions of time-series records efficiently. Prometheus/Grafana give real-time visibility into system health. Docker makes deployment trivial. Together, they form a production-ready microservice architecture.
System Architecture
Remora follows a microservice architecture with clear separation of concerns. External data sources feed into background data fetchers, which populate the risk calculation engine. The FastAPI layer serves real-time risk assessments to trading bots via REST API endpoints.
Component Breakdown
Listing 2: Remora service structure
remora_service/ ├── app/ │ ├── main.py # FastAPI application │ ├── config.py # Configuration management │ ├── models.py # Pydantic models │ ├── scheduler.py # Background scheduler │ ├── metrics.py # Prometheus metrics │ ├── engine/ # Risk calculation engine │ │ ├── risk_calculator.py │ │ ├── regime_detector.py │ │ └── volatility_scorer.py │ ├── data/ # Data fetching and processing │ │ ├── fetchers/ │ │ └── processors/ │ └── api/ # API routes │ └── v1/ │ ├── risk.py │ ├── regime.py │ └── volatility.py ├── examples/ # Integration examples ├── tests/ # Test suite ├── grafana/ # Grafana dashboards ├── prometheus/ # Prometheus configuration ├── Dockerfile ├── docker-compose.yml └── requirements.txt
Data Flow
- Background Scheduler: Runs every minute (configurable) to fetch fresh market data
- Data Fetchers: Collect OHLCV data, external indicators (Fear & Greed, VIX, DXY), and news sentiment
- Risk Engine: Calculates technical indicators, classifies regime, scores volatility, computes composite risk
- Storage: Results stored in ClickHouse for historical analysis and CSV files for backtesting
- API Layer: FastAPI serves real-time risk assessments with sub-100ms response times
- Observability: Prometheus collects metrics, Grafana visualizes system health
Implementation Deep Dive
Risk Score Calculation
At the heart of Remora is a composite risk score that quantifies the current market environment. This score combines multiple factors, including volatility, trend strength, momentum, and broader market regimes, into a single 0-1 scale. The higher the score, the riskier the market conditions, helping algorithmic traders avoid potentially catastrophic trades.
Market Regime Classification
Remora continuously evaluates the market and classifies it into regimes such as bull, bear, choppy, or panic. These regimes provide context for trading strategies, so bots can adapt their behaviour dynamically rather than trading blindly. The engine looks at how trends, volatility, and momentum interact to determine the current regime.
Safe-to-Trade Decisions
Using the risk score and regime classification, Remora flags whether market conditions are currently safe for trading. This allows trading bots to pause or reduce exposure during high-risk periods, and resume normal operation when conditions are more favourable. The system also considers external market events to further refine its decisions.
Integration via API
Traders can access Remora’s insights in real time through a simple API. For example, a bot can query the risk engine for a trading pair, receive the current risk assessment, and make informed decisions programmatically.
This design keeps your strategies aware of the market context – the kind of awareness that human traders rely on instinctively, but which most algorithmic bots lack.
Observability and Monitoring
If you don’t already know: I love observability. So this was a good excuse to set up a comprehensive (maybe a little over the top) observability stack for Remora to monitor system health, API performance, and data quality in real-time and in great detail.
Monitoring Infrastructure
The monitoring setup includes:
- Prometheus: Collects metrics on risk scores, regime classifications, API request rates, latency percentiles, and data freshness from external sources
- Grafana: Real-time dashboards visualising risk metrics across all tracked pairs, regime distributions, API performance trends, and system health indicators
- Custom Metrics: Track risk scores per trading pair, volatility classifications, external API error rates, and data age from each source
This observability stack helps ensure the service is performing correctly, data sources are fresh, and API responses are fast. It’s been essential for debugging issues and optimising performance during development and production use.
Results and Impact
Performance Metrics
| Metric | Value |
|---|---|
| API Response Time | 50-100ms (p95) |
| Data Update Frequency | Every 1 minute (configurable) |
| Uptime | 99.9%+ (with fail-open design) |
| Concurrent Requests | 1000+ req/s (async FastAPI) |
| Historical Data | 619,776 records (2020-2025, 5-min granularity) |
Backtesting Results
Backtests across 51,941 trades show:
- 30-60% of losing trades occur during high-risk conditions that Remora flags
- Improved win rates when Remora filtering is applied
- Reduced drawdowns by avoiding entries during extreme volatility
- Better risk-adjusted returns (Sharpe ratio improvements)
Real-World Usage
Remora is now:
- Live in production at remora-ai.com
- Integrated with Freqtrade strategies via REST API
- Used by traders for both automated and manual trading decisions
- Open source with Python client library available
Lessons Learned
1. Fail-Open Design Is Critical
Lesson: Remora must never become a single point of failure. If the API is unavailable, strategies should continue trading (fail-open). This ensures Remora enhances strategies without breaking them.
Implementation: All integrations include timeout protection (2s default) and exception handling that defaults to allowing trades.
2. Transparency Builds Trust
Lesson: Traders need to understand why a trade was blocked. Remora returns complete reasoning, risk breakdowns, and event flags – not just a boolean.
Implementation: Every API response includes reasoning array, risk_breakdown by component, and event_flags showing which conditions triggered blocks.
3. Observability Is Not Optional
Lesson: Production systems need real-time visibility. Prometheus and Grafana provide essential insights into system health, API performance, and data freshness.
Implementation: Complete observability stack included in Docker Compose, with pre-configured dashboards for common metrics.
4. Async Architecture Scales
Lesson: FastAPI’s async support enables handling hundreds of concurrent requests with minimal resource usage. This is essential for a microservice that needs to respond quickly.
Implementation: All data fetching and API endpoints use async/await, enabling concurrent request handling.
5. ClickHouse for Time-Series Analytics
Lesson: ClickHouse is perfect for storing and analysing billions of time-series risk records. Materialised views enable fast historical analysis and backtesting.
Implementation: All risk assessments stored in ClickHouse with materialised views for common query patterns (learned from my previous ClickHouse work).
6. Start Simple, Iterate
Lesson: The first version of Remora was much simpler. I started with basic regime detection and volatility scoring, then added external data sources, event flags, and comprehensive reasoning over time.
Implementation: Remora v0.1 had 3 regime types. v0.2 added 6 regime types, external data, event flags, and full observability. Future versions will add ML-based predictions.
Conclusion
Remora transforms trading bots from blind executors into context-aware systems. By providing real-time market risk assessment with complete transparency, it enables strategies to avoid high-risk conditions and focus on favorable market regimes.
Key Technical Achievements:
- FastAPI async architecture handling 1000+ req/s
- ClickHouse for efficient time-series storage and analytics
- Prometheus/Grafana for real-time observability
- Docker containerization for easy deployment
- Multi-Exchange support via CCXT
For Your Project:
- Check out remora-ai.com to see Remora in action
- View the API documentation for integration details
- Try the live dashboard to see real-time risk metrics
- Use the Freqtrade integration guide to add Remora to your strategies
Open Source Repositories
I’ve created two GitHub repositories to help others get started with Remora:
remora-freqtrade
Complete Freqtrade integration examples and onboarding guides. Includes working strategy templates, configuration examples, and step-by-step tutorials.
remora-backtests
Reproducible backtesting framework with complete methodology, historical data scripts, and visualisation tools. All backtest results are fully reproducible.
Additional Resources
- Remora Website – Live service and documentation
- API Documentation – Interactive OpenAPI docs
- Live Dashboard – Real-time risk metrics
- Freqtrade Integration – Step-by-step guide
- ClickHouse MLOps Post – Learnings from ClickHouse materialised views
Next Steps: Remora is live and ready to use. If you’re building trading strategies, consider adding market context awareness. Start with one integration, measure the impact, then expand. The fail-open design means you can add Remora without risk – it only enhances, never breaks.
Have you built similar market awareness systems? I’d love to hear about your experiences and any lessons learned. Feel free to reach out or share your story in the comments below.
Discover more from Don's Blog
Subscribe to get the latest posts sent to your email.