Runs in your browser · no account needed · not financial advice
Blacklight (blacklight.observer) tells you whether a profitable wallet's returns would survive you copying them. The final score is our own recipe and stays that way — but every fact it is built from comes from public APIs that Hyperliquid and Polymarket run for everyone.
This page lets you check those facts without trusting us at all. When you press a button below, your own browser asks the exchange's public API directly and computes the results in front of you. Nothing goes through Blacklight's servers — you can even open your browser's network tab and watch the requests go straight to api.hyperliquid.xyz and data-api.polymarket.com.
Before you run them, the cards describe what each check means. After you run them, they show real numbers for the wallet you entered, computed by your browser from the exchange's own data. Compare them with the wallet's Blacklight page: small differences are normal (time windows differ), a big contradiction means you caught us — and we want to know. Red means no data was found on that platform (you may have picked the wrong button); grey means the platform has data but this particular metric has nothing to measure yet.
Every Hyperliquid fill carries a flag: did this wallet hit the market (a direct "taker" order, copyable in principle) or did its resting limit order get hit (a "maker" fill, which you cannot reproduce by following)? We compute the split over the wallet's most recent fills.
curl -s -X POST https://api.hyperliquid.xyz/info \
-H 'Content-Type: application/json' \
-d '{"type":"userFills","user":"<wallet>","aggregateByTime":false}'Count fills with "crossed": true (taker) vs false (maker).
We pair each position opening with its closing and measure the gap, plus how many fills happen per day, how often a genuinely NEW position starts (most activity is usually adding to or trimming existing ones), and whether the exchange ever force-closed it (liquidations). Multi-day holds leave a copier time to enter; sub-hour holds are gone before an alert reaches you.
Three facts from the same closing fills: how much of the profit comes from the single biggest win; the win rate counted per completed position versus per partial close (a large gap between those two is the signature of averaging-down styles, because many small partial wins can hide a few deep losers); and whether the profit comes from both long and short trades or one direction only (one-directional profit can be a levered bet on a trend rather than skill).
Count how often the wallet ADDS to a position at a worse price than its average entry — buying more of a losing long, shorting more into a rising price. A high share is the averaging-down signature behind our grid warnings: the account curve looks smooth while single positions go deep underwater, and a smaller copy account gets liquidated before the recovery.
From the wallet's cumulative profit history (deposits excluded, so funding the account never fakes profit): how much of its life sat below the last profit peak, the longest such stretch, and the worst give-back of profit it had already built up.
curl -s -X POST https://api.hyperliquid.xyz/info \
-H 'Content-Type: application/json' \
-d '{"type":"portfolio","user":"<wallet>"}'Walk allTime.pnlHistory, track the running peak, count time below it.
The wallet's recent trades: how many, which side, the prices it got, and where its money is concentrated. The price pattern backs specific style claims: mostly buying above 85¢ is the favorite-buyer / settlement-race pattern, mostly below 15¢ is longshot lottery buying. Heavy concentration in one market means the record leans on one call.
curl -s "https://data-api.polymarket.com/activity?user=<wallet>&limit=500"Every event carries a type: TRADE, REDEEM (payout collected), SPLIT / MERGE (set operations). The checks below read those.
Polymarket's public trade feed only records the taker side of each fill — the one who hit the market. A resting maker order that gets filled never appears there. So: compare the money in the wallet's own activity (ALL its fills) against what the public feed shows for the same period. Dollars that are missing moved through maker fills — flow you could never copy, because you never see it happen. This is the single most important copyability fact on Polymarket. One honest caveat: the two feeds aggregate trades differently, so this quick window gives a rough split — clear at the extremes, noisy in the middle. The wallet page's number reconciles the full history instead, which is why the two can differ.
curl -s "https://data-api.polymarket.com/trades?user=<wallet>&limit=500"Sum size × price over the overlap window and compare with the activity feed's usdcSize total.
A bettor with an opinion buys one side. A market-maker quotes both sides of the same market to earn the spread — profit you cannot copy, because it comes from queue position, not picks. Count the markets where this wallet traded BOTH outcomes; that is the dealer signature behind our "not copyable, market-maker" verdicts. Set-split and merge operations, when present, are the same flow in structural form.
REDEEM events are payouts collected at resolution — the wallet held to the end. Lots of SELL trades and few redeems is the opposite style: trading the moving odds and leaving before resolution. This is the evidence behind "holds to payout" vs "odds scalper" tags.
Of everything this wallet has collected at resolution recently, how much came from its single biggest payout? A record carried by one bet is one good day, not a repeatable edge.
Each request above returns a recent window, not the full history: Hyperliquid caps userFills at the most recent ~2,000 fills, and the Polymarket endpoints return whatever limit you ask for (up to 500 per call). The checks on this page are computed over exactly those windows, so the curl output reproduces the numbers here one-to-one. To audit further back: on Hyperliquid use {"type":"userFillsByTime","user":"<wallet>","startTime":<ms>} and page forward by moving startTime past the last fill you received (the API keeps roughly the 10,000 most recent fills in total); on Polymarket add an offset parameter to page through older events. This window difference is also why a wallet's Blacklight page can differ slightly from the quick checks: the page reconciles more history than one window holds.
Three of our measurements need the full trade and price history rather than a recent window, so they are beyond a one-click browser check: the de-levered edge (the same trades re-priced at 1× leverage), the alpha vs market split (how much profit survives after subtracting what the market did anyway), and the capture curves (what a copier entering minutes or hours late would have kept). The method for each is described in plain words on the About page, and all three are built from the same public fills you are checking here — just more of them.
The exact weights that turn these facts into the Total score are our recipe. But notice what that means: the score can only mislead you if the facts are wrong — and the facts are checkable here in seconds, without us in the loop. If you find one that doesn't hold up, tell us publicly; being correctable in the open is the point of building on public data.
Blacklight — honest, realizability-first wallet intelligence. Run any wallet · not financial advice.