The quant terminal that pays its builder on every fill.

Vektor puts three autonomous engines on Strike's central limit order book: a builder-fee grid studio with real-candle backtesting, a delta-neutral funding harvester, and a 24/7 liquidation shield that acts before the engine does.

Demo opens instantly, no wallet needed  ·  Live trades on Strike mainnet with your wallet
0Autonomous enginesGrid · Harvester · Shield
0Round trips7-day ADA-USD backtest
$0 vs $0Builder revenueVektor vs Strike's native bot
<5%Buffer to liquidationtriggers the auto-trim
Backtest: 7-day mainnet ADA-USD window ending 22 Oct 2026 21:00 UTC, ±6%, 12 levels, $600 at 10x, 10 bps builder fee ($23.95). Run your own in the app.
 vektor · ADA-USD · grid studio
Resting10
Round trips0
Grid PnL$0.00
Builder fees$0.00
Three modules, one orderbook

Everything a perps trader wishes the exchange shipped.

Each engine is a pure, unit-tested TypeScript module. The same code runs against an in-browser matching engine in Demo mode and against Strike's REST + WebSocket API in Live mode - only the adapter changes.

01

CLOB Grid Studio

A neutral grid - buys below the mark, sells above, the level nearest the mark left empty so the sides never collide. Geometric or arithmetic spacing, 4–60 levels.

  • Every rung placed in one POST /v2/orders/batch, post-only, with X-Builder-Fee-Bps
  • Fill → counter take-profit one rung away for the filled quantity; exit fill → entry re-armed
  • Net profit per round trip shown after maker fees and builder fee
  • Whale-wall radar and VWAP slippage probe on the live top-20 book
/v2/orders/batch/price/v2/depth@depth diffsORDER_TRADE_UPDATE
02

Funding Harvester

Strike pays funding hourly. Vektor ranks every market by annualised funding (r × 24 × 365), then sizes a 1:1 perp hedge against spot you already hold.

  • Liquidation price of the hedge from the market's real margin tiers
  • Sliced IOC entry that keeps the builder fee (Strike's TWAP drops it)
  • Rule C: unwinds automatically after 3 consecutive adverse funding hours
  • Live tracker: perp uPnL vs funding collected
/price/v2/premiumIndex!markPrice@arrmargin_tiers
03

Aegis Liquidation Shield

Computes distance-to-liquidation for every open position with the same formulas as Strike's engine and escalates before the engine gets there.

  • Rule A < 8% buffer: cancel resting buy rungs to free margin
  • Rule B < 5% buffer: reduce-only market trim of 25%
  • Per-symbol cooldown + pending-trim flag - never fires twice for one episode
  • PANIC button: cancel everything, flatten with close_position
/v2/order/cancelreduce_onlyACCOUNT_UPDATE
Module deep dive

Designed around how Strike's engine actually behaves.

Writes are async - a 201 pending means sequenced, not filled. Rejections like order_would_match_immediately arrive on the user stream. Vektor's engines are built for that reality, not a toy exchange.

01 / GRID STUDIO

Order roles live in the client ID.

Every rung order is tagged vektor-grid-<id>-<rung>-<e|x>-<seq>. When a fill comes back on the user stream, the engine knows exactly which rung and whether it was an entry or an exit - even after a reconnect or a page reload.

e BUY fills at rung i → place exit SELL at rung i+1 for the filled qty
e SELL fills at rung i → place exit BUY at rung i−1
x fills → round trip booked, entry re-armed; never stacks on a rung that already rests the same side
CANCELED / REJECTED / EXPIRED → rung freed, logged with the engine reason
02 / FUNDING HARVESTER

Delta zero, funding positive.

Positive funding means longs pay shorts every hour at HH:00 UTC. Hold 10,000 ADA in your own wallet, short 10,000 ADA-perp at 2x, and you collect funding regardless of direction. Vektor shows the hedge's liquidation price so a rally can't surprise you.

APR = |hourly rate| × 24 × 365 - Strike funds hourly, not every 8h
LP = (EP − (iso + MA)/size) / (1 + MMR) from the live margin tiers
Entry N IOC limit slices through /v2/orders/batch - builder fee attached
Exit Rule C unwind, or one-click reduce-only flatten
03 / AEGIS SHIELD

Programmable, not panicky.

A naive shield fires a trim on every mark tick while you're under the threshold. Aegis tracks a per-symbol cooldown and a pending-trim flag, resets the episode only once you're back to SAFE, and logs every decision with the buffer that triggered it.

RULE ABuffer < 8% → cancel every resting BUY rung on that symbol. Frees locked order margin immediately. Fires once per episode.
RULE BBuffer < 5% → reduce-only market trim of 25% of the position. Cooldown 15s, blocked while a trim is pending.
RULE CFunding flipped against the hedge for 3 consecutive hours → unwind the perp leg.
PANICCancel all orders on every symbol, flatten every position with close_position: true. Confirmed, then immediate.
What makes it stand out

Not a reskin of the reference app.

Nine capabilities built on top of the reference stack, each one tested and each one wired to a real Strike endpoint.

Backtest before you deploy

The exact range you draw is replayed over 24h / 7d / 30d of mainnet candles through the same matching engine and grid code as the live grid. Net after builder fee, annualised, max drawdown, time-in-range, equity curve.

Smart range

Range = last ± 3×ATR(14). Level count sized so spacing clears Strike's own fee floor (spacing > mid × (maker + taker)). One click applies it to the sliders.

Reconcile after reload

Live grids persist locally (no secrets) and are rebuilt from GET /v2/openOrders by client-ID prefix on reconnect. Rungs that filled or were cancelled while you were away are dropped, not assumed.

Head-to-head vs native grid bot

Same range, same candles: Vektor vs Strike's /v2/grid/bot. The native bot is arithmetic-only and carries no builder code, so its builder revenue is $0 by construction. In Live mode, launch the real one and watch both.

Liquidity heatmap

Bookmap-style time × price × resting notional from the top-20 book, mark overlaid. See where the walls were, not just where they are.

Verifiable, not claimed

Every fill Vektor makes is tagged. The public proof page re-reads them from Strike's history API in your browser and prints the curl commands so you can check the numbers yourself.

Funding skew, brackets, auto-shift

Rung sizes tilt toward the side that receives hourly funding. Each entry can carry a stop leg via /v2/order/strategy. When price leaves the range the ladder re-centres in one /v2/orders/replace.

L3 radar + regime guard

Order-level feed flags spoofed walls and icebergs. Fear & Greed, open-interest shocks and 24h range pause or widen grids before the market does it for you. Plus an agent skill + CLI and vault execution.

Autopilot - runs while you sleep

Tick one box before Deploy and your grid moves to the Vektor server: counter orders, shield and auto-shift keep running after you close the tab. Your trade-only Strike key is enrolled with a signature, encrypted at rest, and can never withdraw. Disable any time.

Browser alerts + multi-symbol

Shield warnings, trims and grid round trips notify even in a background tab. Run one grid per market - ADA, BTC, ETH, SOL - all shielded, all listed with per-grid PnL and builder fees.

Builder code economics

A 12-rung grid is 12 attributed orders. Every flip is one more.

Strike's Builder Codes pay a per-fill fee (X-Builder-Fee-Bps, 0–100 bps) to the integrator. Market-order buttons generate one fill. A grid generates continuous maker flow for as long as the market ranges. Vektor is built so that all of it is attributed.

Order pathHonours X-Builder-Fee-BpsVektor uses it for
POST /v2/orders/batchYesGrid deployment, counter orders, hedge slices, shield trims
POST /v2/order/strategyYesBracket TP/SL (reference app)
POST /v2/grid/bot (native)No - no builder code at allHead-to-head comparison only
POST /v2/algo/twapNoReplaced by Vektor's sliced IOC entry
POST /v2/order/replaceNoAvoided - cancel + batch instead

Live telemetry in the app header: volume routed, fills, and cumulative builder fees - so the business model is visible on screen, not just in a pitch deck.

How it works

From wallet signature to self-replenishing grid in five steps.

01
Connect

Cardano / Solana / EVM wallet signs a Builder Connect challenge. A fresh Ed25519 API wallet is generated client-side and approved for your builder code.

02
Design

Drag a range, pick levels and leverage. Vektor snaps to tick/step, checks min notional, and shows net-per-cycle after every fee.

03
Backtest

Replay the grid over real mainnet candles. Compare geometric vs arithmetic, and Vektor vs the native bot.

04
Deploy

One signed /v2/orders/batch request. Every rung rests post-only with the builder fee attached.

05
Run shielded, 24/7

Fills stream in over /ws/user-api; counters fire in milliseconds and Aegis trims before liquidation. Tick Autopilot and the server keeps it running after you close the tab.

Architecture

Pure engines. One adapter seam. Two backends.

Demo mode is not a mock UI - it's the real engines driving an in-memory matching engine with post-only rejects, reduce-only clamps, maker/taker + builder fees and isolated liquidations. 78 automated tests cover the engines, the backtester, the simulator and a full render of the app.

// the seam between engines and the exchange
interface ExecutionAdapter {
  mode: "live" | "sim";
  placeBatch(orders: CreateOrderRequest[]);
  cancel(symbol, clientOrderId);
  cancelAll(symbol?);
  onFill(cb: (fill: FillEvent) => void);
}

// src/api/liveAdapter.ts  → /v2/orders/batch + user stream
// src/sim/simExchange.ts  → in-memory book, same surface
src/
  quant/        gridEngine · fundingHarvester
                liquidationShield · whaleRadar
                backtest · rangeSuggest
  sim/          simExchange · priceSim · demoMarkets
  api/          auth (Ed25519) · liveAdapter · vektor
  hooks/        useVektor - one grid per symbol,
                shield, hedge, depth frames, tick loop
  components/   GridStudio · GridLadder · DepthHeatmap
    quant/      BacktestCard · HeadToHead · ShieldPanel
                FundingHarvester · ActiveGrids
Where this goes

A business on Strike's order book, not a hackathon demo.

Vektor's revenue is the builder fee on every fill. Each milestone below multiplies attributed fills on Strike's book.

WEEKS 1–2
Vektor Grid Vault

vault_id is already on every order. Add the vault stream and anyone can deposit into skewed, shielded grids - every vault fill still pays the builder code.

WEEKS 2–4
Headless parity

Brackets, auto-shift and regime guard in the 24/7 worker; sub-account per strategy; DMA hot path.

MONTH 2
STRIKE flywheel

Builder revenue → STRIKE staking → lower fee tier → wider net-per-cycle → more volume. Revenue share for stakers.

MONTH 2
Social layer

Public strategy pages with verified history, one-click clone, leaderboard and referral codes.

MONTH 3
Multi-venue carry

Route the perp leg to the best hourly funding; spot stays in your wallet. Agent-native via MCP.

FAQ

Questions, answered.

Does it run 24/7 if I close the tab?

Yes, with Autopilot. Tick "Keep running when I close this tab" before Deploy and the Vektor server runs your grid - counter orders, shield, auto-shift - around the clock on your own account. It holds only your trade-only Strike API key, enrolled with a signature and encrypted at rest; it cannot withdraw, and "Disable Autopilot" wipes it. Without Autopilot the grid runs while the tab is open and reconciles against open orders when you return.

Why not just use Strike's native grid bot?

It exists and Vektor can launch it for comparison. But it ignores X-Builder-Fee-Bps entirely, is arithmetic-only, and the client can't shield its orders. Vektor's grid pays the builder on every fill - that's the business.

Where does the backtest data come from?

Mainnet /price/v2/klines, which is public. Testnet candles are flat because nothing trades there. The backtester walks each candle open → low/high → close so every rung a wick touched gets filled - that's optimistic on thin books and the UI says so.

What's the 50 bps builder fee from the original plan?

Dropped to 10 bps by default. At 50 bps a round trip pays 1% in builder fees alone, which eats most grid spreads. The design card shows net-per-cycle after fees so you can see exactly where the break-even is.

Is funding every 8 hours?

No - Strike funds hourly at HH:00 UTC, and r on markPriceUpdate is the hourly rate. Vektor's APR math, hedge tracker and Rule C all use the hourly convention.

Watch a 12-rung grid auto-flip through a flash crash.

Open the terminal in Demo mode, deploy a grid, hit "Flash crash −12%", and watch Aegis cancel the buys and trim the long before the simulated engine would have liquidated it. Then switch to Live.

Launch App