| run_min | R Documentation |
Calculate the trailing minimum values of streaming time series data using an online recursive formula.
run_min(timeser, lambdaf)
timeser |
A time series or a matrix. |
lambdaf |
A decay factor which multiplies past estimates. |
The function run_min() calculates the trailing minimum values of
streaming time series data by recursively weighting present and past
values using the decay factor \lambda.
It calculates the trailing minimum values p^{min}_t of the streaming
data p_t as follows:
p^{min}_t = min(p_t, \lambda p^{min}_{t-1} + (1 - \lambda) p_t)
The first term in the sum is the minimum value multiplied by the decay
factor \lambda, so that the past minimum value is gradually
"forgotten". The second term pulls the minimum value to the current value
p_t.
The value of the decay factor \lambda must be in the range between
0 and 1.
If \lambda is close to 1 then the past minimum values persist
for longer. This is equivalent to a long look-back interval.
If \lambda is much less than 1 then the past minimum values
decay quickly, and the trailing minimum depends on the more recent
streaming data. This is equivalent to a short look-back interval.
The above formula can also be expressed as:
p^{min}_t = \lambda min(p_t, p^{min}_{t-1}) + (1 - \lambda) p_t
The first term is the minimum value multiplied by the decay factor
\lambda, so that the past minimum value is gradually "forgotten".
The second term pulls the minimum value to the current value p_t.
The above recursive formula is convenient for processing live streaming data because it doesn't require maintaining a buffer of past data.
The function run_min() returns a matrix with the same
dimensions as the input argument timeser.
A matrix with the same dimensions as the input argument
timeser.
## Not run:
# Calculate historical prices
closep <- zoo::coredata(quantmod::Cl(rutils::etfenv$VTI))
# Calculate the trailing minimums
lambdaf <- 0.9 # Decay factor
pricmin <- HighFreq::run_min(closep, lambdaf=lambdaf)
# Plot dygraph of VTI prices and trailing minimums
datav <- cbind(quantmod::Cl(rutils::etfenv$VTI), pricmin)
colnames(datav) <- c("prices", "min")
colnamev <- colnames(datav)
dygraphs::dygraph(datav, main="VTI Prices and Trailing Minimums") %>%
dySeries(label=colnamev[1], strokeWidth=1, col="blue") %>%
dySeries(label=colnamev[2], strokeWidth=1, col="red")
## End(Not run) # end dontrun
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.