Price Sensitivity to Volume







Price Sensitivity to Volume


MATT BRIGIDA

Associate Professor of Finance (SUNY Polytechnic Institute) & Financial Education Advisor, Milken Institute

Thoughts on Private Information

  • Trades are the method by which private information is incorporated into prices.
  • Market participants estimate the amount of private information in each trade (as opposed to those trading on noise or for liquidity reasons).
  • The greater the estimated amount of private information, the greater the price impact of the trade.

Public Information

  • Price adjustments to public information can be made by changes in the bid and offer prices.
  • Trades may affect the ultimate reaction, and speed with which it occurs.

Kyle's Model

Kyle (1985) formally models the trading strategy of a trader with private information, who attempts to trade in a way to maximize profits from this information.

  • Within the model a parameter, $\lambda$ is determined which measures market depth.
  • Specifically $\frac{1}{\lambda}$ measures the orderflow (in $) necessary to increase/decrease the price by $1.

Estimation

To estimate $\lambda$ we use:

$\lambda = \frac{|\Delta(price)|}{volume\ in\ \$}$

rearranging this formula affords:

$|\Delta(price)| = \lambda(volume\ in\ \$)$

We can thus estimate $\lambda$ via the following regression equation:

$|\Delta(price)_t| = \alpha + \lambda(volume\ in\ \$)_t + e_t$

Example

Brigida and Pratt (2017) investigated the effect of a fake news announcement of a takeover bid for Twitter (TWTR) on Twitter's stock. In this analysis they used a Kalman Filtered estimate of Kyle's Lambda throughout the event.

  • On the next slide is the code used to generate the chart, and on the following slide is a chart of their results.

R Code


library(highcharter)

## lambda estimated via kalman filter
depth <- as.xts(0.01 / lambda, order.by = index(twtr.s.d)[-1])

## generates the chart
hc <- highchart(type = "stock") %>%
    hc_add_series(name = "Market_Depth", data = depth) %>%
    hc_add_theme(hc_theme_darkunica()) %>%
    hc_yAxis(title = list("Market Depth ($)")) %>%
    hc_title(text = list("TWTR Market Depth ($)")) %>%
    hc_exporting(enabled = TRUE)
hc

Assignment

You will use the TWTR price data to do the following:

  1. Calculate Kyle's Lambda, and interpret the value.
  2. How stable is Lambda---does it change much over sub-intervals?
  3. Use your IB account to download minute data for a stock, and repeat the above.

Price Data

You can download the data from here in CSV format, and from here as an RDS file (if you want to use R). The data looks like:


library(xts)
data <- readRDS("twtr_data.rds")
head(data)
## 		                          TWTR.Open TWTR.High TWTR.Low TWTR.Close TWTR.Volume
## 2015-07-14 09:30:00     35.78     35.94    35.77      35.86        1703
## 2015-07-14 09:30:30     35.85     35.89    35.85      35.86         141
## 2015-07-14 09:31:00     35.86     35.92    35.85      35.85         266
## 2015-07-14 09:31:30     35.86     35.86    35.83      35.85         160
## 2015-07-14 09:32:00     35.85     35.88    35.83      35.86         124
## 2015-07-14 09:32:30     35.86     35.86    35.84      35.84         129
##                     TWTR.WAP TWTR.hasGaps TWTR.Count
## 2015-07-14 09:30:00   35.790            0        139
## 2015-07-14 09:30:30   35.867            0         21
## 2015-07-14 09:31:00   35.866            0         94
## 2015-07-14 09:31:30   35.851            0         54
## 2015-07-14 09:32:00   35.854            0         58
## 2015-07-14 09:32:30   35.847            0         35
		       

As aside, Brigida and Pratt (2017) mainly used option data to look at implied volatility around the fake news anouncement.

  • The next slide is an interactive graphic of TWTR's stock price, and implied volatilities from various options.
  • This is not part of the assignment, but can anyone guess why the implied volatility is so different depending on the option expiration?

Matt Brigida

Contact: matthew.brigida [at] sunyit [dot] edu