Operating multi-venue algorithmic trading strategies requires precise post-trade reconciliation. Each major perpetual venue—Binance, Bybit, and Hyperliquid—formats trade reports, fee assessments, and cash flow ledgers using divergent terminology, idiosyncratic sign conventions, and distinct API data models.
Failing to standardize multi-exchange transaction ledgers results in phantom trading profits, inaccurate tax reporting, and miscalculated strategy return metrics. For foundational principles on keeping auditable trade books, read Crypto Trading P&L Records and download the companion Multi-Venue Perp Execution & PnL Reconciliation Worksheet.
Mapping Divergent Schema to a Universal Trade Record
Every completed derivative transaction must be ingested from raw exchange CSV exports or REST API endpoints into a normalized relational schema:
The core mapping divergences across platforms include:
- Order Identification: Binance uses
orderIdand client-specifiedclientOrderId; Bybit utilizesorderIdandorderLinkId; Hyperliquid relies on numericoidand 128-bit hexadecimalcloid. - Directional Signs: Binance and Bybit record trade side as explicit strings (
"BUY"/"SELL"). Hyperliquid orders specify"B"or"A"(Bid/Ask), where position closures are inferred from account state. - Execution Timestamps: Binance reports millisecond epoch timestamps (
time), Bybit reports millisecond strings, and Hyperliquid WebSocket feeds provide microsecond-resolution transaction times.
Normalized Fill Record = [Venue, Timestamp_UTC, Symbol, Side, Fill_Price, Fill_Qty, Fee_Paid, Fee_Asset, Role]
Isolating Fee Currencies and Collateral Assets
One of the most frequent accounting pitfalls in derivatives auditing is the conflation of fee payment assets with trade settlement currencies.
- Binance: If “Using BNB for Fees” is toggled on, trading fees are deducted from a spot BNB balance at a discount, even while perpetual PnL settles in USDT. Recording the fee without converting the historical BNB spot price to USD creates an uncalibrated cost basis.
- Bybit: Fees for USDC perpetuals are deducted in USDC, while USDT perps deduct from USDT margin. See Stablecoin Collateral and Margin Risk for how collateral currency affects margin accounting.
- Hyperliquid: All perpetual contracts settle and deduct fees natively in USDC on the Hyperliquid L1, eliminating cross-currency translation complexity.
To reconcile accurately, always separate cash flow events into two isolated ledgers: the Trade Fill Ledger and the Cash Balance Movement Ledger. You can also estimate expected maker versus taker fee deductions before auditing using the Perpetual Fee & Slippage Drag Calculator and our guide to Maker Rebates and VIP Fee Tiers.
Segregating Funding Payments from Realized Trade PnL
On exchange user interfaces, “Realized PnL” often aggregates pure directional price returns with cumulative funding payments and trading fees. For quantitative evaluation, these components must be strictly disentangled:
Gross Realized PnL = sum((P_exit − P_entry) × Quantity × Side Sign)
Net Account Change = Gross Realized PnL − sum(Trading Fees) + sum(Settled Funding Cash Flows)
By isolating settled funding into a dedicated carry column—using either the Multi-Venue Perp Execution & PnL Reconciliation Worksheet or the Perpetual Funding Rate Settlement Audit Worksheet—a trader can determine whether a strategy’s edge stems from genuine predictive alpha or whether the model is simply a disguised funding carry trade.
Multi-Exchange Ledger Field Cross-Reference
| Universal Field | Binance USDⓈ-M API | Bybit V5 Linear API | Hyperliquid Info API |
|---|---|---|---|
| Transaction ID | id (trade ID) |
execId |
tid (transaction hash/index) |
| Client Identifier | clientOrderId |
orderLinkId |
cloid (hex string) |
| Instrument Symbol | symbol (e.g., "BTCUSDT") |
symbol (e.g., "BTCUSDT") |
coin (e.g., "BTC") |
| Liquidity Role | maker (boolean) |
execType ("Maker"/"Taker") |
crossed (false = Maker, true = Taker) |
| Fee Deduction | commission + commissionAsset |
execFee + fee token field |
fee (always settled in USDC) |
| Funding Record | Income API (type: "FUNDING_FEE") |
Execution API (execType: "Funding") |
User Funding API (delta.funding) |
Disclaimer: API schema field names reflect public API specifications across versions (Binance Futures v1, Bybit v5, Hyperliquid API v1).