Research crypto perpetual swaps, dated futures and options from live public exchange data: funding rates, open interest, basis, liquidations, put/call ratios and max pain. Read-only, no API keys. Use when checking funding across exchanges, comparing open interest, reading the futures term structure, reviewing recent liquidations, or summarizing the options market for BTC or ETH. Trigger with phrases like "funding rate", "open interest", "perpetual swap", "futures basis", "liquidations", "put call ratio", "max pain", "derivatives analysis", or "BTC perps".
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Pull funding rates, open interest, dated-futures basis, liquidations and options data from public, keyless exchange endpoints, normalize them to common units, and report each figure with its source. When a venue fails, it is named with the reason; no value is ever invented.
| Data | Venues |
|---|---|
| Funding, open interest | OKX, Deribit, Hyperliquid, Kraken Futures, KuCoin Futures, Gate, dYdX, Binance, Bybit |
| 24h open interest change, account long share | OKX, Binance, Bybit |
| Dated-futures basis | Deribit, OKX |
| Filled liquidations | OKX |
| Options (put/call, max pain, ATM IV, DVOL, large trades) | Deribit (BTC, ETH) |
Binance and Bybit refuse connections from US networks (HTTP 451/403). The tracker reports that and carries on with the other venues.
All commands run python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py. Every command accepts --format json, --demo (replays bundled recorded BTC data, marked on every line) and --timeout SECONDS.
Funding rates per venue, scaled to an 8-hour equivalent and a simple annual rate:
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py funding BTC ETH
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py funding SOL --venues okx,hyperliquid,krakenPositive funding means longs pay shorts. Hourly venues (Hyperliquid, Kraken, dYdX) are multiplied by 8 so they compare with 8-hourly venues.
Open interest per venue, counted on one side, with 24-hour change in coins where the venue publishes hourly history:
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py oi BTCBasis for every dated future against the same venue's index:
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py basis BTCLiquidations filled on OKX over a look-back window (default 24 hours):
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py liquidations BTC --hours 12Options on Deribit: per-expiry put/call ratios, max pain and ATM IV, DVOL rank, and optionally large recent trades:
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py options BTC
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py options ETH --expiry 27NOV26 --large-trades 1000000 # 1000000 = minimum trade notional in USDDashboard with funding, open interest and a reference basis for several coins:
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py dashboard BTC ETH SOLList venues and what each provides: derivatives_tracker.py venues.
When summarizing results for the user, describe the data (for example "funding is positive on 6 of 7 venues") and keep the source and fetch time. Do not turn the figures into buy, sell or hold advice.
Console tables by default, ending with the sources used and the line "Research output only. Not financial advice. This tool places no trades." With --format json, every command returns one envelope:
{"skill": "tracking-crypto-derivatives", "version": "2.0.0", "command": "funding",
"symbols": ["BTC"], "generated_at": "2026-10-25T16:11:51Z", "mode": "live",
"sources": ["https://www.okx.com/api/v5/public/funding-rate?instId=BTC-USDT-SWAP", "..."],
"failures": [{"venue": "binance", "reason": "refused from this network (HTTP 451, region restriction)"}],
"data": [...], "disclaimer": "Research output only. Not financial advice. This tool places no trades."}See references/implementation.md for units, formulas and per-venue field mapping, and references/examples.md for real output.
| Message | Cause | What to do |
|---|---|---|
refused from this network (HTTP 451/403 ...) | The venue blocks your region (Binance, Bybit from the US) | Nothing; the other venues still report. Use --venues to skip it. |
rate limited (HTTP 429) | Too many requests | Wait a minute and retry |
... not listed | The venue has no market for that coin | Expected for smaller coins |
timed out after Ns | Slow network or venue | Retry, or raise --timeout |
the bundled demo recording covers BTC only | --demo with another coin | Run without --demo |
| Exit code 2 | No venue returned data | Check the "Unavailable" list |
More in references/errors.md.
Cross-venue funding check (an excerpt of captured live output; full runs with their capture time are in references/examples.md, and live figures change every minute):
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py funding BTCkraken PF_XBTUSD +0.0015% 1h +0.0119% +13.08% 0h 49m
kucoin XBTUSDTM +0.0100% 8h +0.0100% +10.95% 7h 49m
okx BTC-USDT-SWAP +0.0054% 8h +0.0054% +5.97% 7h 49m
deribit BTC-PERPETUAL +0.0035% 8h +0.0035% +3.84% continuous
dydx BTC-USD -0.0001% 1h -0.0006% -0.60% 0h 49m
Of 7 venues, funding is positive on 6, negative on 1.Term structure as JSON for further analysis:
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py basis ETH --format jsonTry it offline:
python3 ${CLAUDE_SKILL_DIR}/scripts/derivatives_tracker.py dashboard BTC --demoreferences/implementation.md: endpoints, units, formulas, what is not coveredreferences/examples.md: real output for every commandreferences/errors.md: error messages and fixespython3 -m unittest discover -s tests -v (offline, replays recorded responses)python3 scripts/record_demo.pyab85a06
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.