Trade Desk
STARKNET SEPOLIA ONLY
Trade Desk is the full-feature execution surface — currently live on Starknet Sepolia, coming to mainnet. For the mainnet MVP, see Portfolio Rebalancer and Reputation Passport.
The Trade Desk at /trade is where execution happens. It's the same product as Capital OS — Capital OS is where you plan, Trade Desk is where you execute. Opportunities flow in from market feeds and model signals, you pick one, choose an adapter route, simulate, and execute. The 13-circuit zkML bundle screens actions before they surface, and gate checks run against your trust context.
Proof-based screening isn't a uniform blocking layer on every route yet. Some routes are fully gate-critical, others are advisory. Treat the Trade Desk as a proof-aware execution workspace — the data is real, but the enforcement varies by route family.
What you see
When you open /trade, you're looking at an opportunity stream. Opportunities are categorized: swap, lp, lending, staking, and related strategies. You can sort and filter by yield, risk score, confidence, and strategy fit.
Selecting an opportunity opens its execution workspace — that's where you see adapter choices, privacy mode options, gate status, and simulation controls. This is the staging area before committing.
Adapter families
Adapters are the execution layer. Each adapter knows how to build calldata for a specific protocol or operation type. When you select an opportunity, the system shows you which adapters are available for it.
| Adapter | What it does | Status |
|---|---|---|
ekubo | Swap and LP operations on Ekubo DEX | Live — the primary execution path |
limit_orders | Conditional execution — "buy when price hits X" | Live |
lending | Supply, borrow, repay, withdraw on lending protocols | Live |
staking | Protocol staking positions | Live |
dca | Dollar-cost averaging over time | Planned |
| Privacy variants | Shielded execution when policy/flow requires | Available when privacy tier applies |
If an opportunity doesn't have adapter metadata attached, the system falls back to a generic builder. This still works, but you lose protocol-specific optimization. When you have a choice, pick the specific adapter.
The execution flow
flowchart LR OPP["1. Pick opportunity"] --> ROUTE["2. Choose adapter"] ROUTE --> PRIVACY["3. Set privacy mode"] PRIVACY --> SIM["4. Simulate"] SIM --> SLIP["5. Set slippage"] SLIP --> EXEC["6. Execute + sign"] EXEC --> VERIFY["7. Verify receipt"]
Here's what actually happens at each step:
Pick an opportunity from the stream. The zkML screening bundle has already evaluated it — risk score, anomaly detection, yield optimality are computed before you see it.
Choose the adapter route. This determines the execution path. An Ekubo swap uses different calldata than an LP add. If multiple adapters apply, pick the one that matches your intent.
Set privacy mode if applicable. Most operations run unshielded by default. If the opportunity supports private execution, you'll see the option here.
Simulate. This is non-negotiable for first-timers. The simulation dry-runs the calldata and shows you price impact, fees, expected output, and any warnings. If the numbers look wrong, back out.
Set slippage explicitly. The system doesn't pick a default for you on swaps. Choose
0.5%,1%, or2%based on market conditions and your risk tolerance. Tighter slippage means your tx may revert if the price moves; looser means you accept more price impact.Execute. Your wallet prompts for a signature. Once signed, the transaction goes to chain. This is the "go" button.
Verify. After confirmation, the Trade Desk refreshes to show the result. Check the tx hash on Voyager for on-chain details. If a proof was generated, it's registered in the receipt trail.
When things go wrong
| What you see | What's probably happening | What to do |
|---|---|---|
| No opportunities showing | Market feed connectivity issue, or backend polling hasn't refreshed | Check backend health at /health, wait 60s and refresh |
| No adapter choices for an opportunity | Opportunity is missing adapter metadata | The fallback builder will work, but check if the opportunity type is supported |
| Simulation succeeds but execution fails | Stale calldata, gate mismatch, or wallet signing error | Re-check /profile?tab=trust for gate warnings, re-simulate with fresh state |
| Tx confirmed but UI still shows "pending" | Indexer lag or reconciliation delay | Check the tx hash on Voyager — it may have succeeded on-chain |
For endpoint-by-endpoint behavior, check the API Reference. For broader debugging, see Troubleshooting.