EXPLAINING VWAP PERFORMANCE – ATTRIBUTION OF PERFORMANCE.
Chris Sparrow, Head of Research at LiquidMetrix
The VWAP algorithm (algo) is used heavily by many traders. As a result, there is a lot of interest in understanding why specific results were obtained, as well as the quality of those results. In this article we present a way of explaining the performance that an order had versus a VWAP benchmark. While other strategies could be analysed in similar manners, what we present here is specific to VWAP strategies.
We apply a TCA framework with additional scenario analysis to attribute the realised performance of an order traded via a VWAP algo. Our goal is not only to find what the performance was, but why we got the results we did, and how it can be improved in the future.
A good analysis will answer relevant questions that can help achieve business objectives. In this case the following are our questions related to VWAP performance:
- Was our performance good or bad?
- Why did we have the performance we had?
- What would our performance have been if we traded differently?
- What impact did various types of liquidity have on our performance?
Now that we know the questions, we need to develop a way of analysing the data to provide these answers.
For VWAP strategies there are some key distributions that will help us understand why the price we achieved for our order differs from a VWAP benchmark. We first define the volume-price distribution by summing all volume that occurs at each unique price during the time the order was being worked. For illustration purposes, see Figure 1 below which shows some sample data. The volume is shown on the y-axis and is the total traded volume at a given price – summed over possibly many fills. The x-axis shows the price. If we use all the fills from the market, the distribution can be interpreted as the opportunity set that a trader had in interacting with the market. The average of the market volume-price distribution shown below is precisely our VWAP benchmark.
However, we get something more when we show the distribution, which is how wide the distribution is. If all the volume occurred at one price, the distribution would be very thin, while volume that trades at many prices will be wider. It is easy to be close to a VWAP benchmark when the distribution is thin, and much harder to match the VWAP when the distribution is wide, so we can use the width of the market volume-price distribution as a difficulty factor. We can think of this width as the intra-order volatility. If volume only trades at a single price during the order, the volatility would be zero, while if it trades in a large range of prices, the volatility would be high. You can’t miss the VWAP if all the volume trades at one price, but it is hard to match exactly when the volume is spread out widely.
Was our performance good or bad?
We can now answer the first question: An order that has a small ratio of the performance in price divided by the intra-order volatility has good performance while an order with a large negative ratio had poor performance.
We can take it a step further and compute the precise range of possible outcomes that an order of the size of our order could have obtained given the total volume traded during the lifetime of the order.
This involves computing the lowest average price by summing up value from left to right until we use all the order volume and then dividing this value by the volume of the order. This is the lowest price an order the same size as our order could have achieved.
If our size was 100%, we would get back the VWAP. We do this again going the other way to get the highest possible price an order the same size as our order could have got.
The result is a precise range of outcomes – the lowest and highest prices we could have achieved – that we can use to normalise the difficulty of an order being benchmarked to VWAP. We can represent this graphically by showing these numbers as a gauge in Figure 3.
Why did I have the performance I had?
We can begin addressing our next question by comparing the normalised order and market volume-price distributions.
For illustration purposes, assume we are a buyer. Then we can see where we traded at relatively more or less than the market volume at each price.
As a buyer, we hope to get more volume at low prices than at high prices. The volume-price distribution shows us the relative differences in each price between what we realised and what was traded in aggregate by the market.
It enables us to see which prices we didn’t trade as much volume as we should have and which prices we traded more volume than we should have, based on what traded in the market.
The key is to normalise both distributions so we can observe the percentage of volume of our order versus the percentage of total market volume during the period we were working the order.
If we can trade a constant fraction of all market volume, then our average price would, by definition, match the VWAP.
What would my performance have been if I traded differently?
When we are trading VWAP order, we will often try to match another distribution: the volume-time distribution. Often a VWAP algo will use some combination of historical volume and a volume prediction model to generate a schedule of desired volume. The VWAP algo’s strategy is to match the time-volume of the market and to trade at similar prices. We can measure the sensitivity to the time-volume distribution by comparing it with the order’s time-volume distribution. Figure 4 shows these two distributions where the fraction of volume is binned into 30-minute increments along with the volume-weighted average price for each bin (value traded / volume).
The first thing to realise is that the average price of the order is the sum of the fractional volume multiplied by the value for each bin. The same is true for the market with the outcome being the benchmark, i.e. the VWAP. This is because we normalised the volume.
Now we can compute what the average price of the order would have been if we had the same prices in each bin but instead of achieving the volume-time distribution we instead matched the market time-volume distribution exactly. This tells us how much of our performance deviation from the market VWAP was caused by missing the market volume-time distribution.
We can do a similar calculation to find out how the trading results we had in each bin affected our performance by computing the average price using the order’s time-volume distribution but replacing the average price we got in each bin with the average price from all market volume. Now we know what drove our performance deviations.
What impact did various types of liquidity have on my performance?
To answer this question, we can filter liquidity and recompute the performance. For example, when we look at the individual market trades, we may notice that there are some large block trades. We may want to remove these trades to see what their impact was on the benchmark and how our other performance analytics would change as a result. We could do something similar by either removing or adding certain venues. If we have specified to avoid trading at a specific venue we can re-compute the VWAP benchmark after removing all the trades from that venue. Another example may be to remove odd-lots.
By comparing the performance benchmarks with and without the liquidity we are assessing, we can answer the question of how specific types of liquidity impacted our results. We can then use this information to decide to change our tactics to generate better results.
Many traders still use VWAP algos and are interested in understanding why they got the results they got, whether those results were good or bad, and what actions they can take to try to get better performance.
We have built a framework to allow this analysis given a set of client order data which is analysed by comparing market data. Traders can now visualise and fully attribute performance on individual VWAP orders.
©Best Execution 2019