Market Regime Oracle

Market Regime Oracle

Fuses five market signals into a five-state regime classifier to determine market conditions and recommend trading postures for risk management.

Category
Visit Server

README

Market Regime Oracle — CMC Strategy Skill

A CoinMarketCap Agent Hub Strategy Skill (BNB Chain AI Trading Agent — Track 2) that fuses 5 market signals into a 5-state regime classifier, maps each regime to an explicit trading posture, and backtests the result against buy-and-hold with demo-ready equity-curve charts.

⚠️ Research / backtest artifact — Track 2 only. No live trading, no wallet connection, no token launch. Not submitted to any contest portal; only the admin approves submissions. Nothing here is financial advice.


TL;DR — 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 / action
RISK_ON 100% Uptrend — accumulate, full exposure
RANGE_BOUND 40% Sideways — light exposure, hold core
RISK_OFF 20% Downtrend — defensive, raise cash to ~80%
CAPITULATION 10% Panic sell-off — max defensive, near-full cash
EUPHORIA 30% Blow-off top — take profit, fade strength

The classifier is a priority-ordered, deterministic rule hierarchy over a fused composite score (extreme regimes CAPITULATION / EUPHORIA override the trend regimes). See src/market_regime_oracle/classifier/fusion.py.


Backtest result (real BTC data, ~1y)

Data: CoinGecko BTC daily (2025-06-19 → 2026-06-17, 364 days). Start capital $10,000. Transaction cost 10 bps per unit of turnover. Strategy = regime posture; benchmark = 100% BTC buy-and-hold.

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
Final equity $8,733 $6,264

Reading: over a down-trending year (BTC −37%), staying defensive in RISK_OFF / CAPITULATION cut the drawdown roughly in half and more than halved volatility, outperforming buy-and-hold by ~25 points while still being long BTC in RISK_ON. Regime mix observed: RISK_OFF 38%, RISK_ON 27%, RANGE_BOUND 25%, CAPITULATION 8% (acute panics), EUPHORIA 1.6% (blow-off).

Charts (regenerated in results/): equity_curve.png, regime_overlay.png, drawdown.png, regime_summary.png.


The 5 signals

# Signal Source Real?
1 Funding rate sentiment — (proxy from price) ⚠️ proxy
2 Fear & Greed Index alternative.me ✅ real
3 Exchange flow pressure — (proxy from volume) ⚠️ proxy
4 RSI / MACD momentum CoinGecko price ✅ real
5 Volatility regime CoinGecko price ✅ real

Each signal outputs a normalized bullishness score in [-1, +1] and is an independently runnable, unit-tested module under src/market_regime_oracle/signals/.

Assumptions & proxies (transparency)

The hard rules allow only CoinGecko + alternative.me (public, free). Two signals have no free public feed, so they are clearly-labeled proxies reconstructed from authorized price/volume data — not fabricated "real" data:

  • Funding rate (proxy). Funding reflects crowded directional bets: strongly positive when the market overheats (longs pay shorts), negative during flushes. We approximate it with a risk-adjusted momentum term (recent return ÷ its vol). Columns prefixed funding_proxy_*.
  • Exchange flows (proxy). True on-chain flows need paid data. We reconstruct flow pressure from signed volume (volume × sign of return): high-volume up days ≈ accumulation/outflows (risk-on), high-volume down days ≈ distribution/ inflows (risk-off). Columns prefixed flow_proxy_*.

If you later connect a real funding/on-chain feed, drop in a new Signal subclass — the fusion layer is feed-agnostic.


Quick start

pip install -r requirements.txt

# run the full pipeline: fetch -> classify -> backtest -> charts -> save results
PYTHONPATH=src python -m market_regime_oracle.run          # or: python main.py

# run the test suite (offline, synthetic data — no network)
PYTHONPATH=src:tests python -m pytest tests/

# run as a CMC Agent Hub skill (MCP server over stdio)
PYTHONPATH=src python -m market_regime_oracle.mcp_server

Outputs land in results/ (CSVs, metrics.json, PNG charts) and raw JSON is cached under data_cache/ to stay gentle on free rate limits.

From a clean clone

git clone <repo> && cd market_regime_oracle
pip install -r requirements.txt
python main.py          # reproduces all results/ artifacts

CMC Agent Hub skill packaging

Packaged as an MCP server — the same model the CMC Agent Hub uses to route prompts to cloud Skills. Any MCP-compatible client (Claude Desktop, Cursor, OpenClaw, VS Code, the CMC Agent Hub) can call the get_market_regime tool.

The CMC MCP already exposes the raw primitives this skill fuses (get_crypto_technical_analysis, get_global_metrics_latest, get_global_crypto_derivatives_metrics, on-chain metrics); this skill is the fusion + posture layer on top.


Architecture

data/        CoinGecko (BTC price+vol) + alternative.me (Fear & Greed), cached
  └─ loader  builds the aligned daily feature frame
signals/     5 independent, unit-tested signal modules -> score in [-1,1]
classifier/  weighted fusion -> composite -> priority rule hierarchy -> regime
  └─ posture regime -> target exposure + documented action
backtest/    vector engine, no look-ahead, with costs; metrics + trade log
viz/         matplotlib equity / drawdown / regime-overlay / summary charts
mcp_server   exposes get_market_regime + list_regimes over MCP stdio
run.py       end-to-end pipeline + CLI

Decision model (no look-ahead): the regime and target exposure are decided at day t's close from information up to and including t; the position earns the t → t+1 BTC return. Rebalancing incurs a linear transaction cost.


Project layout

market_regime_oracle/
├── README.md                 # this file
├── requirements.txt          # pinned deps
├── pyproject.toml            # installable package + console script
├── main.py                   # convenience entry point
├── src/market_regime_oracle/ # core package (data, signals, classifier, backtest, viz, mcp_server, run)
├── tests/                    # pytest: signals, classifier, backtest, mcp smoke
├── packaging/cmc-skill/      # CMC Agent Hub skill manifest + mcp_config
├── results/                  # generated CSV/JSON + PNG charts (demo artifacts)
└── data_cache/               # cached raw API responses (gitignored)

Data sources

  • CoinGecko v3 public free API — BTC daily close + volume.
  • alternative.me — Fear & Greed Index history.

Both are public and free. No API keys are required or stored.

Hard rules enforced

  • ✅ Track 2 only — research / backtest.
  • ✅ No live trading, no wallet connection, no token launch.
  • ✅ Not submitted to DoraHacks or any portal — admin approval only.
  • ✅ Only authorized public/free sources; proxies are clearly labeled.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured