Market Regime Oracle
by aggreyeric
README.md
<div align="center">
# š Market Regime Oracle
**A 5-signal ā 5-state BTC market-regime classifier with posture mapping, backtested vs buy-and-hold.**
*Fuses momentum, sentiment, volatility, funding & flow into one explainable regime ā and a documented risk posture per regime.*
[](https://www.python.org/)
[](LICENSE)
[](tests/)
[](https://dorahacks.io/hackathon/bnb-ai-trading)
[](src/market_regime_oracle/mcp_server.py)
</div>
---
## What It Does
Ask *"What kind of BTC market is this, and how much risk should I take?"*
The oracle answers with one of **5 regimes** + a documented posture:
| Regime | Target Exposure | Posture |
|---|:---:|---|
| š¢ `RISK_ON` | 100% | Uptrend ā full exposure |
| š” `RANGE_BOUND` | 40% | Sideways ā light exposure |
| šµ `RISK_OFF` | 20% | Downtrend ā defensive |
| š“ `CAPITULATION` | 10% | Panic ā max defensive |
| š£ `EUPHORIA` | 30% | Blow-off ā take profit |
Built as an **MCP Strategy Skill** for the CoinMarketCap Agent Hub (BNB AI Trading ā Track 2). Any MCP-compatible client (Claude Desktop, Cursor, CMC Agent Hub) calls `get_market_regime` to get a deterministic, no-look-ahead risk posture.
---
## š Headline Result
> **In a down year for BTC (ā37%), the regime strategy did ā12.7% ā halving drawdown (ā24% vs ā51%) and halving volatility (19% vs 43%), outperforming buy-and-hold by ~25 points while still going long in uptrends.**
| Metric | **Regime Strategy** | Buy & Hold |
|---|:---:|:---:|
| Total return | **ā12.7%** | ā37.4% |
| Max drawdown | **ā24.2%** | ā51.2% |
| Annualized volatility | **19.3%** | 43.1% |
| Sharpe (rf 4%) | **ā0.82** | ā0.97 |
| Sortino | **ā1.01** | ā1.32 |
*Data: CoinGecko BTC daily (2025-06-19 ā 2026-06-17, 364 days). Start $10,000. 10 bps/turnover cost.*
---
## š¼ļø Visual Results
### Equity Curve ā Regime Strategy vs Buy & Hold
<img src="results/equity_curve.png" alt="Equity curve" width="760">
### Drawdown ā Strategy Stays Shallower
<img src="results/drawdown.png" alt="Drawdown" width="760">
### BTC Price with Regime Overlay
<img src="results/regime_overlay.png" alt="Regime overlay" width="760">
### Regime Distribution & Target Exposure
<img src="results/regime_summary.png" alt="Regime summary" width="760">
---
## šļø Architecture
```
CoinGecko (BTC OHLCV) alternative.me (Fear & Greed)
ā ā
āāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāā
ā¼
āāāāāāāāāāāāāāāāāāāāāāā
ā data/loader.py ā aligned daily features
āāāāāāāāāāā¬āāāāāāāāāāāā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā 5 independent signal modules ā each ā score in [-1, +1]
ā momentum(0.30) fear_greed(0.25) ā
ā funding(0.15) flows(0.15) vol(0.15) ā
āāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāā
ā¼ weighted fusion
composite score
ā¼ priority rules
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā 5-state regime classifier ā CAPITULATION > EUPHORIA >
ā (deterministic, no look-ahead) ā RISK_OFF > RISK_ON >
āāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāā > RANGE_BOUND
ā¼
target exposure + action
āāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāā
ā¼ ā¼
vectorized backtest MCP tool: get_market_regime
(no look-ahead, w/ costs) (stdio, Agent Hub skill)
```
---
## š§© The 5 Signals
| Signal | Source | Weight |
|---|---|:---:|
| **RSI / MACD momentum** | CoinGecko price | 0.30 |
| **Fear & Greed Index** | alternative.me | 0.25 |
| **Volatility regime** | CoinGecko price | 0.15 |
| **Funding rate proxy** | derived from price | 0.15 |
| **Exchange flow proxy** | derived from volume | 0.15 |
Each signal outputs a normalized bullishness score in `[-1, +1]`. All 5 are independently unit-tested.
> **Transparency:** Funding rate and exchange flows have no free public feed. We reconstruct them from price/volume data as clearly-labeled proxies. Drop in real feeds anytime ā the fusion layer is signal-agnostic.
---
## š Quick Start
```bash
git clone https://github.com/aggreyeric/bnb-market-regime-oracle.git
cd bnb-market-regime-oracle
pip install -r requirements.txt
# Run full pipeline: fetch ā classify ā backtest ā charts
python main.py
# Run tests (offline, no network needed)
PYTHONPATH=src python -m pytest tests/
# Run as MCP server
PYTHONPATH=src python -m market_regime_oracle.mcp_server
# Live MCP demo (30 seconds)
./scripts/demo.sh
```
### Docker
```bash
docker compose up --build run # full pipeline
docker compose up --build server # MCP server
```
---
## š Project Layout
```
market_regime_oracle/
āāā src/market_regime_oracle/
ā āāā data/ # CoinGecko + alternative.me loaders
ā āāā signals/ # 5 signal modules (unit-tested)
ā āāā classifier/ # fusion ā regime mapping
ā āāā backtest/ # vectorized engine, no look-ahead
ā āāā viz/ # equity/drawdown/regime charts
ā āāā mcp_server.py # MCP stdio server
āāā tests/ # 24/24 passing
āāā results/ # CSVs, metrics.json, PNG charts
āāā scripts/demo.sh # live MCP round-trip
āāā Dockerfile
āāā docker-compose.yml
āāā README.md
```
---
## š Data Sources
- **CoinGecko** v3 free API ā BTC daily close + volume
- **alternative.me** ā Fear & Greed Index
Both public, both free. **No API keys required.**
---
## š License
[MIT](LICENSE) Ā© 2026
## š¤ AI Assistants
ā See [CLAUDE.md](./CLAUDE.md) for AI coding assistant context.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing