Leverage
Instructions for opening, adjusting, closing, delegating and liquidating leverage positions.
Updated Sep 25, 2026
Isolated positions borrow inside the market and hold the curve's output as collateral. Orders live on the leverage delegate program and execute through delegated_close_leverage. See Leverage and Leverage and hedging.
open_leverage
Open an isolated position: margin plus an internal loan of the same asset, swapped through the curve into collateral.
The position's stored maintenance rate comes from its size relative to stored market depth. Its initial margin is that rate plus the configured buffer and the opening-side crowding adjustment. A limit price turns the instruction into the fill of an escrowed entry order.
- Caller
- The owner, or a keeper filling an entry order
- In the app
- Leverage
- Discriminator
b6c6603d851c2910
Arguments
args: OpenLeverageArgs
| Field | Type | Notes |
|---|---|---|
| position_id | pubkey | Any public key the owner chooses. |
| debt_asset | u8 | Which side the position borrows: long the other asset. |
| margin_amount | u64 | Margin atoms in the debt asset. |
| multiplier_bps | u64 | Notional over margin, 10,000 = 1x, at most 200,000. |
| min_collateral_out | u64 | Minimum collateral atoms after the entry swap. |
| referrer | Option<pubkey> | Optional listed referral partner. |
| position_owner | Option<pubkey> | Open on behalf of another owner. |
| limit_price_nad | u64 | Present when filling an entry order. |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | ||
| futarchy_authority | |||
| owner | writable · signer | ||
| payer | writable · signer | Pays account rent. Ordinary opens pass `owner` again; delegated opens use the keeper without transferring position ownership to it. | |
| leverage_position | writable | validated before any economic mutation. | |
| debt_mint | |||
| collateral_mint | |||
| debt_reserve_vault | writable | ||
| collateral_reserve_vault | writable | ||
| leverage_collateral_vault | writable | ||
| owner_debt_account | writable | ||
| referral_partner | optional | ||
| referral_accrual | optional | ||
| instructions_sysvar | Sysvar1n…1111 | ||
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| system_program | 11111111…1111 | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
increase_leverage
Borrow more against the position and swap it into additional collateral.
- Caller
- The position owner
- Discriminator
3d1e56ad057f0ca0
Arguments
args: IncreaseLeverageArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | |
| debt_amount | u64 | |
| margin_amount | u64 | Gross debt-token funding from the owner. Zero increases size using borrowing only. |
| min_collateral_out | u64 |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | PDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash] | |
| futarchy_authority | PDA ["futarchy_authority"] | ||
| position_owner | |||
| leverage_position | writable | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | |
| debt_mint | |||
| collateral_mint | |||
| debt_reserve_vault | writable | ||
| collateral_reserve_vault | writable | ||
| leverage_collateral_vault | writable | PDA ["leverage_collateral", market, collateral_mint] | |
| owner | writable · signer | ||
| owner_debt_account | writable · optional | Required only when margin_amount is positive; always owned by the position owner. | |
| instructions_sysvar | Sysvar1n…1111 | ||
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
decrease_leverage
Sell part of the collateral through the curve and repay debt with the proceeds.
- Caller
- The position owner
- Discriminator
b1a3bb4852ae44e5
Arguments
args: DecreaseLeverageArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | |
| collateral_amount | u64 | |
| min_repay_out | u64 | |
| max_surplus_out | u64 | Maximum gross debt-token remainder returned after repayment. Zero prevents wallet payouts; a bounded value permits final 1x rounding. |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | ||
| futarchy_authority | |||
| position_owner | |||
| leverage_position | writable | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | |
| debt_mint | |||
| collateral_mint | |||
| debt_reserve_vault | writable | ||
| collateral_reserve_vault | writable | ||
| debt_interest_vault | writable | ||
| owner_debt_account | writable | ||
| leverage_collateral_vault | writable | PDA ["leverage_collateral", market, collateral_mint] | |
| referral_partner | optional | ||
| referral_accrual | writable · optional | ||
| owner | writable · signer | ||
| instructions_sysvar | Sysvar1n…1111 | ||
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
close_leverage
Sell all collateral through the curve, repay the debt and return the remaining equity to the owner.
- Caller
- The position owner
- In the app
- Leverage · Portfolio
- Discriminator
2d9dcfb0c206dafd
Arguments
args: CloseLeverageArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | The position's debt side. |
| min_amount_out | u64 | Minimum equity returned. |
| close_bps | u16 | Percentage of current collateral and debt to close, in basis points. |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | ||
| futarchy_authority | |||
| position_owner | writable | ||
| leverage_position | writable | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | |
| debt_mint | |||
| collateral_mint | |||
| debt_reserve_vault | writable | ||
| collateral_reserve_vault | writable | ||
| debt_interest_vault | writable | ||
| leverage_collateral_vault | writable | PDA ["leverage_collateral", market, collateral_mint] | |
| owner_debt_account | writable | ||
| delegate_fee_recipient | writable · optional | Protocol treasury token account for delegated close order fees. | |
| delegate_executor_account | writable · optional | Executor-owned token account for delegated close incentives. | |
| referral_partner | optional | ||
| referral_accrual | writable · optional | ||
| leverage_delegation | optional | ||
| delegated_program | optional | ||
| authority | writable · signer | ||
| instructions_sysvar | Sysvar1n…1111 | ||
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
add_leverage_margin
Add margin, which repays debt without selling collateral; anyone may pay.
After full repayment only the owner can withdraw the collateral and close. Emits no swap event.
- Caller
- The owner or any payer
- In the app
- Leverage · Portfolio
- Discriminator
38f5411ddd7deef1
Arguments
args: AddLeverageMarginArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | |
| amount | u64 |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | PDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash] | |
| futarchy_authority | PDA ["futarchy_authority"] | ||
| position_owner | |||
| leverage_position | writable | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | |
| debt_mint | |||
| collateral_mint | |||
| debt_reserve_vault | writable | ||
| debt_interest_vault | writable | ||
| owner_debt_account | writable | ||
| referral_partner | optional | ||
| referral_accrual | writable · optional | ||
| owner | writable · signer | Token payer; need not own the leverage position. | |
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
repay_leverage
Repay leverage debt with the signer's tokens without selling the position's collateral.
- Caller
- The owner or any payer
- Discriminator
9b6ee6fb27a92f16
Arguments
args: AddLeverageMarginArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | |
| amount | u64 |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | PDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash] | |
| futarchy_authority | PDA ["futarchy_authority"] | ||
| position_owner | |||
| leverage_position | writable | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | |
| debt_mint | |||
| collateral_mint | |||
| debt_reserve_vault | writable | ||
| debt_interest_vault | writable | ||
| owner_debt_account | writable | ||
| referral_partner | optional | ||
| referral_accrual | writable · optional | ||
| owner | writable · signer | Token payer; need not own the leverage position. | |
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
withdraw_repaid_leverage
Return all remaining collateral to the owner after a leverage position's debt is fully repaid.
- Caller
- The position owner
- Discriminator
07fd10c3d60a7433
Arguments
args: WithdrawRepaidLeverageArgs
| Field | Type | Notes |
|---|---|---|
| min_collateral_out | u64 |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | PDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash] | |
| owner | writable · signer | ||
| leverage_position | writable | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | |
| collateral_mint | |||
| collateral_vault | writable | PDA ["leverage_collateral", market, collateral_mint] | |
| owner_collateral_account | writable | ||
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
create_leverage_delegation
Allow a delegate program to act on a position for an approved set of actions.
Required before take-profit and stop-loss orders can be executed. The delegation is keyed by the position, not the owner.
- Caller
- The position owner
- In the app
- Leverage, when attaching TP/SL
- Discriminator
bd9a9c74d5f96ba3
Arguments
args: CreateLeverageDelegationArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | |
| delegated_program | pubkey | |
| approved_actions | u32 |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | PDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash] | ||
| leverage_position | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | ||
| leverage_delegation | writable | PDA ["leverage_delegation_v2", leverage_position] | |
| owner | writable · signer | ||
| system_program | 11111111…1111 | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
update_leverage_delegation
Change the approved actions of an existing delegation.
- Caller
- The position owner
- Discriminator
b9342461eaa31d2a
Arguments
args: UpdateLeverageDelegationArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | |
| delegated_program | pubkey | |
| approved_actions | u32 |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | PDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash] | ||
| leverage_position | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | ||
| leverage_delegation | writable | PDA ["leverage_delegation_v2", leverage_position] | |
| owner | writable · signer | ||
| event_authority | PDA ["__event_authority"] | ||
| program |
close_leverage_delegation
Revoke a delegation and close its account.
- Caller
- The position owner
- Discriminator
fc97fd34f276686d
Arguments
args: CloseLeverageDelegationArgs
| Field | Type | Notes |
|---|---|---|
| position | pubkey |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| leverage_delegation | writable | PDA ["leverage_delegation_v2", args.args.position] | |
| owner | writable · signer |
delegated_close_leverage
Close part or all of a position through an approved delegate program, using its before-hook approval and after-hook settlement approval.
This is how take-profit and stop-loss orders execute. The hook envelopes travel inside the arguments and the remaining accounts are the exact before-then-after concatenation.
- Caller
- Any keeper, through the delegate program
- Discriminator
0eda6299a413308b
Arguments
args: DelegatedCloseLeverageArgs
| Field | Type | Notes |
|---|---|---|
| debt_asset | u8 | |
| min_amount_out | u64 | |
| close_bps | u16 | Proportion of the current position to close. `10_000` preserves the existing full-close behavior. |
| delegated | DelegatedCpiArgs |
DelegatedCpiArgs
| Field | Type | Notes |
|---|---|---|
| before_ix_data | bytes | |
| after_ix_data | bytes | |
| before_accounts_len | u16 |
Accounts
| Account | Flags | Resolution | Notes |
|---|---|---|---|
| market | writable | ||
| futarchy_authority | |||
| position_owner | writable | ||
| leverage_position | writable | PDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id] | |
| debt_mint | |||
| collateral_mint | |||
| debt_reserve_vault | writable | ||
| collateral_reserve_vault | writable | ||
| debt_interest_vault | writable | ||
| leverage_collateral_vault | writable | PDA ["leverage_collateral", market, collateral_mint] | |
| owner_debt_account | writable | ||
| delegate_fee_recipient | writable · optional | Protocol treasury token account for delegated close order fees. | |
| delegate_executor_account | writable · optional | Executor-owned token account for delegated close incentives. | |
| referral_partner | optional | ||
| referral_accrual | writable · optional | ||
| leverage_delegation | optional | ||
| delegated_program | optional | ||
| authority | writable · signer | ||
| instructions_sysvar | Sysvar1n…1111 | ||
| token_program | Tokenkeg…Q5DA | ||
| token_2022_program | TokenzQd…xuEb | ||
| event_authority | PDA ["__event_authority"] | ||
| program |