A database only has transactions/trades for a given instrument. In order to recreate bid-ask of the instrument to estimate the average bid-ask spread, what process does one need to follow? what are the various assumptions involved. have not found anything concrete.
-
$\begingroup$ By recreate do you mean simulate bids, asks or spreads from some bid-ask model? $\endgroup$– develaristCommented Jan 18, 2021 at 13:11
-
$\begingroup$ best case estimates of bid-ask at any transaction. $\endgroup$– shoonyaCommented Jan 18, 2021 at 16:22
-
$\begingroup$ Do you need intraday bid-ask spread estimations or is a daily estimate good enough? There exists estimators of bid-ask spreads that uses daily log-prices, but also gives you a two-day spread estimate. $\endgroup$– PlebCommented Jan 18, 2021 at 17:03
-
$\begingroup$ Best case estimates are pointless since predicting the spread, like predicting prices, is just a guessing game that is futile. There are models in journal articles that stubbornly try to do it anyway $\endgroup$– develaristCommented Jan 18, 2021 at 17:35
-
$\begingroup$ What fields are available in your trade feed, e.g. trade number, exact timestamp, trade direction (B/S), originating order number, session identifier (OA,normal,CA,post-crossing)? Does the feed contain round lot or odd-lot trades as well? Do you have backtesting quotes for the same (or comparable) securities to verify the model? $\endgroup$– Sergei RodionovCommented Jan 19, 2021 at 12:30
2 Answers
Unfortunately there is no information available to do this.
You might be able to infer some brief bid-ask spread data from consecutive transactions that have are very tightly spaced time-wise but have a price variance, but this is would only be relevant for that particular short time period, unless you really do have an extremely liquid instrument.
-
$\begingroup$ The transactions data contains each and every trade that has happened for the instrument. Since each transaction is available, would it be feasible to infer bid-ask at every transaction. $\endgroup$– shoonyaCommented Jan 18, 2021 at 10:54
-
1$\begingroup$ No - let's say there were 10 transactions per day on an instrument that trades for 8 hours a day, there's really no information to provide you with any meaningful level of bid-ask. If there were 500 transactions a second on an instrument that trades for 8 hours a day, then that is a different story completely. $\endgroup$ Commented Jan 18, 2021 at 11:16
-
$\begingroup$ There are approximate 30000-40000 transactions per day. $\endgroup$– shoonyaCommented Jan 18, 2021 at 11:18
-
$\begingroup$ Then look at trade deltas and infer it, compare against real bid-ask data for that instrument (assuming it has the same characteristics/trade volume/frequency now as it did then). $\endgroup$ Commented Jan 18, 2021 at 11:19
The standard academic way to do this is to start by using Roll's model (1984). If $p_t$ is the (log) price of an asset then setting $r_t = p_t - p_{t-1}$, we can estimate the percentage bid-ask spread as:
$\widehat{s} = 2 \sqrt{-\mbox{Cov}(r_t, r_{t-1})}$
In practice, this measure may not perform very well and all sorts of extensions and modifications have been proposed. Having said that, using Roll's model as a starting point and ascertaining to what extent the data satisfies the model's assumptions can be a very useful stepping stone in terms of selecting/developing a more satisfactory model.
-
$\begingroup$ The model was fit and tested on markets prior to decimalization. $\endgroup$ Commented Jan 20, 2021 at 9:37