aggregateTS {highfrequency} | R Documentation |
Aggregate a time series
Description
Aggregate a time series as xts
or data.table
object.
It can handle irregularly spaced time series and returns a regularly spaced one.
Use univariate time series as input for this function and check out aggregateTrades
and aggregateQuotes
to aggregate Trade or Quote data objects.
Usage
aggregateTS(
ts,
FUN = "previoustick",
alignBy = "minutes",
alignPeriod = 1,
weights = NULL,
dropna = FALSE,
tz = NULL,
...
)
Arguments
ts |
|
FUN |
function to apply over each interval. By default, previous tick aggregation is done. Alternatively one can set e.g. FUN = "mean". In case weights are supplied, this argument is ignored and a weighted average is taken. |
alignBy |
character, indicating the time scale in which |
alignPeriod |
positive numeric, indicating the number of periods to aggregate over. For example, to aggregate
based on a 5 minute frequency, set |
weights |
By default, no weighting scheme is used.
When you assign an |
dropna |
boolean, which determines whether empty intervals should be dropped.
By default, an NA is returned in case an interval is empty, except when the user opts
for previous tick aggregation, by setting |
tz |
character denoting which timezone the output should be in. Defaults to |
... |
extra parameters passed on to |
Details
The time stamps of the new time series are the closing times and/or days of the intervals. For example, for a weekly aggregation the new time stamp is the last day in that particular week (namely Sunday).
In case of previous tick aggregation,
for alignBy
is either "seconds"
"minutes"
, or "hours"
,
the element of the returned series with e.g. timestamp 09:35:00 contains
the last observation up to that point, including the value at 09:35:00 itself.
Please note: In case an interval is empty, by default an NA is returned.. In case e.g. previous
tick aggregation it makes sense to fill these NAs by the function na.locf
(last observation carried forward) from the zoo package.
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
An xts
object containing the aggregated time series.
Author(s)
Jonathan Cornelissen, Kris Boudt, and Emil Sjoerup.
Examples
# Load sample price data
## Not run:
library(xts)
ts <- as.xts(sampleTData[, list(DT, PRICE, SIZE)])
# Previous tick aggregation to the 5-minute sampling frequency:
tsagg5min <- aggregateTS(ts, alignBy = "minutes", alignPeriod = 5)
head(tsagg5min)
# Previous tick aggregation to the 30-second sampling frequency:
tsagg30sec <- aggregateTS(ts, alignBy = "seconds", alignPeriod = 30)
tail(tsagg30sec)
tsagg3ticks <- aggregateTS(ts, alignBy = "ticks", alignPeriod = 3)
## End(Not run)