Adaptive VWAP Execution
Install and import
npm install fintech-algorithmsimport { adaptiveVwapExecution } from "fintech-algorithms/execution-and-transaction-cost-analysis/schedule-based-execution/adaptive-vwap-execution";Signature
adaptiveVwapExecution(total_quantity, realized_market_volumes, remaining_forecast_volumes, executed_quantity, lot_size, forecast_version)Re-plans the remaining schedule from realised volume so far plus a forecast of what is left. Catches up when the market is busier than expected, and slows when it is not.
Parameters
| Name | Type | Notes |
|---|---|---|
total_quantity | number | Total quantity. min: 1 · integer: true |
realized_market_volumes | number[] | Volume actually observed in elapsed buckets. |
remaining_forecast_volumes | number[] | Forecast volume for the remaining buckets. |
executed_quantity | number | Quantity already executed. min: 0 · integer: true |
lot_size | number | Lot size. min: 1 · integer: true |
forecast_version | string | Which forecast produced the remaining profile, recorded for attribution. |
Returns
{ schedule, catch_up_quantity, participation, forecast_version, … }
The revised schedule with the catch-up implied by the shortfall so far.
Errors
- When executed_quantity exceeds total_quantity — throws
Complexity: time O(buckets),
space O(buckets).
Worked example
executed Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.
Input
24000[2600, 2100, 1800, 1600, 1450, 1300]Showing 6 of 8 elements.
[950, 900, 900, 950, 1000, 1050]Showing 6 of 16 elements.
5200100"SYN-LIVE-2026-07-30T14:00Z"Call
adaptiveVwapExecution(total_quantity, realized_market_volumes, remaining_forecast_volumes, executed_quantity, lot_size, forecast_version)Returns
object with 14 fields: forecast_version, total_quantity, executed_quantity, remaining_quantity_before_schedule, realized_market_volume, remaining_forecast_market_volume, projected_market_volume, target_completed_quantity, …
{
"forecast_version": "SYN-LIVE-2026-07-30T14:00Z",
"total_quantity": 24000,
"executed_quantity": 5200,
"remaining_quantity_before_schedule": 18800,
"realized_market_volume": 13250,
"remaining_forecast_market_volume": 26050,
"projected_market_volume": 39300,
"target_completed_quantity": 8000,
"pacing_error_quantity": -2800,
"pacing_state": "behind",
"immediate_catch_up_quantity": 2800,
"scheduled_future_quantity": 18800,
"schedule": [
{
"future_bucket": 1,
"forecast_market_volume": 950,
"target_quantity": 3400,
"target_cumulative_quantity": 8600,
"includes_catch_up_quantity": 2800
},
{
"future_bucket": 2,
"forecast_market_volume": 900,
"target_quantity": 600,
"target_cumulative_quantity": 9200,
"includes_catch_up_quantity": 0
},
{
"future_bucket": 3,
"forecast_market_volume": 900,
"target_quantity": 600,
"target_cumulative_quantity": 9800,
"includes_catch_up_quantity": 0
}
],
"state": "adaptive-schedule"
}Other exports
This module also exports
twapExecution, historicalVwapExecution, percentageOfVolumeExecution, calculate. Every module additionally exports run as an alias of its
primary function, and a meta object carrying its catalog id, domain, family,
shape and article URL.
Diagrams
How it works
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References
- Dynamic Execution of VWAP Orders with Short-Term Predictions — Ngoc-Minh Dang and Yin Chen
- Optimal Slice of a VWAP Trade — Hizuru Konishi
- FIX Algorithmic Trading Definition Language Online Specification — FIX Trading Community
- Evidence boundary