Skip to main content

tradernick-data-provider

Python client for the TraderNick data_provider service. Drop-in compatible with horatio-data-provider: same DataProviderClient class, same namespaces (evm, tron, btc, binance, hyperliquid, wallets, cache, jobs), same chainable builder methods, same as_pandas() / as_polars() / as_parquet() terminators. The only visible difference is the import path.

# Before
from horatio_data_provider import DataProviderClient

# After
from tradernick_data_provider import DataProviderClient

The server URL passed to the constructor is the only thing you need to change at the call site.

📖 Full usage guide: see USAGE.md — an exhaustive reference covering every namespace, query builder, filter, snapshot operation, and the unsupported surface. It ships inside the installed package.

Install

pip install tradernick-data-provider

Usage

import asyncio
from tradernick_data_provider import DataProviderClient

async def main():
    async with DataProviderClient("http://localhost:10005") as client:
        df = await client.binance.ohlcv("BTC", "1h") \
            .time_range("2026-06-01T00:00:00Z", "2026-06-08T00:00:00Z") \
            .as_polars()
        print(df)

asyncio.run(main())

All Horatio query builders work unchanged. The server delegates to ClickHouse instead of DeFiStream, so reads stay sub-second on tables where Horatio has to pay a fresh upstream fetch.

Status

0.6.0 — Wallet-group filters. group is now a filter dimension parallel to categories/labels, on every transfer query — list-valued (one group or several), resolved server-side against live group membership:

  • Direct: .involving_groups([...]), .sender_groups([...]), .receiver_groups([...]) + .exclude_* variants (transfer reads).
  • Local: .local_*_groups([...]) for snapshots/scan_parquet — and unlike the category/entity local_* filters, groups actually filter (a group reduces to an address set). See USAGE.md "Wallet groups".

0.5.0 — Binance spot markets + erc20 min_amount fix + first test suite.

  • client.binance.spot.{ohlcv, raw_trades} — the Binance spot market, a fully separate dataset from perp/futures. Same shapes as the perp binance.{ohlcv, raw_trades}; raw_trades keeps add_symbol / with_id.
  • Fix: evm.erc20.transfers([...]).min_amount(x) now resolves server-side. The client routed .min_amount() to /evm/erc20_transfers/read/min, but that alias was never registered on the server (it 404'd). erc20 is now in the /read + /read/min alias set alongside native/tron/btc transfers.
  • Tests: a pytest suite (clients/tests/) — respx-mocked unit tests for body/path construction + response transforms, plus an env-gated live integration tier (-m integration, needs DATA_PROVIDER_URL).

0.4.0 — Transfer wallet selection + multi-network as_parquet lands.

  • All transfer queries (evm.erc20, evm.native_transfers, tron.native, tron.trc20, btc.native) now accept full Horatio wallet-selection pushdown: sender_label / receiver_label / involving_label, sender_category / receiver_category / involving_category, and every exclude_* variant.
  • query.network([...]).as_parquet(key) now works for all transfer queries — server-side fan-out across networks, in-process concat, single parquet under key. Optional with_network column auto-toggles on multi-network calls.
  • Breaking: evm.stader / evm.threshold namespaces removed. TN doesn't ingest those upstreams; the stubs were giving false-positive "namespace exists" signals. Re-add when TN ingestion picks them up.

0.3.0 — Phase 4 TN-exclusive protocols. Adds Spark, Morpho, and Aerodrome (concentrated + basic). New namespaces live under client.evm.{spark, morpho, aerodrome}; existing aave / uniswap / lido / erc20 / native paths are unchanged.

0.2.0 — Phase 1+2 read parity. Validated against horatio-data-provider on 2026-06-07:

  • Column-shape parity: 100% across binance / aave / lido / uniswap / hyperliquid / transfers.
  • Row-count + value parity: exact match on stable tables (binance.ohlcv 1m, raw_trades, lido.deposit, aave.borrows/repays, evm.native with min_amount); within ±2 rows on AAVE event tables where DeFiStream's sweep loop occasionally re-fetches windows with slightly different cuts.

What works:

  • binance.{ohlcv, raw_trades, book_depth, open_interest, funding_rate, long_short_ratios} (with with_id, add_symbol)
  • binance.spot.{ohlcv, raw_trades} — spot market (separate from perp)
  • maintenance: binance.{flush,compact}_{raw_trades,ohlcv,exchange}, client.cache.{flush, compact, dedup, migrate_time}, client.jobs.{list, get, cancel, wait, submit}
  • evm.aave.{deposit, withdraw, borrow, repay, flashloan, liquidation} with involving, exclude_involving, eth_market_type
  • evm.uniswap.{swap, deposit, withdraw, collect} — V3
  • evm.lido.{deposit, withdrawal_request, withdrawal_claimed, l2_deposit, l2_withdrawal_request}
  • evm.erc20.transfers, evm.native_transfers with full filter set (sender / receiver / involving / exclude_* / min_amount / max_amount)
  • wallet-group filters on all transfer queries: involving_groups / sender_groups / receiver_groups + exclude_* (list-valued) and local_*_groups for snapshots
  • tron.{native, trc20}.transfers, btc.native.transfers
  • hyperliquid.{ohlcv, trades, fills, funding, transfers, vaults, trade_history, position_history}
  • client.{wallets.list, wallets.get, wallets.upsert, wallets.delete}
  • client.{load_parquet, scan_parquet, list_snapshots, delete_snapshot, as_parquet} — server-side parquet snapshots with local_* filters
  • client.jobs.{list, get, cancel} — proxies to the ingestion job queue

TN-exclusive (since 0.3.0):

  • evm.spark.{deposits, withdrawals, borrows, repays, flashloans, liquidations} — same six-event surface as evm.aave byte-for-byte
  • evm.morpho.{supplies, withdrawals, borrows, repays, supply_collaterals, withdraw_collaterals, liquidations} with .market_id(...) filter
  • evm.aerodrome.concentrated.{swaps, deposits, withdrawals, collects} with optional tick_spacing
  • evm.aerodrome.basic.{swaps, deposits, withdrawals, claims} with optional stable flag

Not yet exposed / unsupported:

  • .aggregate(...) — present on every builder (Horatio parity) but the server has no aggregate read route, so it 404s. Aggregate client-side from the raw .as_polars() frame for now; a server-side aggregate is a future release.
  • client.btc.mined() — no server route/table yet (TN doesn't ingest Bitcoin coinbase payouts); calling it 404s.
  • evm.{stader, threshold} — dropped in 0.4.0 (TN doesn't ingest the upstream yet); re-add when ingestion lands
  • gmx.* namespace — not planned (out of scope for this platform)
  • hyperliquid.{sends, spot_transfers} — exposed but hollow: DeFiStream provides them ("Tier 3") but TN doesn't ingest them yet, so the endpoints return the correct empty schema (0 rows). A follow-up will add the CH tables
    • ingestion streams and make them return real data.
  • client.scan_parquet only honors address-based local_* filters; label/category/entity variants are wired but no-op without wallet_labels co-mounted on the snapshot.

Compatibility

Drop-in compatible with horatio-data-provider 4.x.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tradernick_data_provider-0.6.0.tar.gz (30.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tradernick_data_provider-0.6.0-py3-none-any.whl (40.0 kB view details)

Uploaded Python 3

File details

Details for the file tradernick_data_provider-0.6.0.tar.gz.

File metadata

  • Download URL: tradernick_data_provider-0.6.0.tar.gz
  • Upload date:
  • Size: 30.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for tradernick_data_provider-0.6.0.tar.gz
Algorithm Hash digest
SHA256 ba30da3b5341df2134e295b9166d0bdffffcbd23e003a3fc8b20aa4cbbae04db
MD5 ad9287a2e6493389992bdb41f567c104
BLAKE2b-256 7c4e38cf937f78d5e47a6e593e6ae440e14603073bfc871eefa57b0baaebda8b

See more details on using hashes here.

File details

Details for the file tradernick_data_provider-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tradernick_data_provider-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aac7b030d35b2f43ff5eed14f3e155bcd6331cba75f8d8449fcf54584e932afc
MD5 dae8f71328680f5753c3c03992513da0
BLAKE2b-256 39007b67297708017710bbbeddbe8a36e2430312922f27ec4ffe459fb15b9568

See more details on using hashes here.

Release history Release notifications | RSS feed

2.7.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.0

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

1.7.0

2 files

1.6.0

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

0.13.2

2 files

0.13.1

2 files

0.13.0

2 files

0.12.1

2 files

0.12.0

2 files

0.11.3

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

This release

0.6.0 This release

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page