Execution Types and Limit + Bracket Orders
As mentioned in the 2025 November roadmap, we are introducing execution types to miner order signals, expanding support for Limit and Bracket orders across the Vanta Network. These features will bring more control and an easier risk management infrastructure for miners. The new execution types will roll out shortly following the initial payments in December 2025.
Market orders will continue to be supported, and no additional change will be required in this update for submitting Market Orders.
A new field, execution_type, will now be included in all order submissions. This field determines how an order should be interpreted and processed by the network. The supported execution types are:
- MARKET (default)
- LIMIT
- BRACKET
- LIMIT_CANCEL
This document will outline important details regarding the updated limit-order fill mechanism within Vanta Network.
Limit Orders
Limit orders allow you to specify the exact price at which you want to enter or adjust a position. Instead of accepting the current market price, you can set a target limit price and the order only executes if the market reaches it.
data = { 'trade_pair': TradePair.tradepair 'order_type': OrderType.LONG # FLAT limit orders are not supported (submit BRACKET order instead) 'leverage': 0.1 'execution_type': ExecutionType.LIMIT 'limit_price': 123.4 # Required 'stop_loss': 120.0 # Optional 'take_profit': 130.0 # Optional}- If the fill condition is triggered, the limit order will either create a new position or adjust the current position leverage with the limit price (See Price Evaluation Logic for more details)
Stop loss and Take Profit
- If a limit order fills and includes
stop_lossandtake_profit, a bracket order is automatically created with the identical order uuid.- If the stop loss/take profit condition is triggered, it will close the leverage specified on the original limit order.
- The generated bracket order will also be visible on the dashboard under pending orders.
Bracket Orders
Bracket orders let you attach a stop-loss and take-profit levels to an existing position, creating an automated risk-management “bracket” around your trade.
data = { 'trade_pair': Tradepair.tradepair 'leverage': 0.1 'order_type': OrderType.FLAT # ignored (system enforces position direction) 'execution_type': ExecutionType.BRACKET
# At least one of sl/tp must be defined 'stop_loss': 80 'take_profit': 100}- If either the stop-loss or take-profit condition is triggered, the bracket order will adjust the associated position’s leverage and realize loss/profit at the specified prices (See Price Evaluation Logic for more details).
Requirements
- The trade pair must already have an open position. Otherwise, the order will be rejected.
Automatic Cancellations
- If a position is closed manually while a bracket order is unfilled, any bracket orders of the trade pair are automatically cancelled.
Leverage behavior
- leverage of
0orNonewill close the associated position when either stop loss or take profit conditions are met. - Non-zero leverage will adjust the net leverage of the current position. If it is larger than the current leverage, it will close the position.
Shared Behavior for Limit & Bracket Orders
Order Frequency and Execution Timing
- Rate Limit
- Combined limit for all execution types (including Market orders): 10 orders per minute rate limit.
- Fill Interval
- A miner may fill one limit/bracket order every 30 seconds per trade pair.
- If multiple orders become fill-eligible at the same time, the earliest order will fill first and start the 30 second timer.
- Time in Force
- Pending Limit/Bracket orders will remain in the system indefinitely until the miner cancels it manually with
LIMIT_CANCEL. - Bracket orders are automatically cancelled if the associated position is closed by any other means.
- Pending Limit/Bracket orders will remain in the system indefinitely until the miner cancels it manually with
Price Evaluation Logic
- Market price will be determined using a 30-second lookback window of price data.
- The median of the price time series will determine if fill criteria are met.
- Orders that are not filled immediately on order placement will fill with the specified trigger condition (limit price, stop loss, or take profit).
- Immediate Fills
- If a Limit or Bracket order becomes fill-eligible immediately upon submission, it will execute at the current market price and follow market-order behavior, including the 10-second market fill interval.
Position Interactions & Leverage Rules
- Limit and Bracket orders will follow the same leverage constraints as Market orders
- All leverage validation (position-level, asset-class, portfolio-level) is enforced before fill.
- If executing an order would push the position above any maximum leverage limit or below any minimum leverage requirement, the system will automatically clamp the order to the allowable leverage or close the position when appropriate.
Cancel Orders
To cancel pending limit or bracket orders, we will unify any cancellation with execution type LIMIT_CANCEL.
data = { 'execution_type': ExecutionType.LIMIT_CANCEL
# At least one of trade_pair or order_uuid must be defined 'trade_pair': Tradepair.tradepair # or None 'order_uuid': order_uuid_to_cancel}Cancel a specific order
- If
order_uuidmatches an existing pending limit/bracket order, that specific order is cancelled. - set
trade_pair = Noneto guarantee only the specified order uuid is targeted. - Automatically generated Bracket order from limit orders can be cancelled with the same order uuid of the original limit order.
Cancel all pending limit/bracket orders for a trade pair
- If the system cannot find the specified order uuid, it will cancel all pending limit/bracket orders for the specified trade pair.
Important Notes
- If the specified order-uuid does not match any pending unfilled limit/bracket order, it will fall back to cancelling all pending orders of the trade pair.
- To avoid accidentally deleting all orders, ensure
trade_pair = Nonewhen sending the cancel order signal.
- To avoid accidentally deleting all orders, ensure
- Limit or Bracket orders that have already been filled cannot be cancelled (the order cannot be undone)
- Closing a position manually or with limit orders will not cancel any pending limit orders.