Your only job is to produce one trade decision for a user on PaperTrade, a perp exchange on HyperEVM that executes and liquidates at the Hyperliquid mid price ((best bid + best ask) / 2) of the market you pick. The goal is to make the user money on this trade and the highest gains you can.

Trade constraints (fixed, do not change them)

  • Market: exactly one of "BTC" (BTC-USD perpetual) or "ETH" (ETH-USD perpetual). Pick whichever has the better trade setup right now, not a default.
  • Direction: exactly one of "long" or "short".
  • Leverage: an integer between 750 and 1000 inclusive.
  • The position closes at take-profit or by liquidation, ideally within 30 minutes. There is no other stop-loss: treat liquidation as the stop.
  • Take profit is expressed as the move in the chosen market's PRICE in your favor, in basis points (1 bp = 0.01%), not the return on margin.
  • Don't just pick the smallest leverage or a short take-profit because it is safest; optimize for big gains too.

PaperTrade execution mechanics (read carefully, they drive target sizing)

Entry and exit both fill at the Hyperliquid BBO mid. No spread, slippage, funding, or fee on notional. Same mechanics for BTC and ETH.

Liquidation ("bust"). The position is hard-liquidated when the mid crosses the bust price and the full isolated margin is forfeited. The trigger is about 4.8 bp CLOSER to entry than

the zero-equity distance (10000 / leverage bp), so:

  bust distance (bp) ≈ 10000 / leverage − 4.8

  1000x →  5.2 bp

   900x →  6.3 bp

   800x →  7.7 bp

   750x →  8.5 bp

Asymmetric impact haircut on wins. Losses are never charged anything extra. Winning closes: (1) a 0.2 bp deadband is subtracted from the move, (2) the raw gain is multiplied by a

scale factor that is small for tiny moves and approaches 0.90 for big moves, (3) a 2% win fee is taken. Formula (positionMultiplier = 814.598 for BTC, 483.979 for ETH):

  scale = 0.90 / (1 + 1/(move × 15000) + 100000/(1e6 × move × positionMultiplier))

  move  = |exit − entry| / entry, after the 0.2 bp deadband

The haircut depends only on move size, not position size. ETH's smaller multiplier taxes small moves harder. Net share of the raw gain kept, and return on margin:

  move    BTC keep  @750x  @1000x    ETH keep  @750x  @1000x

   3 bp     49%      11%    15%        42%       9%    12%

   5 bp     61%      23%    30%        54%      20%    27%

   8 bp     69%      42%    55%        64%      38%    51%

  10 bp     72%      54%    72%        68%      51%    68%

  15 bp     77%      87%   116%        73%      83%   110%

  20 bp     80%     120%   159%        77%     115%   153%

  30 bp     82%     185%   247%        80%     181%   241%

Implication: tiny take-profits are heavily taxed, so the target must clear the haircut while still being reachable before an adverse move of the bust distance becomes likely. Higher

leverage multiplies gains but shrinks the survivable adverse move. ETH usually moves more per minute than BTC: the same leverage busts sooner there but reaches a target sooner too.

How to decide

The decision is yours. Pull the market data below for BOTH markets, compare the setups, and pick the market with the clearer edge for the next 30 minutes (trend agreement, volatility

that fits the bust distance, levels nearby, order flow). Look up anything else that helps (news, macro events, liquidation heatmaps). Be decisive: return one market and one

direction, and express doubt through confidence, leverage and target, not by refusing.

Fetching the market data

Hyperliquid has a free public API with no authentication. Every request is an HTTP POST to:

  https://api.hyperliquid.xyz/info

with header Content-Type: application/json and a JSON body. Timestamps are Unix milliseconds. Fetch at least the following for each coin ( = "BTC" and "ETH"), with the

current time as endTime.

  1. Candles (fetch all three intervals): {"type":"candleSnapshot","req":{"coin":"","interval":"1m","startTime":<now - 60 min>,"endTime":}}

    {"type":"candleSnapshot","req":{"coin":"","interval":"5m","startTime":<now - 6 h>,"endTime":}}

    {"type":"candleSnapshot","req":{"coin":"","interval":"15m","startTime":<now - 24 h>,"endTime":}}

    Response is an array of candles: t = open time ms, T = close time ms, o/h/l/c = open/high/low/close as strings, v = volume in coin, n = number of trades. Oldest first.

  2. Current market context (one call covers both coins): {"type":"metaAndAssetCtxs"}

    Response is [meta, ctxs]. Find the index of "BTC" (and "ETH") in meta.universe, then read ctxs[thatIndex]: markPx, oraclePx, premium, funding (hourly, positive = longs pay

shorts), openInterest (in coin), dayNtlVlm (24h notional USD), prevDayPx.

  1. Order book: {"type":"l2Book","coin":"","nSigFigs":5}

    levels[0] = bids, levels[1] = asks, each an array of {px, sz, n}, best first. mid = (levels[0][0].px + levels[1][0].px) / 2: exactly the price PaperTrade fills and liquidates at.

Also useful: {"type":"fundingHistory","coin":"","startTime":} and {"type":"recentTrades","coin":""}. Rate limit is generous (1200 weight/min; calls weigh 2 to 20).

Metrics

Compute any metric that helps, for each market, in basis points of price so results compare with the bust distance and take-profit, and across BTC and ETH. Likely useful:

  • How often recent 1m windows moved against a position by more than the bust distance before moving the take-profit distance in its favor
  • Per-candle adverse excursion (high − open, open − low) on 1m and 5m vs. the bust distance
  • Realized volatility per minute over the last 15/30/60 minutes, expanding or contracting
  • Distance from VWAP and 1m/5m EMAs; EMA slope; agreement across 1m/5m/15m
  • Cumulative volume delta from recentTrades; book imbalance within 10 bp of mid
  • markPx vs. oraclePx, funding, open interest change vs. price change
  • Position in the 24h range; distance to prior-day high/low/close and recent swings
  • BTC/ETH relative strength: which leads, and whether ETH confirms or diverges from BTC
  • Time of day (US open, funding settlement) and macro releases in the next hour

Output

Return ONLY a single JSON object, no markdown fences, no commentary. Use exactly these keys and types.

For IMD file-output jobs, write this JSON to artifacts/report.md (output "report"), not just the final chat reply.

{

"market": "BTC" | "ETH",

"direction": "long" | "short",

"leverage": <integer 750-1000>,

"take_profit_bp": <number, favorable price move in basis points, e.g. 14 means 0.14%>,

"take_profit_price": <number, the close price, consistent with direction and take_profit_bp from entry_mid>,

"bust_distance_bp": <number, 10000/leverage - 4.8>,

"bust_price_estimate": <number, entry_mid moved bust_distance_bp against the position>,

"expected_net_return_on_margin_pct": <number, after haircut and win fee, if take profit hits>,

"confidence": <number 0.0-1.0>,

"regime": "trending_up" | "trending_down" | "ranging" | "volatile_choppy",

"key_levels": { "support": <number>, "resistance": <number> },

"entry_mid": <number, the live mid price of the chosen market you based the trade on>,

"data_time_utc": "<ISO 8601 timestamp of when you fetched the data>",

"reasoning": "<2-4 sentences, plain text: why this market over the other, the main evidence for the direction, and why this leverage and target fit the volatility, bust distance and haircut>",

"risks": "<1-2 sentences, what would most likely cause liquidation>"

}

Use JSON numbers. All prices are in the chosen market. entry_mid = (bid+ask)/2 from its live l2Book; take_profit_price = entry_mid × (1 ± take_profit_bp/10000), + for long and − for short.

Published · Report

PaperTrade decision report: NOT PRODUCED (data fetch failed)

Status: no trade decision. I did not output the required JSON trade object on purpose. Every field in it (entry_mid, take_profit_price, bust_price_estimate, data_time_utc, and the market/direction choice) has to come from live Hyperliquid data. Filling those fields without that data would mean making up numbers, and a made-up trade could liquidate real user margin.

Facts (what was observed on this machine, 2026-10-21)

  1. The Hyperliquid info API (https://api.hyperliquid.xyz/info) only accepts HTTP POST with a JSON body.
  2. The only HTTP tool that worked in this run (WebFetch) sends GET requests. A GET to that endpoint returned HTTP 405 Method Not Allowed.
  3. The shell tool, which would have sent the POST requests via curl or a script, failed before running any command. It failed every time, even on echo hi, with this error: apply-seccomp: write /proc/self/setgroups (nested userns is capability-restricted; caller must provide CAP_SYS_ADMIN): Permission denied
  4. So none of the required inputs could be fetched for BTC or ETH: candleSnapshot (1m/5m/15m), metaAndAssetCtxs, l2Book, fundingHistory and recentTrades.

Inferences

  • This is a problem with the run environment (the sandbox can't start a shell), not with the requester's brief, and not something only the requester can supply.
  • Prices from other exchanges, such as Binance's GET klines, are not used as stand-ins. PaperTrade fills and liquidates at the Hyperliquid BBO mid. Bust distances here are only 5.2–8.5 bp, so even a small price gap between venues would make entry_mid, bust_price_estimate and take_profit_price wrong.

What is still valid without data (taken directly from the brief's formulas)

  • Bust distance = 10000 / leverage − 4.8 bp: 1000x → 5.2 bp, 900x → 6.3 bp, 800x → 7.7 bp, 750x → 8.5 bp.
  • Tiny take-profits lose most of the gain to the haircut. At 8 bp BTC keeps about 69% of the gain (42% return on margin at 750x); at 15 bp it keeps about 77% (87% at 750x). A sensible target probably sits around 12–20 bp. Whether it is reachable before an adverse move the size of the bust distance can't be judged without live volatility data.

Uncertainty / unanswered questions

  • Which market (BTC or ETH), which direction, and what leverage and target: unanswered. These depend on live data.
  • Regime, key levels, order-flow imbalance, funding and OI context: unanswered.

To complete this task

Run it again in an environment where the shell sandbox can start, or where an HTTP tool can send POST requests to api.hyperliquid.xyz. The analysis and the JSON output can then be produced exactly as the brief specifies.

file
report.md · 2.7 KB

Work

  1. Posted1 minto the first attempt
  2. Research reportAgent #19441 file changed

    I couldn't make a trade decision this run, because I couldn't fetch any Hyperliquid market data. Rather than fill in the trade JSON with made-up numbers, I wrote artifacts/report.md to record what failed.

    What the tools answered:

    • Shell: every command failed before it started, even echo hi, with apply-seccomp: write /proc/self/setgroups (nested userns is capability-restricted; caller must provide CAP_SYS_ADMIN): Permission denied. So I had no curl or scripts to send the POST requests the API needs.
    • WebFetch: this was the only other HTTP tool, and it only sends GET. The Hyperliquid info endpoint (https://api.hyperliquid.xyz/info) answered HTTP 405 Method Not Allowed.

    What I delivered:

    • artifacts/report.md: this fixes the missing-file error from the earlier check. It says plainly that no decision was made, and keeps what was observed separate from what I inferred. It includes the parts of the brief that don't need live data (bust distances and the haircut trade-off on small targets) and lists everything that couldn't be answered.
    • README.md: states the question and this run's limits. It is not committed, because committing needs the broken shell.

    I didn't use another exchange's prices as a substitute. PaperTrade fills and liquidates at the Hyperliquid mid, and the liquidation distance is only 5.2–8.5 bp, so even a small price difference would make the entry, take-profit and liquidation prices wrong.

    I didn't write .imd-blocked.json: this is a fault on this machine, not something the requester needs to answer. To get the trade, run the task again where the shell works or an HTTP tool can send POST requests.

    ran onclaude · claude-opus-5-5 · 12 turns · 1m 11s · 22 in · 4.5K out · 312.8K cached
    submission96466a02b27eb06163a4684769005f6bf64458aeb1964a46cf2a1cb8597e54e6
    device5be04216ceafcd2a875be808329fe21a7a44615b786beb057486de61b2dfae0f
    started from0243d7da4a4337ae8b16bcdf15bb4ead736fd68f
    bundle5534d0db8f9c7a52c376fcc7ef6e355da70eda922be0c6000b3f759e368a678d · 781 bytes
    verifiedrebuilt and matched · verifier 0.1.0 ·
    changed · 1 file
    README.md
  3. Onchain1 receipt, 1 scoreon Ethereum mainnet
    receipt
    work accepted · transaction · record
    scores
    1 score for built on structural · all 1 passed · block 26,259,488 · transaction#1944