portfOptim: Portfolio optimization for an index model

View source: R/portfOptim.R

portfOptimR Documentation

Portfolio optimization for an index model

Description

Finds an optimal portfolio for long-term investments and plots a return distribution.

Usage

portfOptim(i, symbol, yield, vol, beta, 
  indexVol = 0.2, nStocks = 7, total = 1, balanceInt = 1, 
  C = 0.05, riskProportion = 1, riskfreeRate = 0, sim = FALSE)

Arguments

i

vector of the indices of the included risky investments

symbol

character vector of the symbols of the risky investments

yield

vector of expected yields (in euros)

vol

vector of volatilities

beta

vector of betas

indexVol

portfolio index volatility

nStocks

number of stocks in the portfolio

total

total sum invested (in euros)

balanceInt

balancing interval of the portfolio (in years)

C

expected portfolio return (in euros)

riskProportion

proportion of risky investments

riskfreeRate

risk-free interest rate

sim

is the return distribution simulated and plotted (logical value)?

Details

The arguments vol, beta, indexVol, riskProportion and riskfreeRate are given in decimals. The portfolio is optimized by minimizing the variance of the portfolio yield for a given expected yield. The returns are assumed to be log-normally distributed. The covariance matrix is computed using the single index model and the properties of the log-normal distribution.

Value

portfolio

numeric vector of allocations to each stock (in euros)

returnExpectation

expected value of the return distribution (in euros)

returnDeviation

standard deviation of the return distribution (in euros)

VaR

0.5%,1%,5%,10% and 50% percentiles of the return distribution (in euros)

Note

This function is usually called by drawFigure.

Author(s)

Arto Luoma <arto.luoma@wippies.com>

References

Bodie, Kane, and Marcus (2014) Investments, 10th Global Edition, McGraw-Hill Education, (see Section 7.4 The Markowitz Portfolio Optimization Model and Section 8.2 The Single-Index Model).

See Also

drawFigure

Examples

data(stockData, package="RcmdrPlugin.RiskDemo")
with(stockData,portfOptim(i=1:5,symbol=rownames(stockData),
  yield=divYield/100,vol=vol/100,beta=beta/100,total=100, sim=TRUE))

RcmdrPlugin.RiskDemo documentation built on Nov. 13, 2023, 5:07 p.m.