The Volume Participation (VP) trading algorithm is an opportunistic algorithmic execution strategy that enables the execution of larger orders with specified urgency level. It aims to perform a trade at a pace that approximately matches a portion of the real-time market volume by respecting the targeted volume participation level.
VP is extremely helpful if you wish to limit the order market impact while targeting the average market trading price over the execution period.
Illustration of Volume Participation Algorithm Execution Patterns
The Volume Participation algorithm is suitable for an order execution strategy that aims to perform sizable notional orders larger than the available market liquidity while minimizing the impact on the market.
Market Order vs Volume Participation Order Executions
Market Situation | Market Order | Volume Participation Order |
Low market volume, stable price | Large notional market order may create market price impact that make the executed price unfavorable | VP order may execute within the average market price without impacting the market |
High market volume, volatile market price | Market order might be able to capture the market liquidity available immediately. It could also capture the market price movement | VP order might not be able to execute in urgency and may result in adverse executed price |
Volume Participation Algorithm API Details
New Volume Participation Order Endpoint:
POST sapi/v1/algo/futures/newOrderVp
API details: https://binance-docs.github.io/apidocs/spot/en/#volume-participation-vp-new-order-trade
Customizable Execution Parameters
Parameters | Description |
Urgency | Participation rate relative to Market Volume, Supported urgency type: Low, Medium, High |
limitPrice | Order’s limit price if unspecified, the order will be placed at market price |
Other Supplementary Endpoints
Endpoint | Description | Link |
DELETE sapi/v1/algo/futures/order | Cancel an active order | https://binance-docs.github.io/apidocs/spot/en/#cancel-algo-order-trade |
GET sapi/v1/algo/futures/openOrders | Get all running orders | https://binance-docs.github.io/apidocs/spot/en/#query-current-algo-open-orders-user_data |
GET sapi/v1/algo/futures/historicalOrders | Get historical orders | https://binance-docs.github.io/apidocs/spot/en/#query-historical-algo-orders-user_data |
GET sapi/v1/algo/futures/subOrders | Get respective sub orders for a specified algo ID | https://binance-docs.github.io/apidocs/spot/en/#query-sub-orders-user_data |
You may receive the following error responses following an inadequate query.
External code | External msg |
0 | OK |
-1000 | An unknown error occurred while processing the request. |
-1102 | A mandatory parameter was not sent, empty/null, or malformed. |
-20121 | Invalid symbol. |
-20130 | Invalid data sent for a parameter. |
-2013 | Order does not exist. |
-5007 | Quantity must be greater than zero. |
-20124 | Invalid algo id or it has been completed. |
-20132 | The client algo id is duplicated. |
-20194 | Duration is too short to execute all required quantity. |
-20195 | The total size is too small. |
-20196 | The total size is too large. |
-20198 | Reach the max open orders allowed. |
If the market price moves considerably or liquidity is insufficient during the execution of an order, the algorithm may not achieve full completion.
Thus, execution is and will always be liquidity-dependent with no guarantee for best price execution. For example, if the market becomes distressed, the algorithm may fail to complete the order before the specified end time.
Binance employs multiple risk mitigation strategies, including manual and automated circuit breakers, as well as kill-switch controls. These features can activate in the event of market disruption and/or systems failure, canceling any VP order early in a non-fully filled state.
To check the status of a VP order, you can use the query order endpoints (GET sapi/v1/algo/futures/openOrders or GET sapi/v1/algo/futures/historicalOrders).
Please note that no websocket notification will be available for orders filling updates. Besides, receiving "success": true does not mean that your order will be executed.
For instance, should your futures balance be insufficient, or your account be in Reduce Only status, you will receive "success": true, but the order will fail to execute.