Last data update: 2014.03.03

R: Fernholz's Decomposition for a Buy-and-hold Toy Market
FernholzDecompR Documentation

Fernholz's Decomposition for a Buy-and-hold Toy Market

Description

The function FernholzDecomp computes the Fernholz decomposition of a functionally generated portfolio.

Usage

FernholzDecomp(market, portfolio, plot = TRUE)

Arguments

market

a toymkt object where market$buy.and.hold is TRUE.

portfolio

an fgp object represents a functionally generated portfolio.

plot

TRUE or FALSE. If TRUE, the Fernholz decomposition will be plotted. The default value is TRUE.

Details

Functionally generated portfolios (see fgp) and Fernholz's decomposition play an important role in stochastic portfolio theory.

In this context, the benchmark portfolio is a buy-and-hold market portfolio (modeled as a toymkt object in this package). The portfolio weights of the benchmark is represented by the market weight μ(t). The portfolio manager chooses portfolio weights π(t).

Let V(t) be the growth of $1 of the manager's portfolio divided by that of the benchmark. Initially V = 1 and it increases when the manager outperforms the market. The quantity log(V(t)) is called the relative log return.

For a functionally generated portfolio, the portfolio weights π(t) are deterministic functions of the current market weight μ(t). More precisely, the portfolio weights π(t) are given by the derivatives of log(Φ) at μ(t), where Φ is called the generating function. See the references for more details (the notation here follows that of Pal and Wong (2014)).

In this case, Fernholz's decomposition states that the relative log return has the decomposition

log(V(t)) = [log(Φ(μ(t))) - log(Φ(μ(0)))] + Θ(t),

where Θ(t) is called the drift process. Note that the first term depends only on the current and initial positions of the market weights. The drift process is determined by the portfolio and the cumulative amount of market volatility. This is the decomposition implemented by the function FernholzDecomp. See also Chapter 6 of Fernholz (2002).

Value

A list containing the following components.

portfolio

growth of $1 of the portfolio.

benchmark

growth of $1 of the market portfolio.

relative.return

cumulative excess log return with respect to the market portfolio.

generating function

change of the log of the generating function.

drift

drift process.

References

Fernholz, E. R. (2002) Stochastic portfolio theory. Springer.

Pal, S. and T.-K. L. Wong (2014). The geometry of relative arbitrage. arXiv preprint arXiv:1402.3720.

See Also

fgp

Examples

# Plot the Fernholz decomposition for the entropy-weighted portfolio
data(applestarbucks)
market <- toymkt(applestarbucks)
output <- FernholzDecomp(market, EntropyPortfolio, plot = TRUE)

Results


R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> library(RelValAnalysis)
Loading required package: zoo

Attaching package: 'zoo'

The following objects are masked from 'package:base':

    as.Date, as.Date.numeric

> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/RelValAnalysis/FernholzDecomp.Rd_%03d_medium.png", width=480, height=480)
> ### Name: FernholzDecomp
> ### Title: Fernholz's Decomposition for a Buy-and-hold Toy Market
> ### Aliases: FernholzDecomp
> 
> ### ** Examples
> 
> # Plot the Fernholz decomposition for the entropy-weighted portfolio
> data(applestarbucks)
> market <- toymkt(applestarbucks)
Warning message:
In toymkt(applestarbucks) :
  Since initial.weight is not given, the benchmark is assumed to be equal-weighted initially.
> output <- FernholzDecomp(market, EntropyPortfolio, plot = TRUE)
> 
> 
> 
> 
> 
> dev.off()
null device 
          1 
>