LIVE ON TESTNET

Sats-native perpetuals.

Inverse contracts on a Bitcoin-native venue — one-click signup, no email, testnet sats from the faucet, and a ledger that itemizes to zero.

Testnet — sats and USDhb here have no value.
HARDBASIS TERMINAL · TESTNET
BTC-PERP ······ CONNECTING
1m 15m 1H 1D
LIVE · TESTNET SESSION
ORACLE PRICE
······
No order book — every order executes against the vault at oracle ± spread, at the next print.
PRICE · SINCE PAGE LOADTIME
······
······
······
······
······
NEXT PRINT —
Long Short
10k 50k 250k Custom
50 000 SATS
50 000 sats → 32 contracts · 50 063 sats actual
Contracts32 · $32.00 notional
Margin5 006.3 sats · 10% · effective 10×
Implied liq58,707.44
Max loss5 006.3 sats
Fee15.0 sats · 3 bps
Inverse contract — margined & settled in sats.
Long 32 contracts
One-click signup — no email, no KYC on testnet
Faucet sats in seconds
Every fill itemized to the millisatoshi.
ACCOUNTING

The ledger is the product.

Every order produces a receipt that itemizes to zero. Margin, fee, impact, PnL — every line accounted, every balance derivable from your own history.

Fail-closed by design — on stale prices the venue pauses orders, never improvises. “Prices stale — orders paused.”

LEDGER RECEIPT · ROUND TRIPBTC-PERP
OPEN — LONG 32 @ 63,919.61
Margin−5 006.3
Taker fee (3 bps)−15.0
Impact−10.6
Debit5 031.9 sats
CLOSE @ 63,944.20
Margin+5 006.3
PnL+19.3
Impact rebate+10.6
Taker fee−15.0
Credit5 021.2 sats
Round trip−10.7 sats — every line accounted.
PRODUCTS

One venue, margined in sats.

Perps

LIVE
BTC-PERP · inverse · sats-margined 10% margin, effective 10× 3 bps · funding hourly
Trade on testnet →

Derivatives

COMING
BTC · UP / DOWN
1H 0.51 / 0.49
1D 0.53 / 0.47
1W 0.56 / 0.44
Settles vs Coinbase.
SPCX · TSLA — daily, weekly, monthly · settles vs Nasdaq official close
A fresh market every interval. UP or DOWN against one named public source anyone can verify.

Spot

COMING
BTC/USDhb
Book-first execution with pool continuity.

USDhb

COMING
USDhb is minted internally as the byproduct of fully-collateralized 1× shorts. Public mint & redeem coming.
LIVE Equity & gold quanto perps COIN · MSTR · SPCX · TSLA · XAU Sats-margined, sats-settled exposure to Nasdaq names and gold — quanto contracts on live marks, market-hours gated, up to 5×. Trade on testnet →
EXECUTION

How execution works.

1
An oracle print arrives (Coinbase-sourced, staleness-gated).
2
Your order executes against the vault at oracle ± spread — no book to jump, no queue to game.
3
The fill writes a receipt; the receipt sums to zero.
API

No human in the loop.

The trading API is public — live on the testnet gateway today. Self-serve signup with no email and no CAPTCHA, faucet funding, market data, WebSocket streams, orders, delegated keys, withdrawals: the whole loop is plain curl, verified end to end against the live gateway.

Machine-readable by design: the OpenAPI 3.1 spec is generated from the gateway's own contracts — CI fails if they drift — the docs ship as llms.txt, and every money field crosses the wire as a decimal string with a declared unit. Integer millisats, never floats.

AGENT LOOP testnet.hardbasis.com
$ curl -X POST $HB/v1/signup
    → account + master key. no email, no KYC
$ curl -X POST $HB/v1/faucet
    → testnet sats, normal deposit path
$ curl -X POST $HB/v1/orders \
    -d '{"marketId":"btc-usd","side":"buy",
        "type":"market","contracts":"10"}'
$ curl -X POST $HB/v1/sessions \
    -d '{"label":"bot",
        "scopes":["read","trade"]}'
    → bot key: can trade, cannot withdraw
$ curl -X POST $HB/v1/cancel-all-after \
    -d '{"timeoutMs":"60000"}'
    → if the bot dies, orders die with it
$ curl -X POST $HB/v1/withdrawals
    → free balance: works in every halt mode
HB = https://testnet.hardbasis.com · auth is one x-api-key header · every mutation takes an idempotency-key, so retries are safe.

Scoped keys

Four scopes — read · trade · withdraw · session-management. Mint a trade-only delegate for the bot loop and keep the master key cold: a stolen bot key cannot withdraw.

Dead-man's switch

Arm cancel-all-after and the venue cancels your resting orders if the bot stops calling in. Optional cancel-on-disconnect rides the WebSocket session.

A spec that can't drift

openapi.json is generated from the gateway's own route contracts, and CI fails when they disagree. Point a client generator at it — correct by construction.

Docs agents can read

llms.txt and llms-full.txt index the docs for machines, and every money field in the spec carries a unit annotation (x-hardbasis-unit) — a generated client can't mistake msat for a float.

Three rate-limit budgets

Read, order, and withdraw spend from separate budgets with per-key and per-account ceilings — order churn can never block a withdrawal. Standard X-RateLimit-* headers; read your own at GET /v1/limits.

Zero-human onboarding

Self-serve signup on testnet: no email, no KYC, no CAPTCHA. From nothing to a filled order in one script — testnet sats have no value, so an agent can practice safely.
VENUE

Beyond the ticket.

Triggers & brackets

Stop-loss, take-profit, and limit orders rest in the engine and fire when the oracle touches your level. Or arm all three at once — an atomic bracket: entry, take-profit, stop, OCO-linked so one leg filling cancels the other.
Open the terminal →

Leaderboard

PnL and ROI boards over 7-day, 30-day, and all-time windows, computed venue-side from the deterministic event log. Rankings are pseudonymous — claim a handle for a public profile at /t/…, or opt out and the profile is simply absent.
See the boards →

Refer & Earn

Trade enough to earn a code, share it, and earn 15% of your referees' net taker fees — in sats, accruing from their first fill. Rewards vest after a 7-day holdback, then claim to free balance. Referees trade 10% off for 30 days or their first 1 BTC of notional.
Partners — negotiated terms for larger audiences.
Program terms →

Install the terminal

HardBasis is an installable web app — home screen on mobile, app window on desktop. The shell loads offline; prices are never cached: a figure is live or visibly marked stale. New builds announce themselves, one tap to reload.
Open the app →
TRUST

The venue shows its work.

Customer liabilities are reconciled against holdings continuously, and the result is published — drift included. Every proof surface follows one doctrine: a live figure is live, or it looks dead.

Proof of Reserves — live

The engine reconciles rail holdings against customer liabilities and publishes each pass with its history — a reconciliation that doesn't balance is published as not balancing. Liabilities sum into a Merkle root, and your account can fetch an inclusion proof that your balance is inside the published total.
Open the live PoR →

Staleness shown, not smoothed

Every figure carries its age, and past the server's own threshold the page declares itself stale instead of rendering old numbers with live confidence. An absent figure renders as “—” — never zero, never the last value that happened to be handy.

The withdrawal covenant

Withdrawing free balance works in every mode the engine can be in — halts included. The withdrawal paths carry no dependency on any risk, compliance, or referral control, and the test suite fails the build if one is ever introduced.
HARDBASIS

Trade Bitcoin. Margined in sats. Settled in sats.

Launch testnet →
Testnet — sats and USDhb here have no value.