Strategy studio

Design it, simulate it against the real circuit, then encrypt it

SOL / USD

Your levels drawn on the display feed as price lines. The candles are context; the program acts on the on-chain price account.

Exposed · public price dataSpot —EntryoffTake profitoffStop lossoff

Start from a shape

Offsets from the current price. Not signals — the circuit has no notion of trend or volatility.

Exposed · enforced on chain

What the program checks before any fill

A limit order is one comparison. This is the stack that runs on every trade, in the deployed program — not in a backend.

program defaults shown — connect a wallet to read this vault's own settings
Trade size10.00%≤ 100%Share of the spendable balance committed per entry.
Per-trade cap10.00%≤ 50%A hard ceiling on one trade, above the size rule. Entries only — a stop always sells the whole position.
Concentrationvault settingBounds the sum of entries, not just one. A rule like “buy below $150” keeps firing all the way down; without this a falling market converts the whole vault.
Slippage floor0.50%≤ 5%Minimum output, derived from the oracle at execution time rather than from the quote the executor supplied.
Cooldown60sMinimum gap between trades. Entries only: suppressing an exit during a cooldown would disarm the stop.
Oracle staleness30s≤ 30sA price older than this cannot influence anything. Devnet often publishes slower than the limit, and the program simply refuses.
Oracle confidence1.00%≤ 1%Pyth publishes a confidence interval. Too wide and the price is refused rather than traded on.
Decision drift2.00%≤ 10%How far the market may move between the computation deciding and the trade filling. Entries only, and only against a rising price.
Daily loss limit5.00%Stored and read by no instruction. Realised P&L needs a cost basis, and measuring it would put the oracle on the withdraw path — which must keep working when everything else is down.— not enforced

Levels

Leave a field blank to switch that rule off.

price <
USD
off

Spend USDC when the price drops under this level.

price >
USD
off

Sell back into USDC when the price rises above this level.

price <
USD
off

Exit the whole position. Exempt from the size cap and the cooldown.

Size per trade
10%

Share of the spendable balance committed per entry. Your vault caps this at 10%. A stop always sells the whole position regardless.

What gets encrypted

Shielded · in MPC

Finish the rules to see it.

Three integers, fixed width. A rule you switched off still occupies its slot with a value that can never match, so an observer cannot tell which rules you use.

Your trade size is not in here. The traded amount and your vault balance are both public in the same transaction, so dividing one by the other recovers the size exactly — the first time you trade. It is stored in the clear, in your vault settings.

Simulation

Runs the same decision function as the circuit, over the window above, re-running as you type.

Loading price history…

Assumptions

Not modelled, because modelling it badly would be worse than leaving it out: order-book impact, MEV, Jupiter’s routing, and the ~72-slot gap between a decision and its execution. Past prices are not a forecast.

Risk on this shape

Reward / risk—
Stake per entry—
Loss if stopped—
Cooldownentries60s

“Loss if stopped” assumes the stop fills at its level. A gap through it fills lower, and slippage is charged on top — your max-slippage limit bounds that, it does not remove it.

Arm it

Two signatures: encrypt, then hand to the cluster.

  1. 1
    Encrypted in this browser
    The plaintext never leaves this tab. Only ciphertext is sent.
  2. 2
    Re-encrypted to the cluster
    What lets evaluations run with nobody online.

The encryption key is derived from a wallet signature, so a strategy cannot be armed without one. Everything above works without it.