Network and limits
Which Strike network guarantee
A deployment executes Live orders on one Strike network, chosen by its operator: testnet (the default, and what the hosted app uses) or mainnet. Live mode uses only that network: your connection, your orders, the board it shows (labelled, for example, Live · testnet), the liquidity gate and the plan.
Practice can use another network's public prices. The hosted app does: practice follows Strike mainnet's prices ("Strike mainnet prices"), while Live orders execute on Strike testnet, with no real funds. Reading public prices never moves funds.
| Network | Strike host | Collateral |
|---|---|---|
| testnet | api-v2-testnet.strikefinance.org | testnet USD, no real value |
| mainnet | api.strikefinance.org | real funds |
The server checks every Strike URL when it starts. Each must be the exact host of the network it serves; any other host, including the other network's, is a configuration error and the server refuses to start. There is no fallback from one network to the other.
Live trading on mainnet needs a second, explicit switch (LIVE_MAINNET_ENABLED=true). Without it, a mainnet deployment keeps Live mode off. The builder code is the same on both networks. Operators: see Environment variables.
Markets
Live mode offers BTC-USD, ETH-USD and SOL-USD, the same markets as practice. ADA-USD is left out: its order rules on testnet set a minimum order price above its current price, so a live order there can't be placed.
Limits
| Limit | Value |
|---|---|
| Notional per box | $25, $50, $100 or $200; never more than $200 |
| Open live boxes at once | 3 per user, and one per market |
| Live notional per day | $5,000 per user per UTC day |
| Entry price | the best opposite price, which must be within 0.5 % of the mark price |
| Minimum stop distance | 0.15 % (15 basis points) from the entry price and from the current mark |
| Liquidity gate | best bid and ask both within 0.75 % of mark, at least 2 × notional resting within that band on each side, a current order book, the same answer for long and short (details) |
| Market minimums | size step and minimum order value from Strike's market rules. On testnet, BTC-USD currently needs at least $100, so the $25 and $50 presets are disabled there |
| Kill switch | the operator can switch Live off. It stops new connections and new entries only |
Live mode also needs the deployment to be set up for it. When it isn't, the app says why, for example "Live trading is switched off on this deployment".
What the kill switch does not stop
Switching Live off never abandons a position that is already open. Reconciliation with Strike, deadline exits, closes you ask for, protective closes, reading your account and disconnecting all keep running. Only new entries and new connections are refused.
How orders are kept safe
- Written down before sent. Every order strikeabox sends is first recorded in a durable outbox, with a predictable client order id derived from the box.
- Looked up before re-sent. Strike doesn't de-duplicate orders by client id. So after a timeout or a crash, the worker asks Strike whether the order exists (
GET /v2/order?client_order_id=…) before it ever sends it again. An order with no Strike record and no stream event within 8 seconds is treated as not placed. - Late fills are watched for. An entry judged "not placed" is still looked up until the end of its window plus a margin, because Strike may fill it late. A late fill brings the box back to life and it is managed like any other. Until then, a new entry on the same market answers "An earlier Live entry on BTC-USD is still being ruled out at Strike; try again in about a minute" (with that market's name).
- Reconciled after every reconnect. Results come from your Strike account stream. After a reconnect, the worker re-reads orders and positions from Strike's REST API. Until it has, the box shows
RECONCILING.
CLOSE_FAILED
CLOSE_FAILED means strikeabox tried to close your position at the time exit and could not.
The position is still open on Strike. It keeps its profit or loss, can still be liquidated, and keeps paying or receiving funding until you close it.
What strikeabox does first: at the window end it cancels the remaining target and stop, then sends a reduce-only closing order, sized to what that box opened and hasn't closed. If that doesn't close the position, it retries with a wider price allowance: 1 %, then 3 %, then 5 % from the middle of the book. Only when those fail does the box become CLOSE_FAILED, and you are told straight away.
After that it keeps checking the box. It places a reduce-only protective stop on the remaining position, on a best-effort basis, so the position isn't left with no stop at all. If the position later turns out to be closed, the box gets its real outcome. None of this replaces closing the position yourself.
A close can also be interrupted: strikeabox loses access to your Strike connection (you disconnected, Strike revoked the key, or the server can no longer read it), or the close keeps failing for about a minute (Strike can't be reached, or keeps refusing strikeabox's requests). The box then becomes CLOSE_FAILED too, and the message says whether the target and stop are still on Strike or already cancelled. strikeabox finishes the close as soon as it can use Strike again, for example after you connect the same wallet again. While a box is CLOSE_FAILED, no new box can be opened on that market.
What you do:
- Open the Strike app (testnet.strikefinance.org on the hosted app) with the wallet you connected.
- Go to your positions and find the market of the box.
- Close the position there. Check open orders too, and cancel any leftovers.
Testnet is a test environment
Testnet prices, books and uptime can behave differently from a production market. Thin books, wide spreads and pauses are normal there, and testnet prices can differ from mainnet's. On the hosted app this matters for Live mode only: the Live board, the gate and your fills are testnet's, while practice follows mainnet's prices.
When the price feed of the network practice uses stops, no new practice taps are accepted, and practice boxes whose windows lose coverage without a touch are voided and refunded. When the execution network's feed stops, Live mode shows the stale banner, takes no new taps and its gate closes. Open live boxes keep their target and stop on Strike, and the deadline exit still runs.