home / skills / 2025emma / vibe-coding-cn / cryptofeed

cryptofeed skill

/i18n/zh/skills/cryptofeed

This skill helps you stream real-time cryptocurrency data from 40+ exchanges using cryptofeed, normalizing feeds for backends and algorithmic trading.

npx playbooks add skill 2025emma/vibe-coding-cn --skill cryptofeed

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
6.3 KB
---
name: cryptofeed
description: Cryptofeed - Real-time cryptocurrency market data feeds from 40+ exchanges. WebSocket streaming, normalized data, order books, trades, tickers. Python library for algorithmic trading and market data analysis.
---

# Cryptofeed Skill

Comprehensive assistance with Cryptofeed development - a Python library for handling cryptocurrency exchange data feeds with normalized and standardized results.

## When to Use This Skill

This skill should be triggered when:
- Working with real-time cryptocurrency market data
- Implementing WebSocket streaming from crypto exchanges
- Building algorithmic trading systems
- Processing order book updates, trades, or ticker data
- Connecting to 40+ cryptocurrency exchanges
- Using normalized exchange APIs
- Implementing market data backends (Redis, MongoDB, Kafka, etc.)

## Quick Reference

### Installation

```python
# Basic installation
pip install cryptofeed

# With all optional backends
pip install cryptofeed[all]
```

### Basic Usage Pattern

```python
from cryptofeed import FeedHandler
from cryptofeed.exchanges import Coinbase, Bitfinex
from cryptofeed.defines import TICKER, TRADES, L2_BOOK

# Define callbacks
def ticker_callback(data):
    print(f"Ticker: {data}")

def trade_callback(data):
    print(f"Trade: {data}")

# Create feed handler
fh = FeedHandler()

# Add exchange feeds
fh.add_feed(Coinbase(
    symbols=['BTC-USD'],
    channels=[TICKER],
    callbacks={TICKER: ticker_callback}
))

fh.add_feed(Bitfinex(
    symbols=['BTC-USD'],
    channels=[TRADES],
    callbacks={TRADES: trade_callback}
))

# Start receiving data
fh.run()
```

### National Best Bid/Offer (NBBO)

```python
from cryptofeed import FeedHandler
from cryptofeed.exchanges import Coinbase, Gemini, Kraken

def nbbo_update(symbol, bid, bid_size, ask, ask_size, bid_feed, ask_feed):
    print(f'Pair: {symbol} Bid: {bid:.2f} ({bid_size:.6f}) from {bid_feed}')
    print(f'Ask: {ask:.2f} ({ask_size:.6f}) from {ask_feed}')

f = FeedHandler()
f.add_nbbo([Coinbase, Kraken, Gemini], ['BTC-USD'], nbbo_update)
f.run()
```

## Supported Exchanges (40+)

### Major Exchanges
- **Binance** (Spot, Futures, Delivery, US)
- **Coinbase**, **Kraken** (Spot, Futures), **Bitfinex**
- **Gemini**, **OKX**, **Bybit**
- **Huobi** (Spot, DM, Swap), **Gate.io** (Spot, Futures)
- **KuCoin**, **Deribit**, **BitMEX**, **dYdX**

### Additional Exchanges
AscendEX, Bequant, bitFlyer, Bithumb, Bitstamp, Blockchain.com, Bit.com, Bitget, Crypto.com, Delta, EXX, FMFW.io, HitBTC, Independent Reserve, OKCoin, Phemex, Poloniex, ProBit, Upbit

## Supported Data Channels

### Market Data (Public)
- **L1_BOOK** - Top of order book
- **L2_BOOK** - Price aggregated sizes
- **L3_BOOK** - Price aggregated orders
- **TRADES** - Executed trades (taker side)
- **TICKER** - Price ticker updates
- **FUNDING** - Funding rate data
- **OPEN_INTEREST** - Open interest statistics
- **LIQUIDATIONS** - Liquidation events
- **INDEX** - Index price data
- **CANDLES** - Candlestick/K-line data

### Authenticated Channels (Private)
- **ORDER_INFO** - Order status updates
- **TRANSACTIONS** - Deposits and withdrawals
- **BALANCES** - Wallet balance updates
- **FILLS** - User's executed trades

## Supported Backends

Write data directly to storage:

- **Redis** (Streams and Sorted Sets)
- **Arctic** - Time-series database
- **ZeroMQ**, **InfluxDB v2**, **MongoDB**
- **Kafka**, **RabbitMQ**, **PostgreSQL**
- **QuasarDB**, **GCP Pub/Sub**, **QuestDB**
- **UDP/TCP/Unix Sockets**

## Key Features

### Real-time Data Normalization
Cryptofeed normalizes data across all exchanges, providing consistent:
- Symbol formatting
- Timestamp handling
- Data structures
- Channel names

### WebSocket + REST Fallback
- Primarily uses WebSockets for real-time data
- Falls back to REST polling when WebSocket unavailable
- Automatic reconnection handling

### NBBO Aggregation
Create synthetic National Best Bid/Offer feeds by aggregating data across multiple exchanges to find arbitrage opportunities.

### Backend Integration
Direct data writing to various storage systems without custom integration code.

## Requirements

- **Python**: 3.8 or higher
- **Installation**: Via pip or from source
- **Optional Dependencies**: Install backends as needed

## Common Use Cases

### Multi-Exchange Price Monitoring
```python
fh = FeedHandler()
fh.add_feed(Binance(symbols=['BTC-USDT'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Coinbase(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Kraken(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.run()
```

### Order Book Depth Analysis
```python
def book_callback(book, receipt_timestamp):
    print(f"Bids: {len(book.book.bids)} | Asks: {len(book.book.asks)}")

fh.add_feed(Coinbase(
    symbols=['BTC-USD'],
    channels=[L2_BOOK],
    callbacks={L2_BOOK: book_callback}
))
```

### Trade Flow Analysis
```python
def trade_callback(trade, receipt_timestamp):
    print(f"{trade.exchange} - {trade.symbol}: {trade.side} {trade.amount} @ {trade.price}")

fh.add_feed(Binance(
    symbols=['BTC-USDT', 'ETH-USDT'],
    channels=[TRADES],
    callbacks={TRADES: trade_callback}
))
```

## Reference Files

This skill includes documentation in `references/`:

- **getting_started.md** - Installation and basic usage
- **README.md** - Complete overview and examples

Use `view` to read specific reference files when detailed information is needed.

## Working with This Skill

### For Beginners
Start with basic FeedHandler setup and single exchange connections before adding multiple feeds.

### For Advanced Users
Explore NBBO feeds, authenticated channels, and backend integrations for production systems.

### For Code Examples
See the quick reference section above and the reference files for complete working examples.

## Resources

- **Repository**: https://github.com/bmoscon/cryptofeed
- **PyPI**: https://pypi.python.org/pypi/cryptofeed
- **Examples**: https://github.com/bmoscon/cryptofeed/tree/master/examples
- **Documentation**: https://github.com/bmoscon/cryptofeed/blob/master/docs/README.md
- **Discord**: https://discord.gg/zaBYaGAYfR
- **Related**: Cryptostore (containerized data storage)

## Notes

- Requires Python 3.8+
- WebSocket-first approach with REST fallback
- Normalized data across all exchanges
- Active development and community support
- 40+ supported exchanges and growing

Overview

This skill helps you integrate and develop with cryptofeed, a Python library that streams normalized, real-time cryptocurrency market data from 40+ exchanges. It focuses on WebSocket streaming, consistent data formats, and easy integration with storage backends for algorithmic trading and analytics. Use it to consume trades, tickers, order books, and aggregated NBBO across exchanges.

How this skill works

The skill guides you to create FeedHandler instances that attach exchange-specific feed objects with selected symbols, channels, and callbacks. It normalizes exchange differences in symbols, timestamps, and channel names, and prefers WebSocket streams with REST fallback and automatic reconnection. Built-in backends let you write data directly to Redis, MongoDB, Kafka, InfluxDB, and others without custom plumbing.

When to use it

  • Building algorithmic trading systems that require live market data
  • Streaming and processing order book updates (L1/L2/L3), trades, or tickers
  • Aggregating NBBO across multiple exchanges for arbitrage signals
  • Feeding data into storage or message systems (Redis, Kafka, InfluxDB, etc.)
  • Prototyping multi-exchange price monitoring or trade-flow analysis

Best practices

  • Start with a single exchange and channel to validate callbacks before scaling up
  • Use normalized symbols and timestamp handling provided by the library to avoid mismatches
  • Persist raw messages and normalized outputs to a backend for replay and debugging
  • Use NBBO and multi-exchange feeds to detect arbitrage and best-price opportunities
  • Install only required backends to minimize dependency bloat (use pip extras as needed)

Example use cases

  • Multi-exchange price monitoring across Binance, Coinbase, and Kraken using TICKER channels
  • High-frequency order book depth analysis using L2_BOOK callbacks for liquidity modeling
  • Trade-flow analysis by streaming TRADES for selected pairs and computing real-time metrics
  • Creating an NBBO feed combining exchanges to surface best bid/ask and execute arbitrage tests
  • Ingesting normalized market data directly into Kafka or InfluxDB for downstream analytics

FAQ

What Python version is required?

Cryptofeed requires Python 3.8 or higher.

How does reconnection and REST fallback work?

The library prioritizes WebSocket streams and will automatically reconnect; if a WebSocket is unavailable it falls back to REST polling for that feed.