-
Notifications
You must be signed in to change notification settings - Fork 9
/
AcctReturns.Rd
79 lines (72 loc) · 3.07 KB
/
AcctReturns.Rd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
% Generated by roxygen2 (4.0.2): do not edit by hand
\name{AcctReturns}
\alias{AcctReturns}
\title{Calculate account returns}
\usage{
AcctReturns(Account, Dates = NULL, Portfolios = NULL,
method = c("timeweighted", "dietz"), ...)
}
\arguments{
\item{Account}{string name of the account to generate returns for}
\item{Dates}{xts style ISO 8601 date subset to retrieve, default NULL
(all dates)}
\item{Portfolios}{concatenated string vector for portfolio names to retrieve
returns on, default NULL (all portfolios)}
\item{method}{Used to select between time-weighted and linked modified Dietz
returns. May be any of: \itemize{\item timeweighted \item dietz} By default
time-weighted is selected}
\item{\dots}{any other passthru parameters (like \code{native} for
\code{.getBySymbol}}
}
\value{
returns xts with account returns
}
\description{
Similar to the \code{PortfReturns} function, but gives returns for the
entire account and takes into account external cashflows. External cashflows
are defined as contributions to or withdrawals from the account. Allows
selecting between time-weighted returns and linked modified Dietz approach.
If time-weighted method is selected, returns at time \eqn{t} are computed
using: \deqn{r_{t}=\frac{V_{t}}{V_{t-1}+C_{t}}-1}
where \eqn{V_{t}} - account value at time \eqn{t}, \eqn{C_{t}} - cashflow at
time \eqn{t}. The implicit assumption made here is that the cash flow is
available for the portfolio manager to invest from the beginning of the day.
These returns then can be chain linked with geometric compounding (for
instance using \code{Return.cumulative} function from the
\code{PerformanceAnalytics} package) to yield cumulative multi-period
returns:
\deqn{1+r=\prod_{t=1}^{T}(1+r_{t})=\prod_{t=1}^{T}\frac{V_{t}}{V_{t-1}+C_{t}}}
In the case if there were no cashflows, the result reduces to simple
one-period returns. Time-weighted returns has also an interpretation in
terms of unit value pricing.
If Modified Dietz method is selected, monthly returns are computed taking
into account cashflows within each month:
\deqn{r = \frac{V_{t}-V_{t-1}-C}{V_{t-1}+\sum_{t}C_{t}\times W_{t}}}
where \eqn{C} - total external cash flows within a month,
\eqn{C_{t}} - external cashflow at time \eqn{t},
\deqn{W_{t}=\frac{TD-D_{t}}{TD}} - weighting ratio to be applied to external
cashflow on day \eqn{t},
\eqn{TD} - total number of days within the month,
\eqn{D_{t}} - number of days since the beginning of the month including
weekends and public holidays.
Finally monthly Modified Dietz returns can also be linked geometrically.
}
\note{
TODO handle portfolio and account in different currencies (not hard, just not done)
TODO explicitly handle portfolio weights
TODO support additions and withdrawals to available capital
}
\author{
Brian Peterson, Andrii Babii
}
\references{
Christopherson, Jon A., Carino, David R., Ferson, Wayne E.
\emph{Portfolio Performance Measurement and Benchmarking}. McGraw-Hill.
2009. Chapter 5 \cr Bacon, C. \emph{Practical Portfolio Performance
Measurement and Attribution}. Wiley. 2004. Chapter 2 \cr
}
\seealso{
PortfReturns
}
\keyword{portfolio}
\keyword{returns}