Skip to main content

Cross-sectional funding-carry rankings for Hyperliquid perpetuals, sold per call in USDC.

Project description

carrydesk

Cross-sectional funding-carry rankings for Hyperliquid perpetuals, sold per call in USDC.

Every hour, rank the liquid Hyperliquid perp universe by trailing 14-day mean funding. The most negative names pay you to hold them long; the most positive pay you to short them. The spread between those two legs is the carry — a structural risk premium, not a prediction.

This is the same signal a live market-neutral book trades, published as an API.


Endpoints

Endpoint Price
free GET /v1/free/carry — top 5 each leg, delayed 24h
free GET /v1/method — how it is computed, and the caveats
free GET /health
paid GET /v1/carry/rankings — full live ranking, tunable k $0.05
paid GET /v1/carry/history/{coin} — archived rank + funding $0.02
paid GET /v1/universe — liquid perps by volume, OI, funding $0.01

Paid endpoints are metered with x402: the server answers 402 with payment requirements, your client pays USDC on Base, retries, and gets the data. No account, no API key, no invoice.


Quick start

curl -s https://carry.pelazas.com/v1/free/carry | jq
{
  "carry_spread_annualized": 0.3901,
  "carry_spread_annualized_trimmed": 0.2231,
  "carry_spread_annualized_median": 0.0955,
  "outlier_dominated": false,
  "longs":  [{"coin": "PENGU", "mean_funding_annualized": -0.0636}, ...],
  "shorts": [{"coin": "SAGA",  "mean_funding_annualized":  1.9886}, ...]
}

Three spread numbers, always. The headline mean is what an equal-weighted book earns; the trimmed and median readings tell you whether one illiquid name is carrying it. On the reading above, SAGA alone accounts for most of the gap — that is exactly the kind of thing a single number would hide.


MCP

claude mcp add carrydesk -- uvx --from git+https://github.com/pelazas/carrydesk carrydesk-mcp

No clone, no virtualenv — uvx fetches and runs it.

Six tools: carry_snapshot, carry_method, carry_health (free) and carry_rankings, carry_history, carry_universe (paid). It talks to https://carry.pelazas.com by default — override with CARRYDESK_API_BASE.

Set CARRYDESK_PRIVATE_KEY to let the agent pay automatically. Without it the free tools work and paid tools return the price instead of failing, so a wallet-less install is still useful.


Local development

uv venv --python 3.12 && uv pip install -e ".[dev]"
.venv/bin/python -m uvicorn carrydesk.api:app --reload   # open, no paywall
.venv/bin/python -m pytest -q                            # 14 tests, no network

With X402_PAY_TO unset the service runs fully open — that is the dev default. Set it to turn the paywall on. See .env.example.


For agents and crawlers

/llms.txt describes the whole service in plain text. /openapi.json is the full spec, /archive is every snapshot ever published, and the public page carries schema.org Dataset markup. Crawlers are explicitly welcome — the free tier exists to be read, indexed and quoted.

Honest limitations

  • The carry spread can and does go negative. This is compensation for absorbing crowded leverage, not a forecast.
  • All figures are gross of fees, slippage and borrow. Taker fees alone can erase the edge; the reference book is maker-only for that reason.
  • Funding is Hyperliquid's own, with no cross-venue reconciliation yet.
  • Illiquid names dominate the headline spread more often than not. Read the trimmed and median variants before sizing anything.
  • Informational only. Not investment advice.

Repo docs

File What
BACKLOG.md Deliberately deferred work, with the reason for each
AGENTS.md Onboarding for an AI agent picking this up cold — gotchas, rules, what is unverified
STATUS.md Current state, what is blocked, what is next
DECISIONS.md Why each significant choice was made

Project details


Download files

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

Source Distribution

carrydesk-0.1.0.tar.gz (55.8 kB view details)

Uploaded Source

Built Distribution

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

carrydesk-0.1.0-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

Details for the file carrydesk-0.1.0.tar.gz.

File metadata

  • Download URL: carrydesk-0.1.0.tar.gz
  • Upload date:
  • Size: 55.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for carrydesk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 adffdcd79b26fd65f9ba3edfddcb90e4867586c9d5916120367837e4193032b5
MD5 3421b3329ec2e6d36fa598877e53addd
BLAKE2b-256 2cb81d14569d004350e847a42b73fa938397d71a065ef91186c8c1feca85052a

See more details on using hashes here.

File details

Details for the file carrydesk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: carrydesk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for carrydesk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 559e03be9b03257b9175dd42ab45ade7cb05614d045848bf22a5ff5d704d1f75
MD5 70f1dc48a6d0292e466383bbcdfbb8c2
BLAKE2b-256 5664b91b297cee61cad7387b1e593b6af5c0ec1740b622f33bf9419def7a431d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page