Combining Trade and Quote Prices with Mid-Price and Micro-Price Measures
Summary
The document considers how to construct a single intraday price series for a low-volume stock when trades are sparse but bid and offer quotes are frequent. The questioner proposes using the latest trade when available, otherwise the quote midpoint, and carrying forward a previous value when observations are missing. They also raise the timing issue of whether an early trade should take precedence over quotes recorded later in the same interval.
The response identifies the simple average of bid and offer as the mid-price and offers a size-weighted alternative called the micro-price. The micro-price weights each side’s price by the displayed size on the opposite side, moving the estimate toward the side with less available depth and potentially reflecting where trading pressure may deplete the book. These are candidate price measures rather than a universal solution: their suitability depends on the analysis, and the response does not address stale quotes, missing observations, or how to choose interval timing rules.
Key ideas
- A bid-offer midpoint is a common quote-based price measure when trades are sparse.
- A size-weighted micro-price incorporates displayed depth on both sides of the book.
- Weighting by the opposite side’s size can shift the estimate toward the side more exposed to depletion.
- The choice between trades, quotes, and carried-forward values depends on the modeling objective and timing convention.
Tags
Full text
# Strategies to merge bid, offer and trade price time series into a single price time series?
# Strategies to merge bid, offer and trade price time series into a single price time series?
I'm doing intraday analysis on low volume stocks. There are just a few trades every day, but a whole host of bids and offers. In order to reduce the sparsity of the time series data I'd like to incorporate the trade, bid and offer price into a single price which I will apply standard time series analysis on. What are some good ways of doing this?
I've time segmented the measures into the standard open, high, low, close price measures. As a first approach I'm going to do analysis only on closing values from each time segment, meaning the last measured value for each measure. Thus I have `close_bid`, `close_offer` and `close_trade`. I'm going to omit the `close_` part from now on.
Due to the sparsity any of the prices can be missing (or `None` is python speak).
The following (in Python code) is kind of what I'm thinking of doing:
```
def segment_and_merge_price_tics(price_tics, granularity)
previous_price = None
for t, bid, offer, trade in segment_price_tics(price_tics, granularity):
if trade is not None:
yield t, trade
elif (trade is not None) and (bid is not None):
yield t, (bid + offer)/2
else:
yield t, previous_price
previous_price = price
def segment_price_tics(price_tics, granularity):
# yields t, bid, offer and trade segmented based on granularity
```
In words: I am suggesting to simply use the average of the closing `bid` and `offer` price at time `t` when there were no trades. I also give preference to actual trades versus bids and offers.
What other strategies are there? I also have access to the depth of the bids and offers. Meaning I know how many give the lowest offer and highest bid for each tic.
Another thing that just occurred to me is that I might want to give preference to latest close price, not categorically the trade price. What if a trade comes in early in the time segment, is it really right to give it preference if there came bid and ask prices in just at the end of the time segment?
Any thoughts are welcomed.
## Answer by not.so.quanty (score 2)
https://quant.stackexchange.com/a/24510
The average would be called the mid-price, not the best in my opinion, but that depends on your modeling.
Another strategy is to weight the bid and offer prices according to size, also called the micro-price or bid-offer weighted price. This has the advantage of moving your calculated price closer to where it is traded as volume is depleted from whatever side is more traded if the book is not replenished.
`p_{micro} = p_{offer}*v_{bid} + p_{bid}*v_{offer} / (v_{bid}+v_{offer})`Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.