The sol-kol-trades dataset is 1.5 million-plus KOL buy/sell rows (€149), and every single row carries price_usd_at_trade and market_cap_usd_at_trade stamped at the moment of execution, plus the tx_signature to anchor it. Coverage runs 2026-05-15 to present — the fully-priced era. That one design choice is what makes a real copy-trade backtest possible: because the price is recorded at execution, you can compute realized entry and exit PnL directly, with no price oracle to query and no look-ahead bias from back-filling historical prices. This post explains why at-trade pricing is the moat and walks a worked (illustrative) backtest end to end. Download the file at /datasets/sol-kol-trades.
Why at-trade pricing is the whole game
Most "KOL trade" exports are just wallet + token + timestamp + signature. To turn that into PnL you have to reconstruct the price at each trade — usually by hitting an oracle or a candle API keyed on the block time. Two problems ruin the result. First, oracle prices are pool-level and lag; for a low-liquidity memecoin at launch the "price" you back-fill can be wildly off the fill the KOL actually got. Second, and worse for research: if your price source has any smoothing or forward-fill, you leak future information into a past trade — classic look-ahead bias that makes a strategy look profitable in backtest and fail live.
sol-kol-trades removes both failure modes. The price and market cap are the values at the trade, captured when we parsed the swap — not a reconstruction. Your PnL is realized, not modeled. That is the difference between a backtest you can trust and a spreadsheet that flatters your idea.
What's in each row
| Column | Meaning |
|---|
wallet | Scrubbed KOL wallet key (pseudonymous, no name) |
token | Traded token mint |
side | Buy or sell |
price_usd_at_trade | USD price stamped at execution |
market_cap_usd_at_trade | Token market cap stamped at execution |
tx_signature | On-chain signature to verify the fill |
block_time | Trade timestamp |
Like every MadeOnSol dataset it ships as CSV.gz, is identity-scrubbed and wallet-keyed, SHA-256 checksummed, and comes with a free 5,000-row sample so you can validate the schema before buying.
The numbers below are hypothetical and for illustration only — they show the mechanics, not a promised return. The point is that with at-trade pricing, every step is arithmetic on columns you already have.
Strategy. Copy every KOL buy where market_cap_usd_at_trade is under $500k (early entries only), size each position at a flat $100, and exit when the same wallet sells the same token. Skip positions that never sell within the window.
Step 1 — match buys to sells. Group by wallet + token, order by block_time, and pair each buy with the wallet's next sell of that token. The tx_signature on each side lets you spot-check any pair on-chain.
Step 2 — compute per-trade return. For a matched pair, realized return is simply sell.price_usd_at_trade / buy.price_usd_at_trade - 1. No oracle call. Suppose a sample of 5,000 matched pairs produces a mean return of +18% and a median of −4% — a typical memecoin shape where a few large winners carry a mostly-losing distribution.
Step 3 — apply frictions. Subtract a realistic slippage-plus-fee haircut per side. If you assume 3% each way, the mean drops from +18% to roughly +11% and the win rate barely moves — the tail winners survive, the marginal ones don't.
Step 4 — aggregate. At $100 per position across 5,000 pairs ($500k deployed, ignoring turnover), an +11% net mean implies ~$55k of realized gain in this illustrative slice. The honest read is in the distribution, not the headline: check what share of total PnL comes from the top 1% of trades, because if it's most of it, your live results depend entirely on catching those specific launches.
Step 5 — segment. Because each row is wallet-keyed, re-run the whole thing per wallet to find which KOLs actually produce copyable edge versus which just trade a lot. This is where the dataset earns its price — you are grading signal sources, not guessing.
The reason to buy sol-kol-trades over any reconstructed trade export is the pricing: 1.5M+ rows with price and market cap stamped at execution turn a copy-trade backtest into arithmetic you can trust, with no oracle and no look-ahead bias. Filter the wallets with smart-money scores first, then grade each KOL by realized edge. Download the file and a free 5,000-row sample at /datasets/sol-kol-trades.