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/entitylocal_*filters, groups actually filter (a group reduces to an address set). SeeUSAGE.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 perpbinance.{ohlcv, raw_trades};raw_tradeskeepsadd_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/minalias set alongside native/tron/btc transfers. - Tests: a
pytestsuite (clients/tests/) — respx-mocked unit tests for body/path construction + response transforms, plus an env-gated live integration tier (-m integration, needsDATA_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 everyexclude_*variant. query.network([...]).as_parquet(key)now works for all transfer queries — server-side fan-out across networks, in-process concat, single parquet underkey. Optionalwith_networkcolumn auto-toggles on multi-network calls.- Breaking:
evm.stader/evm.thresholdnamespaces 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}(withwith_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}withinvolving,exclude_involving,eth_market_typeevm.uniswap.{swap, deposit, withdraw, collect}— V3evm.lido.{deposit, withdrawal_request, withdrawal_claimed, l2_deposit, l2_withdrawal_request}evm.erc20.transfers,evm.native_transferswith 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) andlocal_*_groupsfor snapshots tron.{native, trc20}.transfers,btc.native.transfershyperliquid.{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 withlocal_*filtersclient.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 asevm.aavebyte-for-byteevm.morpho.{supplies, withdrawals, borrows, repays, supply_collaterals, withdraw_collaterals, liquidations}with.market_id(...)filterevm.aerodrome.concentrated.{swaps, deposits, withdrawals, collects}with optionaltick_spacingevm.aerodrome.basic.{swaps, deposits, withdrawals, claims}with optionalstableflag
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 landsgmx.*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_parquetonly honors address-basedlocal_*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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba30da3b5341df2134e295b9166d0bdffffcbd23e003a3fc8b20aa4cbbae04db
|
|
| MD5 |
ad9287a2e6493389992bdb41f567c104
|
|
| BLAKE2b-256 |
7c4e38cf937f78d5e47a6e593e6ae440e14603073bfc871eefa57b0baaebda8b
|
File details
Details for the file tradernick_data_provider-0.6.0-py3-none-any.whl.
File metadata
- Download URL: tradernick_data_provider-0.6.0-py3-none-any.whl
- Upload date:
- Size: 40.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aac7b030d35b2f43ff5eed14f3e155bcd6331cba75f8d8449fcf54584e932afc
|
|
| MD5 |
dae8f71328680f5753c3c03992513da0
|
|
| BLAKE2b-256 |
39007b67297708017710bbbeddbe8a36e2430312922f27ec4ffe459fb15b9568
|