The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Implements the efficient estimator of bid-ask spreads from open, high, low, and close prices described in Ardia, Guidotti, & Kroencke (JFE, 2024): https://doi.org/10.1016/j.jfineco.2024.103916
install.packages("bidask")
This package implements the following functions. The function
edge
computes a single bid-ask spread estimate from vectors
of open, high, low, and close prices. The functions
edge_rolling
and edge_expanding
are optimized
for fast calculations over rolling and expanding windows, respectively.
The function spread
provides additional functionalities for
xts
objects and implements additional estimators. The
function sim
simulates a time series of open, high, low,
and close prices. The main functions are presented below. The full documentation
is available on CRAN and a vignette
is also available.
library("bidask")
edge
The input prices must be sorted in ascending order of the timestamp. The output value is the spread estimate. A value of 0.01 corresponds to a spread of 1%.
edge(open, high, low, close, sign=FALSE)
field | description |
---|---|
open |
Numeric vector of open prices. |
high |
Numeric vector of high prices. |
low |
Numeric vector of low prices. |
close |
Numeric vector of close prices. |
sign |
Whether to return signed estimates. |
edge_rolling
Implements a rolling window calculation of edge
. The
output is a vector of rolling spread estimates. A value of 0.01
corresponds to a spread of 1%. This function always returns a result of
the same length as the input prices.
edge_rolling(open, high, low, close, width, sign=FALSE, na.rm=FALSE)
field | description |
---|---|
open |
Numeric vector of open prices. |
high |
Numeric vector of high prices. |
low |
Numeric vector of low prices. |
close |
Numeric vector of close prices. |
width |
If an integer, the width of the rolling window. If a vector with the same length of the input prices, the width of the window corresponding to each observation. Otherwise, a vector of endpoints. See examples. |
sign |
Whether to return signed estimates. |
na.rm |
Whether to ignore missing values. |
edge_expanding
Implements an expanding window calculation of edge
. The
output is a vector of expanding spread estimates. A value of 0.01
corresponds to a spread of 1%. This function always returns a result of
the same length as the input prices.
edge_expanding(open, high, low, close, sign=FALSE, na.rm=TRUE)
field | description |
---|---|
open |
Numeric vector of open prices. |
high |
Numeric vector of high prices. |
low |
Numeric vector of low prices. |
close |
Numeric vector of close prices. |
sign |
Whether to return signed estimates. |
na.rm |
Whether to ignore missing values. |
Load the test data.
library("bidask")
= read.csv("https://raw.githubusercontent.com/eguidotti/bidask/main/pseudocode/ohlc.csv") x
Compute the spread estimate using all the observations.
edge(x$Open, x$High, x$Low, x$Close)
Compute rolling estimates using a window of 21 observations.
edge_rolling(x$Open, x$High, x$Low, x$Close, width = 21)
Estimate the spread using custom endpoints.
edge_rolling(x$Open, x$High, x$Low, x$Close, width = c(3, 35, 100))
Estimate the spread using an expanding window
edge_expanding(x$Open, x$High, x$Low, x$Close, na.rm = FALSE)
Ardia, D., Guidotti, E., Kroencke, T.A. (2024). Efficient Estimation of Bid-Ask Spreads from Open, High, Low, and Close Prices. Journal of Financial Economics, 161, 103916. doi: 10.1016/j.jfineco.2024.103916
A BibTex entry for LaTeX users is:
@article{edge,
title = {Efficient estimation of bid–ask spreads from open, high, low, and close prices},
journal = {Journal of Financial Economics},
volume = {161},
pages = {103916},
year = {2024},
doi = {https://doi.org/10.1016/j.jfineco.2024.103916},
author = {David Ardia and Emanuele Guidotti and Tim A. Kroencke},
}
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.