Source code for ccxt_pandas.wrappers.schemas.tickers_schema

"""Tickers data schema."""

import pandas as pd
import pandera.pandas as pa
from pandera.typing import Series

from ccxt_pandas.wrappers.schemas.base_schemas import BaseExchangeSchema


[docs] class TickersSchema(BaseExchangeSchema): """Tickers data schema. Used by methods like fetch_tickers, fetch_ticker. Returns 24-hour ticker statistics for trading pairs including price, volume, and percentage changes. """ # Required fields symbol: Series[str] = pa.Field(unique=True, title="Symbol", description="Trading pair") # Optional timestamp fields timestamp: Series[pd.Timestamp] | None = pa.Field( nullable=True, title="Timestamp", description="Ticker timestamp" ) datetime: Series[pd.Timestamp] | None = pa.Field( nullable=True, title="Datetime", description="Ticker datetime (alias)" ) # Optional price fields open: Series[float] | None = pa.Field( ge=0, nullable=True, title="Open", description="24h opening price" ) high: Series[float] | None = pa.Field( ge=0, nullable=True, title="High", description="24h highest price" ) low: Series[float] | None = pa.Field( ge=0, nullable=True, title="Low", description="24h lowest price" ) close: Series[float] | None = pa.Field( ge=0, nullable=True, title="Close", description="Last closing price" ) last: Series[float] | None = pa.Field( ge=0, nullable=True, title="Last", description="Last traded price" ) bid: Series[float] | None = pa.Field( ge=0, nullable=True, title="Bid", description="Best bid price" ) ask: Series[float] | None = pa.Field( ge=0, nullable=True, title="Ask", description="Best ask price" ) vwap: Series[float] | None = pa.Field( ge=0, nullable=True, title="VWAP", description="Volume weighted average price" ) previousClose: Series[float] | None = pa.Field( ge=0, nullable=True, title="Previous Close", description="Previous closing price", ) average: Series[float] | None = pa.Field( ge=0, nullable=True, title="Average", description="Average price" ) # Optional derivatives price fields markPrice: Series[float] | None = pa.Field( ge=0, nullable=True, title="Mark Price", description="Mark price (derivatives)" ) indexPrice: Series[float] | None = pa.Field( ge=0, nullable=True, title="Index Price", description="Index price (derivatives)", ) # Optional change fields change: Series[float] | None = pa.Field( nullable=True, title="Change", description="24h absolute price change" ) percentage: Series[float] | None = pa.Field( nullable=True, title="Percentage", description="24h percentage change" ) # Optional volume fields baseVolume: Series[float] | None = pa.Field( ge=0, nullable=True, title="Base Volume", description="24h volume in base currency", ) quoteVolume: Series[float] | None = pa.Field( ge=0, nullable=True, title="Quote Volume", description="24h volume in quote currency", ) bidVolume: Series[float] | None = pa.Field( ge=0, nullable=True, title="Bid Volume", description="Volume at best bid" ) askVolume: Series[float] | None = pa.Field( ge=0, nullable=True, title="Ask Volume", description="Volume at best ask" )
# Note: exchange field comes from BaseExchangeSchema (Optional)