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}")