| Adjust-Series {PMwR} | R Documentation | 
Adjust Time Series for Dividends and Splits
Description
Adjust a time series for dividends and splits.
Usage
div_adjust(x, t, div, backward = TRUE, additive = FALSE)
split_adjust(x, t, ratio, backward = TRUE)
Arguments
x | 
 a numeric vector: the series to be adjusted  | 
t | 
 An integer vector, specifying the positions in
  | 
div | 
 A numeric vector, specifying the dividends (or
payments, cashflows).  If necessary, recycled to
the length of   | 
ratio | 
 a numeric vector, specifying the split ratios. The ratio must be ‘American Style’: a 2-for-1 stock split, for example, corresponds to a ratio of 2. (In other countries, for instance Germany, a 2-for-1 stock split would be called a 1-for-1 split: you keep your shares and receive one new share per share that you own.)  | 
backward | 
 logical; see Details  | 
additive | 
 logical; see Details  | 
Details
The function transforms x into returns, and
with those returns specified in t calculated
as
\frac{x_t + D_t}{x_{t-1}} - 1\,,
in which x is the price, D are dividends
and t is time.  The adjusted x is
then reconstructed from those returns.
When additive is TRUE, dividends are
simply added back to the series; see Examples.
With backward set to TRUE, which is the
default, the final prices in the unadjusted series matches
the final prices in the adjusted series.
Value
a numeric vector of length equal to length(x)
Author(s)
Enrico Schumann
References
Schumann, E. (2023) Portfolio Management with R. https://enricoschumann.net/PMwR/
Using div_adjust for handling generic external cashflows:
https://enricoschumann.net/R/packages/PMwR/manual/PMwR.html#returns-with-external-cashflows
Examples
x <- c(9.777, 10.04, 9.207, 9.406)
div <- 0.7
t <- 3
div_adjust(x, t, div)
div_adjust(x, t, div, FALSE)
## assume there were three splits: adjust shares outstanding
shares <- c(100, 100, 200, 200, 1000, 1500)
t <- c(3, 5, 6)
ratio <- c(2, 5, 1.5)
### => invert ratio
split_adjust(shares, t, 1/ratio)
## [1] 1500 1500 1500 1500 1500 1500
split_adjust(shares, t, 1/ratio, backward = FALSE)
## [1] 100 100 100 100 100 100
## 'additive' ** FALSE ** (default setting)
x <- c(100, 95, 100, 95, 100)
div <- 5
t <- c(2, 4)
div_adjust(x, t, div)
## 90.25  90.25  95.00  95.00 100.00
returns(div_adjust(x, t, div))
## 0.00000000 0.05263158 0.00000000 0.05263158
## ==> reflect _actual_ returns 100/95 - 1
## 'additive' ** TRUE **
div_adjust(x, t, div, additive = TRUE)
## 90  90  95  95 100
returns(div_adjust(x, t, div, additive = TRUE))
## 0.00000000 0.05555556 0.00000000 0.05263158
## ==> reflect return 95/90 - 1