Support matrix

What each venue package actually implements, per surface. Full means every method of the interface is wired, partial means some of them are. Each venue's own caveats are below.

VenueMarketEarnWalletReport
dYdXFullNoneNoneFull
HyperliquidPartialNoneNoneFull
MEXCPartialFullFullPartial
BinancePartialFullFullPartial
BitgetPartialFullFullNone
Bit2MePartialFullFullFull
Ethereum (EVM)NoneNoneNoneFull
CoinbasePartialPartialNoneFull
KrakenPartialFullPartialFull
BybitFullFullFullPartial
KuCoinPartialPartialFullPartial
DeribitNonePartialFullPartial

Without credentials: Market on Binance, Bit2Me, Bitget, Bybit, dYdX, Hyperliquid, Kraken, KuCoin and MEXC; Earn on Bit2Me, Deribit and MEXC; Wallet on Deribit. Everything else needs an account entry in sdk.toml. Public access only covers public data: balances, positions and order placement always need credentials.

dYdX tribulnation-dydx ↗

Market Full No credentials

candles serves every contract interval in the indexer's native newest-first pages, filtered to the required [start, end) range. Public rules include active market fee holidays; personal fees also include referral tier overrides and staking discounts, with protocol PPM rounding. Fee holiday reads use Typed's generated public gRPC method until a convenience wrapper is available.

Earn Not implemented
Wallet Not implemented
Report Full

Hyperliquid tribulnation-hyperliquid ↗

Market Partial No credentials

candles serves spot and perpetuals in native order within [start, end). Hyperliquid retains only the latest 5000 candles per interval; pagination does not recover expired history. Quote volume is not reported. fees supports native USDC perpetuals, including account staking/tier and referral adjustments. Spot and HIP-3 fees are explicitly unsupported pending verified quote-token and per-asset deployer metadata; their public rules return fees=None.

Earn Not implemented

Hyperliquid offers nothing shaped like the Earn contract. Its three yield-bearing surfaces are a spot-token borrow/lend money market, vaults, and native HYPE staking — a floating-rate lending position, an equity stake in someone's trading strategy, and protocol-level delegation respectively. None of them is a yield product a caller subscribes to, so reporting them as Instruments would misdescribe what they are.

Wallet Not implemented
Report Full

History replays the account's full fill stream, and the venue only serves the 10000 most recent fills, so configure cache (a SQLAlchemy URL) to keep a durable archive.

MEXC tribulnation-mexc ↗

Market Partial No credentials

Spot keeps its complete implementation. Linear perpetuals use exchange perp and exact native symbols such as BTC_USDT; public REST discovery, rules, depth, candles, tickers, index, next_funding, funding_rates and perp_stats are implemented. Public spot fees use per-symbol exchange metadata; active API-enabled perpetuals use the separate June 2026 API schedule, corroborated in August, not web/app rates. Personal spot fees require MX deduction disabled because pre-discount rates are not separately exposed; RPI orders are excluded. Personal perpetual fees remain explicitly unsupported until API-channel applicability and conditional adjustments are verified. Perpetual streams and other private/trading methods are unsupported. Quantities and open interest are converted from contracts to base units using contractSize. The bulk perpetual ticker reports funding but not settlement time/interval: those optional perp_stats fields stay None, and next_funding reads the actual per-contract state. Candles require [start, end) bounds; spot pages 500 at a time (the real response cap), perpetuals segment at 2000 opens. No synthetic empty candles or response-order guarantee.

21 of 25 methods. Not implemented: place_orders, funding_payments, perp_position, perp_collateral.

Earn Full No credentials
Wallet Full
Report Partial

history() defaults to the last 30 days and automatically sweeps all spot symbols returned by exchange info. This can require many requests; delisted symbols absent from the catalogue cannot be discovered. It also covers crypto deposits/withdrawals and futures funding settlements. API history is best-effort: retention and per-query caps can leave gaps for file ingestion. Futures fills and closed positions, spot-futures and sub-account transfers, dust conversions and affiliate rebates are not covered; margin has no surface in the typed client.

Binance tribulnation-binance ↗

Market Partial No credentials

Read-only: order placement and cancellation are not implemented. USD-M serves public rules, depth, streams, tickers, perp_stats, index, next_funding, funding_rates and candles. Bulk snapshots cover active perpetuals only, not dated futures. perp_stats combines bulk pricing/funding with one public open-interest read per market (at most five concurrent); component observations are not atomic. Personal fees combine spot standard/tax/special and buy/sell components; USD-M fees require account permission and use symmetric ordinary-order commissions. Optional BNB payment discounts and RPI orders are excluded. Public standard fees cover only USDT crypto perpetuals; spot, USDC and TradFi schedules remain unknown. Other private futures methods remain unsupported and Report remains spot-side only. Candles serve spot and USD-M, every contract interval, 1000 per page with [start, end) filtering.

17 of 25 methods. Not implemented: place_order, place_orders, cancel_order, cancel_orders, cancel_open_orders, funding_payments, perp_position, perp_collateral.

Earn Full

Merges Simple Earn (flexible and locked), Soft Staking, On-chain Yields, BFUSD and RWUSD. ETH/SOL staking is left out because Binance publishes no rate for it, and Dual Investment because a position settles in either the invested or the exercised asset, so its yield asset isn't knowable up front.

Wallet Full
Report Partial

Spot-side only: snapshots include Spot, Funding and Simple Earn balances; history includes spot fills, deposits/withdrawals and Spot/Funding transfers. No futures endpoints are called and no empty futures compartment is emitted. Supported-source errors propagate. History end defaults to now; omitted start uses 90 days for capital, six calendar months for transfers and retained ID history for automatically discovered spot symbols. API history is best-effort; retention, delisted symbols and endpoint caps leave gaps for file ingestion. Futures, margin, Options, Portfolio Margin, Earn events and Convert/Pay/Fiat history are excluded.

Bitget tribulnation-bitget ↗

Market Partial No credentials

spot and usdt support read-only account data; usdc exposes public market data only. Classic coin-classic futures retired on 2026-09-17; requesting that exchange raises NotImplementedError. UTA coin markets are deferred; requesting that exchange raises NotImplementedError (SDK issue #32). The former USDT exchange ID perp is now usdt, without an alias. Read-only: place_order/cancel_* raise NotImplementedError (not a venue we trade on). funding_payments is unsupported on either account mode, since Bitget publishes no closed set of futures ledger types to filter a settlement on. On a Classic account perp_collateral and the exchange-level spot collateral are unsupported too (the futures wallet reports no margin requirement, the spot wallet no pool). candles serves every contract interval on all three exchanges with required aware bounds and half-open opening timestamps. Native response order is preserved, without an ordering guarantee across windows. Perp windows cover 198 opens back to the contract's listing; spot windows cover 999 opens but only reach the venue's recent horizon (about two months of hourly candles), since the spot history endpoint has no paged walk in the typed client yet.

19 of 25 methods. Not implemented: place_order, place_orders, cancel_order, cancel_orders, cancel_open_orders, funding_payments.

Earn Full
Wallet Full
Report Not implemented

tribulnation.bitget.reporting.Reporting implements snapshots and history, but against classic-account endpoints the unified trading account (UTA) doesn't support, so it isn't wired into ReportSDK. Import it directly if you're on a classic account.

Bit2Me tribulnation-bit2me ↗

Market Partial No credentials

Spot only. candles sweeps bounded time windows, continuing through empty slots without synthesizing candles; JSON-number prices are converted through their decimal string representation. rules().fees uses the public Pro schedule for explicitly classified pairs and is None elsewhere; account fees() is unsupported because no documented rate endpoint exists. tickers() carries no bid_qty/ask_qty because v2/trading/tickers quotes prices only.

17 of 25 methods. Not implemented: fees, perp_stats, index, next_funding, funding_rates, funding_payments, perp_position, perp_collateral.

Earn Full No credentials
Wallet Full

Deposit and withdrawal methods come from the per-asset chain list (v1/wallet/currency/{symbol}/network). Withdrawal fees are quoted live through the proforma endpoint, only for the networks a destination address is configured for (quote_addresses), because that is the only place Bit2Me publishes one.

Report Full

history() covers spot trades, on-chain deposits/withdrawals and Earn rewards. Internal transfers between the spot/earn/pocket compartments, fiat funding, loans and Social Pay are separate ledgers and aren't mapped.

Ethereum (EVM) tribulnation-ethereum ↗

Market Not implemented
Earn Not implemented
Wallet Not implemented
Report Full

History needs an RPC/explorer provider (ProvidersConfig). The Etherscan source covers native, internal, ERC-20 and ERC-721 legs; the Moralis source carries no NFT legs. HyperEVM is the hyperevm venue id; hyperliquid is the separate HyperCore account.

Coinbase tribulnation-coinbase ↗

Market Partial

Coinbase is not a default account. Authenticated access is recommended, especially for bulk tickers; public=True is an explicit credential-free fallback, never an automatic fallback on authentication errors. Explicit public=True accounts support spot and INTX discovery, rules, tickers, index and funding state without credentials. Public catalogue reads reject incomplete or duplicate responses. Public tickers fetch one book per selected product; authenticated tickers retain batched quotes. Spot serves market data and trading. Account fees() is unsupported on spot until product-specific stablepair pricing is resolved; INTX fees reject cost-plus commissions and exclusive or unspecified GST instead of returning incomplete rates. Public rules().fees remains None. INTX perpetuals serve market data, orders, funding state and public funding-rate history. History resolves the Advanced Trade -INTX product ID to an International Exchange instrument and pages its credential-free endpoint with inclusive optional bounds. Offset pages are not an atomic snapshot; duplicate settlements are removed. funding_payments remains unsupported; perp_position/perp_collateral need an INTX-scoped key. Candles use required [start, end) bounds, page 299 opens per window and carry no quote_volume.

24 of 25 methods. Not implemented: funding_payments.

Earn Partial

instruments() reports the only two APRs Coinbase publishes — Coinbase Exchange's wrapped-asset catalogue (CBETH) and the rewards blob attached to assets the account already holds. Neither is a browsable Earn product list, and there is no subscribe/redeem call anywhere on this tier.

Wallet Not implemented

No wallet implementation: the Coinbase App tier publishes no per-asset network catalogue and no withdrawal-fee source, and crypto sends take an arbitrary destination so there is nothing for withdrawal_methods() to enumerate beyond the fiat rails. Coinbase Exchange has a catalogue but describes a different product and over-lists what this account can reach. Left out rather than shipped incomplete.

Report Full

History merges the v2 per-account transaction stream with Advanced Trade fills; rows carrying one signed leg and no paired asset (legacy trade/buy/sell, staking_reward, earn_payout, ...) are reported as UnknownObservation rather than guessed into a trade shape.

Kraken tribulnation-kraken ↗

Market Partial No credentials

Spot retains its existing public/private reads; perp adds public non-tradfi USD linear perpetuals with unit contract size, including tokenized assets classified that way by Kraken. Perp supports discovery, depth, tickers, rules, index, perp_stats, funding_rates and all six candle intervals. Futures streams, next_funding, account fees and all private/trading methods remain unsupported. Spot candles retain the recent API window (documented 720; 721 observed including forming). Perp candles use trade Charts in bounded 2000-open windows, preserve missing intervals, and filter aware half-open bounds. Funding history uses native relativeFundingRate, with settlement time = native period start + 1 hour and inclusive/open bounds. Perp standard fees and maximum order size remain unknown; USD fee currency resolves through Assets to ZUSD.

16 of 25 methods. Not implemented: place_order, place_orders, cancel_order, cancel_orders, cancel_open_orders, next_funding, funding_payments, perp_position, perp_collateral.

Earn Full

instruments() reads Earn/Strategies, which needs an API key. apr is the midpoint of Kraken's low/high estimate, so a range collapses to one number; min_qty is never set because Kraken's user_min_allocation is in USD, not the asset; max_qty is the native-asset user_cap. Account-wide Kraken Rewards (lock_type = flex, not allocatable) are listed as flexible alongside the allocatable instant strategies.

Wallet Partial

deposit_methods raises NotImplementedError: Kraken's DepositMethods answers one asset at a time with a method name (Bitcoin Lightning, kBTC - Optimism (Unified)) and no network field. withdrawal_methods maps WithdrawMethods fully, with Kraken's display network names (Bitcoin, Arbitrum One, a bank rail for fiat) and a flat fee per row.

1 of 2 methods. Not implemented: deposit_methods.

Report Full

history() is the account ledger, one record per row: a spot trade is two TradeLeg rows sharing a refid, and margin/adjustment/rollover/settled/sale/conversion/nft* rows land as UnknownObservation. snapshot() is Balance, Earn balances included under their suffixed ids (XXBT.F).

Bybit tribulnation-bybit ↗

Market Full No credentials

candles serves every contract interval on spot and perp, in Bybit's native newest-first pages, filtered to the required [start, end) range.

Earn Full

Covers fixed-term savings, flexible savings and on-chain staking. Hold-to-Earn and Dual Asset are left out: the first has no subscription, min/max or id to act against, the second quotes its yield only per product, never in the catalogue.

Wallet Full
Report Partial

history() covers spot fills, linear funding settlements and crypto deposits/withdrawals. Derivatives fills and closed PnL, internal transfers, Earn events, bonus credits and fiat on/off-ramp are not covered, though Bybit exposes the endpoints.

KuCoin tribulnation-kucoin ↗

Market Partial No credentials

Credential-free Classic spot and linear perpetual public data. Exchange IDs are spot and perp respectively. Inverse and dated contracts are excluded. REST depth supports 1-100 levels (default 20); streams support 1-5 (default 5). All six SDK candle intervals use aware half-open bounds, native sparse rows and time windows of 1500 spot/200 futures candles. Historical availability varies by product and interval; no archive completeness guarantee. Futures quantities are converted from lots to base units. Rules do not read account fees; standard fees are unknown. Perp stats expose index, mark and open interest; next_funding provides the current cycle rate, settlement time and interval. Funding history uses inclusive bounds and an open start walks earliest available data. Private Market methods and trading are unsupported.

9 of 25 methods. Not implemented: fees, query_order, open_orders, trades_history, trades_stream, position, collateral, available_notional, place_order, place_orders, cancel_order, cancel_orders, cancel_open_orders, funding_payments, perp_position, perp_collateral.

Earn Partial

Savings, promotions, staking, KCS staking and ETH staking. Structured dual investment is excluded because conditional principal conversion cannot be represented by the plain APR contract.

Wallet Full

Both methods use public currency metadata and support public=True. Enabled chains only; withdrawal fees are published per-chain minimums, not a transaction quote. No credential-free default account is installed.

Report Partial

Classic spot-side only. History includes automatically discovered spot fills and successful external/internal deposits/withdrawals. Defaults: seven days for spot fills, 30 days for capital history. Snapshots include main/trade balances and paginated Earn holdings. No futures endpoints or permissions are required; futures and legacy margin/isolated compartments are excluded, not reported as zero. Supported-source errors propagate. Retention, delisted markets and unsupported Earn/internal ledgers leave gaps for file ingestion; other user subaccounts are not included.

Deribit tribulnation-deribit ↗

Market Not implemented

Market implementation is not yet packaged; the prototype is not a supported SDK surface.

Earn Partial No credentials

Public seven-day SMA APRs on automatically discovered reward-bearing balances, not subscribable products or an account-eligibility guarantee. Supports public=True; no credential-free default account is installed.

Wallet Full No credentials

Public currency/network metadata supports public=True. Withdrawal fees and confirmation requirements are currency-level, not network-specific quotes; token contracts are unavailable. No credential-free default account is installed.

Report Partial

Discovers currencies and all accessible subaccounts. History defaults to 30 days and pages the transaction log; deposits, withdrawals and transfers are classified, while trades, mixed PnL/funding settlements and other rows retain their signed balance changes as UnknownObservation. Snapshot uses cash balances (not equity) and signed base-unit positions. Removed currencies absent from discovery may require file ingestion.