Source code for ccxt_pandas.wrappers.schemas.portfolio_details_schema

"""Portfolio details data schema."""

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

from ccxt_pandas.wrappers.schemas.base_schemas import BaseExchangeSchema


[docs] class PortfolioDetailsSchema(BaseExchangeSchema): """Portfolio details data schema. Used by methods like fetch_portfolio_details. Returns detailed portfolio information including balances, holdings, P&L, cost basis, and asset allocation. """ # Required fields currency: Series[str] = pa.Field(title="Currency", description="Currency code") available_balance: Series[float] = pa.Field( ge=0, title="Available Balance", description="Available balance amount" ) hold_amount: Series[int] = pa.Field(ge=0, title="Hold Amount", description="Amount on hold") wallet_name: Series[str] = pa.Field(title="Wallet Name", description="Wallet name") account_id: Series[str] = pa.Field(title="Account ID", description="Account identifier") account_uuid: Series[str] = pa.Field(title="Account UUID", description="Account UUID") total_balance_fiat: Series[float] = pa.Field( ge=0, title="Total Balance Fiat", description="Total balance in fiat currency" ) total_balance_crypto: Series[float] = pa.Field( ge=0, title="Total Balance Crypto", description="Total balance in crypto" ) available_to_trade_fiat: Series[float] = pa.Field( ge=0, title="Available to Trade Fiat", description="Available to trade in fiat" ) available_to_trade_crypto: Series[float] = pa.Field( ge=0, title="Available to Trade Crypto", description="Available to trade in crypto", ) available_to_transfer_fiat: Series[float] = pa.Field( ge=0, title="Available to Transfer Fiat", description="Available to transfer in fiat", ) available_to_transfer_crypto: Series[float] = pa.Field( ge=0, title="Available to Transfer Crypto", description="Available to transfer in crypto", ) allocation: Series[float] = pa.Field( ge=0, title="Allocation", description="Portfolio allocation percentage" ) cost_basis: Series[float] = pa.Field(ge=0, title="Cost Basis", description="Cost basis amount") cost_basis_currency: Series[str] = pa.Field( title="Cost Basis Currency", description="Currency of cost basis" ) is_cash: Series[bool] = pa.Field(title="Is Cash", description="Whether asset is cash") average_entry_price: Series[float] = pa.Field( ge=0, title="Average Entry Price", description="Average entry price" ) average_entry_price_currency: Series[str] = pa.Field( title="Average Entry Price Currency", description="Currency of average entry price", ) asset_uuid: Series[str] = pa.Field(title="Asset UUID", description="Asset UUID") unrealized_pnl: Series[float] = pa.Field( title="Unrealized PnL", description="Unrealized profit and loss" ) asset_color: Series[str] = pa.Field(title="Asset Color", description="Asset display color") account_type: Series[str] = pa.Field(title="Account Type", description="Account type")
# Note: exchange field comes from BaseExchangeSchema (Optional)