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

FieldTypeNotes
position_idpubkeyAny public key the owner chooses.
debt_assetu8Which side the position borrows: long the other asset.
margin_amountu64Margin atoms in the debt asset.
multiplier_bpsu64Notional over margin, 10,000 = 1x, at most 200,000.
min_collateral_outu64Minimum collateral atoms after the entry swap.
referrerOption<pubkey>Optional listed referral partner.
position_ownerOption<pubkey>Open on behalf of another owner.
limit_price_nadu64Present when filling an entry order.

Accounts

AccountFlagsResolutionNotes
marketwritable
futarchy_authority
ownerwritable · signer
payerwritable · signerPays account rent. Ordinary opens pass `owner` again; delegated opens use the keeper without transferring position ownership to it.
leverage_positionwritablevalidated before any economic mutation.
debt_mint
collateral_mint
debt_reserve_vaultwritable
collateral_reserve_vaultwritable
leverage_collateral_vaultwritable
owner_debt_accountwritable
referral_partneroptional
referral_accrualoptional
instructions_sysvarSysvar1n…1111
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
system_program11111111…1111
event_authorityPDA ["__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

FieldTypeNotes
debt_assetu8
debt_amountu64
margin_amountu64Gross debt-token funding from the owner. Zero increases size using borrowing only.
min_collateral_outu64

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
futarchy_authorityPDA ["futarchy_authority"]
position_owner
leverage_positionwritablePDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
debt_mint
collateral_mint
debt_reserve_vaultwritable
collateral_reserve_vaultwritable
leverage_collateral_vaultwritablePDA ["leverage_collateral", market, collateral_mint]
ownerwritable · signer
owner_debt_accountwritable · optionalRequired only when margin_amount is positive; always owned by the position owner.
instructions_sysvarSysvar1n…1111
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__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

FieldTypeNotes
debt_assetu8
collateral_amountu64
min_repay_outu64
max_surplus_outu64Maximum gross debt-token remainder returned after repayment. Zero prevents wallet payouts; a bounded value permits final 1x rounding.

Accounts

AccountFlagsResolutionNotes
marketwritable
futarchy_authority
position_owner
leverage_positionwritablePDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
debt_mint
collateral_mint
debt_reserve_vaultwritable
collateral_reserve_vaultwritable
debt_interest_vaultwritable
owner_debt_accountwritable
leverage_collateral_vaultwritablePDA ["leverage_collateral", market, collateral_mint]
referral_partneroptional
referral_accrualwritable · optional
ownerwritable · signer
instructions_sysvarSysvar1n…1111
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__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

FieldTypeNotes
debt_assetu8The position's debt side.
min_amount_outu64Minimum equity returned.
close_bpsu16Percentage of current collateral and debt to close, in basis points.

Accounts

AccountFlagsResolutionNotes
marketwritable
futarchy_authority
position_ownerwritable
leverage_positionwritablePDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
debt_mint
collateral_mint
debt_reserve_vaultwritable
collateral_reserve_vaultwritable
debt_interest_vaultwritable
leverage_collateral_vaultwritablePDA ["leverage_collateral", market, collateral_mint]
owner_debt_accountwritable
delegate_fee_recipientwritable · optionalProtocol treasury token account for delegated close order fees.
delegate_executor_accountwritable · optionalExecutor-owned token account for delegated close incentives.
referral_partneroptional
referral_accrualwritable · optional
leverage_delegationoptional
delegated_programoptional
authoritywritable · signer
instructions_sysvarSysvar1n…1111
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__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

FieldTypeNotes
debt_assetu8
amountu64

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
futarchy_authorityPDA ["futarchy_authority"]
position_owner
leverage_positionwritablePDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
debt_mint
collateral_mint
debt_reserve_vaultwritable
debt_interest_vaultwritable
owner_debt_accountwritable
referral_partneroptional
referral_accrualwritable · optional
ownerwritable · signerToken payer; need not own the leverage position.
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__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

FieldTypeNotes
debt_assetu8
amountu64

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
futarchy_authorityPDA ["futarchy_authority"]
position_owner
leverage_positionwritablePDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
debt_mint
collateral_mint
debt_reserve_vaultwritable
debt_interest_vaultwritable
owner_debt_accountwritable
referral_partneroptional
referral_accrualwritable · optional
ownerwritable · signerToken payer; need not own the leverage position.
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__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

FieldTypeNotes
min_collateral_outu64

Accounts

AccountFlagsResolutionNotes
marketwritablePDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
ownerwritable · signer
leverage_positionwritablePDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
collateral_mint
collateral_vaultwritablePDA ["leverage_collateral", market, collateral_mint]
owner_collateral_accountwritable
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__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

FieldTypeNotes
debt_assetu8
delegated_programpubkey
approved_actionsu32

Accounts

AccountFlagsResolutionNotes
marketPDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
leverage_positionPDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
leverage_delegationwritablePDA ["leverage_delegation_v2", leverage_position]
ownerwritable · signer
system_program11111111…1111
event_authorityPDA ["__event_authority"]
program

update_leverage_delegation

Change the approved actions of an existing delegation.

Caller
The position owner
Discriminator
b9342461eaa31d2a

Arguments

args: UpdateLeverageDelegationArgs

FieldTypeNotes
debt_assetu8
delegated_programpubkey
approved_actionsu32

Accounts

AccountFlagsResolutionNotes
marketPDA ["market_v2", market.base_side.asset_mint, market.quote_side.asset_mint, market.params_hash]
leverage_positionPDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
leverage_delegationwritablePDA ["leverage_delegation_v2", leverage_position]
ownerwritable · signer
event_authorityPDA ["__event_authority"]
program

close_leverage_delegation

Revoke a delegation and close its account.

Caller
The position owner
Discriminator
fc97fd34f276686d

Arguments

args: CloseLeverageDelegationArgs

FieldTypeNotes
positionpubkey

Accounts

AccountFlagsResolutionNotes
leverage_delegationwritablePDA ["leverage_delegation_v2", args.args.position]
ownerwritable · 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

FieldTypeNotes
debt_assetu8
min_amount_outu64
close_bpsu16Proportion of the current position to close. `10_000` preserves the existing full-close behavior.
delegatedDelegatedCpiArgs
DelegatedCpiArgs
FieldTypeNotes
before_ix_databytes
after_ix_databytes
before_accounts_lenu16

Accounts

AccountFlagsResolutionNotes
marketwritable
futarchy_authority
position_ownerwritable
leverage_positionwritablePDA ["leverage_position_v2", market, leverage_position.owner, leverage_position.namespace_authority, leverage_position.position_id]
debt_mint
collateral_mint
debt_reserve_vaultwritable
collateral_reserve_vaultwritable
debt_interest_vaultwritable
leverage_collateral_vaultwritablePDA ["leverage_collateral", market, collateral_mint]
owner_debt_accountwritable
delegate_fee_recipientwritable · optionalProtocol treasury token account for delegated close order fees.
delegate_executor_accountwritable · optionalExecutor-owned token account for delegated close incentives.
referral_partneroptional
referral_accrualwritable · optional
leverage_delegationoptional
delegated_programoptional
authoritywritable · signer
instructions_sysvarSysvar1n…1111
token_programTokenkeg…Q5DA
token_2022_programTokenzQd…xuEb
event_authorityPDA ["__event_authority"]
program