aggregatePrice {highfrequency} | R Documentation |
Aggregate a time series but keep first and last observation
Description
Function to aggregate high frequency data by last tick aggregation to an arbitrary periodicity based on wall clocks.
Alternatively the aggregation can be done by number of ticks. In case we DON'T do tick-based aggregation,
this function accepts arbitrary number of symbols over a arbitrary number of days. Although the function has the word Price in the name,
the function is general and works on arbitrary time series, either xts
or data.table
objects the latter requires a DT
column containing POSIXct time stamps.
Usage
aggregatePrice(
pData,
alignBy = "minutes",
alignPeriod = 1,
marketOpen = "09:30:00",
marketClose = "16:00:00",
fill = FALSE,
tz = NULL
)
Arguments
pData |
|
alignBy |
character, indicating the time scale in which |
alignPeriod |
positive numeric, indicating the number of periods to aggregate over. E.g. to aggregate
based on a 5 minute frequency, set |
marketOpen |
the market opening time, by default: |
marketClose |
the market closing time, by default: |
fill |
indicates whether rows without trades should be added with the most recent value, FALSE by default. |
tz |
fallback time zone used in case we we are unable to identify the timezone of the data, by default: |
Details
The time stamps of the new time series are the closing times and/or days of the intervals. The element of the returned series with e.g. time stamp 09:35:00 contains the last observation up to that point, including the value at 09:35:00 itself.
In case alignBy = "ticks"
, the sampling is done such the sampling starts on the first tick, and the last tick is always included.
For example, if 14 observations are made on one day, and these are 1, 2, 3, ... 14.
Then, with alignBy = "ticks"
and alignPeriod = 3
, the output will be 1, 4, 7, 10, 13, 14.
Value
A data.table
or xts
object containing the aggregated time series.
Author(s)
Jonathan Cornelissen, Kris Boudt, Onno Kleen, and Emil Sjoerup.
Examples
# Aggregate price data to the 30-second frequency
aggregatePrice(sampleTData, alignBy = "secs", alignPeriod = 30)
# Aggregate price data to 30-minute frequency including zero return price changes
aggregatePrice(sampleTData, alignBy = "minutes", alignPeriod = 30, fill = TRUE)