\[
\newcommand{\vy}{\mathbf{y}}
\newcommand{\vx}{\mathbf{x}}
\newcommand{\vb}{\mathbf{b}}
\newcommand{\ve}{\mathbf{e}}
\newcommand{\vone}{\mathbf{1}}
\newcommand{\vbeta}{\boldsymbol{\beta}}
\newcommand{\vmu}{\boldsymbol{\mu}}
\newcommand{\mX}{\mathbf{X}}
\newcommand{\mZ}{\mathbf{Z}}
\newcommand{\mV}{\mathbf{V}}
\newcommand{\mI}{\mathbf{I}}
\newcommand{\mJ}{\mathbf{J}}
\newcommand{\mSigma}{\boldsymbol{\Sigma}}
\newcommand{\E}{\mathrm{E}}
\newcommand{\Var}{\mathrm{Var}}
\newcommand{\Cov}{\mathrm{Cov}}
\newcommand{\tr}{\operatorname{tr}}
\newcommand{\vr}{\mathbf{r}}
\newcommand{\vs}{\mathbf{s}}
\newcommand{\vpi}{\boldsymbol{\pi}}
\]
Abstract
A Divisia aggregate depends on two choices besides the data: the benchmark rate that prices the user costs, and the index formula. This vignette shows on the simulated data money_sim how much each matters, and when the Divisia aggregate and the simple sum part ways.
The benchmark rate
data(money_sim)
bench <- list(
`largest component rate` = NULL
, `bond yield (rb)` = "rb"
, `bond yield + 1 point` = money_sim$rb + 1
, `bond yield + 3 points` = money_sim$rb + 3
)
growth <-
vapply(
X = bench
, FUN = function(b) {
d <-
dmai(
.data = money_sim
, method = "Barnett"
, logbase = NULL
, date = "Date"
, x = NULL
, r = NULL
, user_cost = NULL
, benchmark = b
, percent = TRUE
, base = 100
, as_dt = TRUE
)
100 * ((d$index[nrow(d)] / d$index[1L])^(12 / (nrow(d) - 1)) - 1)
}
, FUN.VALUE = numeric(length = 1)
)
round(x = growth, digits = 2)
largest component rate bond yield (rb) bond yield + 1 point
10.21 11.27 11.50
bond yield + 3 points
11.81
With the largest component rate as the benchmark the aggregate grows 10.2% a year, against 11.3% with the bond yield. The component with the largest rate, the time deposits over one year, then has a user cost of zero at most dates and almost no weight, although it grows fastest. A benchmark above every component rate gives every component some weight; raising it further raises the weights of the interest-bearing deposits (their user costs rise proportionally more than that of currency), so the aggregate moves towards the simple sum.
w <- function(b) {
u <-
dmai_user_cost(
.data = money_sim
, date = "Date"
, x = NULL
, r = NULL
, benchmark = b
, percent = TRUE
)$components
u[, .(share = mean(share)), by = component]
}
merge(w(NULL), w("rb"), by = "component", suffixes = c("_largest_rate", "_bond_yield"))
Key: <component>
component share_largest_rate share_bond_yield
<fctr> <num> <num>
1: x1 2.805158e-01 0.22913505
2: x2 2.501846e-01 0.20365800
3: x3 3.224848e-01 0.30779144
4: x4 5.656506e-02 0.07485756
5: x5 3.116176e-02 0.05075692
6: x6 2.595011e-02 0.06106372
7: x7 4.671874e-05 0.04325079
8: x8 3.309113e-02 0.02948652
cmp <-
dmai_compare(
.data = money_sim
, methods = c("Barnett", "Hancock", "Fisher", "SimpleSum", "CE")
, logbase = NULL
, date = "Date"
, x = NULL
, r = NULL
, user_cost = NULL
, benchmark = "rb"
, percent = TRUE
, base = 100
)
cmp$summary
method mean_growth annual_growth sd_growth last_index
<fctr> <num> <num> <num> <num>
1: Barnett 0.8896048 11.26589 0.5902133 838.2578
2: Hancock 0.9043824 11.38584 0.5953797 856.4399
3: Fisher 0.8895995 11.26582 0.5902227 838.2471
4: SimpleSum 1.0055352 12.82460 0.5725592 1105.8829
5: CE 0.8347407 10.53576 2.6929846 735.2426
plot(
x = cmp
, which = "growth"
)
Divisia and Fisher differ by less than a thousandth of the index; the choice between superlative formulas hardly matters. The simple-sum aggregate grows about one and a half points a year faster. The currency equivalent index moves with the level of the rates: when the benchmark falls, the deposits count as more money-like and the index jumps.
When the simple sum misleads
The gap between the growth of the simple sum and of the Divisia aggregate comes from the components that grow faster or slower than the others. The Divisia second moment measures that spread:
fit <-
dmai(
.data = money_sim
, method = c("Barnett", "Hancock", "Fisher", "SimpleSum", "CE")
, logbase = NULL
, date = "Date"
, x = NULL
, r = NULL
, user_cost = NULL
, benchmark = "rb"
, percent = TRUE
, base = 100
, as_dt = FALSE
)
gap <- fit$simple_sum$growth - fit$index$DMAI
sd <-
dmai_moments(
.data = fit
)$moments$sd
cor(x = abs(gap), y = sd, use = "complete.obs")
d <- data.table::data.table(Date = fit$index$Date, gap = gap, sd = sd)[!is.na(gap)]
ggplot2::ggplot(data = d, mapping = ggplot2::aes(x = sd, y = abs(gap))) +
ggplot2::geom_point(colour = "#1f4e9e", alpha = 0.6) +
ggplot2::labs(x = "Divisia standard deviation of component growth (percent)",
y = "|simple sum - Divisia growth| (points)") +
dmai_theme(
base_size = 11
, base_family = "serif"
, ticks_inward = TRUE
, legend_position = "bottom"
)
The correlation is 0.36: months with a larger spread of component growth tend to be months in which the two aggregates disagree more, the diagnostic of Barnett and Serletis (1990). In these simulated data much of the gap is the steady trend difference between the components, which the spread of a single month does not capture.
References
Barnett, W. A. (1980). Economic monetary aggregates: an application of index number and aggregation theory. Journal of Econometrics, 14(1), 11–48.
Barnett, W. A. and Serletis, A. (1990). A dispersion-dependency diagnostic test for aggregation error: with applications to monetary economics and income distribution. Journal of Econometrics, 43(1–2), 5–34.
Rotemberg, J. J., Driscoll, J. C. and Poterba, J. M. (1995). Money, output, and prices: evidence from a new monetary aggregate. Journal of Business and Economic Statistics, 13(1), 67–83.