Execution

TWAP, VWAP and the algorithms that split an order

Once an order is large relative to what rests in the book, the biggest cost of the trade is the trade itself. Execution algorithms exist to manage that, they are simpler than their names suggest, and the version most traders actually need can be implemented by hand in an afternoon.

· 9 min read

The problem these solve

An order larger than what sits at the best price consumes it and continues into the next level, so the average price you receive is worse than the price you saw. That effect grows faster than the size, which means a single large order is more expensive than the same quantity executed in pieces, and the difference can be substantial on anything outside the deepest pairs.

Splitting the order into smaller parts reduces that cost, and it introduces a different one. While the remaining pieces wait, the price can move for reasons unrelated to you, and half of that movement will be against you. So the choice is not between a cost and no cost: it is between paying immediately in market impact and paying over time in exposure to whatever the market does while you finish.

Every execution algorithm ever built is a rule for making that trade-off. The names describe the schedule, the schedules are simple, and the parameter that determines whether the whole exercise helps is not the schedule at all. It is how fast you go.

Executing at once pays impact. Executing slowly pays exposure. There is no schedule that avoids both, and the choice between them is the entire decision.

TWAP: slicing by the clock

A time-weighted average price schedule divides the order into equal parts and sends one every fixed interval until the order is complete. If you want to buy a given quantity over four hours, it sends a sixteenth every fifteen minutes regardless of what the market is doing. It is the simplest possible rule and it is easy to implement, easy to reason about, and easy to predict.

That last property is the problem. A perfectly regular schedule is visible to anybody watching the market for exactly that pattern, and consistent buying at consistent intervals is a signature. Participants who identify it can position ahead of the remaining pieces, which turns the schedule designed to reduce your cost into a mechanism that advertises it.

The standard fix is randomisation: vary the interval and vary the slice size within bounds, so that the average behaviour is unchanged and the pattern is not recognisable. This costs nothing to implement and removes the specific weakness, and any implementation worth using does it by default.

VWAP: slicing by the market's own rhythm

A volume-weighted schedule does the same thing with a better clock. Instead of dividing the order evenly across time, it divides it in proportion to how much volume the market typically trades in each period, so more is executed during the busy hours and less during the quiet ones. The intuition is straightforward: trade when others are trading, because that is when your order is a smaller fraction of what is happening.

It requires a forecast of the volume profile, which is usually built from the same instrument's history because intraday volume patterns are strikingly stable. Crypto has such patterns despite trading continuously: activity concentrates during the working hours of the largest participating regions, and the quiet stretches are quiet in a way that repeats.

The benefit over a clock-based schedule is real and modest for most traders. It matters when the profile is strongly uneven, which it is on most instruments, and it matters less than the decision of how aggressively to trade at all. A well-parameterised time schedule beats a badly parameterised volume schedule easily.

The benchmark that actually matters

Both of the above are also benchmarks: you can measure your execution against the average price over the period, or against the volume-weighted average, and report how close you came. Institutions do this and it is a reasonable performance measure for a broker being judged on execution quality alone.

It is a poor measure for a trader judging their own results, because it excludes the most important cost. If you decided to buy at one price and finished buying two hours later at a much higher average, matching the volume-weighted average over those two hours means you executed well against a benchmark that had already moved away from you. The comparison flatters the execution and ignores the delay.

The honest benchmark is the price at the moment you decided, and the difference between that and your final average price is what the decision cost you in total. That measure includes impact, includes the market drift while you waited, and cannot be gamed by executing slowly. It is the number institutions call implementation shortfall, and it is the one worth keeping.

Participation rate, the only parameter that matters

Strip away the vocabulary and every execution schedule reduces to a single decision: what fraction of the market's activity you are willing to be. Trading at a low participation rate means your order is a small part of what happens and moves the price little, at the cost of taking a long time. Trading at a high rate finishes quickly and pays for it.

This is the parameter that determines the outcome, and it is the one people fiddle with least because it is not what the algorithm names describe. A schedule executing a large fraction of the market's volume will be expensive whatever its shape, and one executing a small fraction will be cheap and slow whatever its shape. The schedule affects the details; the rate affects the result.

Choosing it is a judgement about urgency rather than about markets. If the reason for the trade decays quickly, a high rate is correct despite the cost, because a cheap execution of a stale idea is worth nothing. If the position is a long-term holding, a low rate is nearly free, because a few hours of drift is noise against the holding period. Most traders use the same rate for both, and that is the actual mistake.

The algorithm's name is a detail. What fraction of the market you are willing to be is the decision, and it should follow from how quickly your reason expires.

When not to split at all

Splitting has costs that are easy to forget. Each slice pays a fee, so a schedule of twenty pieces pays twenty fees rather than one, and on a fee schedule with a fixed component that can matter. Each slice crosses a spread if it takes liquidity. And the whole exercise consumes attention, which is a real constraint for anybody trading manually.

The threshold below which splitting is not worth it is simply whether your order is a meaningful fraction of the visible book. If it fits comfortably inside the top level, there is no impact to reduce, and dividing it into ten pieces multiplies the fees and the fiddling for no benefit at all. That threshold is instrument-specific and hour-specific, and checking it takes one glance at the depth.

There is also the case where you must not wait. Closing a position that is moving against you, or acting on information whose value is measured in minutes, are situations where the cost of taking time exceeds any impact saving. Using a patient schedule there is a category error, and it is the kind that gets described afterwards as the market being unfair.

Building the simplest version that helps

Most traders do not need an algorithm, they need a habit, and the habit that captures the majority of the benefit is short enough to state. Before a large order, look at the depth within a tolerable distance of the touch and decide what fraction of it you are willing to consume in one go. If your order exceeds that, divide it by the number of pieces required to stay under, and space them by an interval that varies.

Two refinements are worth adding and no more. Use resting orders for the pieces you can afford to miss, which converts the fee to the lower side and removes the spread on those slices. And stop if the price has moved beyond a distance you decide in advance, because a schedule that keeps buying into a move it is causing is the specific way this goes wrong.

Anything beyond that is optimisation, and optimisation of execution is worth doing only after the participation rate is right. A trader who splits carefully and still consumes a third of the visible book on every order has optimised the wrong variable.

Measuring whether it helped

The test requires two numbers per order and a month of patience. Record the mid price at the moment you decided to trade, and your final average fill. The difference, plus the fees, is what the execution cost, and comparing that figure across orders you split and orders you did not is the only evidence that will settle whether the effort is paying.

The comparison usually produces a clearer answer than people expect. Splitting helps substantially on orders that were large relative to depth, helps marginally on medium ones, and is a net cost on small ones because of the extra fees. Knowing where your own threshold sits removes the guesswork from every subsequent order, and it is instrument-specific enough that it has to be measured rather than assumed.

Frequently asked

What is a TWAP order?

A schedule that divides an order into equal parts and sends one at fixed intervals until it is complete, regardless of what the market is doing. It is the simplest rule for reducing market impact, and its weakness is that a perfectly regular pattern is recognisable to anybody watching for it.

How is VWAP different?

It divides the order in proportion to how much volume the market typically trades in each period rather than evenly across time, so more executes during busy hours. It requires a forecast of the volume profile, usually built from the instrument's own history, and the benefit over a time schedule is real and modest.

Which one should I use?

Neither choice matters as much as how fast you go. A schedule executing a large fraction of the market's volume will be expensive whatever its shape, and one executing a small fraction will be cheap and slow whatever its shape. Set the participation rate first and treat the schedule as a detail.

Should I always split large orders?

Only when your order is a meaningful fraction of the visible depth. Below that threshold there is no impact to reduce, and splitting multiplies the fees for no benefit. Check the depth within a tolerable distance of the touch before deciding, since the threshold varies by instrument and by hour.

Why randomise the intervals?

Because a perfectly regular schedule is a visible signature. Consistent buying at consistent intervals can be identified by anybody watching for it, and they can position ahead of your remaining pieces. Varying the interval and the slice size within bounds keeps the average behaviour and removes the pattern.

Is matching VWAP a good result?

It is a reasonable measure for a broker judged on execution alone and a poor one for a trader judging their own outcome, because it excludes the delay. Matching the average over two hours means nothing if the price moved away from your decision during those two hours. Measure against the price when you decided instead.

When is splitting the wrong choice?

When waiting costs more than impact. Closing a position moving against you, or acting on information whose value decays in minutes, are situations where a patient schedule is a category error. A cheap execution of an idea that has expired is worth nothing.

How do I know if splitting is actually helping me?

Record the mid price when you decided and your final average fill, on every order, for a month. The difference plus fees is what execution cost. Comparing that figure between orders you split and orders you did not is the only evidence that settles it, and the threshold it reveals is specific to your instruments.

Open an account All articles