Skip to content

Market Data Examples

This page provides examples of accessing market data with the Ethereal Python SDK.

List all products

from ethereal import RESTClient

client = RESTClient({
    "base_url": "https://api.etherealtest.net",
})

# Get all available products
products = client.list_products()

for product in products:
    print(product.model_dump())

Get market prices

product_ids = [product.id for product in client.products]
prices = client.list_market_prices(product_ids=product_ids)
for price in prices:
    print(price.model_dump())

Access order book data

# Get market liquidity (order book data)
btc_id = client.products_by_ticker['BTCUSD'].id
liquidity = client.get_market_liquidity(product_id=btc_id)

# Display top 5 bids
print("Top bids:")
for level in liquidity.bids[:5]:
    print(f"Price: {level[0]}, Size: {level[1]}")

# Display top 5 asks
print("Top asks:")
for level in liquidity.asks[:5]:
    print(f"Price: {level[0]}, Size: {level[1]}")

Calculate market metrics

# Calculate mid price
def calculate_mid_price(liquidity):
    if not liquidity.bids or not liquidity.asks:
        return None
    best_bid = float(liquidity.bids[0][0])
    best_ask = float(liquidity.asks[0][0])
    return (best_bid + best_ask) / 2

# Calculate spread
def calculate_spread(liquidity):
    if not liquidity.bids or not liquidity.asks:
        return None
    best_bid = float(liquidity.bids[0][0])
    best_ask = float(liquidity.asks[0][0])
    return best_ask - best_bid

# Get liquidity for BTC-USD
btc_id = client.products_by_ticker['BTCUSD'].id
liquidity = client.get_market_liquidity(product_id=btc_id)

# Calculate metrics
mid_price = calculate_mid_price(liquidity)
spread = calculate_spread(liquidity)

print(f"Mid price: {mid_price}")
print(f"Spread: {spread}")