decompose_volume | R Documentation |
This function decomposes the intraday volume into daily, seasonal, and intraday dynamic components according to (Chen et al., 2016).
If purpose = “analysis”
(aka Kalman smoothing), the optimal components are conditioned on both the past and future observations.
Its mathematical expression is \hat{x}_{\tau} = E[x_{\tau}|\{y_{j}\}_{j=1}^{M}]
,
where M
is the total number of bins in the dataset.
If purpose = “forecast”
(aka Kalman forecasting), the optimal components are conditioned on only the past observations.
Its mathematical expression is \hat{x}_{\tau+1} = E[x_{\tau+1}|\{y_{j}\}_{j=1}^{\tau}]
.
Three measures are used to evaluate the model performance:
Mean absolute error (MAE):
\frac{1}{M}\sum_{\tau=1}^M|\hat{y}_{\tau} - y_{\tau}|
;
Mean absolute percent error (MAPE):
\frac{1}{M}\sum_{\tau=1}^M\frac{|\hat{y}_{\tau} - y_{\tau}|}{y_{\tau}}
;
Root mean square error (RMSE):
\sqrt{\sum_{\tau=1}^M\frac{\left(\hat{y}_{\tau} - y_{\tau}\right)^2}{M}}
.
decompose_volume(purpose, model, data, burn_in_days = 0)
purpose |
String |
model |
A model object of class " |
data |
An n_bin * n_day matrix or an |
burn_in_days |
Number of initial days in the burn-in period for forecast. Samples from the first |
A list containing the following elements:
original_signal
: A vector of original intraday volume;
smooth_signal
/ forecast_signal
: A vector of smooth/forecast intraday volume;
smooth_components
/forecast_components
: A list of smooth/forecast components: daily, seasonal, intraday dynamic, and residual components.
error
: A list of three error measures: mae, mape, and rmse.
Shengjie Xiu, Yifan Yu and Daniel P. Palomar
Chen, R., Feng, Y., and Palomar, D. (2016). Forecasting intraday trading volume: A Kalman filter approach. Available at SSRN 3101695.
library(intradayModel)
data(volume_aapl)
volume_aapl_training <- volume_aapl[, 1:20]
volume_aapl_testing <- volume_aapl[, 21:50]
model_fit <- fit_volume(volume_aapl_training, fixed_pars = list(a_mu = 0.5, var_mu = 0.05),
init_pars = list(a_eta = 0.5))
# analyze training volume
analysis_result <- decompose_volume(purpose = "analysis", model_fit, volume_aapl_training)
# forecast testing volume
forecast_result <- decompose_volume(purpose = "forecast", model_fit, volume_aapl_testing)
# forecast testing volume with burn-in
forecast_result <- decompose_volume(purpose = "forecast", model_fit, volume_aapl[, 1:50],
burn_in_days = 20)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.