businessTimeAggregation {highfrequency} | R Documentation |
Business time aggregation
Description
Time series aggregation based on 'business time' statistics. Instead of equidistant sampling based on time during a trading day, business time sampling creates measures and samples equidistantly using these instead. For example when sampling based on volume, business time aggregation will result in a time series that has an equal amount of volume between each observation (if possible).
Usage
businessTimeAggregation(
pData,
measure = "volume",
obs = 390,
bandwidth = 0.075,
tz = NULL,
...
)
Arguments
pData |
|
measure |
character denoting which measure to use. Valid options are |
obs |
integer valued numeric of length 1 denoting how many observations is wanted after the aggregation procedure. |
bandwidth |
numeric of length one, denoting which bandwidth parameter to use in the trade intensity process estimation of Oomen (2005). |
tz |
fallback time zone used in case we we are unable to identify the timezone of the data, by default: |
... |
extra arguments passed on to |
Value
A list containing "pData"
which is the aggregated data and a list containing the intensity process, split up day by day.
Author(s)
Emil Sjoerup.
References
Dong, Y., and Tse, Y. K. (2017). Business time sampling scheme with applications to testing semi-martingale hypothesis and estimating integrated volatility. Econometrics, 5, 51.
Oomen, R. C. A. (2006). Properties of realized variance under alternative sampling schemes. Journal of Business & Economic Statistics, 24, 219-237
Examples
pData <- sampleTData[,list(DT, PRICE, SIZE)]
# Aggregate based on the trade intensity measure. Getting 390 observations.
agged <- businessTimeAggregation(pData, measure = "intensity", obs = 390, bandwidth = 0.075)
# Plot the trade intensity measure
plot.ts(agged$intensityProcess$`2018-01-02`)
rCov(agged$pData[, list(DT, PRICE)], makeReturns = TRUE)
rCov(pData[,list(DT, PRICE)], makeReturns = TRUE, alignBy = "minutes", alignPeriod = 1)
# Aggregate based on the volume measure. Getting 78 observations.
agged <- businessTimeAggregation(pData, measure = "volume", obs = 78)
rCov(agged$pData[,list(DT, PRICE)], makeReturns = TRUE)
rCov(pData[,list(DT, PRICE)], makeReturns = TRUE, alignBy = "minutes", alignPeriod = 5)