Source code for ccxt_pandas.wrappers.schemas.funding_rate_schema
"""Funding rate 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 FundingRateSchema(BaseExchangeSchema):
"""Funding rate data schema.
Used by methods like fetch_funding_rates.
Returns current and historical funding rates for perpetual swap contracts.
Only symbol and fundingRate are required, all other fields are optional.
"""
# Required fields
symbol: Series[str] = pa.Field(unique=True, title="Symbol", description="Trading pair")
fundingRate: Series[float] = pa.Field(title="Funding Rate", description="Current funding rate")
# Optional price fields
markPrice: Series[float] | None = pa.Field(
ge=0, nullable=True, title="Mark Price", description="Current mark price"
)
indexPrice: Series[float] | None = pa.Field(
ge=0, nullable=True, title="Index Price", description="Current index price"
)
estimatedSettlePrice: Series[float] | None = pa.Field(
ge=0,
nullable=True,
title="Est. Settle Price",
description="Estimated settlement price",
)
# Optional rate fields
interestRate: Series[float] | None = pa.Field(
nullable=True, title="Interest Rate", description="Interest rate component"
)
nextFundingRate: Series[float] | None = pa.Field(
nullable=True, title="Next Funding Rate", description="Next funding rate"
)
previousFundingRate: Series[float] | None = pa.Field(
nullable=True, title="Prev Funding Rate", description="Previous funding rate"
)
# Optional timestamp fields
timestamp: Series[pd.Timestamp] | None = pa.Field(
nullable=True, title="Timestamp", description="Current timestamp"
)
datetime: Series[pd.Timestamp] | None = pa.Field(
nullable=True, title="Datetime", description="Current datetime (alias)"
)
fundingTimestamp: Series[pd.Timestamp] | None = pa.Field(
nullable=True,
title="Funding Timestamp",
description="Current funding timestamp",
)
fundingDatetime: Series[pd.Timestamp] | None = pa.Field(
nullable=True,
title="Funding Datetime",
description="Current funding datetime (alias)",
)
nextFundingTimestamp: Series[pd.Timestamp] | None = pa.Field(
nullable=True, title="Next Funding Time", description="Next funding timestamp"
)
nextFundingDatetime: Series[pd.Timestamp] | None = pa.Field(
nullable=True,
title="Next Funding Datetime",
description="Next funding datetime (alias)",
)
previousFundingTimestamp: Series[pd.Timestamp] | None = pa.Field(
nullable=True,
title="Prev Funding Time",
description="Previous funding timestamp",
)
previousFundingDatetime: Series[pd.Timestamp] | None = pa.Field(
nullable=True,
title="Prev Funding Datetime",
description="Previous funding datetime (alias)",
)
# Optional metadata
interval: Series[str] | None = pa.Field(
nullable=True, title="Interval", description="Funding interval period"
)
# Note: exchange field comes from BaseExchangeSchema (Optional)