Perp grid¶
Status: Live (jurisdiction-gated) | MCP tool: strategy_perp_grid_create
A ladder of perp LONGS accumulated on dips around a rolling center price. Routes through the multi-venue perps venue adapter (hard rule 2) -- Jupiter Perps primary, non-custodial, on-chain.
Params¶
| Param | Type | Default | Meaning |
|---|---|---|---|
wallet_address |
string | required | Agent's managed wallet address. |
target_token |
string | required | Perp market symbol (only assets with a mapped perp market can open -- see get_venue_status; currently SOL). |
usd_per_level |
float | required | USD size per grid rung. |
interval_seconds |
int | 300 |
Tick cadence. |
center_price |
float | none |
Explicit grid center; defaults to a rolling SMA. |
center_period |
int | 20 |
SMA period for the rolling center when center_price is unset. |
grid_spacing_pct |
float | 0.02 |
Price move per rung below center. |
grid_levels |
int | 5 |
Number of rungs. |
leverage |
float | 1.0 |
Leverage per rung. |
range_tighten |
float | 0.5 |
Spacing multiplier in a range regime (tighter). |
volatile_widen |
float | 2.0 |
Spacing multiplier in a volatile regime (wider). |
venue |
string | none |
Perps venue (defaults to the configured primary -- Jupiter Perps). |
acknowledge_tier_b |
bool | false |
Required true to write to a Tier B (custodied) venue. |
slippage_bps |
int | 50 |
Max slippage per fill. |
risk (optional dict, all percent units, <= 0 disables that single guard;
omitted keys keep the model's safe defaults): max_position_pct,
max_portfolio_exposure_pct, max_single_loss_pct, max_drawdown_pct,
max_daily_loss_pct.
Example create call¶
result = await client.call_tool("strategy_perp_grid_create", {
"wallet_address": "<AGENT_PUBLIC_KEY>",
"target_token": "SOL",
"usd_per_level": 20,
"grid_levels": 5,
"grid_spacing_pct": 0.02,
"leverage": 2.0,
"interval_seconds": 300,
})
A successful create returns strategy_id, strategy_type, status,
schedule, and managed_signing (whether the wallet has a Turnkey signer --
false means each tick returns an unsigned tx to sign).
Policy interaction¶
Every create call runs through the same gate stack as a hand-built trade
before it persists: rate limiting, identity/capability check, the per-wallet
policy_gate (action strategy_create, plus venue on the policy gate's venue check when explicitly named), USD-notional sizing
against policy limits (derived as usd_per_level x grid_levels, the grid's total notional), an idempotency check, and the platform
kill switch.
A wallet without a Turnkey signing key still gets the strategy -- each due
tick returns an unsigned transaction for the owner to sign instead of
executing autonomously.
Pauses new rungs in a trending (bull/bear) regime and closes the ladder in a bear (stop the bleed); tightens spacing in range, widens when volatile -- read directly, not exposed as direction params. A Tier B (venue-custodied) venue refuses the write unless acknowledge_tier_b=true after reviewing its custody_disclosure (check first via get_venue_status). Full lifecycle -- open, monitor, funding, close, two-phase signing, post-trade verification: Perps playbook.
Lifecycle¶
Every strategy type shares one lifecycle surface once created:
strategy_status(strategy_id, wallet_address)-- config, state, P&L, next tick.strategy_modify(strategy_id, wallet_address, config_updates=..., risk=..., ...)-- retune in place without losing execution history; fields that define WHAT the strategy trades (target_token/source_token/tracked_wallet/venue/ a compositedefinition) are immutable and refused -- cancel and create a new strategy to change those.strategy_pause/strategy_resume-- manual pause and re-enable.strategy_cancel(strategy_id, wallet_address)-- stop for good (terminal).strategy_list(wallet_address, detail="concise"|"full")-- every strategy the wallet owns.
Full param docs for all six lifecycle tools: MCP tool reference.
See also¶
- Trading catalog -- Strategy automations
- Strategy authoring -- publishing a strategy as a clonable template.
- MCP tool reference